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