<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 193,  comments - 520,  trackbacks - 0
     

    三、推模式

    在創(chuàng)建階段,系統(tǒng)根據(jù)不同的創(chuàng)建模式為任務(wù) 節(jié)點(diǎn)產(chǎn)生了一個(gè)或多個(gè)工作項(xiàng),每個(gè)工作項(xiàng)或分配給單個(gè)資源或分配給角色、部門(mén)等。那么接下來(lái),系統(tǒng)就需要將這些工作項(xiàng)推送給相關(guān)的資源進(jìn)行執(zhí)行,這個(gè)推送 的過(guò)程即是推模式所包含的內(nèi)容。需要注意的是,推模式討論的是對(duì)單個(gè)工作項(xiàng)的推送。

    在前面我們已經(jīng)了解到,工作流系統(tǒng)通過(guò)工作項(xiàng)管理器即不同類(lèi)型的工作項(xiàng)列表與用戶進(jìn)行交互,這里的推送也可以理解為系統(tǒng)將生成的工作項(xiàng)推送至相應(yīng)資源的工作項(xiàng)列表里。


    5-17

    如圖5-17所示,推模式對(duì)應(yīng)著工作項(xiàng)到三種狀態(tài)的變遷:提供給一個(gè)資源拾取執(zhí)行;提供給多個(gè)資源拾取執(zhí)行(這些資源中只會(huì)有一個(gè)會(huì)實(shí)際執(zhí)行,屬于競(jìng)爭(zhēng)關(guān)系);指派給一個(gè)資源負(fù)責(zé)執(zhí)行。

    推模式共有9種,分為3組, 第一組包括提供給單個(gè)資源、提供給多個(gè)資源和指派給單個(gè)資源,討論工作項(xiàng)推送的最終分配狀態(tài);第二組包括隨機(jī)指派、循環(huán)指派和最短隊(duì)列指派,關(guān)注當(dāng)工作項(xiàng) 分配給角色、部門(mén)等包含多個(gè)資源的資源組時(shí),如何從中確定最終的一個(gè)資源并進(jìn)行指派;第三組包括提前分配、即時(shí)分配和推后分配,關(guān)注將工作項(xiàng)推送給用戶的 時(shí)間。

    1、提供給單個(gè)資源(WRP_12: Distribution by Offer - Single Resource

    描述

    能夠在非綁定的基礎(chǔ)上將工作項(xiàng)推送給單個(gè)資源。


    5-18

    如圖5-18所示,任務(wù)A工 作項(xiàng)被系統(tǒng)推送至員工甲的可拾取列表。這意味著員工甲不必為該工作負(fù)責(zé),他可以選擇執(zhí)行該工作也可選擇忽略或拒絕。如果他選擇拒絕或忽略且工作項(xiàng)超時(shí),那 么會(huì)導(dǎo)致系統(tǒng)對(duì)該工作項(xiàng)的重新分配。如果他選擇執(zhí)行該工作,那么他首先需要拾取該工作項(xiàng),這會(huì)使該工作項(xiàng)進(jìn)入他的代辦列表,意味著其必須對(duì)該工作負(fù)責(zé)。

    應(yīng)用

    該模式類(lèi)似于現(xiàn)實(shí)工作中的征求意見(jiàn),先將工作分配給你,然后找你談話,征求你對(duì)該工作的看法,如果合適那么就由你執(zhí)行,否則再找他人執(zhí)行。

    實(shí)現(xiàn)

    參與者對(duì)工作項(xiàng)的拒絕會(huì)導(dǎo)致系統(tǒng)對(duì)工作項(xiàng)的 重新分配,這是實(shí)現(xiàn)該模式的難點(diǎn)。如何重新分配該工作項(xiàng),采取何種重新分配策略,這些都具有很大的復(fù)雜性。實(shí)際上這些工作流模式單個(gè)看起來(lái)可能比較清晰明 了,但一旦組合起來(lái),例如該模式與創(chuàng)建模式結(jié)合起來(lái),那么就有了多種情況變得復(fù)雜起來(lái)。對(duì)于復(fù)雜的問(wèn)題,最好的解決辦法就是留給實(shí)施階段,由用戶情況作出 使用限定。這也再次強(qiáng)調(diào)了工作流實(shí)施在工作流應(yīng)用中的重要性。

    2、提供給多個(gè)資源(WRP_13: Distribution by Offer – Multiple Resource

    描述

    能夠在非綁定的基礎(chǔ)上將工作項(xiàng)推送給多個(gè)資源。


    5-19

    如圖5-19所示,任務(wù)A所 生成的工作項(xiàng)被推送給多個(gè)員工的可拾取列表。這些員工不必為該工作負(fù)責(zé),他們可以選擇執(zhí)行該工作也可選擇忽略或拒絕。如果他們都選擇拒絕或忽略且工作項(xiàng)超 時(shí),那么會(huì)導(dǎo)致系統(tǒng)對(duì)該工作項(xiàng)的重新分配。如果有一名員工選擇執(zhí)行該工作,那么該工作項(xiàng)進(jìn)入他的代辦列表,其他員工將不再具有拾取該工作項(xiàng)的機(jī)會(huì)。

    應(yīng)用

    該模式是典型的競(jìng)爭(zhēng)參與,即多人可以完成該工作,先執(zhí)行者先得。類(lèi)似于尋找志愿者。

    實(shí)現(xiàn)

    該模式的實(shí)現(xiàn)一般是創(chuàng)建階段將工作項(xiàng)分配給角色、部門(mén)等包含多個(gè)資源的分組,在推送階段,將該工作項(xiàng)送至這些組下所有資源共享的可拾取列表里,工作項(xiàng)的實(shí)例只有一個(gè),但是多資源可見(jiàn)。

    3、指派給單個(gè)資源(WRP_14: Distribution by Allocation – Single Resource

    描述

    能夠在綁定的基礎(chǔ)上將工作項(xiàng)推送給單個(gè)資源。


    5-20

    如圖5-20所示,任務(wù)A工作項(xiàng)被系統(tǒng)推送至員工甲的待辦列表。這意味著員工甲必須為該工作負(fù)責(zé)。

    應(yīng)用

    該模式是應(yīng)用最多的模式,直接指定任務(wù)的負(fù)責(zé)人。

    在采用軍事化管理的企業(yè)里,上級(jí)的命令一定要執(zhí)行,下屬?zèng)]有商量和拒絕的權(quán)利。

    實(shí)現(xiàn)

    相比提供,指派實(shí)現(xiàn)非常容易,直接將工作項(xiàng)推送至選定資源的待辦列表。

    4、隨機(jī)指派(WRP_15: Random Allocation

    描述

    當(dāng)存在多個(gè)資源可供選擇時(shí),從中隨機(jī)選擇一個(gè)資源進(jìn)行工作項(xiàng)的指派。


    5-21

    如圖5-21所示,任務(wù)A所生成的工作項(xiàng)在創(chuàng)建階段分配給了開(kāi)發(fā)人員這一角色,在推送階段,系統(tǒng)會(huì)隨機(jī)選取一名開(kāi)發(fā)人員負(fù)責(zé)該工作項(xiàng)的執(zhí)行。

    應(yīng)用

    該模式提供了一種指派資源的非確定性機(jī)制。

    5、循環(huán)指派(WRP_16: Round Robin Allocation

    描述

    當(dāng)存在多個(gè)資源可供選擇時(shí),循環(huán)選擇其中一個(gè)資源進(jìn)行工作項(xiàng)的指派。


    5-22

    如圖5-22所示,任務(wù)A所生成的工作項(xiàng)在創(chuàng)建階段分配給了開(kāi)發(fā)人員這一角色,在推送階段,系統(tǒng)會(huì)循環(huán)輪流選取一名開(kāi)發(fā)人員負(fù)責(zé)該工作項(xiàng)的執(zhí)行。

    應(yīng)用

    不患貧而患不均,平等的分配工作。

    6、最短隊(duì)列指派(WRP_17: Shortest Queue

    描述

    當(dāng)存在多個(gè)資源可供選擇時(shí),選擇其中一個(gè)具有最少待辦工作即最短工作隊(duì)列的資源進(jìn)行工作項(xiàng)的指派。


    5-23

    如圖5-23所示,任務(wù)A所生成的工作項(xiàng)在創(chuàng)建階段分配給了開(kāi)發(fā)人員這一角色,在推送階段,系統(tǒng)發(fā)現(xiàn)員工甲的待辦列表里有兩條待辦工作(任務(wù)B和任務(wù)C),員工乙的待辦列表里沒(méi)有待辦工作,所以系統(tǒng)將任務(wù)A工作項(xiàng)指派給員工乙負(fù)責(zé)該工作項(xiàng)的執(zhí)行。

    應(yīng)用

    該模式的目的在于能夠最快開(kāi)始工作的執(zhí)行,找出相比而言最為空閑的資源迅速開(kāi)始工作。但是實(shí)際應(yīng)用中,僅僅依靠工作的數(shù)量來(lái)判斷資源是否空閑是不可靠的,因?yàn)楣ぷ骱凸ぷ髦g還存在著難易之分。

    7、提前分配(WRP_18: Early Distribution

    描述

    在工作項(xiàng)實(shí)際可以執(zhí)行之前即將該工作項(xiàng)通知或潛在的分配給資源。


    5-24

    如圖5-24所示,任務(wù)A還在執(zhí)行,任務(wù)B還未激活,但此時(shí)任務(wù)B的工作項(xiàng)已經(jīng)提前分配給員工甲,該工作項(xiàng)的主要職責(zé)是通知員工甲將由其來(lái)完成任務(wù)B并能開(kāi)始一部分準(zhǔn)備工作,而實(shí)際的工作則要等到任務(wù)B被激活后才能進(jìn)行。

    應(yīng)用

    該模式強(qiáng)調(diào)的是預(yù)先計(jì)劃,即管理的計(jì)劃性。

    在我們實(shí)際的項(xiàng)目開(kāi)始之前,項(xiàng)目經(jīng)理已經(jīng)通知我們將要進(jìn)行的開(kāi)發(fā)工作,讓我們提前熟悉相關(guān)的技術(shù)。這樣當(dāng)項(xiàng)目開(kāi)始時(shí)就能提高最初迭代的開(kāi)發(fā)效率。

    從某種意義上說(shuō),稍微復(fù)雜一點(diǎn)的工作都應(yīng)該做到提前通知、提前準(zhǔn)備,即計(jì)劃的必要性。

    實(shí)現(xiàn)

    讓工作流系統(tǒng)直接支持該模式比較困難,因?yàn)樵撃J角短自诳刂颇J胶筒煌墓ぷ黜?xiàng)創(chuàng)建模式里,找不出一種通用的模式,無(wú)法預(yù)判工作項(xiàng)的生成和實(shí)際的參與者。在一定范圍內(nèi),可以采用下面的方式變通:


    5-25

    如圖5-25所示,在自動(dòng)節(jié)點(diǎn)執(zhí)行時(shí)能確定任務(wù)B的參與者的情況下,可以通過(guò)自動(dòng)節(jié)點(diǎn)給員工甲發(fā)送郵件或消息進(jìn)行通知,工作流系統(tǒng)并不生成工作項(xiàng)。

    8、即時(shí)分配(WRP_19: Distribution on Enablement

    描述

    在工作項(xiàng)實(shí)際可以執(zhí)行時(shí)將該工作項(xiàng)分配給資源。

    應(yīng)用

    機(jī)器執(zhí)行的工作,重復(fù)單一的審批工作,無(wú)計(jì)劃性的工作,如各種突發(fā)情況的處理。

    實(shí)現(xiàn)

    大多數(shù)工作流系統(tǒng)的標(biāo)準(zhǔn)實(shí)現(xiàn),滿足任務(wù)執(zhí)行條件時(shí)先激活任務(wù)節(jié)點(diǎn),然后創(chuàng)建工作項(xiàng)、分配工作項(xiàng)。

    9、推后分配(WRP_20: Late Distribution

    描述

    在工作項(xiàng)實(shí)際可以執(zhí)行后的某個(gè)時(shí)間才將該工作項(xiàng)分配給資源。


    5-26

    如圖5-26所示,任務(wù)B已經(jīng)激活且已生成可以執(zhí)行工作項(xiàng),但是系統(tǒng)并沒(méi)有將其分配至員工甲的工作項(xiàng)列表里。這是因?yàn)閱T工甲正在執(zhí)行任務(wù)A的工作項(xiàng),直到其執(zhí)行任務(wù)A完畢,系統(tǒng)才會(huì)把任務(wù)B工作項(xiàng)推送至工作項(xiàng)列表。

    應(yīng)用

    保證流程和資源對(duì)工作的負(fù)載處于一種良好的狀態(tài),避免出現(xiàn)下圖的情況:


    5-27

    在敏捷開(kāi)發(fā)里,我們強(qiáng)調(diào)客戶合作,整個(gè)的開(kāi)發(fā)過(guò)程對(duì)用戶透明,用戶知道當(dāng)前正在進(jìn)行的開(kāi)發(fā)工作,也清楚開(kāi)發(fā)團(tuán)隊(duì)的開(kāi)發(fā)速度,在這種情況下,一旦有新的需求加入,用戶會(huì)推遲該需求的實(shí)現(xiàn),或者推遲當(dāng)前其他需求的實(shí)現(xiàn),從而保證整個(gè)團(tuán)隊(duì)的開(kāi)發(fā)效率。

    實(shí)現(xiàn)

    該模式的實(shí)現(xiàn)依賴于推后的策略,即在什么情況下推后分配,滿足什么條件下進(jìn)行分配。具體實(shí)現(xiàn)同樣采取推后模式,推后到實(shí)施階段實(shí)現(xiàn)。

    posted @ 2009-10-25 21:46 ronghao 閱讀(1818) | 評(píng)論 (1)編輯 收藏

    二、創(chuàng)建模式

    創(chuàng)建模式在系統(tǒng)創(chuàng)建工作項(xiàng)時(shí)生效,如下圖所示,其位于工作項(xiàng)生命周期的創(chuàng)建階段。


    5-2

    正如上面提到的,工作流系統(tǒng)在執(zhí)行任務(wù)節(jié)點(diǎn)時(shí)會(huì)為其創(chuàng)建相應(yīng)的工作項(xiàng),根據(jù)情況工作項(xiàng)可以是一個(gè)也可以是多個(gè)。

    創(chuàng)建模式作為流程模型的構(gòu)成部分在流程設(shè)計(jì)期指定,通常在任務(wù)節(jié)點(diǎn)的定義里進(jìn)行定義,與一個(gè)任務(wù)關(guān)聯(lián),其用來(lái)限定可執(zhí)行該任務(wù)的資源范圍。系統(tǒng)根據(jù)創(chuàng)建模式限定的資源范圍生成工作項(xiàng),工作項(xiàng)可以直接分配給人,也可以分配給角色、部門(mén)、崗位等。

     

    1、直接分配(WRP_01: Direct Distribution

    描述

    在設(shè)計(jì)期直接為任務(wù)指定特定的資源,該任務(wù)的工作項(xiàng)能夠在運(yùn)行期分配給它。注意,指定的資源可以為多個(gè),如果是多個(gè)的話就會(huì)生成多個(gè)工作項(xiàng),為每個(gè)資源生成一個(gè)單獨(dú)的工作項(xiàng)。該模式實(shí)際限制執(zhí)行該任務(wù)的資源范圍。


    5-3

    如圖5-3所示,任務(wù)A在定義時(shí)直接指定給員工甲,任務(wù)B在定義時(shí)直接指定給員工乙,當(dāng)實(shí)際執(zhí)行任務(wù)A和任務(wù)B時(shí),將由員工甲和員工乙分別執(zhí)行。

     

    應(yīng)用

    該模式一般應(yīng)用于流程里的關(guān)鍵路徑。同時(shí), 在中小企業(yè)里,該模式是應(yīng)用最多的分配模式,因?yàn)槿藛T少,管理扁平,所以每個(gè)人的職責(zé)都非常清晰。該模式也是執(zhí)行效率較高的資源模式,因?yàn)槿撕腿蝿?wù)直接綁 定,所以不會(huì)產(chǎn)生推諉等情況,便于管理也便于追究責(zé)任,因?yàn)檫\(yùn)行情況完全在設(shè)計(jì)期確定。而隨著企業(yè)規(guī)模的擴(kuò)大,管理層次的復(fù)雜,一個(gè)任務(wù)往往需要交由特定 的部門(mén)、崗位或角色來(lái)執(zhí)行,這樣無(wú)形中會(huì)影響任務(wù)執(zhí)行的效率。

    該模式的缺點(diǎn)在于一旦關(guān)鍵人物因?yàn)楦鞣N原因不能及時(shí)處理任務(wù),那么將造成整個(gè)流程的掛起等待。

     

    實(shí)現(xiàn)

    最簡(jiǎn)單的資源模式,設(shè)計(jì)期確定資源,運(yùn)行期工作流引擎不需要做額外的工作。

     

    2、基于角色的分配(WRP_02: Role-Based Distribution

    描述

    在設(shè)計(jì)期為任務(wù)指定一個(gè)或多個(gè)角色,該任務(wù)的工作項(xiàng)能夠在運(yùn)行期分配給這些角色。實(shí)際執(zhí)行該任務(wù)時(shí),資源將從屬于這些角色的資源中產(chǎn)生。該模式實(shí)際限制執(zhí)行該任務(wù)的資源范圍。


    5-4

    如圖5-4所示,任務(wù)A在定義時(shí)指定給“開(kāi)發(fā)人員”這一角色,該角色包括了兩名員工甲和乙。實(shí)際執(zhí)行任務(wù)A時(shí),將由員工甲或乙來(lái)執(zhí)行。

     

    應(yīng)用

    企業(yè)達(dá)到一定規(guī)模,就會(huì)產(chǎn)生人員的分組,角色是典型的分組方式,將具有相似屬性的人員定義為一個(gè)特定的角色,這些屬性通常與工作的內(nèi)容相關(guān),例如開(kāi)發(fā)人員、項(xiàng)目經(jīng)理、總經(jīng)理等,而角色通常又會(huì)與權(quán)限產(chǎn)生關(guān)聯(lián)。

    將任務(wù)分配給角色意味著將會(huì)有多個(gè)員工可以執(zhí)行該任務(wù),執(zhí)行效率相比直接分配會(huì)有下降,這也是企業(yè)擴(kuò)大后管理成本增大的一種表現(xiàn)形式。

     

    實(shí)現(xiàn)

    工作流系統(tǒng)內(nèi)置的組織機(jī)構(gòu)模型需要對(duì)角色進(jìn)行支持。引擎運(yùn)行期通過(guò)角色訪問(wèn)屬于該角色的人員。

     

    3、延遲分配(WRP_03: Deferred Distribution

    描述

    在設(shè)計(jì)期為任務(wù)指定資源的標(biāo)識(shí),典型的,在工作流系統(tǒng)里,該標(biāo)識(shí)對(duì)應(yīng)于一個(gè)數(shù)據(jù)字段變量,例如userid。即在設(shè)計(jì)期并不確定資源,資源的確定被延遲至運(yùn)行期,系統(tǒng)運(yùn)行期從該數(shù)據(jù)字段里獲取該任務(wù)分配的資源。


    5-5

    如圖5-5所示,任務(wù)B在定義時(shí)資源的標(biāo)識(shí)指定為userid,實(shí)際執(zhí)行時(shí),任務(wù)A由員工甲執(zhí)行,其指定了下一任務(wù)的執(zhí)行者為員工乙即設(shè)置了userid這一變量為員工乙的id,在任務(wù)B實(shí)例創(chuàng)建時(shí),它訪問(wèn)userid,發(fā)現(xiàn)該變量里是員工乙的id,于是將該任務(wù)分配給員工乙。

    需要注意的是,根據(jù)具體的分配策略,運(yùn)行期該數(shù)據(jù)字段不僅可以指定人員,也可以指定角色、部門(mén)等。

     

    應(yīng)用

    該模式給資源的分配引入了靈活性。資源的確定延遲至運(yùn)行期,即任務(wù)可以根據(jù)具體的實(shí)際情況再確定執(zhí)行人。具體實(shí)施時(shí),這個(gè)指定的數(shù)據(jù)字段可以通過(guò)一系列的規(guī)則運(yùn)算得出。

    在國(guó)內(nèi)應(yīng)用中,該模式被大量應(yīng)用在人工干預(yù)流程中,例如下一任務(wù)的執(zhí)行由上一任務(wù)的辦理者指定。

     

    實(shí)現(xiàn)

    一般通過(guò)工作流變量來(lái)包含資源的id。為了區(qū)別該id是人員id還是角色id,一般內(nèi)置特殊變量,例如useridroleidgroupid等。

     

    4、按權(quán)限分配(WRP_04: Authorization

    描述

    能夠指定資源的范圍,只有該范圍內(nèi)的資源才具有執(zhí)行該任務(wù)的權(quán)限。


    5-6

    如圖5-6所示,只有項(xiàng)目經(jīng)理才有權(quán)限對(duì)開(kāi)發(fā)人員申請(qǐng)軟件的要求進(jìn)行批準(zhǔn)。

     

    應(yīng)用

    隨著分工的細(xì)化,每個(gè)人工作內(nèi)容的不同,必然會(huì)產(chǎn)生權(quán)限的概念。權(quán)限實(shí)際代表著對(duì)同一件事情,每個(gè)人執(zhí)行工作內(nèi)容的差別。權(quán)限越大能執(zhí)行的操作越多意味著需要負(fù)責(zé)的方面越多。

    該模式強(qiáng)調(diào)通過(guò)權(quán)限對(duì)執(zhí)行任務(wù)的資源加以限定。

     

    實(shí)現(xiàn)

    在大多數(shù)的軟件系統(tǒng)中,角色不僅僅代表具有相似屬性的一組人員,同時(shí)其也是最重要的權(quán)限概念,人員往往不與權(quán)限直接關(guān)聯(lián),角色將人員與權(quán)限兩者進(jìn)行關(guān)聯(lián)。所以,對(duì)任務(wù)設(shè)定權(quán)限可以通過(guò)指定角色來(lái)完成。

     

    5、職責(zé)分離(WRP_05: Separation of Duties

    描述

    在一個(gè)流程實(shí)例里,能夠指定兩個(gè)任務(wù)必須由不同的資源執(zhí)行。


    5-7

    如圖5-7所示,任務(wù)A和任務(wù)B在設(shè)計(jì)期被指定不能由相同的資源執(zhí)行,同時(shí)它們都指定分配給經(jīng)理這個(gè)角色。那么在運(yùn)行期,在一個(gè)流程實(shí)例里,任務(wù)A被分配給了員工甲執(zhí)行,那么在進(jìn)行任務(wù)B的分配時(shí),盡管員工甲也屬于經(jīng)理,但是將不能由其執(zhí)行。

     

    應(yīng)用

    職責(zé)分離,不能既當(dāng)運(yùn)動(dòng)員又當(dāng)裁判員,不能又當(dāng)跳水隊(duì)領(lǐng)隊(duì)又當(dāng)全運(yùn)會(huì)裁判長(zhǎng)。

    典型的報(bào)銷(xiāo)流程里,一般員工的差旅報(bào)銷(xiāo)由財(cái)務(wù)人員核實(shí),但如果某名財(cái)務(wù)人員需要報(bào)銷(xiāo)差旅費(fèi)顯然不能由自己審批,需要另外一名具有同樣權(quán)限的財(cái)務(wù)人員審核。此時(shí)就可以對(duì)申請(qǐng)任務(wù)和審核任務(wù)兩個(gè)任務(wù)節(jié)點(diǎn)應(yīng)用該模式。如下圖所示:


    5-8

     

    實(shí)現(xiàn)

    后續(xù)節(jié)點(diǎn)進(jìn)行任務(wù)分配時(shí),需要獲取與之關(guān)聯(lián)前續(xù)節(jié)點(diǎn)的分配執(zhí)行信息。流程定義期,在定義任務(wù)節(jié)點(diǎn)屬性時(shí)建立兩者的關(guān)系。

     

    6、流程實(shí)例整個(gè)處理(WRP_06: Case Handing

    描述

    在一個(gè)流程實(shí)例里,所有的任務(wù)都能夠分配給同一個(gè)資源執(zhí)行。


    5-9

    如圖5-9所示,流程實(shí)例中的所有任務(wù)都由同一個(gè)人執(zhí)行:任務(wù)ABC都由員工甲執(zhí)行。

     

    應(yīng)用

    在應(yīng)用該模式的流程里,通常流程里的任務(wù)都 是緊密關(guān)聯(lián)的。流程里的任務(wù)往往執(zhí)行在一個(gè)緊密相關(guān)的上下文里,如果所有的工作都由一個(gè)人執(zhí)行,那么在其了解該上下文的情況下連貫執(zhí)行這些任務(wù)會(huì)具有更高 的效率;而如果執(zhí)行任務(wù)的過(guò)程中換人,那么新?lián)Q的人無(wú)疑還需要時(shí)間對(duì)該流程實(shí)例相關(guān)的上下文進(jìn)行熟悉,這樣無(wú)疑會(huì)多付出執(zhí)行成本。

    同一個(gè)軟件的開(kāi)發(fā)最好由同一撥開(kāi)發(fā)人員完成,如果中途更換開(kāi)發(fā)人員,那么新來(lái)的開(kāi)發(fā)人員需要一段時(shí)間熟悉該軟件,會(huì)對(duì)開(kāi)發(fā)進(jìn)度產(chǎn)生影響。同樣的道理,在軟件上線前增加開(kāi)發(fā)人員不一定會(huì)提高開(kāi)發(fā)效率,很多時(shí)候甚至作用相反。

     

    實(shí)現(xiàn)

    可以在實(shí)現(xiàn)延遲分配模式的情況下實(shí)現(xiàn)該模式,即在第一個(gè)任務(wù)節(jié)點(diǎn)初始化設(shè)置參與者變量,后續(xù)任務(wù)全部使用該變量。如下圖所示:


    5-10

     

    7、經(jīng)驗(yàn)獲取(WRP_07: Retain Familiar

    描述

    在同一個(gè)流程實(shí)例里,當(dāng)存在多個(gè)資源都能執(zhí)行某一工作項(xiàng)時(shí),能夠?qū)⒃摴ぷ黜?xiàng)分配給執(zhí)行了前某一工作項(xiàng)的同一資源。


    5-11

    如圖5-11所示,任務(wù)A和任務(wù)B在設(shè)計(jì)期被指定由相同的資源執(zhí)行,同時(shí)它們都指定分配給經(jīng)理這個(gè)角色。那么在運(yùn)行期,在一個(gè)流程實(shí)例里,任務(wù)A被分配給了員工甲執(zhí)行,那么在進(jìn)行任務(wù)B的分配時(shí),任務(wù)B依舊由員工甲執(zhí)行。

     

    應(yīng)用

    該模式剛好與職責(zé)分離模式相反,正如它的名字所暗示的,這些任務(wù)之間存在著緊密關(guān)聯(lián),如果執(zhí)行了其中一個(gè),那么就會(huì)熟悉這些相關(guān)聯(lián)任務(wù)的背景上下文,積累一定經(jīng)驗(yàn),那么后續(xù)任務(wù)的執(zhí)行相對(duì)其他人來(lái)說(shuō)會(huì)變得容易。提高任務(wù)執(zhí)行的效率。


    5-12

    如圖5-12所示,在軟件銷(xiāo)售的過(guò)程中,售前和編寫(xiě)標(biāo)書(shū)是重要的兩步,這兩個(gè)任務(wù)最好由同一個(gè)人進(jìn)行處理,因?yàn)閰⑴c軟件售前的人更熟悉客戶的實(shí)際情況和需求,如果分開(kāi)由不同的人員執(zhí)行,那么必然會(huì)存在前者與后者的交流成本。

     

    實(shí)現(xiàn)

    后續(xù)節(jié)點(diǎn)進(jìn)行任務(wù)分配時(shí),需要獲取與之關(guān)聯(lián)前續(xù)節(jié)點(diǎn)的分配執(zhí)行信息。流程定義期,在定義任務(wù)節(jié)點(diǎn)屬性時(shí)建立兩者的關(guān)系。運(yùn)行期可以通過(guò)參與者變量(工作流變量)建立起運(yùn)行期關(guān)系。

     

    8、基于能力的分配(WRP_08: Capability-Based Distribution

    描述

    能夠基于資源的能力進(jìn)行工作項(xiàng)的分配,能力作為組織模型的一部分建模為資源的屬性。


    5-13

    如圖5-13所示,任務(wù)A需要交與開(kāi)發(fā)人員執(zhí)行,同時(shí)其對(duì)辦理該任務(wù)的人員能力提出了要求,要求只有熟悉JAVA且工作經(jīng)驗(yàn)大于2年的開(kāi)發(fā)人員才能執(zhí)行該任務(wù)。這樣就縮小了選取資源的范圍。

     

    應(yīng)用

    人力資源管理中很重要的一點(diǎn)就是要做到人盡 其用,每個(gè)人的能力都能得到最大的發(fā)揮,其實(shí)也就是根據(jù)能力將人放置到最合適的工作中去。從這一點(diǎn)看,該模式是對(duì)人盡其能的實(shí)現(xiàn)。但是如何定義各個(gè)人員的 能力,這本身就比較的主觀,執(zhí)行各項(xiàng)工作需要具備的能力也具有主觀因素,更何況很多時(shí)候能力并不能與表現(xiàn)劃上等號(hào),模型是固定的但人是變化的受環(huán)境影響 的,所以工具本身就是工具,工具的應(yīng)用最后還是依賴于人。

     

    實(shí)現(xiàn)

    實(shí)現(xiàn)需要兩部分:一部分是組織機(jī)構(gòu)對(duì)人進(jìn)行建模時(shí)需要包括能力模型;另一部分是流程建模時(shí)需要給任務(wù)定義執(zhí)行該任務(wù)所需的能力約束,這些約束是一系列的領(lǐng)域特定條件,需要有特定的解析器進(jìn)行條件的解析。

    很多工作流引擎提供有參與者接口,接口返回人員ID列表供給任務(wù)分配,從而將這部分工作委派到工作流實(shí)施時(shí)實(shí)現(xiàn)。

     

    9、基于歷史的分配(WRP_09: History-Based Distribution

    描述

    能夠基于先前的工作歷史決定當(dāng)前任務(wù)的分配。


    5-14

    如圖5-14所示,當(dāng)需要在員工甲和員工乙之間做出選擇時(shí),會(huì)選擇此前執(zhí)行類(lèi)似任務(wù)時(shí)完成最好的員工。需要注意的是,這里的歷史不再是限定在同一流程實(shí)例的任務(wù)執(zhí)行里,可能是同一流程模型的執(zhí)行歷史,也可能是不同流程模型的執(zhí)行歷史。

    考慮歷史時(shí),有很多的考慮因素,例如完成類(lèi)似任務(wù)最好的員工、完成類(lèi)似任務(wù)最快的員工、完成類(lèi)似任務(wù)出差錯(cuò)最少的員工等等。這些考慮因素依賴于具體的任務(wù)內(nèi)容和背景。

     

    應(yīng)用

    國(guó)家籃球隊(duì)比賽前,主教練會(huì)考察各個(gè)位置里各個(gè)球員的聯(lián)賽比賽歷史情況,其中不僅會(huì)考慮出場(chǎng)時(shí)間也會(huì)考慮各項(xiàng)數(shù)據(jù),從而做出選擇。

     

    實(shí)現(xiàn)

    同基于能力的分配模式一樣,該模式的實(shí)現(xiàn)依賴于工作流具體應(yīng)用的場(chǎng)景,也就是需要到實(shí)施階段結(jié)合實(shí)際實(shí)現(xiàn)。從某一種角度也說(shuō)明,應(yīng)用工作流產(chǎn)品時(shí),產(chǎn)品實(shí)施階段也是最重要的步驟,選擇工作流產(chǎn)品不僅僅是選擇產(chǎn)品也需要考察其背后的實(shí)施團(tuán)隊(duì)。同時(shí)也可見(jiàn),這些模式在諸如政府OA這些應(yīng)用中是根本應(yīng)用不上的。

    實(shí)現(xiàn)需要兩部分:一部分是對(duì)用戶任務(wù)執(zhí)行歷史進(jìn)行統(tǒng)計(jì)分析找出關(guān)鍵的評(píng)定因素;另一部分是流程建模時(shí)需要給任務(wù)定義執(zhí)行該任務(wù)所需的歷史因素約束,這些約束同樣是一系列的領(lǐng)域特定條件,需要特定的解析器進(jìn)行解析。

     

    10、按組織分配(WRP_10: Organizational Distribution

    描述

    能夠基于人員在組織機(jī)構(gòu)中的位置以及與其他人員的關(guān)系分配工作項(xiàng)。


    5-15

    如圖5-15所示,審批任務(wù)需要由申請(qǐng)人的部門(mén)經(jīng)理執(zhí)行,即需要員工甲的部門(mén)經(jīng)理執(zhí)行。這種情況即基于人員之間的關(guān)系分配工作。

    基于人員在組織機(jī)構(gòu)中的位置分配即需要在工作流模型里建立起與用戶相匹配的組織機(jī)構(gòu)模型,可以將任務(wù)分配給部門(mén)、角色、臨時(shí)組、崗位等。

     

    應(yīng)用

    應(yīng)用最為廣泛的模式,實(shí)際工作中幾乎所有的工作都必然和組織機(jī)構(gòu)具有聯(lián)系。其他模式,如基于歷史的分配、基于能力的分配等都是基于該模式之上的擴(kuò)展,直接分配、基于角色的分配則直接是該模式的簡(jiǎn)單情況。

     

    實(shí)現(xiàn)

    對(duì)該模式的支持實(shí)際上是對(duì)用戶組織機(jī)構(gòu)模型的支持。正如前面所提到的,很難存在一種工作流產(chǎn)品能夠支持所有的組織機(jī)構(gòu)模型,但是大部分的產(chǎn)品都會(huì)提供一套元模型或擴(kuò)展機(jī)制,需要在實(shí)施過(guò)程中最大限度的契合客戶業(yè)務(wù)。

     

    11、自動(dòng)執(zhí)行(WRP_11: Automatic Execution

    描述

    任務(wù)的執(zhí)行能夠自動(dòng)完成,不需要人員參與。


    5-16

    如圖5-16所示,請(qǐng)假審批后需要將情況通知給申請(qǐng)人,該任務(wù)由計(jì)算機(jī)完成,不需要人的參與,也不會(huì)產(chǎn)生工作項(xiàng)。

     

    應(yīng)用

    隨著自動(dòng)化水平的提高,越來(lái)越多的工作可以交由計(jì)算機(jī)或相應(yīng)的機(jī)器設(shè)備完成。流程中的自動(dòng)執(zhí)行節(jié)點(diǎn)也會(huì)逐漸增加。

     

    實(shí)現(xiàn)

    實(shí)際上工作流產(chǎn)品對(duì)該模式的支持即是支持各種的企業(yè)集成方式,不管是通過(guò)Web服務(wù)還是消息,工作流需要驅(qū)動(dòng)相應(yīng)的設(shè)備機(jī)器或應(yīng)用系統(tǒng)進(jìn)行工作并傳遞給必須的數(shù)據(jù)。所以也可以看出,隨著信息化程度的提高,目前工作流應(yīng)用越來(lái)越趨向于企業(yè)集成領(lǐng)域。這也是為什么基于Web服務(wù)編排的BPEL會(huì)逐漸取代XPDL成為工作流流行標(biāo)準(zhǔn)的原因之一。

    posted @ 2009-10-20 13:18 ronghao 閱讀(1499) | 評(píng)論 (2)編輯 收藏
    在上一章里,我們談到了工作流的控制模式,控制模式強(qiáng)調(diào)的是對(duì)業(yè)務(wù)流程進(jìn)行建模,業(yè)務(wù)流程的目標(biāo)是實(shí)現(xiàn)一個(gè)商業(yè)目標(biāo)或者管理目標(biāo),業(yè)務(wù)流程的執(zhí)行往往由一系列的任務(wù)所構(gòu)成,控制模式建模的實(shí)質(zhì)在于合理調(diào)配這些任務(wù),以期以最少的成本達(dá)到最大的收益。

    本章將介紹工作流的資源模式,如果說(shuō)控制模式更為宏觀,強(qiáng)調(diào)的是業(yè)務(wù)流程里各個(gè)任務(wù)的合理調(diào)配的話,那么資源模式則深入細(xì)節(jié),將要討論單個(gè)具體任務(wù)的執(zhí)行情況。提到任務(wù)的執(zhí)行,那么誰(shuí)能執(zhí)行這些任務(wù)呢。答案很直接,是人。不管是在公司企業(yè)還是政府里,人都是最重要的資源,除去人之外,還有其他的非人力資源,例如機(jī)器、設(shè)備、計(jì)算機(jī)等。探討這些資源如何執(zhí)行業(yè)務(wù)流程中的具體任務(wù),如何調(diào)配這些資源即構(gòu)成了本章的內(nèi)容,即資源模式。

    本章介紹工作流的資源模式,共計(jì)43種。提到模式,很多人會(huì)想到四人幫,想到他們的設(shè)計(jì)模式,但是需要與編程里的設(shè)計(jì)模式區(qū)別的是:程序里的設(shè)計(jì)模式關(guān)注的是代碼,通過(guò)應(yīng)用設(shè)計(jì)模式做到代碼的職責(zé)清晰、不重復(fù)、開(kāi)發(fā)人員友好等等;而工作流里的模式關(guān)注的是業(yè)務(wù)價(jià)值,通過(guò)合理調(diào)配任務(wù)和資源為組織帶來(lái)最大的業(yè)務(wù)價(jià)值,工作流模式是對(duì)實(shí)際業(yè)務(wù)的直接描述,與具體的工作流產(chǎn)品實(shí)現(xiàn)沒(méi)有直接的關(guān)系(后面我們可以看到,很多模式當(dāng)前的工作流產(chǎn)品很難實(shí)現(xiàn)),兩者的出發(fā)點(diǎn)完全不同。

    本章先會(huì)討論與資源模式相關(guān)的一些基本概念,例如資源、工作項(xiàng)、組織機(jī)構(gòu)建模等。接下來(lái)會(huì)對(duì)具體的43種資源模式進(jìn)行討論,討論的模式按照描述、應(yīng)用和實(shí)現(xiàn)展開(kāi),分別對(duì)應(yīng)著模式的介紹、模式對(duì)實(shí)際業(yè)務(wù)的映射和工作流產(chǎn)品對(duì)該模式的實(shí)現(xiàn)支持。最后是小結(jié)。

    一、基本概念

    1、資源
    既然是資源模式,那么什么是資源。在本章的前言里,我們已經(jīng)提到人是業(yè)務(wù)流程執(zhí)行里最為重要的資源,除去人之外,隨著自動(dòng)化水平的提高,還有其他的非人力資源,例如機(jī)器、設(shè)備、計(jì)算機(jī)等。資源指的是能夠進(jìn)行工作的實(shí)體,通俗一點(diǎn),就是能夠執(zhí)行業(yè)務(wù)流程里任務(wù)的實(shí)體。對(duì)于需要盈利的公司而言,就是找到一種可以盈利的模式,然后找尋能夠執(zhí)行這些盈利工作的資源,通過(guò)資源的工作達(dá)到盈利的目的,通過(guò)合理調(diào)配這些資源達(dá)到利益最大化。

    因?yàn)槿耸亲顬橹匾馁Y源,所以在后續(xù)對(duì)資源模式的討論中,沒(méi)有特殊說(shuō)明,資源指的都是人力資源,大多數(shù)的模式也將以人來(lái)說(shuō)明。

    典型的,人是某個(gè)組織機(jī)構(gòu)里的成員。組織機(jī)構(gòu)對(duì)人員進(jìn)行分組,執(zhí)行相關(guān)的工作以達(dá)到共同的目標(biāo)。例如,企業(yè)的目標(biāo)是盈利,政府的目標(biāo)是為人民提供更好的公共服務(wù)。組織機(jī)構(gòu)對(duì)人員的分組具有多種形式,最常見(jiàn)的就是部門(mén)、角色和崗位(實(shí)際上與角色相比,崗位更多體現(xiàn)的是一種業(yè)務(wù)職能,而角色更多體現(xiàn)的是管理職能,與權(quán)限相關(guān))。對(duì)于大的跨地域的組織而言,還有分支機(jī)構(gòu)的劃分,此外,還有臨時(shí)組(典型的如以交付為核心的軟件開(kāi)發(fā)公司里的項(xiàng)目組)。在很多情況下,人可能具有多個(gè)角色、屬于多個(gè)部門(mén),這些,增加了管理的復(fù)雜性。

    對(duì)工作流產(chǎn)品而言,要對(duì)資源模式進(jìn)行支持,則必然涉及到對(duì)資源分組的支持,在大多情況下,資源分組即組織機(jī)構(gòu)模型。只有支持目標(biāo)客戶的組織機(jī)構(gòu)模型,才能在實(shí)施工作流產(chǎn)品時(shí)最大限度的契合客戶業(yè)務(wù)。當(dāng)然,如果產(chǎn)品是某個(gè)行業(yè)的標(biāo)準(zhǔn),讓客戶模型向產(chǎn)品靠攏也是另外一種方式。

    2、工作流產(chǎn)品里的組織機(jī)構(gòu)建模
    所有的工作流產(chǎn)品都有自己的組織機(jī)構(gòu)模型,其是工作流產(chǎn)品里一個(gè)重要的模塊。但是一套模型往往很難契合多種業(yè)務(wù)場(chǎng)景。在大多數(shù)的產(chǎn)品實(shí)現(xiàn)里,都會(huì)提供一套元模型,例如人(Person)和組(Group),然后建立多套與業(yè)務(wù)相關(guān)的模型向元模型適配,例如,角色、部門(mén)都是組的一種形式,它們只是擁有不同的業(yè)務(wù)語(yǔ)義而已。

    在工作流產(chǎn)品實(shí)施時(shí),很重要的一步就是進(jìn)行組織機(jī)構(gòu)建模,然后將建立完成的模型與工作流產(chǎn)品內(nèi)置的模型進(jìn)行適配,在適配的過(guò)程中,妥協(xié)是經(jīng)常出現(xiàn)的。

    3、工作項(xiàng)
    一個(gè)業(yè)務(wù)流程由一系列相關(guān)的任務(wù)組成。在工作流產(chǎn)品里,使用圖形化的節(jié)點(diǎn)代表這些任務(wù),而實(shí)際的任務(wù)被映射為工作項(xiàng)(work item),任務(wù)的調(diào)用被映射為工作項(xiàng)的執(zhí)行。一般情況下,一個(gè)任務(wù)對(duì)應(yīng)著一個(gè)工作項(xiàng),但是存在一個(gè)任務(wù)需要多人完成的情況,這個(gè)時(shí)候一個(gè)任務(wù)就會(huì)對(duì)應(yīng)著多個(gè)工作項(xiàng)。工作項(xiàng)可以看作是工作流中最小的工作單元,其代表著一個(gè)單一資源對(duì)某一任務(wù)的執(zhí)行。

    既然在工作流系統(tǒng)里任務(wù)的執(zhí)行被映射為工作項(xiàng)的執(zhí)行,那么就一定存在著人與工作項(xiàng)這個(gè)計(jì)算機(jī)概念的交互,在工作流系統(tǒng)里,這一交互通過(guò)工作項(xiàng)管理器來(lái)進(jìn)行管理。即我們通常所見(jiàn)的工作項(xiàng)列表(任務(wù)列表),我們通過(guò)這一列表拾取任務(wù)、處理任務(wù)以及管理任務(wù)的狀態(tài)。

    4、工作項(xiàng)的生命周期
    工作項(xiàng)有其自己的生命周期。
     
    圖 5-1
    如圖5-1所示,當(dāng)工作流系統(tǒng)執(zhí)行某一任務(wù)節(jié)點(diǎn)時(shí)就會(huì)創(chuàng)建工作項(xiàng),工作項(xiàng)可以是一個(gè)也可以是多個(gè),正如上面已經(jīng)提到的,工作項(xiàng)代表著一個(gè)單一資源對(duì)某一任務(wù)的執(zhí)行即一個(gè)工作項(xiàng)只能由一個(gè)資源來(lái)執(zhí)行,現(xiàn)在我們討論的是一個(gè)工作項(xiàng)的生命周期。

    工作項(xiàng)被系統(tǒng)創(chuàng)建完畢后即處于創(chuàng)建狀態(tài),接下來(lái)系統(tǒng)會(huì)選取資源來(lái)執(zhí)行該工作項(xiàng)。有兩種狀態(tài):一種是提供狀態(tài),一種是指派狀態(tài),這兩者的區(qū)別在于一個(gè)是可選的一個(gè)是必須的。如果系統(tǒng)提供一個(gè)工作項(xiàng)給你執(zhí)行,這意味著你符合執(zhí)行該工作的條件,但你不必為該工作負(fù)責(zé),即你可以選擇執(zhí)行該工作也可以選擇拒絕,你只是該工作的合適候選者;而如果系統(tǒng)指派一個(gè)工作項(xiàng)給你執(zhí)行,則意味著你必須為該工作負(fù)責(zé),該工作必須由你來(lái)執(zhí)行。因?yàn)橐粋€(gè)工作項(xiàng)只能由一個(gè)資源來(lái)執(zhí)行,所以如果是指派的話,那么只能指定一個(gè)資源;而提供,則可以提供給一個(gè)資源也可以提供給多個(gè)資源來(lái)候選。通常工作項(xiàng)管理器會(huì)提供兩種列表來(lái)區(qū)分這兩種狀態(tài),分別是待拾取列表和待辦列表,一旦資源對(duì)待拾取列表里的工作項(xiàng)進(jìn)行拾取,工作項(xiàng)即進(jìn)入到資源的待辦列表,狀態(tài)成為指派狀態(tài)。

    工作項(xiàng)進(jìn)入指派狀態(tài)即意味著執(zhí)行該工作的資源已確定,那么接下來(lái)就可以由資源來(lái)開(kāi)始執(zhí)行該工作,執(zhí)行的過(guò)程中可以將工作暫時(shí)掛起中斷處理,后續(xù)可以再恢復(fù)對(duì)該工作的執(zhí)行。如果工作成功完成,則工作項(xiàng)成為完成狀態(tài);如果工作因?yàn)楦鞣N原因沒(méi)有成功完成,則工作項(xiàng)置為失敗狀態(tài)。
    posted @ 2009-10-18 09:45 ronghao 閱讀(1605) | 評(píng)論 (1)編輯 收藏
    似乎一到年末,就會(huì)忙起來(lái)。

    05年的時(shí)候忙著和現(xiàn)在的老婆談那從來(lái)沒(méi)談過(guò)而導(dǎo)致過(guò)分饑渴的戀愛(ài);06年的時(shí)候新配置了機(jī)器,忙著通關(guān)使命召喚和生化危機(jī);07年的時(shí)候和張祖良一起翻譯AJAX企業(yè)級(jí)開(kāi)發(fā),第一次翻譯,忙得像黃牛,慢得像蝸牛,在心里祈禱,翻譯出來(lái)的東西不被罵就好;08年的時(shí)候和丁雪峰、總司令又一起翻譯Spring攻略,第二次翻譯,熟練了一些,但是每一個(gè)句子還是要花上很多時(shí)間,很多時(shí)候還得一個(gè)詞一個(gè)詞的確認(rèn),翻譯對(duì)我來(lái)說(shuō)是個(gè)苦力活,第一次翻譯完我就告訴自己不要再翻譯了,但是Spring攻略確實(shí)是一本好書(shū),完全是書(shū)本身吸引了我,同樣在心里祈禱,不要糟蹋了這本書(shū)。09年了,和辛鵬一起完成這本《Head First Process-深入淺出流程》,還是祈禱,千萬(wàn)不要寫(xiě)出垃圾,有時(shí)候,我常想,有必要這么辛苦嗎?我是一個(gè)喜歡意淫的人,經(jīng)常就把思緒拋到了多年之后,在未來(lái)里洋洋自得,于是回來(lái)時(shí)就有了動(dòng)力。

    我負(fù)責(zé)該書(shū)的第一部分,包括了工作流的控制模式、資源模式、數(shù)據(jù)控制模式與異常處理模式,包括了對(duì)三種流程規(guī)范的介紹、對(duì)開(kāi)源工作流的介紹、對(duì)jBPM4的分析。辛鵬負(fù)責(zé)該書(shū)的后半部分,他對(duì)流程應(yīng)用有著非常豐富的經(jīng)驗(yàn),目前他正在杭州實(shí)施一個(gè)BPM的大項(xiàng)目,其中包括了完整的IBM產(chǎn)品套件,包括了企業(yè)集成和ESB。很多人認(rèn)為工作流只是OA,這其實(shí)是一個(gè)誤區(qū),工作流確實(shí)在OA里應(yīng)用的非常多,但這僅僅只是一個(gè)方面。說(shuō)實(shí)話,我對(duì)本書(shū)也非常的期待,非常期待辛鵬在書(shū)中分享他眾多的實(shí)施經(jīng)驗(yàn),他是一個(gè)非常勤奮的人,這點(diǎn)讓我欽佩不止,常常想,等我到了30多歲,還會(huì)不會(huì)有一顆勤奮的心。

    家住燕郊,上班在東直門(mén),每天在路上四個(gè)小時(shí),擠那傳說(shuō)中的930,時(shí)常安慰自己:哥擠的不是930,哥擠的是寂寞。謝謝老婆,盡管還還著房貸存在著心理障礙,但是還是為我在東直門(mén)租了個(gè)房子,下周起就可以走路上班了,這樣也會(huì)有了更多的時(shí)間來(lái)完成這本書(shū)。

    還是那句話:戰(zhàn)戰(zhàn)兢兢。

    十一過(guò)完,公司的新項(xiàng)目也開(kāi)始了,時(shí)尚網(wǎng)站。技術(shù)棧包括了:OSGI、JCR、REST、漸進(jìn)式增強(qiáng)。該項(xiàng)目有個(gè)巨大的亮點(diǎn),不是徐昊是我們的技術(shù)leader,而是開(kāi)發(fā)人員中一半是女生,這樣每天pair的時(shí)候就生活在祖國(guó)的花園中了。

    希望能寫(xiě)些有價(jià)值的東西,征得劉江的同意,將會(huì)在博客連載部分章節(jié)。第一部分連載的將是工作流的資源模式,內(nèi)容包括前言、基本概念、創(chuàng)建模式、推模式、拉模式、迂回模式、自動(dòng)開(kāi)始模式、可見(jiàn)性模式、多資源模式以及最后的小結(jié)。限于篇幅,將會(huì)分節(jié)進(jìn)行連載。考慮到復(fù)制麻煩,將會(huì)在開(kāi)放流程社區(qū)連載所有內(nèi)容,博客會(huì)連載概要并提供鏈接。


    posted @ 2009-10-17 23:03 ronghao 閱讀(2626) | 評(píng)論 (2)編輯 收藏

    一、    代碼主要結(jié)構(gòu)
    所謂流程設(shè)計(jì)器者,無(wú)怪乎讀取xml文件,圖形展現(xiàn),操作圖形元素,改變xml文件,回寫(xiě),如此而已。

    既然如此,設(shè)計(jì)器的流程結(jié)構(gòu)就非常清晰:首先是xml框架解析xml文件為Model模型組件,然后Model模型組件被展現(xiàn)為Component視圖組件;用戶對(duì)Component視圖組件進(jìn)行操作,這些操作被同步的修改到Model模型組件;最后用戶保存時(shí),Model模型組件經(jīng)過(guò)xml框架解析回xml文件,該文件被上傳到服務(wù)器或本地覆蓋原有的xml文件。

    那么代碼結(jié)構(gòu)就很清晰了:xml框架、Model模型組件和Component視圖組件。但是等等,Model與Component如何交互呢?這里就需要GEF框架嫁接起兩者的聯(lián)系。同時(shí),一個(gè)流程設(shè)計(jì)器往往要同時(shí)編輯多個(gè)流程定義,相比具體的流程定義而言,設(shè)計(jì)器擁有一些全局的對(duì)象,這些全局對(duì)象包括系統(tǒng)菜單欄、工具條、整個(gè)設(shè)計(jì)器布局框架(ProcessDesigner)、設(shè)計(jì)器入口(ProcessEditor),還有就是負(fù)責(zé)保存全局屬性和發(fā)布/訂閱定制事件的TheModel對(duì)象。

    二、    Component視圖組件
    很直接,Component視圖組件指的是與用戶打交道的、與流程定義相關(guān)的視圖元素。注意這里的一個(gè)定語(yǔ):與流程定義相關(guān)的,即不包括系統(tǒng)菜單、工具條這些東東。這些視圖元素很簡(jiǎn)單,包括畫(huà)圖板、各種節(jié)點(diǎn)元素和連接線元素。

    代碼位于org.jbpmside.view.component和org.jbpmside.view.component.node下。主要類(lèi)SurfaceComponent、NodeComponent和ConnectionComponent。看類(lèi)名就很清晰這些類(lèi)分別代表著什么組件:
    •    SurfaceComponent代表畫(huà)圖板;
    •    NodeComponent代表節(jié)點(diǎn);
    •    ConnectionComponent代表連接線;

    org.jbpmside.view.component.node下的類(lèi)就是NodeComponent類(lèi)的子類(lèi),代表具體的單個(gè)節(jié)點(diǎn)類(lèi)型了,包括開(kāi)始節(jié)點(diǎn)、結(jié)束節(jié)點(diǎn)、Fork節(jié)點(diǎn)、Join節(jié)點(diǎn)等等。

    Component視圖組件使用了degrafa來(lái)渲染表現(xiàn)形式。

    目前缺少一個(gè)屬性彈出框組件,職責(zé)展現(xiàn)和修改節(jié)點(diǎn)/連接線屬性。

    三、    Model模型組件
    Xml流程定義文件解析為本地Model模型組件,本地建模和jBPM4的PVM建模一致,代碼位于org.jbpmside.model下,重要的類(lèi):
    •    ProcessModel代表流程定義;
    •    NodeModel代表節(jié)點(diǎn)定義;
    •    ConnectionModel代表連接線定義;
    剩下的就是具體節(jié)點(diǎn)類(lèi)型的模型類(lèi),例如StartNode/EndNode/TaskNode等。

    目前模型類(lèi)還非常簡(jiǎn)單,因?yàn)榍岸螘r(shí)間主要關(guān)注Component視圖組件部分,接下來(lái)很快會(huì)與jPDL規(guī)范完全同步,同時(shí)ProcessModel/NodeModel/ConnectionModel會(huì)進(jìn)行重構(gòu),目標(biāo)是與jBPM4模型完全一致。

     最新的模型位于org.jbpmside.model.common下,對(duì)jpdl4的支持位于org.jbpmside.model.jpdl4下,未來(lái)需要將Component與Model的關(guān)聯(lián)遷移至common包下。

    四、    GEF框架
    GEF框架嫁接Model與Component。

    1、    IGraphicalEditor與IEditPart
    IGraphicalEditor與IEditPart是GEF框架里最重要的兩個(gè)接口:
    •    IGraphicalEditor代表整個(gè)圖形編輯器,IGraphicalEditor里最重要的方法:

    function get graphicViewer():GraphicViewer;


    返回當(dāng)前的圖形視圖。在當(dāng)前的設(shè)計(jì)里,設(shè)計(jì)器支持多個(gè)TabPane,每個(gè)流程定義會(huì)擁有一個(gè)單獨(dú)的圖形視圖(即一個(gè)TabPane),這里的圖形視圖即指當(dāng)前處于激活(編輯)狀態(tài)的畫(huà)圖板;很顯然IGraphicalEditor是一個(gè)全局類(lèi)。

    •    IEditPart代表單個(gè)的圖形編輯元素,很顯然,這些元素是和Component組件一致的,IEditPart里最為重要的方法:
    function get model():Object;

    function set model(_model:Object):
    void;

    Component組件繼承于IEditPart,這樣就瞬間將Component組件與Model關(guān)聯(lián)起來(lái)。IEditPart重要的實(shí)現(xiàn)類(lèi)包括GraphicViewer與GraphicEditPart。
    GraphicViewer被SurfaceComponent繼承;
    GraphicEditPart被NodeComponent和ConnectionComponent繼承。
     
    2、    Tool
    Flex應(yīng)用程序是基于事件驅(qū)動(dòng)的,用戶對(duì)界面的操作即反映到各種鼠標(biāo)和鍵盤(pán)事件上。在原先的設(shè)計(jì)里,由Component組件自己來(lái)處理各種原生事件,當(dāng)需要其他組件協(xié)作時(shí),通過(guò)TheModel發(fā)出應(yīng)用定制事件。在GEF的設(shè)計(jì)里,Component組件的原生事件處理被委派到Tool類(lèi)進(jìn)行處理。Component組件只管理自身的圖形渲染和變化。
    例如SurfaceComponent處理鼠標(biāo)點(diǎn)擊事件代碼:

    public function mouseClickHandler(event:MouseEvent):void
            {
                … …
                
    this.tool.mouseClick(event, compX, compY);
            }

         
    注意this.tool方法,這個(gè)方法同樣是由GraphicViewer和GraphicEditPart分別  引入的。注意有些時(shí)候組件的Tool是需要切換的,例如鼠標(biāo)點(diǎn)擊面板,通常會(huì)導(dǎo)致被選中的節(jié)點(diǎn)或連接線選中狀態(tài)消失,但是當(dāng)工具條選中一個(gè)節(jié)點(diǎn)時(shí),這個(gè)鼠標(biāo)事件會(huì)導(dǎo)致向面板增加相應(yīng)的節(jié)點(diǎn)。這時(shí)需要ToolManager來(lái)進(jìn)行Tool卻換的管理,針對(duì)SurfaceComponent/NodeComponent/ConnectionComponent分別有SurfaceToolsManager/NodeToolsManager/ConnectionToolsManager來(lái)管理不同的Tool切換策略。需要注意的是ToolManager和Tool都是無(wú)狀態(tài)的,全局唯一,所有視圖組件共用。

    3、    Command
    視圖組件的變化會(huì)導(dǎo)致Model組件的變化。Tool處理視圖原生事件、調(diào)用CommandService執(zhí)行各個(gè)Command具體操作視圖組件和Model對(duì)象實(shí)現(xiàn)視圖組件和Model組件的變化。

    CommandService與SurfaceComponent進(jìn)行一對(duì)一綁定。CommandService持有CommandStack,實(shí)現(xiàn)單個(gè)Tab編輯界面內(nèi)Command的redo和undo。

    具體操作視圖組件和Model對(duì)象必須通過(guò)Command。

    五、    TheModel全局類(lèi)的用途
          TheModel全局唯一,職責(zé)如下:
    •    負(fù)責(zé)應(yīng)用所有定制事件的訂閱/分發(fā);
    •    負(fù)責(zé)持有工具條和系統(tǒng)菜單屬性;
    •    負(fù)責(zé)持有剪貼板,實(shí)現(xiàn)各個(gè)畫(huà)板之間的節(jié)點(diǎn)拷貝/剪切。

    六、    ProcessDesigner與ProcessEditor
    ProcessDesigner負(fù)責(zé)整個(gè)應(yīng)用的布局,目前由三部分組成,系統(tǒng)菜單、工具條和TabNavigator(TabBar管理器),TabBar管理器負(fù)責(zé)添加和刪除Tab,由Tab加載畫(huà)板,這樣實(shí)現(xiàn)對(duì)多流程定義同時(shí)編輯的支持(即多Tab)。

    ProcessEditor是應(yīng)用的入口,它持有ProcessDesigner,實(shí)現(xiàn)了IGraphicalEditor接口。目前其對(duì)graphicViewer()方法的實(shí)現(xiàn)是返回當(dāng)前激活狀態(tài)Tab的畫(huà)板。

    同時(shí),ProcessEditor負(fù)責(zé)統(tǒng)一監(jiān)聽(tīng)工具條/鍵盤(pán)事件,并將這些事件處理委派給當(dāng)前處于激活狀態(tài)的Tab畫(huà)板處理。

    七、    Xml框架
    位于org.jbpmside.xml下,使用E4X,使用binding對(duì)各種類(lèi)型的節(jié)點(diǎn)進(jìn)行解析,不集中在一個(gè)文件完成解析和轉(zhuǎn)換,一個(gè)節(jié)點(diǎn)類(lèi)型對(duì)應(yīng)一個(gè)binding。使用代碼如下:
       public function parse(xml:String):ProcessDefinition{
        var parser:Parser
    =new Parser();
        
    return parser.createParse().setString(xml).
              execute().getProcessDefinition() as ProcessDefinition;
    }


    測(cè)試代碼位于test目錄下,是目前唯一可以進(jìn)行單元測(cè)試的部分。

    八、    還需要完成的工作
    1、    xml框架還需要大量的解析工作完成(以支持jpdl4)
    2、    第一個(gè)版本為本地應(yīng)用,需要增加對(duì)本地文件操作的支持
    3、    模型遷移至org.jbpmside.model.common
    4、    工具條使用flexlib重寫(xiě),新的16位圖標(biāo),節(jié)點(diǎn)屬性彈出框
    5、    Command目前只實(shí)現(xiàn)了對(duì)undo的支持,需要實(shí)現(xiàn)對(duì)redo的支持


    posted @ 2009-09-20 21:17 ronghao 閱讀(2231) | 評(píng)論 (4)編輯 收藏
    僅列出標(biāo)題
    共39頁(yè): First 上一頁(yè) 9 10 11 12 13 14 15 16 17 下一頁(yè) Last 
    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    關(guān)注工作流和企業(yè)業(yè)務(wù)流程改進(jìn)。現(xiàn)就職于ThoughtWorks。新浪微博:http://weibo.com/ronghao100

    常用鏈接

    留言簿(38)

    隨筆分類(lèi)

    隨筆檔案

    文章分類(lèi)

    文章檔案

    常去的網(wǎng)站

    搜索

    •  

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 亚洲熟妇无码另类久久久| 国产成人精品123区免费视频| 亚洲视频免费观看| 国产精品免费观看久久| 毛片免费观看网址| 亚洲欧洲一区二区三区| 久久精品亚洲中文字幕无码网站| 亚洲日本香蕉视频观看视频| 亚洲高清乱码午夜电影网| 一级女人18片毛片免费视频 | 久久久久久亚洲精品无码| 亚欧洲精品在线视频免费观看| 久久久久久AV无码免费网站| 亚洲免费综合色在线视频| 亚洲Aⅴ无码一区二区二三区软件| 亚洲国产精品无码AAA片| 亚洲国产中文在线二区三区免| 精品亚洲成A人在线观看青青 | 在线亚洲v日韩v| 成人无码WWW免费视频| 手机在线看永久av片免费| 亚洲国产精品丝袜在线观看| 久久丫精品国产亚洲av| 国产成人亚洲综合无| 久久青草免费91线频观看不卡| 成人特黄a级毛片免费视频| 中文字幕亚洲不卡在线亚瑟| 亚洲特级aaaaaa毛片| 一级视频在线免费观看| 4虎永免费最新永久免费地址| 亚洲国产精品国产自在在线| 亚洲经典在线观看| av网站免费线看| 国产一精品一AV一免费孕妇| 亚洲精品无码mv在线观看网站| 中文字幕在线观看亚洲日韩| baoyu116.永久免费视频| 免费特级黄毛片在线成人观看| 亚洲av色影在线| jizz免费在线影视观看网站| 噼里啪啦免费观看高清动漫4|