· [Java论坛][安全论坛][数据库论坛][操作系统论坛]
· [专题] IBM Rational高峰论坛 Windows 7十大功能
· [专题] 史上就危险7月 微软 BizSpark 计划介绍
· [IT技术周刊][IT资源下载专区][病毒求助专区]
· [热点] 我也能做CTO_赛迪连载 赛迪七夕特别行动
· [热点] Chrome 4.0采用V8引擎 Java开发编程规范

一个工作流引擎的设计概要

发布时间:2006.03.15 16:23     来源:Matrix    作者:chris

前提是至少使用过工作流,并且了解wfmc的相关内容,如果你现在就想做一个,那可以先去wfmc.org上查看相关文档  

engine实现了工作流process instance的流转,功能调用等,通常的实现方法是在每个process instance开始节点往下节点一次执行,如果遇到分支,则启动新线程来处理后续的节点,如果遇到join节点,则线程等待状态其他线程执行完毕后在进行join操作。基于线程的方法是很多工作流实现方法,但这样不可避免的导致一个jvm里有多个线程在使用,导致性能和安全问题。

而且,engine不容易控制流程的状态,如当想要挂起/恢复process instance的时候就特别困难。   当然,engine的实现方法很多,利用j2ee提供的ejb,jms都能获得非常好的效果,在这,我提出一中小engine(不依赖j2ee)的设计思路,经过适当的修改,能适应任何性能要求高,安全性要求高的工程   在小engine中,有俩层queue的结构,流程事件,如,流程开始,结束,挂起,恢复,作废,以及节点的开始,结束等均push到这俩个queue 中,不同的是,第一层queue(以下简称Queue Fir)是用于整个流程,第二层queue(以下简称Queue Sec)只是用来协调processInstance内部的事件,该queue,可以接收Queue Fir传来的相应事件并作处理。  

不难看出,其实这就是俩层Producer/consumer,性能和安全性表现在,适当的consumer可以改善系统性能将queue改善为持久性queue 可以提高系统安全。如果您需要的是一个适用于大项目的工作流engine,那你完全可以jms queue来代替内部的俩层queue,并在此基础上获得分布的性能  由于没有适当的图来表达这种小engine的设计,感觉很难说清楚,如果对此感兴趣,可以与我联系,共同完成这个engine的设计

from-javaresearch.org


[ 发表评论 ] 字体[  ] [ 打印 ] [ 进入博客 ] [ 进入论坛 ]  [ 推荐给朋友 ]
  相关文章
· 对J2EE项目的一些体会 (01-27) · rmi和corba (11-11)
· 优化entity Bean的七条准则 (08-02) · EJB的编程限制 (06-11)
· 简析J2EE应用程序数据库类设计模式 (02-25) · EJB的专用术语解释 (08-24)
· EJB2.0的JMS (10-11) · JNDI设计内幕 (06-06)
· EJB技术概论 (02-13) · JSP如何与EJB SessionBean通讯 (10-28)
  客户需求反馈表
* 姓  名:
更多资料  了解方案  认识厂商
* 单位名称:
* 联系电话:
* 电子邮件:
资讯 通信 IT产品 IT技术 信息化
专题:扭亏为盈 联想09年Q2翻番
·专题:Tech·Ed 2009微..
·直播:2009互联网大会..
·迅雷搜狐"互搏" 谁动了..
专题:诺基亚危局已现 或重蹈摩托覆辙
·六股势力角逐4G标准 中..
·专题:联通iPhone并不贵..
·专题:排排坐开商店 三..
商务演示需求分析 多媒体会议室必备投影
·VMware在京隆重举行2009..
·专题:笔记本频道10月热..
·专题:学生机市场 惠普 ..
专题:Tech.Ed 2009微软技术大会
·专题:2009 SYBASE 亚太..
·专题:微软新一代桌面操..
·专题:2009年第3届CSDN..