一個最符合中國國情的工作流設計參考(包括PHP實現)
1 根據80/20原則,只使用wfmc模型中最符合自身應用的20%功能
2 充分吸收國內使用jbpm開發BOSS中遇到的問題,工作流引擎只負責引數的收集和流程的流轉,具體和業務的控制,交給每個流程定製的控制類去實現。
3 表單採用簡單的html+控制標籤的方法實現
4 許可權和模板引擎,以及其它輔助函式直接使用辦公系統自帶的框架
5 充分利用PHP語言的特點,流程設計是基於資料庫的,程式上使用OO設計,但採用重物件的方法
6 不把視覺化設計流程的工作交給最終客戶,而且由設計時完成,因此不考慮流程版本更新的問題
一、工作流資料表設計
tbl_workflow_defination:工作流定義表
defination_id |
流程id |
|
defination_name |
流程名稱 | |
defination_handler |
流程處理輔助檔案,每個工作流一個檔案 |
自定義處理檔案,及其物件。例如workflow-proporsal-handler.php,其中定義物件proposal |
tbl_workflow_node:流程結點步驟表
node_id |
結點id |
|
defination_id |
流程id |
|
node_index |
結點序號 |
結點的step |
node_name |
結點名稱 |
|
node_type |
結點型別 |
1人為決策,2自動處理(直接執行execute_function),3等待外部響應(例如外部WS觸發),4分支,5彙總 6結束結點(此結點執行時候自動終止程序) |
init_function |
流程初始函式 |
|
run_function |
流程執行函式 |
|
save_function |
流程儲存函式 |
|
transit_function |
流程流轉函式 |
|
prev_node_index |
前結點序號 |
例如1。開始結點沒有 執行前,通過此來校驗一下流程 |
next_node_index |
後結點序號 |
例如[同意]3,[不同意]4。尾結點或要結束的結點沒有,若沒有,直接呼叫end |
executor |
執行角色,組,人 |
role[1,2] group[1,2] user[1,2],為空由執行時決定 |
execute_type |
執行型別 |
0需所有人執行 1只需一人執行 |
remind |
提醒 |
0不提醒 1郵件 2簡訊 3郵件和簡訊 |
field |
可編輯的欄位 |
name,content |
max_day |
最長時間(天) |
tbl_workflow_process :流程執行程序表
process_id |
程序id |
|
defination_id |
流程id |
|
process_desc |
程序描述 |
顯示在我的工作臺中 |
context |
上下文 |
存放上下文變數,例如業務表的id |
current_node_index |
當前結點序號 |
|
start_time |
流程啟動時間 |
如遇分支、匯合顯示為: 1=》3,4=》3,5=》6 |
finish_time |
流程完成時間 |
|
state |
狀態 |
1執行 2結束 |
start_user |
發起人 |
發起人,用於顯示自己的流程 |
tbl_workflow_thread :流程執行執行緒表
thread_id |
執行緒id |
process_id |
程序id |
process_desc |
程序描述 |
node_id |
結點id |
node_name |
結點名稱 |
executor |
|