工作流管理系統開發之十一 流程數據與業務數據的交互

通常工作流系統在設計之初,都會明確的區分流程數據和業務數據。工作流引擎只關心流程數據,爲實現工作流的流轉,會爲工作流引擎設計一套工作流的表結構,來輔助流程引擎的實現。

業務數據是千變萬化的,爲實現各自的業務,會設計一系列業務表。業務表,工作流系統是不關心的。

但是工作流數據和業務數據又是交互的關聯的。

 

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);設置變量值 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章