監(jiān)理公司管理系統(tǒng) | 工程企業(yè)管理系統(tǒng) | OA系統(tǒng) | ERP系統(tǒng) | 造價(jià)咨詢管理系統(tǒng) | 工程設(shè)計(jì)管理系統(tǒng) | 簽約案例 | 購買價(jià)格 | 在線試用 | 手機(jī)APP | 產(chǎn)品資料
X 關(guān)閉

業(yè)務(wù)過程執(zhí)行的7個(gè)謬誤

申請免費(fèi)試用、咨詢電話:400-8352-114

文章來源:泛普軟件

經(jīng)過8年多的認(rèn)真研究之后,軟件行業(yè)和它的客戶正頭撞南墻。由DotCom時(shí)代BPM初創(chuàng)者提出的愿景依舊沒有得到實(shí)現(xiàn):我們遠(yuǎn)沒有能力使用業(yè)務(wù)分析師設(shè)計(jì)出的業(yè)務(wù)過程模型來創(chuàng)建完全可行的解決方案(即使通過開發(fā)人員最低程度的干預(yù))。過程驅(qū)動應(yīng)用模型的需求確實(shí)存在:業(yè)務(wù)過程改進(jìn)項(xiàng)目在G2000公司內(nèi)隨處可見,但是盡管持續(xù)改進(jìn)過程的需求十分強(qiáng)烈,可BPM的市場在2007年仍然很貧瘠(相比它能夠達(dá)到的程度),和那些迅速包裝自己的廠商言語形成鮮明對比的是,在2000年,Oracle業(yè)務(wù)過程管理系統(tǒng)的空白……

到底發(fā)生了什么?這其實(shí)非常容易理解。這就是通常的“你要什么,我就給你什么”的故事。在這些情況下,一系列的誤解常常導(dǎo)致非最優(yōu)解決方案。如果你加入到一個(gè)大多數(shù)產(chǎn)品經(jīng)理、架構(gòu)師和開發(fā)人員從不與業(yè)務(wù)分析師進(jìn)行交流的團(tuán)隊(duì),由他們自己獨(dú)立設(shè)計(jì)超越一些方塊和箭頭的業(yè)務(wù)過程,任何人都不會對當(dāng)前的這種情形感到驚訝。

11月底,Bruce Silver在“再談雙向工程(Roundtripping Revisited)”中提出了一個(gè)關(guān)鍵問題。Bruce抱怨兩個(gè)關(guān)鍵的標(biāo)準(zhǔn):BPM:BPMN(業(yè)務(wù)過程建模符號)和BPEL(業(yè)務(wù)過程執(zhí)行語言)之間存在嚴(yán)重的失配。他提到了一個(gè)研究者(Ouyiang、Dumas、van der Aalst和ter Hofstede)團(tuán)隊(duì)的杰出工作,他們提出創(chuàng)建一個(gè)BPMN到BPEL的編譯器,因?yàn)樗墙?jīng)常提到的在當(dāng)前的BPMS架構(gòu)中缺失的一環(huán)。在解決這個(gè)問題上他們已取得很大的進(jìn)展,但是他們的工作仍然尚未完工。他也宣稱我們應(yīng)該完全放棄BPEL,而將精力放在有可能成功的方向:在符號之下再創(chuàng)建一個(gè)可執(zhí)行的BPMN標(biāo)準(zhǔn)層。

我從1997年就一直在這個(gè)問題上工作,在2002年我還寫了兩篇文章,它們都被OMG BPMN 1.0 規(guī)范所引用。我將重申我在這些文章中的一些觀點(diǎn),可能更清楚一些,使用不同的例子。這里,我的目的是探討作為當(dāng)前BPMS架構(gòu)基礎(chǔ)的一些誤解,同時(shí)給出一個(gè)新的架構(gòu)藍(lán)圖,在此基礎(chǔ)之上可以構(gòu)建一個(gè)新型的業(yè)務(wù)過程管理系統(tǒng)。

謬誤 1:業(yè)務(wù)分析師從系統(tǒng)的視角建模他們的過程。

如果你跟從業(yè)者談過的話,他們會告訴你他們從用戶的視角建模過程,而不是從執(zhí)行的視角或系統(tǒng)的視角。這意味著他們的過程指導(dǎo)用戶做什么,他們從不建模系統(tǒng)對用戶輸入的響應(yīng)。這么做有充分的理由:業(yè)務(wù)連貫性。如果系統(tǒng)失敗了,用戶需要知道該做什么才能使業(yè)務(wù)繼續(xù)下去。這也是業(yè)務(wù)分析師思考,以及他們?nèi)绾味x和獲取過程指標(biāo)的方法。這個(gè)用戶視角對于業(yè)務(wù)非常重要,因?yàn)樗苯雨P(guān)聯(lián)創(chuàng)造價(jià)值的工作流活動。業(yè)務(wù)分析師從不根據(jù)系統(tǒng)邊界、執(zhí)行、消息或業(yè)務(wù)對象進(jìn)行思考(開發(fā)人員是)。業(yè)務(wù)分析師所理解的系統(tǒng)至多就是一個(gè)等價(jià)于紙制格式電子版本的屏幕(閱讀或輸入信息)。

謬誤 2:業(yè)務(wù)用戶可以很容易的學(xué)會BPMN并使用全部特性。

BPMN是一份超過300頁的規(guī)范。即使你的若干業(yè)務(wù)分析師決心去掌握所有這些概念,它也是難以思考的。Michael zur Muehlen對BPMN中最常用的結(jié)構(gòu)進(jìn)行了一次調(diào)查,他的結(jié)論是日常使用的大約是25個(gè)結(jié)構(gòu)。我個(gè)人就為業(yè)務(wù)分析師寫過一份教程,它基于10個(gè)關(guān)鍵概念,同時(shí)附有相應(yīng)的BPMN。說服與我一起工作的精益六西格瑪(Lean Six Sigma)黑帶接受BPMN不是件易事。

Bruce Silver根據(jù)他的經(jīng)驗(yàn)(因?yàn)樗踢^BPMN課程)進(jìn)行了評論:

BPMN有大量的只是用于產(chǎn)生BPEL的屬性,這些一般都可以被忽略。

謬誤 3:業(yè)務(wù)分析師應(yīng)該能從過程模型創(chuàng)建可執(zhí)行的解決方案。

我并不是說BPMS廠商毫無誠意地試圖向你推銷一個(gè)說得比唱得好聽的BPMS。BPM的出發(fā)點(diǎn)是好的:更好地靠齊業(yè)務(wù)/IT、更快的開發(fā)周期……其中蘊(yùn)含的思想是:業(yè)務(wù)的確可以產(chǎn)生一個(gè)能轉(zhuǎn)換成可執(zhí)行代碼的模型。這本無可厚非,它和一些CASE工具、MDA、MDD、DSL……處于同一戰(zhàn)線上。這個(gè)愿景道出了我們最想實(shí)現(xiàn)的夢想:快、易、省。每次我聽到廠商在這個(gè)話題上大噴口水之際,我就會想到John Lennon的那首Imagine(即I want to live in this world, but it is not going to happen in my lifetime)。廠商覺得基于一個(gè)堅(jiān)實(shí)的想法有一個(gè)真實(shí)(并且巨大)的市場。當(dāng)你將之與來自風(fēng)險(xiǎn)投資幾乎無限的資金量結(jié)合起來的時(shí)候,那樣,你就得到了我們目前的情形。在交付那個(gè)愿景的片斷上,一些廠商要比其它的好一些,但是我們不得不承認(rèn)這還不是愿景。沒有人可以大聲說他們已經(jīng)提供了一個(gè)通用的引擎,業(yè)務(wù)分析師可以用來(甚至通過IT的最小干預(yù))從過程模型創(chuàng)建一個(gè)解決方案。 大項(xiàng)目失敗,BPMS使用的邊緣化,給組織帶來極少的益處。

我經(jīng)常告訴那些想讓他們的業(yè)務(wù)用戶“打造”解決方案的人們的一個(gè)笑話是:好消息是你剛剛給你的組織增加了2000名開發(fā)人員,而壞消息是你只是增加了2000名開發(fā)人員。你想讓你的用戶不用構(gòu)建或者甚至客戶化解決方案,就能個(gè)性化它們。注意,在一些好的約束條件下,讓業(yè)務(wù)用戶自定義一些業(yè)務(wù)邏輯(如規(guī)則)是可行的。

謬誤 4:如果我們增加了一個(gè)可以從業(yè)務(wù)分析師的輸入直接創(chuàng)建解決方案的魔力BPMS,我們就不需要開發(fā)任何與現(xiàn)有系統(tǒng)的集成,無需改變現(xiàn)有系統(tǒng)的記錄,也不用進(jìn)行任何QA工作。

這樣說吧,我期望到現(xiàn)在為止所有人都同意:至少在下個(gè)10年,我們不會在市場上看到這樣一個(gè)魔力BPMS。而且廠商的確完全放棄了將開發(fā)人員排除在外的做法。但是,Bruce寫道:

通過完全忽略BPEL,一些更小的公司開始示范了BPM購買者和行業(yè)分析師的成功做法。像Lombardi、Appian和Savvion這樣的廠商,把精力放在以人為中心的過程而不是集成。這樣導(dǎo)致了一種新風(fēng)格的BPMS,其中可執(zhí)行的設(shè)計(jì)直接建立在過程模型之上,以BPMN活動的實(shí)現(xiàn)的屬性的形式。

這種工具本身鼓勵(lì)整個(gè)實(shí)現(xiàn)周期中業(yè)務(wù)-IT的協(xié)作。并且非常適合敏捷迭代方法論,這種方法顯著地縮短了從模型到已部署的解決方案的周期時(shí)間。

Marlon Dumas對Bruce的反應(yīng)和我的一致:

你不能僅僅因?yàn)閺膩頉]有業(yè)務(wù)分析師愿意書寫一些類似XPath表達(dá)式或其它表達(dá)式語言,就將開發(fā)人員排除在BPM生命周期之外。

和我前面所說的一樣,我會證明這些廠商的成功經(jīng)驗(yàn)是有限的。正如Bruce指出他們關(guān)注以人為中心的過程,在很大程度上,我同意它非常適合由這些廠商開發(fā)的業(yè)務(wù)過程引擎的集中化視圖,尤其是需要對現(xiàn)有系統(tǒng)集成和進(jìn)行有限的定制時(shí)。

謬誤 5:業(yè)務(wù)過程執(zhí)行必須是集中化的。

讓我們在這個(gè)謬誤上花點(diǎn)時(shí)間。Bruce解釋了他面臨的一個(gè)新問題:

事實(shí)上,如果[他的BPMN使用者]已經(jīng)做出了他們BPM運(yùn)行時(shí)的決策,那么它通常就是BPEL。它是一個(gè)標(biāo)準(zhǔn)、一個(gè)日用品,而且可以找到開源實(shí)現(xiàn)。它被IBM和 Oracle用在他們的BPM運(yùn)行時(shí)中。因此,在選擇BPEL時(shí)有強(qiáng)制性因素。但是BPMN和BPEL不是都在進(jìn)行標(biāo)準(zhǔn)化嗎?不,這當(dāng)然不合邏輯。

    在“雙向工程已死”營地(roundtripping-is-dead camp)待了大約一年之后,我現(xiàn)在發(fā)現(xiàn)自己不得不再次面臨這個(gè)問題。在我的BPMN培訓(xùn)中,例如,學(xué)生想要知道在他們的BPMN圖中使用什么策略或模式才能非常匹配他們期望的BPEL實(shí)現(xiàn)。這并不是我一開始期望去考慮的問題。

BPMN/BPEL雙向工程已經(jīng)成為這個(gè)行業(yè)的圣杯。這最初本是由BPMI.org提出的愿景,該組織締造了BPML和BPMN。這兒發(fā)生了什么?在一些公司給BPMN增加執(zhí)行語義的時(shí)候連一個(gè)中介編制語言都沒有,他們怎么可能為以人為中心的過程創(chuàng)建一個(gè)成功的市場?其他人認(rèn)為這個(gè)問題來自于我們沒有找到合適的協(xié)調(diào)語言這一事實(shí)。例如,Arzul Hasni認(rèn)為在雙向工程上GRAFCET會是比BPEL更好的候選。GRAFCET是工業(yè)自動機(jī)的專用編程語言(Arzul在他的帖子中給出了細(xì)節(jié))?;旧?,它非常接近BPEL。

Ouyiang、Dumas、van der Aalst和ter Hofstede在創(chuàng)建BPMN/BPEL映射上做了卓越的工作。對于那些像我一樣早就忘記了大學(xué)數(shù)學(xué)的人,我發(fā)布了BPMN和BPEL的UML圖,它們可能對于你理解兩個(gè)規(guī)范的語義(即,它們可以表達(dá)的事物)分歧有所幫助。來自這個(gè)研究組的結(jié)論非常的清楚:

未來工作的一個(gè)可能方法是擴(kuò)展提議的技術(shù),覆蓋BPMN模型更大的子集,如對相關(guān)的異常處理和其它高級結(jié)構(gòu)(如OR-joins)建模。不幸的是,BPMN的許多高級結(jié)構(gòu)并沒有細(xì)化,依舊處于由相關(guān)標(biāo)準(zhǔn)化團(tuán)體改進(jìn)的過程中。

集中化過程引擎的概念并不新鮮。這是自90年代早期以來該領(lǐng)域已取得成果的99.99%的幕后基礎(chǔ)。通過這個(gè)優(yōu)秀的介紹可以很好的理解對集中化架構(gòu)的關(guān)注,它由Fujitsu Computer Systems(該公司也在XPDL上投資,為BPMN創(chuàng)建一個(gè)可交換的格式)的研發(fā)副總裁Keith Swenson撰寫。

不幸的是,這種觀點(diǎn)是有缺陷的,我非常愿意花些時(shí)間解釋這一點(diǎn)。使用這種思考方式,我們完全忽略了業(yè)務(wù)過程本來的天性:通過轉(zhuǎn)換資源給組織增加價(jià)值。像Source-to-make、Quote-to-cash……這樣的過程都沿著工作流活動移動“東西”,這些活動最終(且有望)給轉(zhuǎn)換中或消費(fèi)中的資源增加價(jià)值。信息系統(tǒng)在此只是推進(jìn)、捕獲和報(bào)告這些資源和活動的狀態(tài)。是的,你可以攜帶任何一個(gè)描述物理概念的業(yè)務(wù)對象:購買訂單、發(fā)票、庫存項(xiàng)、員工、客戶……它們都有生命周期(可用狀態(tài)圖描述--參見圖2)。

我愿意舉一個(gè)工作申請業(yè)務(wù)過程(即Candidate-to-Employee過程)的例子,它抽取一個(gè)候選者的申請,并將它處理到候選者要么被雇用要么申請被拒絕的位置。

以下就是典型的工作申請信息模型。

圖1 工作申請數(shù)據(jù)模型

這個(gè)工作申請有一個(gè)生命周期(請記住工作申請的數(shù)據(jù)模型——內(nèi)容——獨(dú)立于它的生命周期,反之亦然):

工作申請生命周期本身獨(dú)立于任何Candidate-to-Employee業(yè)務(wù)過程。這是一塊很少變化的業(yè)務(wù)邏輯,即使與之交互的過程可能經(jīng)常變化。一家公司可能有幾個(gè)這樣的過程為這個(gè)相同的生命周期服務(wù):例如,一個(gè)用于副總裁職位,一個(gè)用于經(jīng)理,一個(gè)用于其它所有的員工。另一種情況可能是因?yàn)橐?guī)章制度,一些過程可能涉及額外的活動(檢查背景……)。這些過程變體是非常平常的。但是,在很大程度上一個(gè)工作申請就是一個(gè)工作申請,即使也存在一些工作生命周期變體,它們在很大程度上與它們的過程變體沒有瓜葛。

現(xiàn)在的問題是,你將如何動手實(shí)現(xiàn)這個(gè)工作申請生命周期組件?我要使用的方法是創(chuàng)建一個(gè)實(shí)現(xiàn)所有動作的服務(wù),這些動作將導(dǎo)致狀態(tài)轉(zhuǎn)換:

圖3 工作申請服務(wù)

所有這些服務(wù)操作將有效執(zhí)行一些會導(dǎo)致狀態(tài)轉(zhuǎn)換的業(yè)務(wù)邏輯。什么是實(shí)現(xiàn)這個(gè)服務(wù)的最好的語言?Java/C#?BPEL?GRAFCET?

我的偏好是如BPEL這樣的一門面向消息的編制語言,因?yàn)檫@些資源生命周期是長期運(yùn)行的(日、周、月、年)。為了說明這點(diǎn),讓我們舉一個(gè)客戶資源的例子:作為一個(gè)客戶,我這周剛剛?cè)∠艘粋€(gè)與信用卡公司12年的關(guān)系,(這使得我的客戶生命周期實(shí)例遷移到了它的最終態(tài))因?yàn)楸仨氈Ц额~外的費(fèi)用,我覺得違反了計(jì)費(fèi)過程……是的,過程確實(shí)麻煩,他們可以完全無需改變我所喜歡的賬單生命周期就能給他們的過程增加一個(gè)活動,但是他們沒有,相反他們選擇了最大化費(fèi)用。對于這種長期運(yùn)行的生命周期(不是過程),BPEL是一個(gè)理想的實(shí)現(xiàn)語言,因?yàn)樗斫庀ⅲń邮?、發(fā)送、調(diào)用)、關(guān)聯(lián)消息,它可以處理并行流程(是的,一個(gè)資源可以有組合狀態(tài))。此外,BPEL引擎被設(shè)計(jì)來自動處理過程實(shí)例狀態(tài)數(shù)據(jù)的持久化(dehydration/hydration),這個(gè)工作的麻煩相對少些。

我知道很多人會告訴我它是一個(gè)過程,但是它不是。它是一個(gè)實(shí)現(xiàn)了工作申請生命周期的服務(wù),它獨(dú)立于那些推進(jìn)工作申請狀態(tài)的過程和活動。一個(gè)過程是推進(jìn)它的狀態(tài)的活動的集合。資源生命周期和過程是解耦的,我認(rèn)為這是無庸置疑的,然而每個(gè)人還是試圖在沒有清晰的理解資源生命周期的前提下建模和實(shí)現(xiàn)過程,它們或多或少“內(nèi)建在”過程模型中。

因此,大多數(shù)人將BPEL引擎作為標(biāo)準(zhǔn)選擇是正確的……目前為止是這樣。注意,由于SCA,你鐘愛的編程語言可以很容易地被擴(kuò)展結(jié)合BPEL語義。過去,我喜歡BPEL-J over BPEL,但是現(xiàn)在如果你需要在傳統(tǒng)語言中表達(dá)一些業(yè)務(wù)邏輯,SCA使得在你鐘愛的語言中使用編制能力這一工作真的變得非常簡單(Java、C++、COBOL、PHP、ABAP……)。

資源生命周期和編制語言之間存在如此強(qiáng)的關(guān)系,以致于一些領(lǐng)先的編制引擎提供了一個(gè)狀態(tài)機(jī)范式作為創(chuàng)建你的編制定義的一種方法。IBM Process Server和微軟Workflow Foundation就是例子(如果我還忘了哪些產(chǎn)品,我要在此說聲抱歉。如果你知道的話,請告知我)。

請注意,到目前為止我一直在建議使用一個(gè)編制引擎去實(shí)現(xiàn)那些管理資源生命周期的服務(wù),我還沒有說到業(yè)務(wù)過程或業(yè)務(wù)過程引擎。

在了解生命周期和過程之間的關(guān)系之前,我們需要注意的是生命周期是一個(gè)非常直觀的概念。大多數(shù)業(yè)務(wù)分析師隨時(shí)可以輕易地描述這些生命周期(比方說使用UML符號)??梢赃@么說,不論他們是什么角色,組織中的任何人都可以理解這些生命周期。但是,我也要強(qiáng)調(diào)一下它的另一極端,幾乎沒有人有能力設(shè)計(jì)(使用BPMN進(jìn)行圖形化設(shè)計(jì))滿足涉及的所有資源生命周期的業(yè)務(wù)過程。假如你創(chuàng)建了這樣一個(gè)模型,我們就說你現(xiàn)在創(chuàng)建了一個(gè)過程的變種。你如何能保證資源生命周期不受影響?你需要進(jìn)行多少Q(mào)A工作來驗(yàn)證它?

過程和資源生命周期只能在過程實(shí)現(xiàn)時(shí)是一致的,而且可能要向過程“妥協(xié)”以確保它符合生命周期。這種活動只能由開發(fā)人員仔細(xì)地將業(yè)務(wù)分析師畫出的BPMN進(jìn)行映射,并重用那些管理他或她組織的核心資源生命周期的企業(yè)類服務(wù)來做到。

現(xiàn)在,讓我們看看業(yè)務(wù)分析師是怎樣使用BPMN創(chuàng)建一個(gè)工作申請業(yè)務(wù)過程定義的:

圖5 工作申請過程(藍(lán)組代表人工任務(wù)邊界)

首先,BPMN連表示“資源”的符號都沒有,更別提“生命周期”了。人們最多可以在過程的某一點(diǎn)(如上圖)使用期望的狀態(tài)對它的BPMN定義進(jìn)行注解。這非常好,BPMN就應(yīng)該是這樣。其次,業(yè)務(wù)分析師完全不關(guān)心工作申請會調(diào)用哪些操作來推進(jìn)它的狀態(tài)。它們屬于系統(tǒng)視角。期望業(yè)務(wù)分析師在他或她描述的用戶活動間加入“調(diào)用”活動簡直是癡人說夢。不幸的是,人們著手去建立的BPMN和BPEL之間的關(guān)系就是一個(gè)錯(cuò)誤的例子。他們最終在過程符號中加入了核心BPEL操作語義,發(fā)送、接收和調(diào)用。這完全是畫蛇添足,不應(yīng)該被使用,除非被接收或發(fā)送的消息是一個(gè)業(yè)務(wù)消息而不是一個(gè)被調(diào)用的操作(如一份工作申請到了一個(gè)招募者的桌上)。

怎樣實(shí)現(xiàn)業(yè)務(wù)過程?一個(gè)業(yè)務(wù)過程執(zhí)行環(huán)境是一個(gè)彼此(非集中編制的服務(wù)集合)交互的服務(wù)的裝配(圖6)。它描述了實(shí)現(xiàn)資源生命周期的編制,以及人工任務(wù)執(zhí)行、事件和推進(jìn)過程的簡單服務(wù)調(diào)用的交互。

好消息是我們完全擁有了實(shí)現(xiàn)這一愿景的必需技術(shù),包括裝配技術(shù):服務(wù)組件架構(gòu)。你在圖中看到的一切可以結(jié)合SCA 1.0、BPEL 2.0、Web Services(XSD和WSDL 1.1——因?yàn)锽PEL 2.0)、BPEL4People 1.0 and Human Tasks 1.0來完成。

Bruce先前宣稱:

使用BPEL你沒有忽略你不支持的元素的自由。BPEL就是BPEL,你必須支持規(guī)范中的一切。剩余的被稱為私有擴(kuò)展。它們只存在于它們自己的名字空間,BPEL 1.1的一個(gè)有根據(jù)的批評就是一個(gè)真正的過程需要太多的元素。BPEL 2.0要好一些,但是人工任務(wù)、子過程和其他的基本的東西仍需要2.0中的擴(kuò)展,如,近乎神話的BPEL4People。

在這個(gè)BPMS架構(gòu)藍(lán)圖中,他的言論不再有效。WS-HumanTask和BPEL4People屬于任務(wù)容器并且確實(shí)與BPEL本身隔離開?,F(xiàn)在,你可以爭論BPEL是否需要“子過程”,但是我會說作為一門資源生命周期服務(wù)的實(shí)現(xiàn)語言,它并不迫切:狀態(tài)機(jī)元素極少可被重用,它們完全屬于它們的資源。

在這一點(diǎn)上——不幸的是——微軟并沒有參與SCA或BPEL4People,因此你不能將Workflow Foundation作為BPEL引擎的替代品,即使它能很好的完成工作。但是,你可以將WCF當(dāng)作服務(wù)容器實(shí)現(xiàn)服務(wù),你可以從SCA和你喜愛的BPEL引擎中調(diào)用這些服務(wù)。微軟本身并沒有裝配機(jī)制,因此你甚至不能在.Net中實(shí)現(xiàn)這個(gè)架構(gòu)藍(lán)圖。在開源方面,你可以找到大多數(shù)組件(SCA、BPEL和服務(wù)容器),但是BPEL4People容器除外。這并不要緊,基本的人工任務(wù)容器并不是太難構(gòu)建(但是還沒到BPEL4People和WS-HumanTask級別)。

為了理解開發(fā)人員在這個(gè)新架構(gòu)中的角色,讓我們仔細(xì)看看過程模型的“面試安排(Schedule Interview)”活動(圖5)。如你所見,這個(gè)活動在過程模型中被進(jìn)行特別對待(這是有意義的,這是因?yàn)?,如果工作申請系統(tǒng)宕機(jī)了,用戶就不得不這么做),但是作為優(yōu)化,它由業(yè)務(wù)來決定,例如,任務(wù)安排在Exchange Server上自動進(jìn)行。工作申請應(yīng)用生命周期提供了在候選人的申請被保留后安排面試的鉤子(即,必需品)。記住工作申請服務(wù)并不知道這是如何實(shí)現(xiàn)的。它是人工任務(wù)也沒有關(guān)系。在這一點(diǎn)上我認(rèn)為,自動解決這種設(shè)計(jì)決策完全是不可能的。這就是過程模型必須完全和任何執(zhí)行語義分離的原因。另一個(gè)不會影響過程定義的設(shè)計(jì)決策是這樣一個(gè)事實(shí):候選人申請能發(fā)生在一個(gè)不同的人工任務(wù)容器。我們能很好地將這個(gè)過程和發(fā)生在一個(gè)流行的求職站點(diǎn)的候選人申請“裝配”在一起。一旦申請被批準(zhǔn)面試,一個(gè)活動將給候選人發(fā)送一封郵件,告訴他或她下一步過程任務(wù)(復(fù)查錄用通知,輸入員工信息)。我打賭你現(xiàn)有的BPMS系統(tǒng)做不了(容易地)這件事。

作為一個(gè)附注,你現(xiàn)在可以看到任務(wù)引擎并不是一個(gè)業(yè)務(wù)過程引擎真正的子組件。當(dāng)然,當(dāng)今的BPMS系統(tǒng)就是這么設(shè)計(jì)的,但是事實(shí)上它確實(shí)不是,它是架構(gòu)的獨(dú)立組件,管理人工任務(wù)(圖6)。這些人工任務(wù)本質(zhì)上總是關(guān)聯(lián)一個(gè)或更多的業(yè)務(wù)過程,但是它們有它們自己的生命周期,而且直接和資源生命周期服務(wù)交互。正如Dominique Vauquier[1]在他文中所說的:“人工任務(wù)嫁接了資源生命周期”。此外,我們在前一段落看到,為了使“業(yè)務(wù)過程”能和幾個(gè)任務(wù)容器進(jìn)行交互,它至關(guān)重要。

在此,我并不想描述規(guī)則或主數(shù)據(jù)管理的角色(對不住了,James),但是它們的確扮演了關(guān)鍵角色并且需要特殊的服務(wù)容器,這就是眾所周知的BRMS(圖6)。Michael zur Muehlen或Mark Proctor問的問題就變得完全不相關(guān)了,因?yàn)镾CA使這變得不相關(guān)(從運(yùn)行時(shí)的角度)。SCA會讓你選擇決策服務(wù)的最佳調(diào)用機(jī)制(技術(shù)上可行的話,它可以和你的BPEL引擎一起運(yùn)行在過程中)。SCA很大程度解耦了這個(gè)架構(gòu)的元素,這使得它們可以在不同的過程中被重用,同時(shí)為每個(gè)過程選擇可能的最佳運(yùn)行時(shí)配置。

我也不會談到B2B的角色,在我最初的兩篇文章中,關(guān)于它們我說了很多。通過支持定義裝配內(nèi)的任意邊界,這個(gè)架構(gòu)藍(lán)圖支持B2B。例如,我能“裝配購買訂單生命周期的兩個(gè)視角(買者和賣者)”。這是一個(gè)巨大的進(jìn)步。傳統(tǒng)的“集中化”執(zhí)行模型在B2B邊界強(qiáng)加了一個(gè)人工的斷層,被迫使用兩個(gè)不同的執(zhí)行模型:在每一端的一個(gè)集中化編制,以及中間的一個(gè)裝配。在某些方面,我的提議完全是基于OASIS ebXML Business Process最初的B2B過程定義,但是應(yīng)用在了資源級別,而不僅僅是業(yè)務(wù)伙伴級別。這就是執(zhí)行模型在組織內(nèi)外都連續(xù)的原因,因?yàn)樗退臉I(yè)務(wù)伙伴交互。

謬誤 6:業(yè)務(wù)過程執(zhí)行語義可以簡單地從現(xiàn)有編程概念中派生出來。

我在“執(zhí)行”標(biāo)準(zhǔn)工作組(如BPML、BPEL、WS-CDL)中碰到的每個(gè)人(包括我在內(nèi))幾乎都不是從業(yè)者。他們是開發(fā)人員和架構(gòu)師。他們經(jīng)常關(guān)注復(fù)雜的數(shù)學(xué)理論(如Pi-Calculus),從來不去驗(yàn)證這些理論的語義是否真的足夠支撐一個(gè)業(yè)務(wù)過程執(zhí)行。一般來說,這些技術(shù)提交者會關(guān)注3~5個(gè)用例來書寫他們的需求。這些用例通常比較簡單,很少反映“現(xiàn)實(shí)世界”業(yè)務(wù)過程的復(fù)雜性。

業(yè)務(wù)過程執(zhí)行語義很難概念化。這個(gè)過程是實(shí)際上是如此的困難,以致在我們的解決方案中絕大多數(shù)的可執(zhí)行過程依舊是痛苦的硬編碼,一次一行。如果有更好的方法,我確定它能很快被每個(gè)人接受。我被推薦去閱讀“Java開發(fā)者為什么憎恨BPM”的討論。沒有一個(gè)評論抱怨抽象的有效性。即使是代碼大仙(code Kahuna),如JBoss的首席架構(gòu)師,Bill Burke(在他加入JBoss之前,我和他有過短暫的共事,當(dāng)時(shí)我們一起在做一個(gè)人工任務(wù)容器)如此評論:

我認(rèn)為BPM也一樣。只不過是編寫XML腳本,開發(fā)人員并不把它放在眼內(nèi)。直到我確實(shí)開始深入BPM框架……我并不認(rèn)為必須提供這些增值框架。當(dāng)我開始把它們當(dāng)作一個(gè)可靠的和容錯(cuò)的狀態(tài)機(jī)思考的時(shí)候,我開始真正意識到BPM框架的潛力。然后,當(dāng)你結(jié)合你的過程和事務(wù)管理與補(bǔ)償使用時(shí),你就得到了一個(gè)真的好的抽象,這在你開發(fā)你的應(yīng)用時(shí)可以派上用場。

根據(jù)我在前一節(jié)的解釋,他和其他人言論的方向是正確的。開發(fā)人員現(xiàn)在看到了一遍又一遍不得不編寫狀態(tài)機(jī)的困難,以及一個(gè)通用的引擎可以減輕他們的工作(大多數(shù)情況下如此)。

謬誤 7:Bruce Silver這樣總結(jié)他的帖子:“一個(gè)協(xié)作實(shí)現(xiàn)范式,其中可執(zhí)行設(shè)計(jì)位于BPMN模型之上的層級,這是正確的道路?!?/STRONG>

Bruce認(rèn)為業(yè)務(wù)過程模型實(shí)現(xiàn)應(yīng)該從以BPMN表示的業(yè)務(wù)過程模型中派生,然后增加注解(和開發(fā)人員協(xié)作)得到一個(gè)可執(zhí)行的過程。

不幸的是,這個(gè)愿景沒有考慮業(yè)務(wù)過程(作為推進(jìn)資源狀態(tài)的活動的工作流)的實(shí)際情況,我希望我能使你相信,這個(gè)言論即使在概念上經(jīng)過有效地努力,也是大錯(cuò)特錯(cuò),因?yàn)槲覀儾荒軐⒐ぷ髁骰顒雍唾Y源生命周期建模在一起(至少以我現(xiàn)階段的知識)。我可以預(yù)言,在很多時(shí)候,開發(fā)人員會將業(yè)務(wù)分析師完成的過程定義翻譯為結(jié)合了人工活動、資源生命周期服務(wù)和其他服務(wù)(包括決策和MDM服務(wù))的東西。

現(xiàn)在,這個(gè)新的架構(gòu)藍(lán)圖并不意味著你在你喜愛的BPM上所做的投資就沒用了。但是,你需要增加組合服務(wù)容器(如一個(gè)BPEL容器)和一個(gè)裝配容器(SCA),以及將你的BPMS主要作為人工任務(wù)容器使用(不管怎樣,在很大程度上,它們實(shí)際上就是如此)。一個(gè)人工任務(wù)容器是架構(gòu)高貴重要的組件。當(dāng)今的BPMS的任務(wù)容器非常復(fù)雜,而且很難自己構(gòu)建,因此花點(diǎn)錢是值得的。我根本沒有削弱這個(gè)容器的角色。事實(shí)上,我期望2年內(nèi)所有的BPMS廠商會采納本文中展示的愿景,并將它們的套件改在基于這個(gè)藍(lán)圖的SCA裝配和BPEL容器內(nèi)工作。

我還要聲明一點(diǎn),在這個(gè)實(shí)現(xiàn)結(jié)束的時(shí)候,有可能自動重新構(gòu)造一個(gè)操作過程的“現(xiàn)狀”視圖。我沒有證明這一點(diǎn),這可以成為一個(gè)研究課題。

結(jié)論

經(jīng)過這么多年搜尋BPM魔力彈,軟件行業(yè)正在碰壁。通過范式轉(zhuǎn)換和基于資源生命周期新的業(yè)務(wù)邏輯的分解方式,這堵墻很容易被拆除。如果我們還執(zhí)著于今天錯(cuò)誤的方向,依舊相信本文列出的7個(gè)謬誤,我們就會遇到因缺少ROI而拋棄所有這些產(chǎn)品和標(biāo)準(zhǔn),并回到手工編寫任何東西的風(fēng)險(xiǎn)。但是,如果我們選擇今天完全相同的技術(shù),以另一種方式使用它,我們就能交付對業(yè)務(wù)和IT都引人注目的愿景。就其本身而論,我不會將之稱為BPM,它比BPM要大。我更愿意稱之為“組合應(yīng)用”或更貼切的“組合解決方案”。組合解決方案愿景直接說出了業(yè)務(wù)想要從IT得到東西:

  1. 通過盡可能小的項(xiàng)目快速構(gòu)建解決方案(依賴更多的迭代)

  2. 快速改變解決方案,支持一個(gè)迭代、精益六西格瑪方法

  3. 在當(dāng)前時(shí)間能可視化操作中的業(yè)務(wù)設(shè)計(jì),沒有復(fù)雜的“現(xiàn)狀”項(xiàng)目

  4. 無需復(fù)雜的度量項(xiàng)目,就能從當(dāng)前業(yè)務(wù)決策中獲得運(yùn)營智能。

我要聲明,“能夠構(gòu)建/通過創(chuàng)建直接改變解決方案/改變業(yè)務(wù)決策”(不論它以怎樣令人稱心如意方式的出現(xiàn))背離了這四個(gè)需求。原因是它導(dǎo)致以過于簡單、僵硬的任務(wù)為中心的應(yīng)用模型(從今天的BPMS中就可看到)。這種應(yīng)用模型不能滿足業(yè)務(wù)的需要,一般會導(dǎo)致項(xiàng)目成本的增加。因?yàn)楫?dāng)真正的解決方案需要被開發(fā)時(shí),圍繞BPMS應(yīng)用模型,它們需要大量的客戶化開發(fā)。為了使問題復(fù)雜化,這些套件,正如“Java開發(fā)者為什么憎恨BPM”討論中指出的,還沒有為客戶化代碼和適合大項(xiàng)目交付一個(gè)健壯的開發(fā)環(huán)境。

我聲明這個(gè)愿景的進(jìn)一步就是組合軟件(基于兩個(gè)組合模型:裝配(SCA)和編制(BPEL)——是的,編排正在走下坡路——當(dāng)然——但是我會在另一篇文章中解釋這個(gè))。開發(fā)這個(gè)藍(lán)圖的技術(shù)是現(xiàn)成的。此外,BPEL和BPMN,如今天所定義的,有效。如果還有什么要對BPMN進(jìn)行修改的,那就是應(yīng)該去除所有的執(zhí)行語義,BPMN應(yīng)該被設(shè)計(jì)為讓業(yè)務(wù)分析師能自由的表達(dá)。如果你想要了解關(guān)于使用這些標(biāo)準(zhǔn)和這個(gè)架構(gòu)藍(lán)圖如何構(gòu)造組合應(yīng)用一些更多的細(xì)節(jié),請參考這本發(fā)表在InfoQ上的迷你書。

本文中描述的這個(gè)組合解決方案平臺架構(gòu),同樣提供了一個(gè)SOA和BPM間清晰的接口。它使SOA有機(jī)會構(gòu)建真正可重用的服務(wù):資源生命周期服務(wù)可以跨過程域和過程變量被重用。因?yàn)檫@些資源生命周期服務(wù)可以跨過程重用,這也意味著實(shí)現(xiàn)任何給定過程變得便宜、快速和容易。資源生命周期服務(wù)的實(shí)現(xiàn)是過程內(nèi)的“代碼”。認(rèn)為一個(gè)業(yè)務(wù)分析師(或其他什么人)在過程定義中擁有編寫和重新編寫這些圖形表示的生命周期的知識完全是將BPM推向錯(cuò)誤的方向。

這個(gè)藍(lán)圖,作為一個(gè)組合解決方案平臺,已經(jīng)有一個(gè)可以支持它的企業(yè)方法:Praxeme。Praxeme協(xié)會正將他們的文章翻譯為英文,并在這個(gè)目標(biāo)上取得了很大的進(jìn)展。

現(xiàn)在,我要分享一些來自Bruce和Marlon關(guān)于在當(dāng)前技術(shù)(SCA、BPEL)中和開發(fā)人員有關(guān)的想法,這也是我開始一個(gè)名字叫wsper項(xiàng)目的原因。這個(gè)項(xiàng)目提供了一個(gè)抽象編程環(huán)境,它能簡化開發(fā)人員和架構(gòu)師在生命周期實(shí)現(xiàn)和過程裝配中的工作。它同樣有助于構(gòu)造來自異構(gòu)組件的組合解決方案平臺,因?yàn)樗綦x了來自這些組件(和它們將來演變的)的業(yè)務(wù)邏輯。它隔離了來自標(biāo)準(zhǔn)演變的業(yè)務(wù)邏輯。

我非常感謝Sandy Kemsley提供了如此多有用的鏈接和評論。

[1]這篇文章是對Dominique Vauquier的文章(“業(yè)務(wù)過程改進(jìn)的6個(gè)謬誤”)進(jìn)行了補(bǔ)充。此處,我們關(guān)注于業(yè)務(wù)過程建模。Dominique的文章探索了如何關(guān)聯(lián)業(yè)務(wù)過程建模和業(yè)務(wù)過程改進(jìn)。我將Dominique的文章從法文翻譯了過來(它將于2008年1月在BPTrends.com發(fā)表)。如果你能閱讀法文,這篇文章可以在Praxeme企業(yè)方法的Guide of the Pragmatic Aspect的39頁找到。

(itpub)  

發(fā)布:2007-04-22 09:21    編輯:泛普軟件 · xiaona    [打印此頁]    [關(guān)閉]
相關(guān)文章:
西安OA系統(tǒng)
聯(lián)系方式

成都公司:成都市成華區(qū)建設(shè)南路160號1層9號

重慶公司:重慶市江北區(qū)紅旗河溝華創(chuàng)商務(wù)大廈18樓

咨詢:400-8352-114

加微信,免費(fèi)獲取試用系統(tǒng)

QQ在線咨詢