开始设计工作流引擎了,打算采用JMS和MDB,希望大家一起讨论,给我建议.

如题。
目前最困惑的还不是技术问题,而是工作流这个东西如何让用户来使用。流程的定制自不必说,肯定要GUI,可是工作流运行起来后,应该让用户以怎样的方式参与到其中呢,或者说引擎要以怎样的方式把任务交给流程的参与者呢?

你是自己开发还是公司开发呀?

公司让我自己开发,现做出原型,再立项

XFLOW中用的是MDB

你可以做参考!!

最好是简单实用,不要贪大

我已经参考ofbiz(基本上是照办:))完成了一个engine.并且已经在一个大型的物流项目中使用。
现在开始开发designer 。
感觉ofbiz真的不错。

只是ofbiz中为了效率,把一些对象都缓存起来见WFFactory,放在静态Map内。这在商业环境下很容易就OutOfMemory拉。我现在采用每天晚上定时清除缓存的策略。大家还有什么更好的建议吗?

还有关于工作流技术的一点迷惑,请大家指点。在有了workflow的engine后,流程的配置和执行都比较灵活,并且不需要二次开发。
可是,每个流程势必要有自己的一套UI(client)来配合。现在的问题是每配置一个流程,都需要开发新的UI。那些UI的配置工具我觉得没什么实际的用处,都是骗人的。简单的UI配置工具,作出来的东西肯定满足不了实际的UI需求,复杂的UI配置工具,还不如直接用程序语言开发呢。大家怎么说??

楼上的利害,你说的“UI配置”问题我也打算用程序实现,这样整个系统分三块:工作流引擎负责流程的配置和运转;权限模块负责用户管理、权限控制和单点登录;报表服务器负责表单的定制和界面的定制以及生成报表。用AOP的思想分别实现,增强复用性和扩展性。
哈哈,我是不是太贪了,不过这是终极目标,我会为之奋斗。

JMS或MDB只是一部分,实现消息机制,还需要和权限系统挂钩,这道题目太大,不容易做,逐步完成,比如不贪求第一步就实现流程全部可定制,相对可定制,可使用Web界面定制就可以,这是我扩展JdonSD框架的第一步。

工作流模型的定制暂时用JaWE,它的功能不错,可以定制出比较复杂的业务流程,且生成的文档符合标准。
以后再考虑实现自己的定制工具,比如用applet,以满足web功能。

lante说的问题(每配置一个流程,都需要开发新的UI),应该是普遍存在的吧,你们怎么做的呀?

>后再考虑实现自己的定制工具,比如用applet,以满足web功能
我打算不会采取applet或Swing这样重量客户端,我做的工作流定制是介于标准工作流和实际应用之间,并综合JMS、 RBAC等技术,我目前感觉只要Jsp/Html这样普通界面就可以了。

流程说白了,我认为也是节点之间关系,设计模式、工作流这些都是在研究关系(调用和被调用、下一步和上一步),真可是大学问,正如人之间的关系一样。

如果你希望先建一个可以流转的引擎,建议看XPDL,wfmc的一个基于XML的流程定义,加上JMS MDB,引擎和应用程序、过程之间用消息转递,数据传递可以在DB中,或直接用JMS消息也行。先不用考虑权限等。
我自己已经开发完这么一个引擎,一个月就够了,流程直接使用xml文件定义,GUI的结果也就是一个文本文件。

请问楼上高人:流程参与者是如何完成引擎分配给她的任务项的(比如表单的提交,审批)。
我现在很乱,老是把工作流与应用逻辑混在一起,好几天没啥思路,设计不下去了!!!!

我举例说明。
一个任务清单,task1,task2,....task3。这与审批和表达提交没有任何关系,包括权限,我理解这是工作流引擎的核心。

每个任务有一个执行程序、service、bean、.DCOM等等,实现方法你可以自己定,怎么方便怎么来。可能这个程序就是审批,以及审批设计到的数据等,这和工作流引擎有关吗?我设计的思路是没有关系。

工作流引擎的工作:知道task1完成了,看任务清单(用XPDL定义),下个任务是谁,然后发消息给下taskN,确认taskN收到消息,然后工作流引擎就喝茶等着,等task给它的消息。

工作流引擎和任务task之间如何交互,也不一定用消息,如果是一个紧耦合的应用,让引擎直接阻塞调用也行,极端的例子,电话程控交换机有一个状态机,原理也是流转。

个人见解,请指正。

lucaslucas 这个原理和我去年设计的一个省市委OA中工作流引擎类似,我当时没有用XPDL定义,而是用户临时定义。lucaslucas在这方面比我做得好。想不到真有和我相同想法和做法的人,这就是网络的好处。

我准备将以前做的这个引擎在提升,以后可与lucaslucas 多切磋。