一般工作流管理系统分为,流程引擎,电子表单系统(自定义表单),流程设计器,流程管理监控平台等主要模块。流程引擎和电子表单系统应该是弱耦合的,各自都能独立的完成功能。
同时流程引擎和电子表单都设计好接口事件等,便于相互集成或和其它系统的集成。
一、流程引擎的事件接口:
流程定义描述时候,步骤节点,动作节点,动作结果节点,均设置有前置后置事件函数;
当流程流转到这些节点时,会触发节点的前置事件函数;
当离开节点时,会触发后置事件;
注:但是流程引擎驱动电子表单不是用事件接口的方式来实现:流程引擎的动作节点中有个view属性,挂接表单的url,当流程运行到此动作节点时,即读出view属性的url,打开并运行此表单。此表单可以是eform自定义工具定义的表单,也可以是用户自主开发的jsp页面等。
节点的前置后置事件函数:
所有的前置后置函数都统一实现一个接口FunctionProvider
FunctionProvider.java接口,只有一个方法execute,所有实现此接口的类,都需要实现这个方法。
public void execute(Map transientVars, Map args, PropertySet ps) throws WorkflowException;
Map transientVars:流程上下文信息可以从此map中获得;
Map args :节点定义时候的参数可以从此map中获得;
PropertySet ps:流程实例中的持久化变量从此获得。
条件节点的判断函数接口:
流程引擎的动作结果中可以定义条件,工作流引擎定义了一些内置的条件判断,也可以通过实现Condition.java接口,扩展出一些自定义的条件判断函数。
Condition.java接口中只有一个方法,所有实现此接口的条件函数都必须实现此方法:
public boolean passesCondition(Map transientVars, Map args, PropertySet ps) throws WorkflowException;
Map transientVars:流程上下文信息可以从此map中获得;
Map args :节点定义时候的参数可以从此map中获得;
PropertySet ps:流程实例中的持久化变量从此获得。
在条件节点定义的时候,引入此条件判断函数,在流程运行的时候,引擎中就执行自定义函数中的passesCondition()函数,返回真假结果。
二、电子表单的事件接口:
所有电子表单的事件接口类:
所有的事件注册的类:
此类负责注册前置后置事件类,并利用反射实例化前置后置事件类。
例如 电子表单的保存前置后置事件,先注册在此类中,cn.com.fcsoft.eworkflow.WorkflowDoAction.java类为的电子表单保存后执行的事件,此类负责在电子表单保存后,继续执行流程的递进。
所有电子表单中的事件前置后置函数均实现EventProvider接口,定义的类均在EventResolver类内注册,利用反射机制,在需要触发的地方得到类的实例,执行execute()方法,执行自定义的事件功能。
相关链接;
web工作流管理系统开发之五 开源osworkflow之用户系统改造
web工作流管理系统开发之八 开源osworkflow之任务管理
web工作流管理系统开发之十二 同一张表单在流程多节点中流转的权限控件
web工作流管理系统开发之十三 流程与电子表单集成之事件实现篇