开始设计工作流引擎了,打算采用JMS和MDB,希望大家一起讨论,给我建议.
目前最困惑的还不是技术问题,而是工作流这个东西如何让用户来使用。流程的定制自不必说,肯定要GUI,可是工作流运行起来后,应该让用户以怎样的方式参与到其中呢,或者说引擎要以怎样的方式把任务交给流程的参与者呢?
你可以做参考!!
只是ofbiz中为了效率,把一些对象都缓存起来见WFFactory,放在静态Map内。这在商业环境下很容易就OutOfMemory拉。我现在采用每天晚上定时清除缓存的策略。大家还有什么更好的建议吗?
还有关于工作流技术的一点迷惑,请大家指点。在有了workflow的engine后,流程的配置和执行都比较灵活,并且不需要二次开发。
可是,每个流程势必要有自己的一套UI(client)来配合。现在的问题是每配置一个流程,都需要开发新的UI。那些UI的配置工具我觉得没什么实际的用处,都是骗人的。简单的UI配置工具,作出来的东西肯定满足不了实际的UI需求,复杂的UI配置工具,还不如直接用程序语言开发呢。大家怎么说??
流程说白了,我认为也是节点之间关系,设计模式、工作流这些都是在研究关系(调用和被调用、下一步和上一步),真可是大学问,正如人之间的关系一样。
每个任务有一个执行程序、service、bean、.DCOM等等,实现方法你可以自己定,怎么方便怎么来。可能这个程序就是审批,以及审批设计到的数据等,这和工作流引擎有关吗?我设计的思路是没有关系。
工作流引擎的工作:知道task1完成了,看任务清单(用XPDL定义),下个任务是谁,然后发消息给下taskN,确认taskN收到消息,然后工作流引擎就喝茶等着,等task给它的消息。
工作流引擎和任务task之间如何交互,也不一定用消息,如果是一个紧耦合的应用,让引擎直接阻塞调用也行,极端的例子,电话程控交换机有一个状态机,原理也是流转。
个人见解,请指正。
我准备将以前做的这个引擎在提升,以后可与lucaslucas 多切磋。