曾经迷茫的起点,多年后终于明白了(续)
上文寫到流程如何與業務系統結合,曾經的三大迷茫點:
迷茫一:是直接在菜單上掛接 采購申請流程,點擊就打開執行采購單?還是做一個通用的模塊,每次有新增的業務流程,就按業務流程名稱列出來,點擊一個就啟動一個業務流程實例?
迷茫二:是先初始化得到了流程實例id,再打開第一個節點關聯的表單;還是先打開業務表單,業務數據提交時,再得到流程實例id呢?
迷茫三:流程實例第二個節點的辦理,第三個節點的辦理等待,通過什么方式來做?是直接掛菜單還是通過通用的模塊來執行?
后來在不斷升級和用戶定制開發的時候,終于找到了合理的解決方案,解開了曾經的迷茫。
解決方案:
從流程管理的角度
在工作流管理中心,做一個專門的模塊,列出所有的業務流程,點擊可以啟動指定的流程實例。
?
?
從這個模塊啟動流程實例,先初始化流程,獲得流程實例wfid,然后執行流程的第一個節點,打開第一個節點掛接的業務表單,等待用戶輸入。
用這種模式打開的業務表單,注意,業務表記錄尚未建立,但流程實例wfid已經生成了。當表單提交時,保存業務記錄,并寫入wfid。同時執行流程的動作,使得流轉到下一步。
這種模式有個問題,就是當 打開第一個節點掛接的業務表單,用戶直接關閉表單,不提交數據的時候,則會造成發起了一個業務流程,并未和業務數據關聯上(因為業務數據還未生成),如果第一個節點未設置任務提醒信息,則會多出一個空的流程實例id。
從定制業務模塊的角度
做一個固定模塊的菜單,例如,制定采購單,菜單參數中包含:業務流程名稱,版本,初始化動作id,表單,動作id
點擊菜單,直接打開菜單參數中關聯的表單,等待用戶輸入。
用戶錄入完成,點擊執行,保存業務數據之前先執行流程初始化,得到流程實例id,然后執行業務數據的保存。再執行流程的第一個節點,使得流程流轉到第二個節點。
這種模式,是在第一個節點的業務數據提交時,一次性做啟動流程實例,執行流程的第一個節點。當用戶直接關閉表單頁面時,不會多出一個空的流程實例。但是需要先指定流程初始化的id,第一個節點的表單和動作id.
當工作流系統綁定上自定義表單,電子表單時,就可以在自定義表單中,定制好這些實現。
做好通用的功能函數,去執行流程的初始化,執行流程的動作,自由跳轉,回退,查看流程實例的軌跡。。。。。
業務表單中引用上這些通用的功能函數,就可以啟動流程,執行流程,使得業務流程流轉下去,直到結束。
我們公司的eworkflow自定義工作流系統,綁定上eform自定義表單后,就可以利用eform自定義表單的工具條來實現這些定制的功能。
如定制的 工作流工具條:
暫存:只保存業務數據,不走流程的流轉
執行:保存業務數據并執行流程的動作
軌跡:查看當前流程實例的軌跡
跳轉:實現任意的回退和自由的跳轉
在用戶畫好的業務表單中,直接引入此工具條,就實現了和流程的綁定了。
當通用的工具條上的功能搭配不是很合適,或不符合用戶的要求時,用戶可以自定義工具條上的功能,可以根據自己的需要,選擇這些功能任意的組合出自己的工具條。同樣掛接到業務表單上,實現和流程的綁定。
甚至用戶可以直接在表單中,拉下一個button,button的點擊函數中設置相應的函數,就可以了。
用這種方式制定好的業務表單,掛接到業務流程中,適用于 從流程管理的角度,也適用于? 從定制業務模塊的角度。
這兩種模式都兼容,因為在eform的工具條函數中,已經做好了處理了。
這樣的話,利用eworkflow+eform實現一個業務流程的過程,就可以這樣:
1. 流程設計器中,按業務處理過程建立好業務流程,如上文的采購申請流程:
2. 根據業務流程中涉及的表單,設計好數據庫表結構,和業務表單對應上。
利用eform表單設計器,畫好業務表單,可以選擇通用的工作流工具條,也可以可視化的自己定制工具條。
3. 流程設計器中,打開節點,選擇eform設計的業務表單,保存流程。
測試運行,在流程管理中心,點擊業務流程列表,啟動剛建立的業務流程,提交表單數據。
根據業務的流轉,更換不同的角色登錄,從我的任務列表中,選擇繼續辦理業務,直到流程實例結束。
4. 測試運行沒問題后,O(∩_∩)O哈哈~? ,一個業務流程的開發就結束了。就可以投入正式使用了,在正式使用之前,先發布一下流程,發布后的流程不能再修改和刪除了。
5. 當發布后的流程,掛接到用戶的應用系統中:
?可以在通用模塊業務流程列表中運行;
? 也可以 增加一個菜單鏈接,菜單鏈接中指定業務流程名稱,流程版本,初始化動作id,業務表單名,動作id。
這樣利用eworkflow+eform做流程實例的啟動和定制菜單的方式啟動就很方便了,可以做到兩種方式都兼容O(∩_∩)O,確實解開了多年來的迷惑。
?
總結
以上是生活随笔為你收集整理的曾经迷茫的起点,多年后终于明白了(续)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 配置Exhcange 2007、Exch
- 下一篇: ▲为什么要用css Sprite技术?