OSWorkflow深層講解系列(一)初始化的原理收藏
周日,莫映我們javaparty的伙伴講了講osworkflow,估計(jì)很多人還是一頭霧水。目前國(guó)內(nèi)似乎關(guān)注osworkflow的人越來(lái)越多,但是卻沒有多少人去關(guān)注其真正值得參考和學(xué)習(xí)的地方,這是不應(yīng)該的。OSWorkflow的確非常靈活,但是我們不光需要知道“用的靈活”,還要知道“深層次的東東”。 于是才有了這個(gè)系列介紹的打算: 在閱讀此系列之前,請(qǐng)隊(duì)FSM又算了解,也請(qǐng)先閱讀一下這篇文檔:http://blog.csdn.net/james999/archive/2004/10/29/158653.aspx 我們現(xiàn)在就先從osworkflow的一個(gè)實(shí)例如何初始化入手:
首先OS的Workflow,和我們通常所理解的Engine并不是很一樣。在OSWorkflow中沒有“Service”的概念,所以每次訪問的時(shí)候,都可以重新創(chuàng)建一個(gè)Workflow對(duì)象。我們可以把這個(gè)Workflow理解成一個(gè)Execute Engine或者Execute Runner。在一個(gè)訪問請(qǐng)求中,一個(gè)Workfow對(duì)象負(fù)責(zé)維護(hù)一個(gè)流程實(shí)例的管理和操作。
我們先來(lái)說說initialize方法,可以邊看文檔,邊閱讀osworkflow的AbstractWorkflow類: 在你的一個(gè)工作流定義文件中,至少是需要定義一個(gè)initial action。這些initial action其實(shí)就是流程實(shí)例的可能運(yùn)行起點(diǎn)。就如同我們通常說說的start node或者start activity等等。
在initialize方法中,主要是存在四個(gè)功能: (1) 創(chuàng)建流程實(shí)例對(duì)象,在osworkflow中,流程實(shí)例對(duì)象用WorkflowEntry接口的子類實(shí)現(xiàn) (2) 構(gòu)造臨時(shí)變量的集合,即transientVars;用于在一個(gè)轉(zhuǎn)移過程中臨時(shí)保持?jǐn)?shù)據(jù)狀態(tài) (3) 獲取指定的Action對(duì)象 (4) 執(zhí)行這個(gè)Action,并造成轉(zhuǎn)移,即transitionWorkflow方法 這幾個(gè)功能中,重中之重,也是OSWorkflow的最為核心的算法,就是最后的轉(zhuǎn)移。在這轉(zhuǎn)移過程中,會(huì)執(zhí)行下面的一系列操作: (這張列表最初是由 莫映 整理,我補(bǔ)充和修改了一些) (01) Get current step(獲取當(dāng)前的Step) (02) Validate transientVars(驗(yàn)證臨時(shí)變量) (03) Validate inputs(驗(yàn)證輸入的數(shù)據(jù)) 如果step不為null(執(zhí)行初始化action的時(shí)候,current step還不存在) (04) Execute post-functions(step-level) (執(zhí)行step的post function) (05) Execute pre-functions(action-level) (執(zhí)行action的pre function) (06) Check each conditional results (檢查每一個(gè)條件的執(zhí)行結(jié)果) (07) Execute pre-functions(result-level) (運(yùn)行result的pre function) (08) Move current step into history (09) Create new current step (10) Execute pre-functions(step-level) (11) Execute post-functions(result-level) (12) Execute post-functions(action-level) 如果是初始化動(dòng)作 (13) Mark the entry state as Activated 如果是結(jié)束動(dòng)作 (14) Set the entry state Completed 獲取globalActions中可以自動(dòng)執(zhí)行的,并執(zhí)行 (15) perform available and auto global actions |
|
來(lái)自: 昵稱2807 > 《OA & WorkFlow》