2002 年 11 月 01 日
用于 Java 的 Web 服務(wù)中的業(yè)務(wù)流程(Business Processes in Web Services for Java,BPWS4J)軟件包提供了一個運行時引擎實現(xiàn),該實現(xiàn)支持 Web 服務(wù)的業(yè)務(wù)流程執(zhí)行語言(Business Process Execution Language for Web Services,BPEL4WS)規(guī)范,這個規(guī)范定義了 Web 服務(wù)的工作流和業(yè)務(wù)流程。這個軟件包于 8 月份在 alphaWorks 上發(fā)行,它提供了一個運行時引擎以及一個用于創(chuàng)建流的工作流編輯工具。本文著重討論一個簡單的回送流程的實現(xiàn)練習(xí),在該流程流中,一個流程接收消息,另一方將一份完全相同的消息副本反射回到發(fā)送方。 在本文中,我將假設(shè)您熟悉 Eclipse 項目并且熟悉基本 Eclipse 環(huán)境的使用。本文解釋了用于 Eclipse 的 BPWS4J 功能。 把粗略的概念流程轉(zhuǎn)變成其有效的 BPEL4WS 表達式,有兩種顯而易見的方式:
這里,很重要的一點是,完整的、可部署的 BPWS4J 運行時單元由以下部分組成:
在上述這些部分當(dāng)中,BPWS4J 編輯器允許您創(chuàng)建描述流程的 BPEL4WS 文件。要編輯部署 BPEL4WS 流程所需的 WSDL 文件,您可以使用其他工具。不過,這些工具將不支持 BPEL4WS 規(guī)范中已經(jīng)提議的非標(biāo)準(zhǔn)的 WSDL 擴展(如服務(wù)鏈接、相關(guān)性屬性等)。您將不得不手工添加那些定義;BPWS4J 中的樣本應(yīng)該足以指導(dǎo)您完成這一任務(wù)。 我將闡述 BPWS4J 編輯器是什么樣子,還將闡述在開發(fā)回送流程示例的過程中如何使用它。 要使用 BPWS4J 編輯器,您將既需要來自 alphaWorks 的 BPWS4J 編輯器軟件包,也需要來自 Eclipse.org Web 站點的 Eclipse 軟件包。如果您沒有 Eclipse 2.0,那么就應(yīng)該從 Eclipse 站點(請參閱 參考資料)下載它,然后安裝該軟件。 一旦您已經(jīng)從 alphaWorks(請參閱 參考資料)下載了 BPWS4J 編輯器軟件包 ― 一個與 BPWS4J 運行時引擎分開的軟件包,請將其內(nèi)容解壓縮(unzip)到 Eclipse 安裝目錄下。解壓縮之后,您應(yīng)該驗證您有了一個名為 eclipse/plugins/com.ibm.cs.bpws.tools.bpwsbuilder的目錄。然后,您應(yīng)該啟動 Eclipse 環(huán)境。
對于這個項目,您通過在 Eclipse 工作區(qū)中創(chuàng)建一個新項目著手。在 File菜單中單擊 New,選擇 BPWS作為文件類型。如果您在可用文件類型列表中沒有看到該類型,那么您可能不得不單擊 Other文件類型來查找它。一旦您這樣做了,您應(yīng)該參看 圖 1a中的抓屏來確定項目的文件名和位置;圖 1a 中的抓屏還提供了流程名稱(process name)的缺省值和名稱空間(namespace)的缺省值。這一屏?xí)D(zhuǎn)到如 圖 1b所示的下一個屏幕,它讓您設(shè)置流程的頂層屬性,如 Abstract process、 Suppress join faults、 Enable instance compensation和 Serializable container access;稍后我將解釋這些屬性。請確保您在選中了 Open this file for editing when done選項之后才單擊 Finish。這應(yīng)該會在您定義的位置中創(chuàng)建該文件并在 BPWS4J 編輯器中打開它。 圖 1a. 創(chuàng)建一個新的 BPWS 項目 ![]() 圖 1b. 創(chuàng)建一個新的 BPWS 項目 II ![]() 接下來,您需要確保 Eclipse 的 BPWS 透視圖是打開的;這個透視圖將創(chuàng)建視圖,這個視圖和編輯器區(qū)域一起有助于您定義流程。在 Window菜單中選擇 Open Perspective,然后選擇 BPWS 透視圖;和前面一樣,您可能不得不單擊 Other,從而確定 BPWS 是其中一個選項。這應(yīng)該會在 Eclipse 中打開透視圖。BPWS 透視圖由 Editor、Navigator 視圖、Outline 視圖、Properties 視圖和 Tasks 視圖組成。接下來,我將對其中的每一個進行更詳細的研究。
BPWS4J 編輯器是一個多頁工具,其中一個頁名為 Source 編輯器,它使您能夠?qū)φ诙x的業(yè)務(wù)流程的原始 XML 進行編輯;另一個頁名為 Process 編輯器,它是所涉及的流程的樹視圖。在新創(chuàng)建的文件中顯示的是缺省流程編輯器樹視圖。單擊位于編輯區(qū)域左下角的 Source選項卡,以切換到 Source 編輯器中的 XML 代碼視圖。處于 Source 編輯器中之后,您同樣可以單擊 Process選項卡以返回到樹視圖。 Process 編輯器(請參見 圖 2)是流程的樹視圖,所有的活動和能夠包含活動的 BPEL4WS 元素在樹中都以節(jié)點的形式被顯示出來。例如, 對于新創(chuàng)建的流程,樹將只有一個節(jié)點,即 圖 2. Process 視圖 ![]() Source 編輯器(請參見 圖 3)是一個簡單的文本編輯工具,它使您能夠編輯原始 XML。除非您熟諳 BPEL4WS 語法,否則手工編輯 XML 既易于出錯也難以進行,所以,我建議您大多數(shù)情況下還是使用 Process 編輯器,當(dāng)您需要填寫詳細的信息時,請切換到 Source 編輯器,這是因為在 Process 編輯器的屬性框中操作很麻煩。 圖 3. Source 視圖 ![]() 當(dāng)您編輯信息時,Source 編輯器和 Process 編輯器是雙向同步的。要對此進行測試,請試著在 Source 編輯器中更改流程的名稱,然后單擊 Process 編輯器檢查它。您將看到樹中的名稱跟著改變了,當(dāng)您單擊流程節(jié)點時,已更新的名稱也反映在 Property 視圖中?,F(xiàn)在,請使用 Property 視圖修改流程的 每當(dāng)在 Source 編輯器中進行編輯時,您都要格外小心,確保沒有引入任何語法錯誤。引入語法錯誤將會阻止有效的 BPWS 文件,還將 阻止您切換到 Process 編輯器。要進行演示,請刪除原始 XML 中的
現(xiàn)在,您可以開始構(gòu)建回送流程了。該流程定義的根節(jié)點是
現(xiàn)在,您可以繼續(xù)前進,向 process 添加 對于某種特定情形,并不是所有操作都有意義;例如,
BPWS4J 編輯器中的 Outline 視圖(請參見 圖 4)用于顯示流程樹中選擇的節(jié)點的結(jié)構(gòu)。這與 Eclipse 插件中的標(biāo)準(zhǔn) Outline 視圖形成了對比,后者中的 Outline 要求編輯器顯示所有輸入。將詳細信息轉(zhuǎn)到 Outline 視圖中將使主 Process 樹視圖的條理更清晰些,這樣設(shè)計師就可以將注意力集中在宏觀層面(活動以及它們彼此之間的結(jié)構(gòu)關(guān)系)上而不用擔(dān)心細節(jié)問題。 圖 4. Outline 視圖 ![]() 針對回送流程,您有一個伙伴:發(fā)出回送消息的客戶機。由于這條消息一到達就要被存放在容器中,所以我們的流程還需要定義一個容器。因為這條消息保持不變且流程中不涉及其他消息,所以一個容器就足夠了。容器和伙伴都通過 outline 視圖在
您已經(jīng)看到了如何使用主菜單和工具欄創(chuàng)建活動及其他結(jié)構(gòu)元素,還看到了如何使用 Outline 視圖定義額外的元素。剩下的就是針對每個元素填寫其各個屬性的詳細信息。您可以使用 Property 視圖(請參見 圖 5)來完成這一任務(wù)。 圖 5. Property 視圖 ![]() 當(dāng)您在 Process 樹中或 Outline 視圖上選擇一個節(jié)點時,Property 視圖就被更新以反映該特定元素的屬性。這個視圖列出了屬性名稱和值,并且允許您編輯這些值。在有些情況下,視圖將向您提供可能的值的下拉列表;對于任何有可能減少由輸入過失引入的錯誤的情況,視圖都將向您提供這種下拉列表。當(dāng)無法提供這種下拉列表時,您將被允許直接輸入文本。 現(xiàn)在,請選擇新定義的容器;該容器具有下面兩個屬性:容器名稱和消息類型。您可以隨意填寫這些內(nèi)容。請注意,消息類型必須是一個全限定名,位于窗口底部的 BPWS4J 編輯器的狀態(tài)欄告訴您所要求的全限定名的格式;對于不符合所要求的格式的輸入,消息類型將不會接受。這個消息類型必須與流程 WSDL 中所定義的消息類型一致。最后,請在流程節(jié)點的 Outline 視圖中填寫伙伴元素的屬性,同樣要確保此處的信息與流程 WSDL 一致。
BPWS4J 編輯器最有用的功能之一就是,它能夠在創(chuàng)建流程的過程中檢查流程的有效性。這是通過在 Task 視圖(請參見 圖 6)中顯示錯誤列表實現(xiàn)的。至此,在回送流程示例中,您已經(jīng)創(chuàng)建了必需的活動、流程的容器并且標(biāo)識了所涉及的伙伴。不過,您還沒有填寫 圖 6. Task 視圖 ![]() 盡管 Task 視圖能夠捕獲許多常見錯誤,但 BPWS4J 編輯器是獨立運行的,它并不知道流程 WSDL 文件的位置。因此,無法驗證對 WSDL 信息(諸如消息、操作、端口類型、相關(guān)性屬性或服務(wù)鏈接類型)的引用的有效性。
通過返回到流程編輯器并每次處理一個未完成的任務(wù),您就可以完成流程定義。當(dāng)您選擇任務(wù)時,存在錯誤的節(jié)點將被突出顯示。您可以單擊該節(jié)點來查看它的屬性,并更新屬性數(shù)據(jù)來消除錯誤。一旦您完成了 現(xiàn)在,您應(yīng)該擁有了一個可以部署和運行的、有效的流程 WSDL 文件。在將來的一篇文章中,我們將對此作進一步的討論。
|