Tom:過程虛擬機(Process Virtual Machine)是我們在jBPM探索過程中核心概念的最終產(chǎn)物。
jBPM一開始使用被稱為jPDL的單一過程語言,但是在成為JBoss一部分后不久,用戶就一直問我們是否也能支持BPEL。那時我意識到jPDL實現(xiàn)和BPEL有許多重疊的地方。自從那時起,我們就一直從過程語言特殊部分中抽取公共部分。
jBPM 3已經(jīng)有了能工作的全部概念,它能運行多種過程語言,如天生就支持jPDL和BPEL。但是缺點是它仍是一個大代碼庫,不是真正的模塊。因為BPM和工作流領域完全都是各自為政,多種過程語言的需要日益明顯。因此,我們需要一個更模塊化的方法。
那就是過程虛擬機出現(xiàn)的原因。它是一個用來構建和執(zhí)行過程圖的代碼庫。過程語言的本地實現(xiàn)可以構建于過程虛擬機之上。此外,它可以運行在任何Java環(huán)境之內(nèi),不論它是標準Java、企業(yè)Java,還是SEAM或Spring。
InfoQ:為什么這很重要?
Tom:一 方面,業(yè)務過程管理(BPM)和工作流領域完全都是各自為政。有很多針對特定用例和環(huán)境的不同類型的過程語言。這和領域特定語言(DSL)有些相似;不是 一門語言就可以把全部事情都搞定。目前,所有這些語言都有一套自己的單片式(monolithic)引擎,這并不實用,而且它們也很難包含到一個應用之 中。
過程虛擬機提供了一個簡單的統(tǒng)一結構來使這些過程語言運行在一個核心技術之上。
另一方面,Java領域也同樣是分裂的。與那些必須在一個單獨服務器上隔離運行的傳統(tǒng)過程引擎不同,過程虛擬機可以內(nèi)嵌到你的應用中運行,不管什么Java環(huán)境。這大大降低了使用過程技術的項目的門檻,因為過程持久化可以被透明地與應用持久化集成。
InfoQ:應用開發(fā)人員需要使用過程虛擬機本身工作嗎?

但是,應用開發(fā)人員了解過程虛擬機基本概念還是很重要的。就像開發(fā)人員為了使用關系數(shù)據(jù)庫而需了解表、列、主鍵和SQL查詢基本概念一樣,他們需要了解過程虛擬機概念,如過程定義、執(zhí)行異常和異步延拓(continuation)。
InfoQ:Bull現(xiàn)在已經(jīng)與JBoss合作來支持PVM概念——你們在和其他合作伙伴共事嗎?
InfoQ:到現(xiàn)在為止,有哪些主要挑戰(zhàn)是你們不得不克服的?
- 對實現(xiàn)的分析:這是當今單純的(pure-play)BPM套件的目標。從一個分析圖開始,然后將其轉(zhuǎn)換成可執(zhí)行的軟件。許多傳統(tǒng)廠商試圖用大量魔法掩蓋分析過程圖和可執(zhí)行軟件間的重大區(qū)別。
這暗示著:圖是負責需求的非技術人員和負責自動化的技術人員之間重要的溝通工具。但是大體上,沒有技術手段能夠從非技術人員的輸入產(chǎn)出可用于生產(chǎn)環(huán)境的軟件。
要 使分析人員和開發(fā)人員之間能夠協(xié)作,可執(zhí)行過程語言就必須足夠靈活完全匹配分析圖。像可自定義活動實現(xiàn)和事件監(jiān)聽器這樣的特性對于確保分析人員在圖變得可 執(zhí)行之后仍能認出它來說至關重要。jPDL非常適合這個用途。它還提供了一個與Java技術的清晰集成,一個開發(fā)人員喜歡的簡潔、易讀的XML語法。 XPDL也支持這個用例。XPDL的語法更加復雜和缺乏可讀性,但是它的移植性更好,因為更多的廠商正在采用這種標準,雖然緩慢但是穩(wěn)定。 - 異步Java架構:就使用異步架構來說,Java的確沒提供吸引眼球的解決方案。事實上,這是個大麻煩。
一 方面,企業(yè)平臺有用于異步消息的JMS和EJB定時器。但是,那些都非常的底層。你需要很多部署描述符來支持一個長期運行的過程,非常麻煩。而且接下來, 關于事物如何關聯(lián)的整體視圖完全不見了。通過jPDL,這個整體視圖清晰可見,而且熱部署就像做餅一樣容易。只需在一個圖形工具中重新配置圖中的變遷 (transition)并重新部署,而不是花上好幾個小時書寫麻煩的企業(yè)部署描述符。
另一方面,標準Java平臺完全不支持異步架構。jPDL和標準Java平臺結合得非常緊密,它利用了來自過程虛擬機的工作執(zhí)行器(job executor)來提供異步延拓(continuation)和定時器。
因此現(xiàn)在,由于有了基本的過程虛擬機基礎設施,一個單一jPDL過程就可捕獲人、Java代碼和其他事物的異步編制,并可使那個邏輯在標準和企業(yè)Java環(huán)境間可移植。 - 服務編制:對于服務編制來說,BPEL已經(jīng)廣泛被接受,并成為被支持的標準。它操作在企業(yè)服務總線(ESB)級別,因此它是一種集成技術。一個BPEL過程可以(過分簡化的)被認為是Web服務級別的腳本。WSDL服務可通過BPEL被描述成粗粒度的服務。
InfoQ:讀者可以在哪里找到關于PVM的更多信息?
Tom:首先,6月6號在都柏林會舉辦一個jBPM社區(qū)日的活動。這是一次jBPM核心開發(fā)人員、合作伙伴、客戶和其他只是想更多了解jBPM的人之間絕佳的溝通機會?;顒邮敲赓M的,在一個周五下午。欲知詳情,請查看jBPM社區(qū)日Wiki頁或發(fā)郵件至dublin@。
其次,對于那些缺乏耐心的讀者,這兒有一個已經(jīng)手把手地解釋如何使用它來構建活動和開始運行它的PVM手冊。
最后,這兒還有一篇InfoQ文章“過程組件模型:下一代工作流?”,它已于最近發(fā)布,給出了關于這一主題的更多背景資料。
查看英文原文:Tom Baeyens on the Process Virtual Machine
來自:http://www./cn/news/2008/05/processvirtualmachine