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

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

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

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

 

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

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

在eworkflow中,这层关系的设置在 流程实例表(wf_wfentry)中。
web工作流管理系统开发之十一 流程数据与业务数据的交互_第1张图片

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


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

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

 


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

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

 

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


在eworkflow中,是这样引入的:


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

 

 

 

 

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

 

web工作流管理系统开发之十一 流程数据与业务数据的交互_第2张图片 

 

 


动作结果中设置:


 

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

 字符型的变量比较
   propertySet.getString("关键字名").equals("值")
   
 整数型
   propertySet.getLong("关键字名")==3 操作符号==,>,<

  实数型的
   propertySet.getDouble("关键字名")>3.5 操作符号==,>,<
  日期型的   
   java.util.Date.compareTo(propertySet.getDate("关键字名"),anotherDate) 操作符号


   
 //另外:propertySet还可以在前置后置函数中 propertySet.setString("caller", caller);设置变量值 

 

 

 

 

 

 

相关链接;

web工作流管理系统开发之一 工作流概念

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

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

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

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

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

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

 

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

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

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

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

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

 

 

你可能感兴趣的:(Web)