web工作流管理系统开发之十三 流程与电子表单集成之事件实现篇

一般工作流管理系统分为,流程引擎,电子表单系统(自定义表单),流程设计器,流程管理监控平台等主要模块。流程引擎和电子表单系统应该是弱耦合的,各自都能独立的完成功能。

同时流程引擎和电子表单都设计好接口事件等,便于相互集成或和其它系统的集成。

一、流程引擎的事件接口:

流程定义描述时候,步骤节点,动作节点,动作结果节点,均设置有前置后置事件函数;

当流程流转到这些节点时,会触发节点的前置事件函数;

当离开节点时,会触发后置事件;

注:但是流程引擎驱动电子表单不是用事件接口的方式来实现:流程引擎的动作节点中有个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工作流管理系统开发之一 工作流概念

web工作流管理系统开发之二 工作流引擎

web工作流管理系统开发之三 可视化流程设计器

web工作流管理系统开发之四 自定义表单

web工作流管理系统开发之五 开源osworkflow之用户系统改造

web工作流管理系统开发之六 表单权限与流程的权限控制

web工作流管理系统开发之八 开源osworkflow之任务管理

web工作流管理系统开发之十 数据库连接及事务设定

web工作流管理系统开发之十一 流程数据与业务数据的交互

web工作流管理系统开发之十二 同一张表单在流程多节点中流转的权限控件

web工作流管理系统开发之十三 流程与电子表单集成之事件实现篇

web工作流管理系统开发之十四 流程设计器属性页面之实现篇  

原文地址:https://www.cnblogs.com/webreport/p/1633369.html