【正文】
結(jié)束活動(dòng)的后置條件等。大部分活動(dòng)都是原子性的(普通活動(dòng)),這種情況下它們是最小的工作單元,即使原子活動(dòng)能為執(zhí)行者產(chǎn)生多個(gè)工作項(xiàng),或者調(diào)用多個(gè)應(yīng)用程序。子過程是另一種活動(dòng)類型。 它實(shí)現(xiàn)了一個(gè)完整的新的工作流過程。子過程中的過程定義完全獨(dú)立于第一種活動(dòng)(這是子過程所屬于的活動(dòng))。它有自己的活動(dòng)集合,內(nèi)部轉(zhuǎn)移、參與者、應(yīng)用程序定義和工作流相關(guān)數(shù)據(jù)。不過后三者可能是從包中繼承下來(lái)的,這在工作流過程定義中很常見。一個(gè)活動(dòng)還可能是塊活動(dòng),塊活動(dòng)能執(zhí)行一個(gè)活動(dòng)集或者一個(gè)活動(dòng)/轉(zhuǎn)移圖。 在活動(dòng)集中的活動(dòng)和轉(zhuǎn)移共享所在過程的名字空間。啞活動(dòng)(路徑活動(dòng))自己本身并不完成任何事情。這種類型的活動(dòng)用來(lái)進(jìn)行同步和構(gòu)建復(fù)雜精細(xì)的轉(zhuǎn)移條件例如活動(dòng)的前置條件和后置條件?;顒?dòng)和與活動(dòng)相似的對(duì)象可以用工具箱工具欄中的按鈕來(lái)添加。原子活動(dòng)原子活動(dòng)的圖標(biāo)是。選擇之后,鼠標(biāo)指針顯示你將添加的是什么類型的對(duì)象。 雙擊按鈕就進(jìn)入了持久模式,這樣在創(chuàng)建了第一個(gè)對(duì)象之后,該工具將不會(huì)被撤銷。 對(duì)象創(chuàng)建后它們的屬性采用缺省值,一般都會(huì)被修改。 右鍵單擊對(duì)象將出現(xiàn)上下文菜單,其中有打開屬性窗口的菜單項(xiàng),還有可選的編輯菜單項(xiàng)(僅對(duì)于容器類型的活動(dòng)有效)?;顒?dòng)屬性對(duì)話框有6個(gè)標(biāo)簽頁(yè) 常規(guī)、工具、前置條件、后置條件、模擬信息和用戶定義的活動(dòng)屬性。 ID屬性是機(jī)器產(chǎn)生的只讀屬性,它對(duì)于機(jī)器來(lái)說(shuō)很重要。第一個(gè)常規(guī)標(biāo)簽頁(yè)的字段已經(jīng)在上面的表格中進(jìn)行了解釋。第二個(gè)工具標(biāo)簽頁(yè)讓你來(lái)定義執(zhí)行引擎需要運(yùn)行的應(yīng)用程序,使得該活動(dòng)被執(zhí)行。 它基本上就是個(gè)應(yīng)用程序列表,包括了在工作流的過程層次和包層次中定義的應(yīng)用程序的集合。活動(dòng)屬性的第三和第四個(gè)標(biāo)簽頁(yè)是前置條件和后置條件。前置條件定義了輸入轉(zhuǎn)移的匯聚方式。它可能是XOR或者AND,XOR指定了任一輸入轉(zhuǎn)移都可以啟動(dòng)活動(dòng),AND指定了所有輸入轉(zhuǎn)移完成之后才能啟動(dòng)。后置條件除了轉(zhuǎn)出類型以外(與匯聚相反),也提供了輸出轉(zhuǎn)移的轉(zhuǎn)出條件。 對(duì)于所有的輸出轉(zhuǎn)移,都會(huì)顯示在列表框中。 選擇一個(gè)項(xiàng)目,對(duì)話框的下半部分將顯示當(dāng)前定義的有關(guān)轉(zhuǎn)移的信息:名字、前一活動(dòng)和后一活動(dòng)、描述和該轉(zhuǎn)移的條件。如果活動(dòng)僅有一個(gè)輸入/輸出轉(zhuǎn)移,則不能設(shè)定它的匯聚/轉(zhuǎn)出類型。第五個(gè)標(biāo)簽頁(yè)定義了仿真信息:活動(dòng)是一次還是多次實(shí)例化、代價(jià)、等待時(shí)間和工作時(shí)間等。最后一個(gè)標(biāo)簽頁(yè)提供了擴(kuò)展屬性的機(jī)制。啟動(dòng)和結(jié)束對(duì)象表示啟動(dòng)的圖標(biāo)是,表示結(jié)束的圖標(biāo)是。過程層次中有這些元素的符號(hào)雖然啟動(dòng)和結(jié)束并不是XPDL規(guī)范的一部分,但是有必要圖形化的表現(xiàn)出工作流過程從哪里開始,到哪里結(jié)束。 每個(gè)元素都只有一個(gè)轉(zhuǎn)移。用戶可以配置JaWE不要使用啟動(dòng)/結(jié)束對(duì)象,這種情況下,該過程的啟動(dòng)和結(jié)束活動(dòng)用特殊的顏色表示。子過程子過程是這樣一種活動(dòng)類型,它的實(shí)現(xiàn)是另一個(gè)工作流過程,所以工具和執(zhí)行者數(shù)據(jù)不是特別重要,而子過程的執(zhí)行模式和傳給它的參數(shù)卻很重要。 在屬性對(duì)話框中的其它字段和原子活動(dòng)的都相同。塊活動(dòng)一個(gè)塊活動(dòng)執(zhí)行一個(gè)活動(dòng)集,或者一個(gè)自包含的活動(dòng)/轉(zhuǎn)移圖。它從塊活動(dòng)的執(zhí)行開始,到集合中的第一個(gè)活動(dòng),并在集合中繼續(xù)運(yùn)行,直至到達(dá)一個(gè)退出活動(dòng)(即沒有輸出轉(zhuǎn)移的活動(dòng))。 執(zhí)行將返回到塊活動(dòng)后續(xù)的輸出轉(zhuǎn)移繼續(xù)運(yùn)行。 轉(zhuǎn)移兩個(gè)活動(dòng)之間的關(guān)聯(lián)通過轉(zhuǎn)移來(lái)建立。轉(zhuǎn)移并不僅僅是連接活動(dòng),它們還描述了工作流執(zhí)行期間活動(dòng)之間可能的轉(zhuǎn)移和允許或禁止轉(zhuǎn)移的條件。JaWE中有三種類型的轉(zhuǎn)移簡(jiǎn)單轉(zhuǎn)移、自轉(zhuǎn)移和循環(huán)轉(zhuǎn)移。 簡(jiǎn)單轉(zhuǎn)移是兩個(gè)活動(dòng)之間的連接,用一條直線來(lái)表示。 自轉(zhuǎn)移也是兩個(gè)的活動(dòng)之間的連接但是從圖形上看起來(lái)它們分裂為了三個(gè)部分(但是本質(zhì)上它們和它們表示的XPDL邏輯沒什么不同)。循環(huán)轉(zhuǎn)移是從一個(gè)活動(dòng)到它本身的轉(zhuǎn)移,圖形化的表示是一個(gè)帶箭頭的圓圈。 用來(lái)創(chuàng)建轉(zhuǎn)移的圖標(biāo)是:、和。下面是編輯轉(zhuǎn)移屬性的對(duì)話框:雖然在文章前面已經(jīng)解釋過了開始條件和結(jié)束條件,但在這里仍然給出轉(zhuǎn)移的屬性表。Table.TransitionNameM/ODescriptionConditionOA Transition condition expression based on workflow relevant data.DescriptionOShort textual description of the Transition.Extended AttributesOOptional extensions to meet individual implementation needs.IdMUsed to identify the Transition.FromM (for Regulars and Loop End)Determines the FROM source of a Transition (Activity Identifier).ToMDetermines the TO target of a Transition (Activity Identifier).NameOText used to identify the Transition.5 例子以一個(gè)報(bào)銷流程為例:基本流程如下: 報(bào)銷人填寫報(bào)銷信息,提交給部門經(jīng)理審批;部門經(jīng)理錄入審批意見,分為以下兩種情況: 同意報(bào)銷,則信息流轉(zhuǎn)到財(cái)務(wù)繼續(xù)處理,錄入處理信息,反饋給報(bào)銷人; 不同意報(bào)銷,信息流轉(zhuǎn)回報(bào)銷人,報(bào)銷人查閱相關(guān)信息,結(jié)束報(bào)銷; 在JaWE制作文件新建一個(gè)包,點(diǎn)擊“文件”菜單的“新建”:在包屬性界面填寫相關(guān)信息,其中“ID”是必填項(xiàng),另外腳本預(yù)言類型填寫“text/java”:點(diǎn)擊“插入過程”按鈕:在右面生成一個(gè)新的過程:在過程上點(diǎn)擊右鍵,選擇“屬性”:在過程屬性界面填寫相關(guān)信息:點(diǎn)擊包的“工作流相關(guān)數(shù)據(jù)”:定義相關(guān)數(shù)據(jù)集:在過程上點(diǎn)擊右鍵,選擇“編輯”:過程編輯界面如下:點(diǎn)擊“參與者”按鈕:新建參與者“報(bào)銷人”:同樣建立“部門經(jīng)理”和“財(cái)務(wù)”。繪制如下流程圖:編輯“提交報(bào)銷申請(qǐng)”活動(dòng)的屬性,選擇“常規(guī)”,“開始模式”選擇manual:編輯“提交報(bào)銷申請(qǐng)”活動(dòng)的屬性,選擇“擴(kuò)展屬性集”,點(diǎn)擊“新建”:在“名字”下拉列表填入“VariableToProcess_UPDATE”,值寫入“staffname”(員工名字):同樣新建“money”(報(bào)銷金額)和“note”(備注)兩個(gè)擴(kuò)展屬性。同樣在部門經(jīng)理的“查看、處理報(bào)銷申請(qǐng)”的擴(kuò)展屬性增加staffname、money、note屬性,名字使用“VariableToProcess_VIEW”:新建isOK(是否同意報(bào)銷),mome(處理意見),名字是“VariableToProcess_UPDATE”編輯“是否同意報(bào)銷”路徑活動(dòng)的“后置條件”:編輯“選擇目標(biāo)活動(dòng)”的“查看處理意見”:編輯“選擇目標(biāo)活動(dòng)”的“查看、處理報(bào)銷申請(qǐng)”,注意填寫表達(dá)式:編輯報(bào)銷人的“查看處理意見”,擴(kuò)展屬性增加isOK(部門經(jīng)理是否同意報(bào)銷)、memo(部門經(jīng)理處理意見)、finance(財(cái)務(wù)處理意見),名字使用“VariableToProcess_VIEW”編輯財(cái)務(wù)的“查看、處理報(bào)銷申請(qǐng)”,擴(kuò)展屬性增加staffname(報(bào)銷人),money(報(bào)銷金額),note(備注),isOK(部門經(jīng)理是否同意報(bào)銷),memo(部門經(jīng)理處理意見),名字使用“VariableToProcess_VIEW”finance(財(cái)務(wù)處理意見),名字使用“VariableToProcess_UPDATE”。保存文件為“”。備注: 在shark上載時(shí)一定要保證要上載的文件已經(jīng)關(guān)閉。 在Shark模擬運(yùn)行啟動(dòng)Shark服務(wù)及管理端程序,登入后點(diǎn)擊“上傳”:點(diǎn)擊“確定”:上傳成功后文件顯示在列表中:點(diǎn)擊“包管理”:點(diǎn)擊“載入”,選擇“”:載入成功,則文件顯示在列表:點(diǎn)擊“用戶管理”:點(diǎn)擊“新建用戶”:增加一個(gè)報(bào)銷人的用戶:同樣增加部門經(jīng)理和財(cái)務(wù)的用戶名:點(diǎn)擊“映射”:點(diǎn)擊“增加”:點(diǎn)擊左面的“報(bào)銷人”:點(diǎn)擊右面的staff,點(diǎn)擊應(yīng)用:同樣映射財(cái)務(wù)和部門經(jīng)理:點(diǎn)擊“過程初始化管理”:選擇包example中的“報(bào)銷過程”,點(diǎn)擊“初始化”:點(diǎn)擊“過程監(jiān)視器”:可以看到成功初始化的過程:點(diǎn)擊“連接”菜單的“斷開”:點(diǎn)擊“連接”菜單的“連接”:使用staff用戶登錄:選擇“工作列表管理”:選擇用戶“staff”,則該用戶的工單顯示在列表:選擇工單,然后點(diǎn)擊“更新變量”:填寫相關(guān)信息,點(diǎn)擊“確定”:點(diǎn)擊“完成”按鈕:該步處理完畢,工單流轉(zhuǎn)到下一節(jié)點(diǎn):斷開連接,以“manager”登錄,在工作列表看到待處理工單:填入相關(guān)信息,點(diǎn)擊“確定”按鈕:點(diǎn)擊“完成”按鈕,工單流轉(zhuǎn)到下一節(jié)點(diǎn):斷開以“finance”登錄:填寫相關(guān)信息,確定完成,進(jìn)入下一節(jié)點(diǎn):斷開以“staff”登錄,看到最終報(bào)銷處理結(jié)果:查看處理結(jié)果,確定完成:整個(gè)工單結(jié)束: