如何实现Shark工作流?

如何实现Shark工作流?

Shark工作流的实现和WMFC&OMG规范的对比

-----第一部分:流程的初始化和执行

活动的状态列表:

1、 open.running

2、 open.not_running.not_started

3、 open.not_running.suspended

4、 closed.completed

5、 closed.terminated

6、 closed.aborted

 

流程类名:WfProcess,所有具体的流程实例通过:WfProcessMgr 类来管理,调用create_process方法来程成一个Process的实例。

 

工作流活动的初始化过程如下:

InstantiateProcess类中,相应初始化消息,调用actionPerformed方法来完成。具体如下:

1、 流程实例WfProcess都是通过:WfProcessMgr 类来创建,调用create_process方法来程成一个Process的实例。

2、 获得该流程启动需要得的上下文:

NameValue[] context=proc.process_context();

3、 如果有初始化必需的参数,显示用户界面,用户输入后继续进行。

4、 调用这个实例的start ()函数具体执行这个Process
如下:

1) change_state("open.running");设置这个Process的状态为开始执行;

2) 使用:

Set starts = SharkUtilities.getStartActivities( getProcessDefinition() );

来获得这个Process下所有可执行的活动activity

3) 调用startActivity 执行上面获得Activities 进行具体的活动执行

待续

作者:田春峰

accesine@163.com

 

我在察看了 OsWorkflow , shark , ofbiz , obe , jbpm 后发现工作流困难的地方在于:

1、如何把工作流程和工作流程执行的具体任务联系起来。

就是说:
比如:一个工作流有A,B,C三个具体的活动activity。

那么,如何把这些activity 和具体的java方法函数帮定到一起,

比如:如何让A流程执行createLog()方法,B流程执行makeDesicision()方法,等等。

2、工作流如何在B/S下让用户自定义。

 

如果那位朋友有类似的经验,我们可以交流。