您的位置:首页 > 其它

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

2016-10-14 19:07 323 查看
通常工作流系统在设计之初,都会明确的区分流程数据和业务数据。工作流引擎只关心流程数据,为实现工作流的流转,会为工作流引擎设计一套工作流的表结构,来辅助流程引擎的实现。

业务数据是千变万化的,为实现各自的业务,会设计一系列业务表。业务表,工作流系统是不关心的。

但是工作流数据和业务数据又是交互的关联的。

 

1. 流程和业务数据的基本关联:

为了将业务数据和流程数据关联起来,会有一个关联表,将流程实例和业务数据关联。

在eworkflow中,这层关系的设置在 流程实例表(wf_wfentry)中。



每个流程实例都会和具体的一张业务表关联,(流程需要实现的主业务表),并指明业务表的id字段和描述字段,描述字段可有可无。

每个业务表中都多设置一个流程实例wf_id字段,此字段即=wf_wfentry.id。

通过设置 业务表.wf_id = wf_wfentry.id  和 wf_wfentry.bs_table wf_wfentry.bs_id_field = 业务表.id  
将流程和业务关联起来;

 

2. 流程和业务数据的交互:

在流程定义和运行的上下文中经常会需要引入业务数据。
比如报销流程中的,流程定义和运行时,都需要取 报销金额 做为判断几级审核的条件,上级审核,也需要取审核结果作为流转到下一步的依据。

 

这样就势必在流程上下文中引入业务数据:

在eworkflow中,是这样引入的:

在业务数据的维护模块,即业务自定义表单中:业务数据集,将业务关键字段勾选为 “流程用”。即将此业务关键字标识为可供流程上下文使用了。

 


 

 

 

在流程定义时:动作(关联到的业务表单的动作)的前缀函数设置一个ActionPreFunction,此类负责将业务表单中,勾选的流程用的关键字段
持久化到流程上下文中。然后动作的结果中,就可以运用业务关键了。

 


 

 

 

动作结果中设置:


 

关键字段类型不同,做判断的规则和写法略不同,遵循java的语法规则。

 字符型的变量比较

   propertySet.getString("关键字名").equals("值") 

   

 整数型

   propertySet.getLong("关键字名")==3 操作符号==,>,<

  实数型的

   propertySet.getDouble("关键字名")>3.5 操作符号==,>,< 

  日期型的   

   java.util.Date.compareTo(propertySet.getDate("关键字名"),anotherDate) 操作符号

   

 //另外:propertySet还可以在前置后置函数中 propertySet.setString("caller", caller);设置变量值 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐