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

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

 

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

 

 

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

 

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

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

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

 

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

2009年10月14日 616KB 下载

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭