日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

過程組件模型...

 夜郎 2008-08-07

過程組件模型


-- 下一代工作流?
作者:Tom Baeyens  2008-08-05

【IT168 技術(shù)文章】

    這準(zhǔn)確道出了BPM行業(yè)中或許并不明顯的巨大分歧。“BPM族人”是指那些專注過程建模的人。他們的出發(fā)點(diǎn)在于分析那些描述組織內(nèi)人和系統(tǒng)協(xié)作方式的過 程。在建模者眼中,最初的焦點(diǎn)并非技術(shù),而是描述人和系統(tǒng)協(xié)作方式的非技術(shù)業(yè)務(wù)分析。過程自動(dòng)化在許多這類BPM項(xiàng)目中甚至根本未被考慮。這些項(xiàng)目的最終 目標(biāo)實(shí)際是要通過記錄核心業(yè)務(wù)過程來更深入地了解組織是如何運(yùn)作的。由這個(gè)背景所產(chǎn)生的純BPM產(chǎn)品旨在通過軟件自動(dòng)化來簡(jiǎn)化對(duì)這類業(yè)務(wù)過程的描述。這個(gè) 陣營(yíng)我稱之為BPM建模者。

    “WS族人”是指那些專注創(chuàng)建可執(zhí)行過程的人??蓤?zhí)行過程是作為業(yè)務(wù)過程管理系統(tǒng)(BPMS)輸入的軟件部件。它通常由圖形化的圖表表示。目前,只有一種 可執(zhí)行過程語言被大型提供商采用,它就是BPEL。BPEL是基于WS-*標(biāo)準(zhǔn)的,這也是那些專注自動(dòng)化的人被稱為“WS族人”的原因。隨著BPEL逐漸 得到認(rèn)可,服務(wù)編制最近也受到了吹捧。這個(gè)陣營(yíng)我稱之為編制開發(fā)者。

    兩個(gè)流派的共同之處在于都關(guān)注圖形化的圖表且都包括了等待狀態(tài)。對(duì)BPM建模者和編制開發(fā)者來說,圖表是一個(gè)很重要的工具。圖表能為某個(gè)過程提供一個(gè)快速 概覽。盡管這是個(gè)強(qiáng)大的工具,但對(duì)于這種可察覺的簡(jiǎn)單性要保持警惕。因?yàn)?,看起來相似的圖表會(huì)由于所使用的符號(hào)或底層可執(zhí)行過程語言的不同,其含義會(huì)有巨 大區(qū)別。另外,圖表的用途也是一個(gè)非常重要的考慮因素。對(duì)于業(yè)務(wù)分析師來說,過程圖表的目的是為了幫助向另一個(gè)人解釋業(yè)務(wù)過程。這些圖表提供了一個(gè)整體概 覽,一定程度的模糊性是允許的。對(duì)于可執(zhí)行過程語言,圖表是定義計(jì)算機(jī)系統(tǒng)必須遵循的行為方式的過程的一部分。因此,這種過程必須含義明確且能被準(zhǔn)確地解 釋。

    本質(zhì)上,等待狀態(tài)的包含是個(gè)更技術(shù)性的話題,但在兩個(gè)流派中也都找到它的蹤跡。當(dāng)業(yè)務(wù)分析師繪制業(yè)務(wù)過程時(shí),不同的活動(dòng)可能會(huì)關(guān)聯(lián)到不同資源。一些活動(dòng)會(huì) 翻譯成人工任務(wù),而另一些則會(huì)翻譯成可在計(jì)算機(jī)系統(tǒng)中執(zhí)行的一段軟件代碼。假如這一過程是自動(dòng)完成的,過程引擎會(huì)驅(qū)動(dòng)過程的執(zhí)行。這意味著引擎內(nèi)部會(huì)自動(dòng) 地執(zhí)行一些活動(dòng)。否則,如果活動(dòng)在過程引擎外執(zhí)行,那么引擎就需要跟蹤當(dāng)前狀態(tài)并在接收到外部實(shí)體發(fā)來的信號(hào)前保持等待。例如,這個(gè)外部觸發(fā)器可能是用戶 對(duì)Web應(yīng)用中表示任務(wù)完成按鈕的一次點(diǎn)擊。類似的還有,ERP系統(tǒng)可能通知過程引擎某個(gè)發(fā)票已經(jīng)處理完畢。等待狀態(tài)的概念或許顯得有些抽象,你或許會(huì)問 這和工作流或過程語言的討論有什么關(guān)聯(lián)性。一個(gè)重要原因就是象Java這樣的傳統(tǒng)編程語言不支持可持久化的等待狀態(tài)。

    這篇文章認(rèn)為業(yè)務(wù)過程的分析和實(shí)現(xiàn)間的差距遠(yuǎn)比當(dāng)前工作流工具市場(chǎng)所顯現(xiàn)出的還要大。同時(shí),本文還提出了解決這種狀況更現(xiàn)實(shí)的辦法。文中對(duì)當(dāng)前標(biāo)準(zhǔn)和項(xiàng)目 進(jìn)行了足夠深入地探討,以便讓你可以理解它們與這些流派的關(guān)聯(lián)方式及其原因。在討論中,我會(huì)指出每一個(gè)被提及技術(shù)的優(yōu)缺點(diǎn),以及正確使用它們的方式。

    文末,我會(huì)介紹一種名為過程組件模型的工作流新技術(shù)。這種框架可以處理多種過程語言,為那些能將分析過程圖更好地轉(zhuǎn)換成可執(zhí)行過程的過程語言提供了支持。

    WS-BPEL

    什么是BPEL

    WS-BPEL是一個(gè)用于服務(wù)編制的OASIS標(biāo)準(zhǔn)。服務(wù)編制就是將一組現(xiàn)有服務(wù)組合成一個(gè)新服務(wù)。

    這是對(duì)BPEL過程的簡(jiǎn)單地剖析:部署一個(gè)BPEL過程會(huì)導(dǎo)致為該過程發(fā)布一個(gè)服務(wù)。這個(gè)BPEL過程會(huì)指定必須發(fā)布的服務(wù),以及這些服務(wù)操作的實(shí)現(xiàn)。

    

 
    接下來以圖1顯示的過程為例,我們會(huì)通過解釋一些最典型的BPEL活動(dòng)來向您展示一幅關(guān)于BPEL基礎(chǔ)的優(yōu)秀畫卷。在BPEL過程中,每一個(gè)接收 (receive)活動(dòng)都對(duì)應(yīng)一個(gè)過程部署時(shí)要發(fā)布的服務(wù)操作。最上面的接收活動(dòng)receiveOrder是一次新的過程執(zhí)行的起點(diǎn)。因此,每當(dāng)客戶調(diào)用 左邊的訂購(gòu)(order)操作,就會(huì)通過離開初始接收活動(dòng)來啟動(dòng)一次新的過程執(zhí)行。

    下一步是調(diào)用(invoke)活動(dòng)。調(diào)用活動(dòng)會(huì)調(diào)用另一個(gè)WSDL服務(wù)并將響應(yīng)消息收集到一個(gè)過程變量里。在我們的例子里,getQuote在供應(yīng)商上被調(diào)用。

    來自輸入消息的信息可以被存儲(chǔ)在過程變量中。整個(gè)消息都可以被存儲(chǔ),包括XML片斷或XSD基本類型。象extractProductName這樣的賦值 (assign)活動(dòng)可以從一個(gè)變量中(一般是基于XML的內(nèi)容)提取部分信息,然后將之保存到另一個(gè)變量中。這樣,變量就可被用來為其他調(diào)用或當(dāng)前請(qǐng)求 的響應(yīng)合成消息。

    接收活動(dòng)receiveQuote將使過程實(shí)例處于等待狀態(tài),直到提供商調(diào)用submitQuote服務(wù)操作。擁有submitQuote 操作的服務(wù)也會(huì)在BPEL過程部署時(shí)發(fā)布。當(dāng)供應(yīng)商傳入了與這個(gè)訂單有關(guān)的報(bào)價(jià)后,過程將繼續(xù)執(zhí)行并離開receiveQuote活動(dòng)。

    應(yīng)答(reply)活動(dòng)用來為未完成的服務(wù)請(qǐng)求組織一條響應(yīng)消息。因此,應(yīng)答活動(dòng)只有在這種情況下才有意義:在進(jìn)入一個(gè)具有IN-OUT消息交換的服務(wù)操作前,接收操作接收到了一條消息。

    注意,在供應(yīng)商調(diào)用submitQuote操作時(shí),輸入消息必須通過離開這個(gè)接收活動(dòng)來觸發(fā)過程繼續(xù)執(zhí)行。這是BPEL的另一特性,它被稱為關(guān)聯(lián) (correlation)。在BPEL過程中,關(guān)聯(lián)是指輸入服務(wù)請(qǐng)求消息和當(dāng)前正在等待此消息的過程實(shí)例間的匹配。假如一個(gè)接收節(jié)點(diǎn)被標(biāo)記為開始,該操 作上的輸入消息將會(huì)創(chuàng)建一個(gè)新的過程實(shí)例。一般說來,輸入文檔中的某些數(shù)據(jù)項(xiàng)這時(shí)會(huì)被標(biāo)記為一個(gè)唯一的關(guān)聯(lián)ID,如訂單ID。根據(jù)輸入消息文檔中包含的訂 單ID,過程中接收節(jié)點(diǎn)的輸入消息稍后會(huì)關(guān)聯(lián)到對(duì)應(yīng)的過程實(shí)例上。在現(xiàn)實(shí)中,關(guān)聯(lián)集可以由多個(gè)屬性的多個(gè)個(gè)體集合組成,但為了簡(jiǎn)單起見,那些額外的復(fù)雜性 略去不談。

    伙伴鏈接(partner links)用來標(biāo)識(shí)那些參與BPEL過程通信的外部團(tuán)體。從BPEL過程到伙伴的服務(wù)調(diào)用和伙伴對(duì)BPEL過程的調(diào)用都關(guān)聯(lián)到伙伴鏈接。這兩個(gè)方向都被 稱為角色(roles),每一個(gè)角色對(duì)應(yīng)一個(gè)端口類型(port type)。端口類型指定了伙伴鏈接中該方向的通信接口。因此一個(gè)伙伴鏈接可以聲明兩個(gè)角色,需要指出這兩個(gè)角色中的哪一個(gè)代表了BPEL過程端。與伙伴 鏈接中BPEL過程角色相對(duì)應(yīng)的服務(wù)會(huì)在部署過程的時(shí)候發(fā)布。另外一個(gè)則會(huì)在服務(wù)調(diào)用時(shí)使用。

    這里總結(jié)了BPEL的大部分基本內(nèi)容。另外一些是BPEL的更高級(jí)特性,如補(bǔ)償處理(compensation handling)、事件處理(event handling)、并發(fā)執(zhí)行路徑和定時(shí)器。因它們與以后的討論沒有太大的關(guān)系,所以沒有在這里介紹。


    對(duì)BPEL的思考和評(píng)論

    讓我們近距離看一下上述過程的控制流程。這三個(gè)服務(wù)調(diào)用一起揭示了BPEL語言的關(guān)鍵動(dòng)機(jī),即簡(jiǎn)化異步服務(wù)交互的處理。在客戶側(cè),客戶端軟件發(fā)出一條請(qǐng)求 消息后就會(huì)被阻塞,直到收到該服務(wù)調(diào)用的響應(yīng)消息。這就是IN-OUT消息交換模式。假設(shè)服務(wù)綁定使用SOAP over HTTP,這意味著該HTTP請(qǐng)求在響應(yīng)通過相同的TCP/IP連接發(fā)出之前都應(yīng)該被阻塞。同時(shí),在另一側(cè)過程自己也要等待提供商來執(zhí)行 submitQuote回調(diào)。

    所有的這些在企業(yè)服務(wù)總線(ESB)環(huán)境中都有很大的意義。ESB的思想是:多個(gè)組件按標(biāo)準(zhǔn)方式進(jìn)行連接,然后通過總線與其他組件進(jìn)行通信??偩€上交換的 消息也是標(biāo)準(zhǔn)的(通常基于WSDL/XML)。一組適配器充當(dāng)協(xié)議(例如SOAP over HTTP、email、FTP、RMI)和總線之間的網(wǎng)關(guān)。

    WS-BPEL也是基于WSDL的,自然能綁定到基于XML的技術(shù)(如Web服務(wù))。

    

 
    此外,企業(yè)應(yīng)用也可以被連接到服務(wù)總線上。一旦任何東西在總線上都可作為一個(gè)服務(wù)使用,就像與ESB的交互也是基于WSDL的一樣,BPEL因其技術(shù)基礎(chǔ)是WSDL而顯得意義非凡。因此,ESB是BPEL引擎理想的棲息地。

    ESB主要關(guān)注在基于XML的服務(wù)之間交換基于XML的消息。BPEL從來沒有脫離XML文檔。XPath一般用于剪貼輸入文檔的片段,然后將之保存到過 程變量中。被調(diào)用的服務(wù)、被暴露的服務(wù)和過程變量都是以XML為基礎(chǔ)的。執(zhí)行邏輯也直接用XML表示。在某種程度上這是個(gè)優(yōu)勢(shì),因?yàn)闊o需在XML信息結(jié)構(gòu) 和編程語言對(duì)象之間進(jìn)行轉(zhuǎn)換。對(duì)于復(fù)雜文檔和對(duì)象結(jié)構(gòu),這種轉(zhuǎn)換從來都不是透明和自動(dòng)的,需要進(jìn)行開發(fā)和運(yùn)行時(shí)性能調(diào)優(yōu)。

    BPEL復(fù)雜的關(guān)聯(lián)能力使之可以很方便地使用現(xiàn)有消息交換而無需任何修改。不用將過程實(shí)例ID放入消息或上下文的頭部,BPEL引擎可以根據(jù)交換文檔中的 任何信息片段完成關(guān)聯(lián)操作。這種在每一個(gè)文檔交換中標(biāo)識(shí)數(shù)據(jù)項(xiàng)和它們與其他文檔交換匹配的方法可以非常靈活。這非常有用,因?yàn)樵诤芏嗉蓤?chǎng)景中你無權(quán)控制 交換文檔所用的通信協(xié)議。

    但與業(yè)務(wù)過程管理(BPM)的聯(lián)系從何談起呢?從BPM建模者的角度看,這種關(guān)聯(lián)是有疑問的。我唯一找到的現(xiàn)實(shí)聯(lián)系是基于良好的市場(chǎng)營(yíng)銷而非特性。對(duì)于 BPM建模者來說,BPEL缺少了幾個(gè)重要的基本特性。但是當(dāng)你在一個(gè)你無法控制和哪個(gè)伙伴進(jìn)行文檔交換的ESB環(huán)境中用它編寫新服務(wù)的時(shí) 候,BPEL(即使不包括擴(kuò)展)是完備的。因此,就像Maserati和Hummer(譯者:兩種汽車品牌),喜好與否的關(guān)鍵在于你如何用它。

    我能發(fā)現(xiàn)的唯一關(guān)聯(lián)是BPEL過程可以用圖表示,以及語言支持等待狀態(tài)。這意味著某些由業(yè)務(wù)分析師創(chuàng)建的過程模型可以被轉(zhuǎn)換成BPEL過程。但是這種方法 有兩個(gè)主要的局限性。第一,業(yè)務(wù)分析師被假定為非技術(shù)人員。所以,分析模型中的活動(dòng)與現(xiàn)有Web服務(wù)相對(duì)應(yīng)的機(jī)會(huì)非常少(意思是:不存在)。第二個(gè)問題是 BPEL是塊(block)結(jié)構(gòu)。分析模型通常是以圖為基礎(chǔ)的。因此,一般說來,不加修改的把分析圖轉(zhuǎn)換成BPEL可執(zhí)行過程是不可能的。這也是BPMN 與BPEL難以映射,以及局限性如此之多的原因。

    使用BPEL for BPM的最突出的矛盾在于:分析員被假定為不懂技術(shù),而BPEL過程中的活動(dòng)最終對(duì)應(yīng)到Web服務(wù)調(diào)用。此外,BPEL過程的塊結(jié)構(gòu)天性對(duì)于建模也有太多 的限制。分析員需要自由地畫出方塊和箭頭,它總是產(chǎn)生一個(gè)圖結(jié)構(gòu)和任意循環(huán)(arbitrary cycles)。BPEL過程并沒有變遷的概念。相反,一個(gè)BPEL過程是一個(gè)組合結(jié)構(gòu),其頂級(jí)活動(dòng)是一個(gè)順序活動(dòng)(sequence)。這個(gè)順序活動(dòng)包 括一個(gè)嵌套的活動(dòng)序列。其中一些是基本(或原子)活動(dòng),而另一些是復(fù)雜活動(dòng)。復(fù)雜活動(dòng)又會(huì)包含一個(gè)嵌套的活動(dòng)序列。通過好的工具,這些自上而下的活動(dòng)可以 很方便地被用來創(chuàng)建一個(gè)BPEL過程。但是將一個(gè)分析模型映射到一個(gè)BPEL過程則是完全不同的事情,并且很難說這種不同很小。

    使用BPEL for BPM的另外一個(gè)問題是BPEL有限的數(shù)據(jù)處理能力。從XML文檔中提取內(nèi)容片段是你在服務(wù)編制中最需要的功能。但對(duì)于BPM來說,過程步驟之間通常需要完成大量的數(shù)據(jù)處理。XPath和其他的基于XML的轉(zhuǎn)換技術(shù)顯然是不夠的。

    如果你是打算使用BPEL for BPM的架構(gòu)師,你應(yīng)該捫心自問一下是否想讓核心業(yè)務(wù)數(shù)據(jù)出現(xiàn)在ESB中。在IT行業(yè)從存儲(chǔ)過程轉(zhuǎn)移到如JEE這樣的企業(yè)技術(shù)過程中,對(duì)構(gòu)建數(shù)據(jù)在“云中 ”的新應(yīng)用的管理更方便了。BPEL引擎需要維護(hù)的數(shù)據(jù)和領(lǐng)域模型(如顧客、客戶、提供商等等)有關(guān)。這些領(lǐng)域數(shù)據(jù)通常存儲(chǔ)在IT基礎(chǔ)設(shè)施的關(guān)系數(shù)據(jù)庫(kù) 中。核心業(yè)務(wù)過程中的信息必須能夠很方便地鏈接到關(guān)系數(shù)據(jù)庫(kù)中的領(lǐng)域數(shù)據(jù)。假如你的JAVA應(yīng)用需要了解一個(gè)文檔的客戶引用怎么辦?你想將那個(gè)文檔作為過 程參數(shù)傳給BPEL引擎,然后使用XPATH從那個(gè)XML文檔中抽取引用嗎?這就暗示這個(gè)信息應(yīng)該包含數(shù)據(jù)庫(kù)的領(lǐng)域模型中,而不是在BPEL引擎中。 BPEL并沒有阻止你把這種信息存儲(chǔ)在領(lǐng)域模型數(shù)據(jù)庫(kù)中,但是它為這種做法添加了困難。你可能必須實(shí)現(xiàn)一個(gè)特殊的Web服務(wù)來獲取存儲(chǔ)在領(lǐng)域模型中的客戶 引用。所以,BPEL可能會(huì)很容易讓你的領(lǐng)域模型信息支離破碎。要小心。

    David的BPEL反例(Case against BPEL),Joe McKendrick就David Chappell的博客所寫的文章,以及Jeff Davis的“BPEL怎么了(What‘s wrong with BPEL)”,都持類似的觀點(diǎn):BPEL不適合BPM。

    別誤會(huì),我沒有貶低BPEL。我的觀點(diǎn)是BPEL非常適合將一組現(xiàn)有服務(wù)組合成一個(gè)新服務(wù)。但從我們目前所了解的情況看,它沒有交付它對(duì)于BPM的承諾。


 

    BPEL擴(kuò)展

    BPEL4People定義了在BPEL過程中包含人工任務(wù)的方式。BPEL4People使用BPEL擴(kuò)展機(jī)制將人工任務(wù)作為活動(dòng)加入到一個(gè)BPEL過 程中。這個(gè)規(guī)范定義了BPEL引擎和任務(wù)組件之間的消息交換協(xié)議。BPEL4People引入了人員鏈接(people link)的概念。任務(wù)分配就是對(duì)負(fù)責(zé)一項(xiàng)任務(wù)的人員或組的選擇(Selection)。BPEL4People規(guī)定了人員或組的描述方式。但是,對(duì)于選 擇(Selection)的運(yùn)行時(shí)計(jì)算和身份信息結(jié)構(gòu)并沒有包括在規(guī)范當(dāng)中。最近,支持BPEL4People的公司決定將此規(guī)范提交給OASIS進(jìn)行標(biāo) 準(zhǔn)化。因此,在不久的將來有望在大多數(shù)BPEL實(shí)現(xiàn)中找到BPEL4People。

    BPEL4People加入的工作流功能,通常被視為是對(duì)BPEL修正,這有助于BPEL更好的與BPM相適應(yīng)。但這種情況不現(xiàn)實(shí)。當(dāng)分析員建?;顒?dòng)時(shí), 他們通常將之對(duì)應(yīng)到人工任務(wù)或系統(tǒng)處理。BPEL仍然強(qiáng)制活動(dòng)之間的通信需由基于XML的過程變量完成。如果開發(fā)者需要加入一個(gè)使用XSLT的轉(zhuǎn)換,即使 業(yè)務(wù)分析師根本不關(guān)心這個(gè)技術(shù)細(xì)節(jié),它也會(huì)是一個(gè)突然出現(xiàn)在圖中的新活動(dòng)。BPEL過程圖的圖形活動(dòng)布局仍然與WEB服務(wù)和XML技術(shù)的耦合過于緊密,以 致于無法在保持分析圖完整的同時(shí)使過程可執(zhí)行。

    BPELJ是一個(gè)舊的白皮書,它是關(guān)注Java和BPEL過程綁定的標(biāo)準(zhǔn)提案。其中涵蓋了多個(gè)方面內(nèi)容,如在BPEL過程中包含Java代碼片段,將 Java對(duì)象作為變量和從BPEL過程調(diào)用Java beans。JCP中的JSR 207 Process Definition for Java試圖將此作為Java標(biāo)準(zhǔn)。但自從2003后,就沒有看到這方面的任何進(jìn)展。

    即使有了這些擴(kuò)展,BPEL的主要問題依舊存在。當(dāng)它用于業(yè)務(wù)過程管理時(shí),它不能很好地支持過程建模。業(yè)務(wù)分析師在建模時(shí)不能自由發(fā)揮,因?yàn)閳D需要與 WSDL服務(wù)建立直接和緊密的關(guān)系。BPM需要將圖和底層技術(shù)解耦。分析師必須能完全自由地畫圖,而開發(fā)者必須能夠在不改動(dòng)圖的情況下把過程執(zhí)行嵌入到應(yīng) 用架構(gòu)中。BPEL對(duì)此無能為力。這意味這BPEL很爛嗎?不。假如BPEL被作為一種從細(xì)粒度服務(wù)中創(chuàng)建粗粒度服務(wù)的集成技術(shù)來使用的話,它擁有你需要 的一切特性。

    BPMN

    什么是BPMN

    BPMN目前被作為一種建模符號(hào)使用。它定義了用于過程建模的方框和箭頭的外觀。對(duì)于BPMN是否應(yīng)該定義執(zhí)行語義和它是否應(yīng)該只關(guān)注圖形表示的問題上,以前和現(xiàn)在都有非常多的討論。

    
 
    這個(gè)規(guī)范包括圖形形狀,含義描述和每個(gè)結(jié)構(gòu)的屬性集合。BPMN期望解決BPMN結(jié)構(gòu)和屬性與特定過程執(zhí)行語言的映射問題。規(guī)范本身就包括了一個(gè)這樣的 BPMN和BPEL映射。BPMN沒有定義XML或其他文件格式。一個(gè)可能性是BPDM(見下)在未來會(huì)定義一個(gè)這樣的文件格式。在給出對(duì)于BPMN的思 考和觀點(diǎn)之前,我想首先給出一些關(guān)于分析過程和可執(zhí)行過程之間差異的更多背景。

    分析和執(zhí)行

    當(dāng)某人用方框和箭頭畫了一個(gè)圖,這個(gè)圖可以表示許多不同的事物:

    *文檔,向其他人解釋人和系統(tǒng)是如何一起工作來達(dá)成某個(gè)目標(biāo)的
    *一個(gè)可執(zhí)行過程,就像任何其他軟件一樣,向計(jì)算機(jī)系統(tǒng)解釋其行為方式
    *一個(gè)與某個(gè)軟件技術(shù)部件(如Java類)相關(guān)聯(lián)的狀態(tài)機(jī),它可能和任何業(yè)務(wù)過程都沒有關(guān)系
    *一種通信協(xié)議,描述多方間的消息交換
    *Web應(yīng)用的一組頁面,箭頭表示導(dǎo)航選擇

    讓我們進(jìn)一步看看圖的這兩個(gè)用途:為分析而畫的圖和為一個(gè)可執(zhí)行過程而畫的圖。首先,業(yè)務(wù)層面的人員不會(huì)考慮系統(tǒng)的邊界。對(duì)于一個(gè)分析過程中的自動(dòng)化模塊 而言,分析員通常不知道它如何執(zhí)行或在哪個(gè)系統(tǒng)上執(zhí)行。第二,當(dāng)分析員為業(yè)務(wù)過程寫文檔時(shí),其目的是為了向另一個(gè)人解釋人和系統(tǒng)協(xié)作的方式。作為描述的一 部分,圖有助于給出一個(gè)快速的概覽。過程描述可以假設(shè)讀者對(duì)被解釋過程的上下文已知。因此過程描述的詳細(xì)程度可以變化。

    這與可執(zhí)行過程區(qū)別非常大,后者是業(yè)務(wù)過程管理系統(tǒng)(BPMS)的輸入??蓤?zhí)行過程精確定義了這個(gè)BPMS應(yīng)該如何運(yùn)轉(zhuǎn)。從這點(diǎn)來講,它就是軟件,與編程語言唯一不同之處就是所用的語言。所以可執(zhí)行過程語言向系統(tǒng)解釋了它該做什么。

    當(dāng)使業(yè)務(wù)過程自動(dòng)化時(shí),分析和可執(zhí)行過程的聯(lián)系來自于這一共同需求:一個(gè)計(jì)算機(jī)系統(tǒng)需要跟蹤業(yè)務(wù)過程中所有活動(dòng)的進(jìn)展。為了達(dá)到這個(gè)目的,活動(dòng)結(jié)束時(shí)需要告知管理這些信息的系統(tǒng)。系統(tǒng)或許可以自己執(zhí)行某些活動(dòng),這些活動(dòng)被稱為自動(dòng)活動(dòng)。

    即使在今天,許多BPM系統(tǒng)的市場(chǎng)營(yíng)銷都是這樣:“讓你的業(yè)務(wù)分析師畫出業(yè)務(wù)過程的工作方式,然后這個(gè)圖形描述將在BPMS上運(yùn)行。”哪個(gè)經(jīng)理愿意讓一個(gè) 不懂技術(shù)的業(yè)務(wù)分析師畫的東西運(yùn)行在生產(chǎn)線上?!BPM系統(tǒng)的機(jī)會(huì)在于如下事實(shí):業(yè)務(wù)過程分析圖可以和可執(zhí)行業(yè)務(wù)過程圖看起來非常相似。圖可以促進(jìn)分析員 和開發(fā)者的溝通,但始終是開發(fā)者負(fù)責(zé)可執(zhí)行過程的所有技術(shù)細(xì)節(jié)。

    當(dāng)分析員畫的圖作為可執(zhí)行過程的基礎(chǔ)時(shí),假如可執(zhí)行過程語言不能靈活地將圖和技術(shù)解耦,圖就有可能不得不進(jìn)行改變。例如,假設(shè)需要先收集一個(gè)人提供的輸入 信息,然后再將其作為輸入傳給Java代碼去執(zhí)行,業(yè)務(wù)分析師可能會(huì)對(duì)此建模成兩個(gè)連續(xù)活動(dòng)。但是,如果要用BPEL使這個(gè)過程可執(zhí)行,可能必須加入一個(gè) 賦值活動(dòng)來將入?yún)⑥D(zhuǎn)換成Java代碼需要的格式。這說明當(dāng)分析過程作為可執(zhí)行過程的基礎(chǔ)時(shí),通常需要進(jìn)行轉(zhuǎn)換。

    另一方面我想指出的是:過程語言在復(fù)雜度和適用范圍上可以有很大的不同。一些過程語言能力有限,只適用某一特定用途。一個(gè)文檔管理系統(tǒng)中用于批準(zhǔn)的語言就 是一個(gè)好例子。這種語言可以非常簡(jiǎn)單而且不需要太多的技術(shù)細(xì)節(jié)。這種圖在過程中占很大比重,非技術(shù)人員確實(shí)可以用這種方法構(gòu)建一個(gè)完全可執(zhí)行的過程。但對(duì) 于象BPEL或jPDL這樣的通用過程語言而言,情況就不一樣了。這些語言有更大的適用范圍,因此它們更加復(fù)雜而且需要更多的技術(shù)細(xì)節(jié)。此時(shí),總是需要一 個(gè)開發(fā)者來管理技術(shù)細(xì)節(jié)。

    過程開發(fā)的過程

    在知道了這些之后,我想勾勒出一個(gè)對(duì)于業(yè)務(wù)過程自動(dòng)化更實(shí)際的分析和開發(fā)過程例子。首先,一個(gè)分析員創(chuàng)建了一個(gè)包括圖的業(yè)務(wù)過程描述。然后需要將它翻譯成 可執(zhí)行過程語言。這種翻譯的影響將取決于這個(gè)分析員的技術(shù)技能和可執(zhí)行過程語言的能力。任何情況下的目的都是使轉(zhuǎn)換對(duì)圖影響最小,這樣業(yè)務(wù)分析師才能認(rèn)識(shí) 和理解可執(zhí)行過程圖。注意,圖只是冰山的一角,因?yàn)閷?duì)分析師毫無興趣的可執(zhí)行過程將包括大部分的技術(shù)細(xì)節(jié)。翻譯之后,可執(zhí)行過程就成為了一個(gè)軟件,非技術(shù) 出身的業(yè)務(wù)分析師只允許以只讀方式查看它。

    BPM帶來的巨大優(yōu)勢(shì)是分析員和開發(fā)者擁有一門公共語言。圖方便了業(yè)務(wù)分析師和開發(fā)者的溝通。這的確實(shí)現(xiàn)了由BPM帶來的‘敏捷’。但是幻想出現(xiàn)業(yè)務(wù)分析師在編輯圖表之后點(diǎn)一下‘發(fā)布成產(chǎn)品’按鈕就萬事大吉的情景顯然過于樂觀且不現(xiàn)實(shí)。

    建模細(xì)節(jié)

    這節(jié)將論證這一觀點(diǎn):當(dāng)需要在分析圖和可執(zhí)行過程間建立直接關(guān)系時(shí),圖中不要包括太多的細(xì)節(jié)。參與BPMN的人員背景是不同的。當(dāng)人們僅僅只站在BPM的 分析模型或可執(zhí)行過程側(cè)面看問題的時(shí)候,他們必然會(huì)象Frank McCabe在一次OMG會(huì)議中所發(fā)表的報(bào)告那樣感到驚訝:

    關(guān)于BPMN和BPDM的關(guān)系有些爭(zhēng)論:BPMN‘僅僅’是一個(gè)符號(hào),或者它確實(shí)有某種語義?所有的這些對(duì)BPMN團(tuán)隊(duì)來說都是新聞,因?yàn)樗麄儯òㄎ遥? 都愉悅地認(rèn)為我們正在努力定義一種語言。對(duì)于我們來說,最大的問題好像是關(guān)于BPMN圖的執(zhí)行語義;對(duì)其他人來講,它只是一個(gè)圖形符號(hào),完全不需要我們操 心執(zhí)行的事兒。你可能會(huì)猜到事情接下來會(huì)怎樣。

    這表明建模專家需要一種非常準(zhǔn)確的符號(hào)以便在圖上能放置大量的信息。作為一種幫助記錄業(yè)務(wù)過程的分析語言,我認(rèn)為BPMN是一個(gè)很好的選擇。David Chappell提倡建模層次的移植性和實(shí)現(xiàn)(可執(zhí)行過程)層次的移植性至少同樣重要。

    想一想我們一直以來想要達(dá)到的目標(biāo),過程邏輯的移植性——把實(shí)現(xiàn)從一個(gè)平臺(tái)移到另一個(gè)平臺(tái)的能力——無疑是其中之一。但是人的移植性——允許我們把技能從 一種過程設(shè)計(jì)工具轉(zhuǎn)移到另一種工具的能力——也很重要。BPEL潛在地可以幫助完成第一個(gè)目標(biāo),但卻不適合第二個(gè);大部分創(chuàng)建過程的人從來不會(huì)直接使用這 種復(fù)雜的基于XML的語言工作……正在崛起的圖形化定義過程的標(biāo)準(zhǔn)就是業(yè)務(wù)過程建模符號(hào)(BPMN)。如果BPMN得到廣泛的支持——這好像是可能的—— 它將使人的過程設(shè)計(jì)技能可以移植。

    這讓我得出這樣的結(jié)論:假如要將過程建模綁定到可執(zhí)行過程上,過程的圖形化表示不應(yīng)該包括太多的信息。當(dāng)在你的組織中使用BPMN來進(jìn)行過程建模的時(shí)候, 最好引入一個(gè)更基本的子集,并且只使用它們。因?yàn)?,試圖在圖形化的圖表中表達(dá)太多的細(xì)節(jié)需要所有人都能理解它們。圖形符號(hào)中的細(xì)節(jié)越細(xì),它們與可執(zhí)行語言 匹配的機(jī)會(huì)就越小。BPMN符號(hào)細(xì)粒度細(xì)節(jié)的復(fù)雜性不應(yīng)該被低估,且應(yīng)該只用在與可執(zhí)行過程沒有直接聯(lián)系的大型業(yè)務(wù)分析師團(tuán)隊(duì)中。

    因此,我認(rèn)為過程語言(可執(zhí)行的和非可執(zhí)行的)的區(qū)別太明顯,以致于不能把它們統(tǒng)一到一種基于BPMN的圖形過程設(shè)計(jì)器中。我確實(shí)認(rèn)為為每一個(gè)過程語言都 可定義一個(gè)與之很好匹配的BPMN子集。設(shè)計(jì)工具應(yīng)該直接支持特定于這種語言的結(jié)構(gòu)和適當(dāng)粒度的細(xì)節(jié)。我可以預(yù)見到這樣的一種工具,其中設(shè)計(jì)者可以在不同 過程語言間切換身份。但是在每一種情形中,使用者都很清楚用哪種語言建模和開發(fā)過程。同樣,作為一個(gè)非執(zhí)行的分析語言使用的普通BPMN,是那些單獨(dú)的語 言之一。工具可以幫助處理轉(zhuǎn)換,但每次都是一個(gè)有損,單向的轉(zhuǎn)換。

    映射和失配

    BPMN的映射方式會(huì)使雙向工程出錯(cuò)。雙向工程的思想是在BPMN分析模型和可執(zhí)行過程之間可以不斷地切換。業(yè)務(wù)分析師使用象BPMN這樣的建模語言,使 用圖形符號(hào)和BPMN屬性;開發(fā)者使用象BPEL這樣的可執(zhí)行語言。很明顯,這種方式的問題在于在實(shí)際應(yīng)用中很難維護(hù)兩套屬性。即使在兩個(gè)視圖中可以共享 一些屬性,但是業(yè)務(wù)分析師和開發(fā)者仍然會(huì)因?yàn)橐粋€(gè)屬性在BPMN和BPEL中含義不同而難以相互溝通。另外一個(gè)問題是工具廠商很難創(chuàng)建一個(gè)支持無損雙向工 程的工具。

    既然BPMN和BPEL正在成為最受關(guān)注的BPM技術(shù),讓我們進(jìn)一步看看兩者的映射。第一個(gè)也是最顯眼的問題是兩種語言的結(jié)構(gòu)不匹配。BPMN是基于圖形 的,而BPEL是一個(gè)沒有變遷的樹形組合結(jié)構(gòu)。第二,兩者的并發(fā)模型差異巨大。Bruce Silver對(duì)此有很好的總結(jié):

    如何使過程模型(如BPMN)和對(duì)應(yīng)的BPMN實(shí)現(xiàn)(如BPEL)保持同步,就是我們所說的雙向工程問題……如果你一直在跟蹤BPMN Watch上的這個(gè)話題,你就會(huì)記得BPMN讓你畫出的東西并不能很方便地映射到BPEL——至少映射到一種你愿意編輯和維護(hù)的BPEL,但BPMN的有 些子集是可以自動(dòng)映射的。假如是你控制BPMN工具,你可以通過禁止用戶畫那些不能映射的東西來解決這個(gè)問題。


    其他BPM技術(shù)

    XPDL

    XPDL是工作流管理聯(lián)盟(WfMC)自1993年以來將BPM建模者統(tǒng)一到一個(gè)標(biāo)準(zhǔn)下的結(jié)果。這個(gè)標(biāo)準(zhǔn)關(guān)注于用來存儲(chǔ)和交換過程模型的XML格式。 XPDL過程是基于圖形的,這意味著它比BPEL樹形結(jié)構(gòu)更適合業(yè)務(wù)分析師。一個(gè)XPDL過程還可以在一個(gè)過程圖中包含圖形信息,如活動(dòng)在過程圖中的坐 標(biāo)。當(dāng)過程建模者和模擬工具之間交換過程模型的時(shí)候,這個(gè)功能非常方便。XPDL還有任務(wù)管理功能,包括泳道。這種過程語言不會(huì)象BPEL那樣為不同活動(dòng) 定義明確的執(zhí)行語義。

    John Pyke和Keith Swenson不斷地強(qiáng)調(diào)XPDL并不是要與BPEL競(jìng)爭(zhēng)。相反,他們認(rèn)為XPDL是一種文件交換格式。假如這就是目標(biāo),那它們很可能會(huì)被即將到來的BPDM取代——如果后者曾見光的話。

    與基于WSDL的BPEL不同,XPDL是技術(shù)中立的。這意味著XPDL有一個(gè)單獨(dú)的間接層來為所謂的‘應(yīng)用’服務(wù)。XPDL 2.0明確地為適應(yīng)BPMN而設(shè)計(jì)。XPDL本質(zhì)上是基于圖形的,所以它更適合BPMN。在XPDL 2.0中,規(guī)范明確指出所有的BPMN屬性都可以匹配到XPDL。XPDL絕對(duì)比BPEL更適合BPMN。但XPDL/BPMN組合和BPEL的很大程度 的區(qū)別在于后者有精確的執(zhí)行語義。

    BPDM

    盡管BPDM不是新東西,但它依舊還處于內(nèi)部討論階段,沒有正式發(fā)布。通常,BPDM應(yīng)該包括表示業(yè)務(wù)過程的模型和一個(gè)文件格式。因?yàn)锽PMN和BPDM 都在OMG,未來它可能取代XPDL成為一種交換文件格式。關(guān)于這個(gè)項(xiàng)目還沒有多少正式的信息。Fred Cummins如此描述BPDM的宏觀目標(biāo):

    規(guī)范提供了BPMN圖形的底層模型表示。這意味著BPMN過程模型會(huì)有一個(gè)標(biāo)準(zhǔn)表示,以便在基于XMI(模型交換XML)的建模工具間的交換模型。規(guī)范為 編制過程(那些按規(guī)定執(zhí)行的過程)和編排(描述多個(gè)獨(dú)立過程間進(jìn)行交換的規(guī)范,這種交換仿佛發(fā)生在一個(gè)Web服務(wù)交換中)提供了正式的表示。

    Keith Swenson保守地聲稱BPDM可能將取代最近15年在XPDL上的努力工作。Sandy Kemsley對(duì)Fred的介紹進(jìn)行了匯報(bào)總結(jié)。

    jPDL

    jPDL實(shí)際上不是一個(gè)標(biāo)準(zhǔn),而是我們作為JBoss jBPM項(xiàng)目一部分創(chuàng)建的一種可執(zhí)行語言。注意,jBPM以前只支持jPDL語言,但jBPM現(xiàn)在是一個(gè)過程語言平臺(tái),jPDL只是所支持的語言之一。這 種語言的目的是成為一種可以清晰地把圖和技術(shù)細(xì)節(jié)解偶的可執(zhí)行語言。技術(shù)細(xì)節(jié)集中在Java平臺(tái)。

    正如我們以上所見,BPMN適合分析員,但它是不可執(zhí)行的。BPEL是可以執(zhí)行的,但不適合BPM。因此,我認(rèn)為BPMN/BPEL組合依舊是BPM蹩腳的解決方案,因?yàn)樗鼈儾荒芎芎玫钠ヅ洹?/p>

    從另一個(gè)方面來講,jPDL是一門關(guān)注自由建模的可執(zhí)行語言。首先,它是基于圖的。第二,具有大量支持更好解耦過程圖和技術(shù)細(xì)節(jié)的特性。例如,使用 jPDL,可以在圖中加入隱藏的代碼。它們被稱為動(dòng)作。這種風(fēng)格的另一特性是可以引用節(jié)點(diǎn)運(yùn)行時(shí)行為的客戶化Java代碼。這樣,開發(fā)者就可以自由地開發(fā) 出分析員在某個(gè)過程節(jié)點(diǎn)中想要的特殊行為。

    另外,這種語言并不試圖統(tǒng)一分析模型和可執(zhí)行過程模型,但上述特性使它能夠更容易地支持分析和執(zhí)行小節(jié)所講的軟件開發(fā)過程。jPDL已在Java社區(qū)里得到了廣泛采納。

    編排

    ebXML & WS-CDL 是編排的標(biāo)準(zhǔn)化成果。John Reynolds這樣描述編制和編排的區(qū)別:

        編制 == 可執(zhí)行過程

        Web服務(wù)編制與執(zhí)行特定的業(yè)務(wù)過程相關(guān)。WS-BPEL是一種用來定義可以在一個(gè)編制引擎中執(zhí)行的過程語言。

        編排 == 多方合作

        Web服務(wù)編排與描述Web服務(wù)間外部可見的交互相關(guān),WS-CDL是一種描述多方契約的語言,有些類似WSDL擴(kuò)展;WSDL描述Web服務(wù)接口,WS-CDL描述Web服務(wù)間的合作。

    編制是一種可執(zhí)行過程,而編排是用來指定多方合作的協(xié)議。所以BPEL是一種編制語言。這意味著BPEL過程可以在一個(gè)系統(tǒng)上執(zhí)行。因?yàn)橐粋€(gè)編排過程定義 了多方合作的方式,一個(gè)編排過程本身并不能被直接部署。相反,必須為一個(gè)參與者采用一個(gè)投影,而那個(gè)投影可以是一個(gè)執(zhí)行過程。

    在這個(gè)余下文章中,我將描繪可執(zhí)行過程語言市場(chǎng)現(xiàn)狀。編制語言沒有堅(jiān)實(shí)的構(gòu)建基礎(chǔ)。在我看來,這是這種語言仍處于邊緣化最重要的原因。


    過程組件模型

    什么是過程組件模型

    微軟的工作流基礎(chǔ)(WF)和JBoss jBPM是兩種具有過程組件模型的技術(shù)。jBPM的基礎(chǔ)在過程虛擬機(jī)中有記錄,它與微軟工作流基礎(chǔ)所采取的方式有很多相似之處。

    它的思想是將過程圖中的活動(dòng)與一個(gè)實(shí)現(xiàn)該活動(dòng)運(yùn)行時(shí)行為的組件相關(guān)聯(lián),組件由一種通用編程語言實(shí)現(xiàn)。過程圖中的每一個(gè)活動(dòng)都對(duì)應(yīng)一個(gè)實(shí)現(xiàn)組件。例如,一個(gè)Web服務(wù)調(diào)用活動(dòng),一個(gè)人工任務(wù)活動(dòng)或一個(gè)電子郵件活動(dòng)都對(duì)應(yīng)一個(gè)實(shí)現(xiàn)組件

    這種方法的創(chuàng)新之處在于從BPM和工作流技術(shù)中提取了一個(gè)公共基礎(chǔ)層。WF或過程虛擬機(jī)都不能被認(rèn)為是BPM技術(shù)。相反,它們提供的是公共基礎(chǔ)層,可以把 這個(gè)基礎(chǔ)層擴(kuò)展成為功能齊全的BPM和工作流產(chǎn)品?;蛳馜avid Chappell在這篇MSDN文章中明確表達(dá)的:

    通過把工作流作為Microsoft .NET Framework 3.0的一部分實(shí)現(xiàn),這種創(chuàng)建軟件的方式對(duì)任何需要它的Windows應(yīng)用都有裨益。包括運(yùn)行在客戶端和服務(wù)器端的應(yīng)用,以及被最終用戶、獨(dú)立軟件提供商 和微軟自己創(chuàng)建的應(yīng)用。盡管需要些時(shí)間,Windows工作流基礎(chǔ)將會(huì)成為微軟產(chǎn)品和應(yīng)用的工作流基礎(chǔ)。

    一個(gè)活動(dòng)組件可以定義一組配置屬性。例如,一個(gè)電子郵件活動(dòng)可以有接收者,主題和正文的配置。這樣,同一個(gè)活動(dòng)實(shí)現(xiàn)在每次被使用的時(shí)候可以進(jìn)行不同的配置。
    
    這種新方法的意義

    首先,可以觀察到的是在同一活動(dòng)組件框架上可以實(shí)現(xiàn)多個(gè)過程語言。每一個(gè)過程語言由多個(gè)活動(dòng)類型組成。對(duì)于每一個(gè)活動(dòng)類型,運(yùn)行時(shí)行為可以用諸如Java 或c#這樣的通用編程語言實(shí)現(xiàn)。因此可執(zhí)行過程語言就成為了一組活動(dòng)類型的實(shí)現(xiàn)。這種活動(dòng)組件最重要的部分是實(shí)現(xiàn)過程結(jié)構(gòu)運(yùn)行時(shí)行為的代碼。但同時(shí)XML 序列化,配置過程組件的設(shè)計(jì)窗體,持久化和許多其他部分都可能被包括在過程結(jié)構(gòu)組件中。

    因?yàn)樗鼈兛梢灾С侄喾N過程語言,過程組件模型降低了單種語言的重要性。相反,它們使程序員可以為每一個(gè)過程選擇最適合的可執(zhí)行過程語言。與一個(gè)BPM引擎只支持一種過程語言相比,這種方式有效地分離了分析員和開發(fā)者間的關(guān)注點(diǎn)。

    過程語言可擴(kuò)展。假如你正在使用BPEL、jPDL或其他語言,你可以只實(shí)現(xiàn)你自己的活動(dòng)并把它們加到語言中。也可以只暴露過程語言的子集,創(chuàng)建非常簡(jiǎn)單的領(lǐng)域特定過程語言,例如文檔管理系統(tǒng)中用來指定批準(zhǔn)的語言。

    從這個(gè)角度看,我們可以定出4個(gè)層次的細(xì)節(jié),它們非常適合平滑地將分析模型轉(zhuǎn)換到可執(zhí)行過程模型:

    1.過程圖形結(jié)構(gòu)
    2.活動(dòng)類型選擇(對(duì)應(yīng)運(yùn)行時(shí)實(shí)現(xiàn))
    3.運(yùn)行時(shí)實(shí)現(xiàn)的配置
    4.B方案:一個(gè)活動(dòng)的客戶化編碼

    因此可預(yù)見工具會(huì)將過程分析員和過程開發(fā)者之間的合作帶到下一個(gè)層次。分析員可以使用設(shè)計(jì)工具來定義圖的結(jié)構(gòu),但不用選擇圖中節(jié)點(diǎn)的活動(dòng)類型。這將給建模 者帶來完全的自由。第二層的細(xì)節(jié)是選擇活動(dòng)類型。例如,指定過程中的某個(gè)步驟是人工任務(wù),或是一個(gè)Web服務(wù)的調(diào)用。這就把圖中節(jié)點(diǎn)和運(yùn)行時(shí)行為關(guān)聯(lián)了起 來。第三層的細(xì)節(jié)是屬性配置。分析員可能不知道Web服務(wù)端點(diǎn)的URL。那可能是Web服務(wù)調(diào)用節(jié)點(diǎn)的一個(gè)配置屬性。做為最后一層細(xì)節(jié),特定的客戶化運(yùn)行 時(shí)行為可以由開發(fā)者編碼實(shí)現(xiàn),作為從所用過程語言里選擇一個(gè)活動(dòng)類型的替代方案。這個(gè)模式更好地支持了開發(fā)可執(zhí)行過程的分析活動(dòng),該過程在分析與執(zhí)行小節(jié) 中已經(jīng)講過。

    過程組件模型和支撐它的編程語言間配合得非常好。例如,jPDL非常適合Java項(xiàng)目,因?yàn)樗梢院芊奖愕貙ava代碼(如領(lǐng)域模型對(duì)象)包含進(jìn)一個(gè)過程。同樣的,Windows工作流狀態(tài)機(jī)可以容易地集成C#代碼。

    過程引擎的操作管理變得更容易。軟件開發(fā)的很多方面可以用某種可執(zhí)行過程語言建模。設(shè)想這樣的一個(gè)項(xiàng)目,你用BPEL來做服務(wù)編制,jPDL來管理人工任務(wù),pageflow來定義一個(gè)WEB應(yīng)用的頁面流轉(zhuǎn)。在一個(gè)框架里能夠同時(shí)運(yùn)行這些語言是一個(gè)有利因素。

    結(jié)論

    BPEL是一種可執(zhí)行過程語言,它適合做集成,但因它與技術(shù)服務(wù)的緊密耦合而不適合業(yè)務(wù)過程管理。BPMN適合分析員做分析圖,但不能執(zhí)行。XPDL是一種較少采用的文件格式,可能會(huì)被BPDM替代。分析語言和執(zhí)行語言的鴻溝仍然不可逾越。

    為了創(chuàng)建一個(gè)更實(shí)際的能被普遍采用的BPM方法,我們需要從理清分析過程模型和可執(zhí)行過程模型的區(qū)別開始。一旦我們放棄了讓不懂技術(shù)的業(yè)務(wù)分析師畫出馬上可以執(zhí)行的軟件的念頭,我們就可以找到一個(gè)更現(xiàn)實(shí)的業(yè)務(wù)過程管理方法。

    當(dāng)把一個(gè)分析過程模型和一個(gè)可執(zhí)行過程實(shí)現(xiàn)聯(lián)系起來的時(shí)候,這暗示了不要給圖中的分析過程符號(hào)包括太多的復(fù)雜細(xì)節(jié)。只使用分析語言和執(zhí)行過程語言所提供的交集,可以為業(yè)務(wù)分析師和開發(fā)者創(chuàng)建一門以單一圖表為基礎(chǔ)的通用語言。

    不同的環(huán)境和不同的功能需求要求不同的可執(zhí)行過程語言。目前想用一種過程語言覆蓋所有的BPM、工作流和編制的想法過于宏大。即使這一想法能夠?qū)崿F(xiàn),最終的過程語言也會(huì)因太復(fù)雜而沒有實(shí)用價(jià)值。

    工作流技術(shù)有了新的發(fā)展。微軟的工作流基礎(chǔ)和JBoss jBPM的過程虛擬機(jī)為運(yùn)行時(shí)過程環(huán)境抽取了一個(gè)共同基礎(chǔ)。這些技術(shù)創(chuàng)造了一個(gè)組件模型,這樣就可以在這個(gè)共同基礎(chǔ)上構(gòu)建活動(dòng)類型。基礎(chǔ)定義了活動(dòng)組件執(zhí) 行的運(yùn)行時(shí)環(huán)境。每一種過程語言由一組活動(dòng)類型組成?;顒?dòng)類型的運(yùn)行時(shí)行為可以用一種通用編程語言實(shí)現(xiàn)。一個(gè)活動(dòng)成為了一個(gè)組件。任何過程語言基本上都定 義了一組活動(dòng)類型。接著,一個(gè)過程語言就可以在過程組件框架基礎(chǔ)上被構(gòu)建成一組活動(dòng)組件。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多