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

分享

業(yè)務(wù)流程: 學(xué)習(xí) BPEL4WS,第 4 部分用 BPWS4J 編輯器創(chuàng)建流程

 芳草小集 2006-03-24

2002 年 11 月 01 日

專欄圖標(biāo)BPWS4J 是 BPEL4WS 規(guī)范的一個(gè)實(shí)現(xiàn),它包括一個(gè)運(yùn)行時(shí)引擎以及一個(gè)用于創(chuàng)建 BPEL4WS 流程的編輯器(它是一個(gè) Eclipse 插件)。Nirmal 在本文中描述了創(chuàng)建 BPEL4WS 流程的設(shè)計(jì)方式,還描述了如何使用 BPWS4J 編輯器來(lái)創(chuàng)建、修改和驗(yàn)證這些流程。

用于 Java 的 Web 服務(wù)中的業(yè)務(wù)流程(Business Processes in Web Services for Java,BPWS4J)軟件包提供了一個(gè)運(yùn)行時(shí)引擎實(shí)現(xiàn),該實(shí)現(xiàn)支持 Web 服務(wù)的業(yè)務(wù)流程執(zhí)行語(yǔ)言(Business Process Execution Language for Web Services,BPEL4WS)規(guī)范,這個(gè)規(guī)范定義了 Web 服務(wù)的工作流和業(yè)務(wù)流程。這個(gè)軟件包于 8 月份在 alphaWorks 上發(fā)行,它提供了一個(gè)運(yùn)行時(shí)引擎以及一個(gè)用于創(chuàng)建流的工作流編輯工具。本文著重討論一個(gè)簡(jiǎn)單的回送流程的實(shí)現(xiàn)練習(xí),在該流程流中,一個(gè)流程接收消息,另一方將一份完全相同的消息副本反射回到發(fā)送方。

在本文中,我將假設(shè)您熟悉 Eclipse 項(xiàng)目并且熟悉基本 Eclipse 環(huán)境的使用。本文解釋了用于 Eclipse 的 BPWS4J 功能。

把粗略的概念流程轉(zhuǎn)變成其有效的 BPEL4WS 表達(dá)式,有兩種顯而易見的方式:

  • 自底向上(bottom-up)方式:采用這種方式,您從基本活動(dòng)入手,然后發(fā)展成宏觀層次(macro-level)的流程,在進(jìn)行過(guò)程中添加結(jié)構(gòu)、鏈接以及其他數(shù)據(jù)?;厮土鞒虒▋蓚€(gè)基本任務(wù) ― 通過(guò) receive 活動(dòng)接收一條消息以及通過(guò) reply 活動(dòng)向發(fā)送方作出應(yīng)答。您需要添加某種結(jié)構(gòu),因?yàn)槟厝灰髴?yīng)答跟在響應(yīng)后面 ― 它們要按順序執(zhí)行,否則對(duì)流程是沒什么意義的。這意味著您需要進(jìn)行排序,您可以使用 sequence 活動(dòng)實(shí)施排序。在自底向上方式中,您先通過(guò)創(chuàng)建基本活動(dòng)來(lái)定義流程,然后再將活動(dòng)添加到 sequence 中。BPWS 編輯器為此提供了某種支持,使您能夠用結(jié)構(gòu)化活動(dòng)包裝基本活動(dòng)。因此,例如,您可以創(chuàng)建 receive 活動(dòng),然后將它包裝在一個(gè) sequence 中。
  • 自頂向下(top-down)方式:另一種看待事物的方式是從外部入手,然后深入到基本任務(wù)。對(duì)于這個(gè)回送流程,您需要讓有些步驟按照一定的順序執(zhí)行,所以,您添加一個(gè) sequence 作為頂層活動(dòng),然后再將 receivereply 植入 sequence 。BPWS4J 編輯器同樣允許您采用這種方式。

 

這里,很重要的一點(diǎn)是,完整的、可部署的 BPWS4J 運(yùn)行時(shí)單元由以下部分組成:

  • 描述流程的 BPEL4WS 文件
  • 一個(gè) WSDL 文件,它描述了流程定義(被稱作 流程 WSDL)所引用的消息、操作、端口類型以及其他信息(服務(wù)鏈接類型、相關(guān)性屬性等)
  • 流程中包含的每個(gè)伙伴的 WSDL 定義,除非流程不使用伙伴所提供的任何 WSDL 操作

 

在上述這些部分當(dāng)中,BPWS4J 編輯器允許您創(chuàng)建描述流程的 BPEL4WS 文件。要編輯部署 BPEL4WS 流程所需的 WSDL 文件,您可以使用其他工具。不過(guò),這些工具將不支持 BPEL4WS 規(guī)范中已經(jīng)提議的非標(biāo)準(zhǔn)的 WSDL 擴(kuò)展(如服務(wù)鏈接、相關(guān)性屬性等)。您將不得不手工添加那些定義;BPWS4J 中的樣本應(yīng)該足以指導(dǎo)您完成這一任務(wù)。

我將闡述 BPWS4J 編輯器是什么樣子,還將闡述在開發(fā)回送流程示例的過(guò)程中如何使用它。

安裝 BPWS4J 編輯器

要使用 BPWS4J 編輯器,您將既需要來(lái)自 alphaWorks 的 BPWS4J 編輯器軟件包,也需要來(lái)自 Eclipse.org Web 站點(diǎn)的 Eclipse 軟件包。如果您沒有 Eclipse 2.0,那么就應(yīng)該從 Eclipse 站點(diǎn)(請(qǐng)參閱 參考資料)下載它,然后安裝該軟件。

一旦您已經(jīng)從 alphaWorks(請(qǐng)參閱 參考資料)下載了 BPWS4J 編輯器軟件包 ― 一個(gè)與 BPWS4J 運(yùn)行時(shí)引擎分開的軟件包,請(qǐng)將其內(nèi)容解壓縮(unzip)到 Eclipse 安裝目錄下。解壓縮之后,您應(yīng)該驗(yàn)證您有了一個(gè)名為 eclipse/plugins/com.ibm.cs.bpws.tools.bpwsbuilder的目錄。然后,您應(yīng)該啟動(dòng) Eclipse 環(huán)境。





回頁(yè)首


創(chuàng)建 BPWS 項(xiàng)目

對(duì)于這個(gè)項(xiàng)目,您通過(guò)在 Eclipse 工作區(qū)中創(chuàng)建一個(gè)新項(xiàng)目著手。在 File菜單中單擊 New,選擇 BPWS作為文件類型。如果您在可用文件類型列表中沒有看到該類型,那么您可能不得不單擊 Other文件類型來(lái)查找它。一旦您這樣做了,您應(yīng)該參看 圖 1a中的抓屏來(lái)確定項(xiàng)目的文件名和位置;圖 1a 中的抓屏還提供了流程名稱(process name)的缺省值和名稱空間(namespace)的缺省值。這一屏?xí)D(zhuǎn)到如 圖 1b所示的下一個(gè)屏幕,它讓您設(shè)置流程的頂層屬性,如 Abstract process、 Suppress join faults、 Enable instance compensationSerializable container access;稍后我將解釋這些屬性。請(qǐng)確保您在選中了 Open this file for editing when done選項(xiàng)之后才單擊 Finish。這應(yīng)該會(huì)在您定義的位置中創(chuàng)建該文件并在 BPWS4J 編輯器中打開它。


圖 1a. 創(chuàng)建一個(gè)新的 BPWS 項(xiàng)目
圖 1a. 創(chuàng)建一個(gè)新的 BPWS 項(xiàng)目

圖 1b. 創(chuàng)建一個(gè)新的 BPWS 項(xiàng)目 II
圖 1b. 創(chuàng)建一個(gè)新的 BPWS 項(xiàng)目 II

接下來(lái),您需要確保 Eclipse 的 BPWS 透視圖是打開的;這個(gè)透視圖將創(chuàng)建視圖,這個(gè)視圖和編輯器區(qū)域一起有助于您定義流程。在 Window菜單中選擇 Open Perspective,然后選擇 BPWS 透視圖;和前面一樣,您可能不得不單擊 Other,從而確定 BPWS 是其中一個(gè)選項(xiàng)。這應(yīng)該會(huì)在 Eclipse 中打開透視圖。BPWS 透視圖由 Editor、Navigator 視圖、Outline 視圖、Properties 視圖和 Tasks 視圖組成。接下來(lái),我將對(duì)其中的每一個(gè)進(jìn)行更詳細(xì)的研究。





回頁(yè)首


Process 編輯器和 Source 編輯器

BPWS4J 編輯器是一個(gè)多頁(yè)工具,其中一個(gè)頁(yè)名為 Source 編輯器,它使您能夠?qū)φ诙x的業(yè)務(wù)流程的原始 XML 進(jìn)行編輯;另一個(gè)頁(yè)名為 Process 編輯器,它是所涉及的流程的樹視圖。在新創(chuàng)建的文件中顯示的是缺省流程編輯器樹視圖。單擊位于編輯區(qū)域左下角的 Source選項(xiàng)卡,以切換到 Source 編輯器中的 XML 代碼視圖。處于 Source 編輯器中之后,您同樣可以單擊 Process選項(xiàng)卡以返回到樹視圖。

Process 編輯器(請(qǐng)參見 圖 2)是流程的樹視圖,所有的活動(dòng)和能夠包含活動(dòng)的 BPEL4WS 元素在樹中都以節(jié)點(diǎn)的形式被顯示出來(lái)。例如, process 元素包含頂層活動(dòng),而 catchFault 元素包含另一個(gè)用來(lái)捕獲 SOAP Fault 消息的活動(dòng)。

對(duì)于新創(chuàng)建的流程,樹將只有一個(gè)節(jié)點(diǎn),即 process 元素。請(qǐng)注意,樹視圖不顯示有關(guān)流程屬性的信息,也不顯示流程中定義的容器和伙伴。試圖這么做將把樹視圖弄得一塌糊涂。相反,這些內(nèi)容是在流程的 Outline視圖和 Property視圖中定義的。當(dāng)您在樹中選擇一個(gè)流程節(jié)點(diǎn)時(shí),您將看到它的屬性出現(xiàn)在右邊的 Property 視圖中。這個(gè)示例的 Outline 視圖當(dāng)前只顯示了流程;稍后,當(dāng)您定義容器和伙伴時(shí),它們將出現(xiàn)在 Outline 視圖中的流程節(jié)點(diǎn)后。


圖 2. Process 視圖
圖 2. Process 視圖

Source 編輯器(請(qǐng)參見 圖 3)是一個(gè)簡(jiǎn)單的文本編輯工具,它使您能夠編輯原始 XML。除非您熟諳 BPEL4WS 語(yǔ)法,否則手工編輯 XML 既易于出錯(cuò)也難以進(jìn)行,所以,我建議您大多數(shù)情況下還是使用 Process 編輯器,當(dāng)您需要填寫詳細(xì)的信息時(shí),請(qǐng)切換到 Source 編輯器,這是因?yàn)樵?Process 編輯器的屬性框中操作很麻煩。


圖 3. Source 視圖
圖 3. Source 視圖

當(dāng)您編輯信息時(shí),Source 編輯器和 Process 編輯器是雙向同步的。要對(duì)此進(jìn)行測(cè)試,請(qǐng)?jiān)囍?Source 編輯器中更改流程的名稱,然后單擊 Process 編輯器檢查它。您將看到樹中的名稱跟著改變了,當(dāng)您單擊流程節(jié)點(diǎn)時(shí),已更新的名稱也反映在 Property 視圖中。現(xiàn)在,請(qǐng)使用 Property 視圖修改流程的 Name 屬性。當(dāng)您返回到 Source 編輯器時(shí),您將看到這個(gè)相同的屬性在原始 XML 中也已經(jīng)被修改了。

每當(dāng)在 Source 編輯器中進(jìn)行編輯時(shí),您都要格外小心,確保沒有引入任何語(yǔ)法錯(cuò)誤。引入語(yǔ)法錯(cuò)誤將會(huì)阻止有效的 BPWS 文件,還將 阻止您切換到 Process 編輯器。要進(jìn)行演示,請(qǐng)刪除原始 XML 中的 <process> 元素結(jié)尾處的 > 字符。這顯然是無(wú)效的 XML。當(dāng)您單擊 Process 選項(xiàng)卡以切換編輯器時(shí),您將獲得一個(gè)要求您更正錯(cuò)誤的對(duì)話框,它給出了有關(guān)錯(cuò)誤原因的一些詳細(xì)信息。一旦您將字符放回原處,就可以切換編輯器。





回頁(yè)首


構(gòu)建一個(gè)骨架(skeleton)流程

現(xiàn)在,您可以開始構(gòu)建回送流程了。該流程定義的根節(jié)點(diǎn)是 process 元素,這是 BPEL4WS 的語(yǔ)法所要求的。為此,請(qǐng)?zhí)砑右粋€(gè) sequence 活動(dòng),它將成為回送流程所要求的最外層的結(jié)構(gòu)元素。您可以通過(guò)工具欄添加這個(gè)活動(dòng),也可以通過(guò) BPWS菜單添加這個(gè)活動(dòng)。工具欄和菜單基本上由兩組操作組成:

  1. 添加操作:這些操作向流程樹中已經(jīng)存在的一個(gè)節(jié)點(diǎn)添加一個(gè)節(jié)點(diǎn);例如,您可以向一個(gè) process 添加一個(gè) scope 活動(dòng),或者向一個(gè) flow 添加一個(gè) while 活動(dòng)。存在一些只能包含活動(dòng)的活動(dòng)節(jié)點(diǎn)和元素節(jié)點(diǎn)。因此,您不能通過(guò)工具欄或菜單向 process 元素添加 container 元素;將來(lái),您可以在 process 元素的 Outline 視圖中完成這個(gè)操作。
  2. 包裝操作:這些操作使您能夠?qū)⒁粋€(gè)已經(jīng)存在的節(jié)點(diǎn)包裝在一個(gè)新節(jié)點(diǎn)中;例如,您可以將一個(gè) sequence 包裝在一個(gè) scope 中,或者將一個(gè) reply 包含在一個(gè) flow 中。

 

現(xiàn)在,您可以繼續(xù)前進(jìn),向 process 添加 sequence 元素。接下來(lái),您應(yīng)該向 sequence 添加 receive ,然后添加 reply 。如果您在任何地方犯了錯(cuò)誤,您可以刪除活動(dòng)然后重新開始。您也可以通過(guò)工具欄或菜單訪問 delete操作,該操作能夠刪除以所選擇的節(jié)點(diǎn)為根節(jié)點(diǎn)的子樹。

對(duì)于某種特定情形,并不是所有操作都有意義;例如, process 元素可以包含正好一個(gè)活動(dòng)。因此,一旦您已經(jīng)添加了 sequence ,那么菜單中的 add 操作對(duì)于該流程節(jié)點(diǎn)就被禁用了。然而,如果您選擇 sequence 元素,則這些操作就又被啟用了,這是因?yàn)橐粋€(gè) sequence 中可以包含無(wú)限個(gè)活動(dòng)。BPWS4J 編輯器菜單因此是上下文敏感的且限制了可用的操作,這樣,用戶在創(chuàng)建流程時(shí)就可以少犯一些錯(cuò)誤。





回頁(yè)首


在 Outline 視圖中添加容器和伙伴

BPWS4J 編輯器中的 Outline 視圖(請(qǐng)參見 圖 4)用于顯示流程樹中選擇的節(jié)點(diǎn)的結(jié)構(gòu)。這與 Eclipse 插件中的標(biāo)準(zhǔn) Outline 視圖形成了對(duì)比,后者中的 Outline 要求編輯器顯示所有輸入。將詳細(xì)信息轉(zhuǎn)到 Outline 視圖中將使主 Process 樹視圖的條理更清晰些,這樣設(shè)計(jì)師就可以將注意力集中在宏觀層面(活動(dòng)以及它們彼此之間的結(jié)構(gòu)關(guān)系)上而不用擔(dān)心細(xì)節(jié)問題。


圖 4. Outline 視圖
圖 4. Outline 視圖

針對(duì)回送流程,您有一個(gè)伙伴:發(fā)出回送消息的客戶機(jī)。由于這條消息一到達(dá)就要被存放在容器中,所以我們的流程還需要定義一個(gè)容器。因?yàn)檫@條消息保持不變且流程中不涉及其他消息,所以一個(gè)容器就足夠了。容器和伙伴都通過(guò) outline 視圖在 process 元素中進(jìn)行定義。請(qǐng)?jiān)跇渲羞x擇流程節(jié)點(diǎn),現(xiàn)在,您應(yīng)該能夠使用 Outline 視圖的工具欄在 Outline 視圖上添加容器和伙伴。當(dāng)您進(jìn)行此操作時(shí),您將看到 process 元素的 outline 隨每個(gè)操作而更新。





回頁(yè)首


在 Porperty 視圖中定義屬性

您已經(jīng)看到了如何使用主菜單和工具欄創(chuàng)建活動(dòng)及其他結(jié)構(gòu)元素,還看到了如何使用 Outline 視圖定義額外的元素。剩下的就是針對(duì)每個(gè)元素填寫其各個(gè)屬性的詳細(xì)信息。您可以使用 Property 視圖(請(qǐng)參見 圖 5)來(lái)完成這一任務(wù)。


圖 5. Property 視圖
圖 5. Property 視圖

當(dāng)您在 Process 樹中或 Outline 視圖上選擇一個(gè)節(jié)點(diǎn)時(shí),Property 視圖就被更新以反映該特定元素的屬性。這個(gè)視圖列出了屬性名稱和值,并且允許您編輯這些值。在有些情況下,視圖將向您提供可能的值的下拉列表;對(duì)于任何有可能減少由輸入過(guò)失引入的錯(cuò)誤的情況,視圖都將向您提供這種下拉列表。當(dāng)無(wú)法提供這種下拉列表時(shí),您將被允許直接輸入文本。

現(xiàn)在,請(qǐng)選擇新定義的容器;該容器具有下面兩個(gè)屬性:容器名稱和消息類型。您可以隨意填寫這些內(nèi)容。請(qǐng)注意,消息類型必須是一個(gè)全限定名,位于窗口底部的 BPWS4J 編輯器的狀態(tài)欄告訴您所要求的全限定名的格式;對(duì)于不符合所要求的格式的輸入,消息類型將不會(huì)接受。這個(gè)消息類型必須與流程 WSDL 中所定義的消息類型一致。最后,請(qǐng)?jiān)诹鞒坦?jié)點(diǎn)的 Outline 視圖中填寫伙伴元素的屬性,同樣要確保此處的信息與流程 WSDL 一致。





回頁(yè)首


在 Task 視圖中檢查流程有效性

BPWS4J 編輯器最有用的功能之一就是,它能夠在創(chuàng)建流程的過(guò)程中檢查流程的有效性。這是通過(guò)在 Task 視圖(請(qǐng)參見 圖 6)中顯示錯(cuò)誤列表實(shí)現(xiàn)的。至此,在回送流程示例中,您已經(jīng)創(chuàng)建了必需的活動(dòng)、流程的容器并且標(biāo)識(shí)了所涉及的伙伴。不過(guò),您還沒有填寫 receive 活動(dòng)和 reply 活動(dòng)的屬性。如果您切換到 Source 編輯器,您將看到 Task 視圖已經(jīng)用我們的流程的錯(cuò)誤列表進(jìn)行了更新。所有這些錯(cuò)誤都與不完整的 receive 活動(dòng)和 reply 活動(dòng)規(guī)范有關(guān)。如果您在 Task 視圖中單擊一個(gè)特定的錯(cuò)誤,則 Source 編輯器將突出顯示存在錯(cuò)誤的活動(dòng)定義。每次您切換編輯器或者保存流程定義的時(shí)候,Task 視圖都將隨之更新。


圖 6. Task 視圖
圖 6. Task 視圖

盡管 Task 視圖能夠捕獲許多常見錯(cuò)誤,但 BPWS4J 編輯器是獨(dú)立運(yùn)行的,它并不知道流程 WSDL 文件的位置。因此,無(wú)法驗(yàn)證對(duì) WSDL 信息(諸如消息、操作、端口類型、相關(guān)性屬性或服務(wù)鏈接類型)的引用的有效性。





回頁(yè)首


完成示例

通過(guò)返回到流程編輯器并每次處理一個(gè)未完成的任務(wù),您就可以完成流程定義。當(dāng)您選擇任務(wù)時(shí),存在錯(cuò)誤的節(jié)點(diǎn)將被突出顯示。您可以單擊該節(jié)點(diǎn)來(lái)查看它的屬性,并更新屬性數(shù)據(jù)來(lái)消除錯(cuò)誤。一旦您完成了 receive 活動(dòng)和 reply 活動(dòng)的屬性的輸入,您的流程定義就完整了。

現(xiàn)在,您應(yīng)該擁有了一個(gè)可以部署和運(yùn)行的、有效的流程 WSDL 文件。在將來(lái)的一篇文章中,我們將對(duì)此作進(jìn)一步的討論。





回頁(yè)首


參考資料





回頁(yè)首


關(guān)于作者

Nirmal K. Mukhi 是 IBM T J Watson Research Laboratory 的 Component Systems Group 的一名軟件工程師,從 2000 年 11 月起,他就一直在那里從事 Web 服務(wù)方面的研究。此前,Nirmal 是 Indiana University 的一名研究員和學(xué)生,1999 年 5 月他在該校獲得了碩士學(xué)位。Nirmal 從事過(guò)很多工作,其中包括下列 Web 服務(wù)軟件項(xiàng)目:WSDL4J、Web 服務(wù)調(diào)用框架(Web Services Invocation Framework,WSIF)、Web 服務(wù)網(wǎng)關(guān)(Web Services Gateway,WSGW)和 BPWS4J。您可以通過(guò) nmukhi@us.ibm.com 與他聯(lián)系。

    本站是提供個(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)論公約

    類似文章 更多