webreport

博客园 首页 新随笔 联系 订阅 管理
  163 随笔 :: 0 文章 :: 754 评论 :: 95万 阅读

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

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

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

 

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);设置变量值 

 

 

 

 

 

 

相关链接;

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

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

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

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

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

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

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

 

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

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

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

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

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

 

 

posted on   web报表  阅读(5266)  评论(1编辑  收藏  举报
点击右上角即可分享
微信分享提示