通常工作流程系統在設計之初,都會明確的區分流程資料和業務資料。工作流程引擎只關心流程資料,為實現工作流程的流轉,會為工作流程引擎設計一套工作流程的表結構,來輔助流程引擎的實現。
業務資料是千變萬化的,為實現各自的業務,會設計一系列業務表。業務表,工作流程系統是不關心的。
但是工作流程資料和業務資料又是互動的關聯的。
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工作流程管理系統開發之十四 流程設計器屬性頁面之實現篇