隨筆 - 19, 文章 - 93, 評(píng)論 - 17, 引用 - 0
          數(shù)據(jù)加載中……

          WS-BPEL語言基礎(chǔ)

          16.1. WS-BPEL 語言基礎(chǔ) GoGo翻譯

          在我們能夠設(shè)計(jì)編排層之前,我們需要很好地理解如何正式地表達(dá)流程的操作特征。本書使用 WS-BPEL 語言來演示流程邏輯如何能夠被作為具體定義的一部分來描述( 16.1 ),從而能夠通過相適應(yīng)的編排引擎來實(shí)現(xiàn)和執(zhí)行。


          16.1. 常見的 WS-BPEL 流程定義結(jié)構(gòu)

          BPEL

          雖然你很可能會(huì)使用流程建模工具并因此不需要從草稿開始編寫你的流程, WS-BPEL 元素的知識(shí)仍舊是有用的和必需的。 WS-BPEL 建模工具經(jīng)常會(huì)涉及到這些元素和結(jié)構(gòu),而且你可能深入到它們生成的代碼中做進(jìn)一步的精化。

          注意

          如果你已經(jīng)輕松了解了 WS-BPEL 語言,請(qǐng)向前跳到 面向服務(wù)業(yè)務(wù)流程設(shè)計(jì)( 循序漸進(jìn)的流程 章節(jié)。

          16.1.1. BPEL 4WS WS-BPEL 簡(jiǎn)史

          在我們進(jìn)入 WS-BPEL 語言的細(xì)節(jié)之前,讓我們簡(jiǎn)要討論一下這個(gè)規(guī)范是如何形成的。 Web 服務(wù)業(yè)務(wù)流程執(zhí)行語言( BPEL 4WS )最初在 2002 7 月被構(gòu)思和發(fā)布,伴以 BPEL 4WS 1.0 規(guī)范,這是 IBM Microsoft BEA 合作的成果。這個(gè)文檔提議了從先前的各種語言中得到靈感的編排語言,例如 IBM Web 服務(wù)流程語言( WSFL Microsoft XLANG 規(guī)范。

          隨著來自于 SAP Siebel Systems 等其他貢獻(xiàn)者的加入,版本 1.1 BPEL 4WS 規(guī)范在一年不到的時(shí)間,于 2003 5 月發(fā)布了。這個(gè)版本獲得了更多的關(guān)注與廠商支持,導(dǎo)致了大量的商業(yè)上遵循 BPEL 4WS 的可用編排引擎。正是在這個(gè)發(fā)布之前, BPEL 4WS 規(guī)范被提交到 OASIS 技術(shù)委員會(huì),使得這個(gè)規(guī)范能夠被開發(fā)成為一個(gè)官方的、開放的標(biāo)準(zhǔn)。

          技術(shù)委員會(huì)正在下一個(gè)版本 BPEL 4WS 的最終發(fā)布流程中。它已經(jīng)宣布了語言本身被重新命名為 Web 服務(wù)業(yè)務(wù)流程執(zhí)行語言,或者是 WS-BPEL (并被賦予 2.0 版本號(hào))。 WS-BPEL 所規(guī)劃的變更目前已經(jīng)對(duì)外公布,并可在 OASIS Web 網(wǎng)站 www.oasis-open.org 上獲得。

          在本節(jié)的元素描述中加入了注釋,以利于指出 BPEL 4WS WS-BPEL 之間的語法變動(dòng)。為了簡(jiǎn)單起見,在本書中我們提到的業(yè)務(wù)流程執(zhí)行語言就是指 WS-BPEL

          16.1.2. 先決條件

          現(xiàn)在是學(xué)習(xí) WS-BPEL 語言的時(shí)候了。如果你還沒有準(zhǔn)備好,推薦你在繼續(xù)本節(jié)之前閱讀第 6 章。第 6 章中涉及了編排、協(xié)調(diào)、原子事務(wù)和業(yè)務(wù)活動(dòng)等相關(guān)概念,因而在此就不再重復(fù)。本章同時(shí)也假設(shè)你已經(jīng)通讀了第 13 章中提供的 WSDL 教程。

          16.1.3. process 元素

          讓我們從 WS-BPEL 流程定義的根元素開始。它使用 name 屬性來給一個(gè)名稱賦值,并用于建立流程定義相關(guān)的命名空間。

          示例 16.1. process 定義框架

          <process name=“TimesheetSubmissionprocess”

          targetNamespace=“http://www.xmltc.com/tls/process/”

          xmlns=

          “http://schemas.xmlsoap.org/ws/2003/03/

          business-process/”

          xmlns:bpl=“http://www.xmltc.com/tls/process/”

          xmlns:emp=“http://www.xmltc.com/tls/employee/”

          xmlns:inv=“http://www.xmltc.com/tls/invoice/”

          xmlns:tst=“http://www.xmltc.com/tls/timesheet/”

          xmlns:not=“http://www.xmltc.com/tls/notification/”>

          <partnerLinks>

          ...

          </partnerLinks>

          <variables>

          ...

          </variables>

          <sequence>

          ...

          </sequence>

          ...

          </process>

          process 結(jié)構(gòu)包含一系列常見的子元素,在下列章節(jié)中說明。

          16.1.4. partnerLinks partnerLink 元素

          partnerLink 元素建立了端口類型的服務(wù)(伙伴),將參與業(yè)務(wù)流程的執(zhí)行過程。伙伴服務(wù)能夠擔(dān)當(dāng)流程的客戶端,負(fù)責(zé)調(diào)用流程服務(wù)。作為替代,伙伴服務(wù)也能夠被流程服務(wù)自身所調(diào)用。

          partnerLink 元素的內(nèi)容代表了兩個(gè)合作伙伴之間的通信交換 --- 流程服務(wù)是一個(gè)合作伙伴其他服務(wù)是另一個(gè)合作伙伴。依據(jù)通信的種類,流程服務(wù)的作用將會(huì)變化。例如,被外部服務(wù)所調(diào)用的流程服務(wù)可能擔(dān)當(dāng) “工單提交流程( TimesheetSubmissionProcess )”的角色。然而,當(dāng)這個(gè)同樣的流程服務(wù)調(diào)用具有發(fā)票校驗(yàn)的不同服務(wù)的時(shí)候,它擔(dān)當(dāng)了不同的角色,或許是“發(fā)票客戶( InvoiceClient )”。 partnerLink 元素因而包含 myRole partnerRole 屬性,分別設(shè)立了流程服務(wù)和伙伴服務(wù)服務(wù)提供者的角色。

          為簡(jiǎn)單起見, myRole 屬性用于流程服務(wù)被伙伴客戶端服務(wù)所調(diào)用時(shí),因?yàn)樵谶@個(gè)情況下流程服務(wù)擔(dān)當(dāng)了服務(wù)提供者。 partnerRole 屬性識(shí)別了流程服務(wù)所調(diào)用的伙伴服務(wù)(使伙伴服務(wù)成為服務(wù)提供者)。

          注意當(dāng)期望的流程服務(wù)在相同的伙伴服務(wù)中擔(dān)當(dāng)服務(wù)請(qǐng)求者和服務(wù)提供者的時(shí)候, myRole partnerRole 屬性都能夠被相同的 partnerLink 元素所使用。例如,在流程和伙伴服務(wù)的異步通信過程中,在伙伴服務(wù)回調(diào)期間 myRole 的設(shè)置顯示出流程服務(wù)的角色。

          示例 16.2. partnerLinks 結(jié)構(gòu)包含一個(gè) partnerLink 元素,在該元素內(nèi)流程服務(wù)被一個(gè)外部客戶端伙伴所調(diào)用,并且四個(gè) partnerLink 元素確定了被流程服務(wù)所調(diào)用的伙伴服務(wù)

          <partnerLinks>

          <partnerLink name=“client”

          partnerLinkType=“tns:TimesheetSubmissionType”

          myRole=“TimesheetSubmissionServiceProvider”/>

          <partnerLink name=“Invoice”

          partnerLinkType=“inv:InvoiceType”

          partnerRole=“InvoiceServiceProvider”/>

          <partnerLink name=“Timesheet”

          partnerLinkType=“tst:TimesheetType”

          partnerRole=“TimesheetServiceProvider”/>

          <partnerLink name=“Employee”

          partnerLinkType=“emp:EmployeeType”

          partnerRole=“EmployeeServiceProvider”/>

          <partnerLink name=“Notification”

          partnerLinkType=“not:NotificationType”

          partnerRole=“NotificationServiceProvider”/>

          </partnerLinks>

          你會(huì)在 示例 16.2 中注意到,每個(gè) partnerLink 元素同樣也包含了 partnerLinkType 屬性。這涉及到 partnerLinkType 結(jié)構(gòu),在下面說明。

          16.1.5. partnerLinkType 元素

          對(duì)于包含在流程中的每個(gè)伙伴服務(wù), partnerLinkType 元素在流程定義中確定了被 partnerLink 元素引用的 WSDL portType 元素。因此,這些結(jié)構(gòu)典型地都直接嵌入到每個(gè)伙伴服務(wù)的 WSDL 文檔中(包括流程服務(wù))。

          正如 partnerLink myRole partnerRole 屬性所定義的那樣, partnerLinkType 結(jié)構(gòu)為每個(gè)服務(wù)可以擔(dān)當(dāng)?shù)慕巧粋€(gè) role 元素。其結(jié)果是, partnerLinkType 將具有一個(gè)或兩個(gè) role 子元素。

          示例 16.3. WSDL 定義 結(jié)構(gòu)包含 partnerLinkType 結(jié)構(gòu)

          <definitions name=“Employee”

          targetNamespace=“http://www.xmltc.com/tls/employee/wsdl/”

          xmlns=“http://schemas.xmlsoap.org/wsdl/”

          xmlns:plnk=

          “http://schemas.xmlsoap.org/ws/2003/05/partner-link/”

          ...

          >

          ...

          <plnk:partnerLinkType name=“EmployeeServiceType” xmlns=

          “http://schemas.xmlsoap.org/ws/2003/05/partner-link/”>

          <plnk:role name=“EmployeeServiceProvider”>

          <portType name=“emp:EmployeeInterface”/>

          </plnk:role>

          </plnk:partnerLinkType>

          ...

          </definitions >

          注意多個(gè) partnerLink 元素可以引用相同的 partnerLinkType 。這當(dāng)流程服務(wù)與多個(gè)伙伴服務(wù)具有相同關(guān)系的時(shí)候十分有用。所有的伙伴服務(wù)因而能夠使用相同的流程服務(wù)的 portType 元素。

          注意

          2.0 版本的 WS-BPEL 規(guī)范中,提議了 portType 元素的變更以便作為 role 元素的一個(gè)屬性存在。

          16.1.6. variables 元素

          WS-BPEL 流程服務(wù)通常使用 variables 結(jié)構(gòu)來保存與即時(shí)工作流邏輯關(guān)聯(lián)的狀態(tài)信息。整個(gè)消息和數(shù)據(jù)集合被格式化為 XSD schema 類型,能夠在處理過程中被置入變量并在以后獲取。數(shù)據(jù)的類型能夠被賦予 variable 元素,它需要用下面三個(gè)屬性之一來預(yù)定義: messageType element ,或 type .

          messageType 屬性允許變量包含整個(gè) WSDL 定義的消息,而 element 屬性完全引用了 XSD 元素結(jié)構(gòu)。 type 屬性能夠用于僅代表 XSD simpleType ,如 string integer

          示例 16.4. variables 結(jié)構(gòu)僅包含一些后續(xù)被工單提交流程所使用的 variable 子元素

          <variables>

          <variable name=“ClientSubmission”

          messageType=“bpl:receiveSubmitMessage”/>

          <variable name=“EmployeeHoursRequest”

          messageType=“emp:getWeeklyHoursRequestMessage”/>

          <variable name=“EmployeeHoursResponse”

          messageType=“emp:getWeeklyHoursResponseMessage”/>

          <variable name=“EmployeeHistoryRequest”

          messageType=“emp:updateHistoryRequestMessage”/>

          <variable name=“EmployeeHistoryResponse”

          messageType=“emp:updateHistoryResponseMessage”/>

          ...

          </variables>

          典型地來講,具有 messageType 屬性的變量是為流程定義所處理的每個(gè)輸入和輸出消息定義的。這個(gè)屬性的值是來自于伙伴流程定義的消息名稱。

          16.1.7. getVariableProperty getVariableData 功能

          WS-BPEL 提供內(nèi)置函數(shù),允許存儲(chǔ)在變量中或者是與變量關(guān)聯(lián)的信息能在業(yè)務(wù)流程執(zhí)行期間被處理。

          getVariableProperty variable name property name

          這個(gè)函數(shù)允許從變量中接收全局的屬性值。它完全接受了作為輸入的值和屬性名稱,并返回所要求的值。


          getVariableData variable name part name location path

          由于變量通常用于管理狀態(tài)信息,這個(gè)函數(shù)要求提供訪問數(shù)據(jù)的其他部分處理邏輯。 getVariableData 函數(shù)具有一個(gè)強(qiáng)制的變量名稱參數(shù)和兩個(gè)能夠用于指定變量數(shù)據(jù)的可選變量。

          在我們的示例中我們多次使用 getVariableData 函數(shù)來從變量中獲取消息數(shù)據(jù)。

          示例 16.5. 兩個(gè) getVariableData 函數(shù)被用于接收來自于不同變量的特定數(shù)據(jù)

          getVariableData 'InvoiceHoursResponse'

          'ResponseParameter'

          /SPAN>

          getVariableData 'input' 'payload'

          '/tns:TimesheetType/Hours/...'

          16.1.8. sequence 元素

          sequence 結(jié)構(gòu)允許你組織一系列的活動(dòng)以便它們以預(yù)定義的、有順序的次序執(zhí)行。 WS-BPEL 提供了大量能夠用于在流程定義中表示工作流邏輯的活動(dòng)。在本節(jié)中剩余的元素描述解釋了一組基本的用于我們將要進(jìn)行案例研究示例的一部分活動(dòng)。

          示例 16.6. sequence 結(jié)構(gòu)框架僅包含了 WS-BPEL 所提供的許多活動(dòng)元素中的一些

          <sequence>

          <receive>

          ...

          </receive>

          <assign>

          ...

          </assign>

          <invoke>

          ...

          </invoke>

          <reply>

          ...

          </reply>

          </sequence>

          注意 sequence 元素可以嵌套,允許你在序列中定義序列。

          16.1.9. invoke 元素

          該元素識(shí)別了伙伴服務(wù)的操作,這是流程定義計(jì)劃在其執(zhí)行過程中要調(diào)用的。 invoke 元素配備了五個(gè)常見屬性,進(jìn)一步詳細(xì)說明了條文的細(xì)節(jié)( 16.1 )。

          16.1. invoke 元素屬性

          屬性

          描述

          partnerLink

          該元素通過相應(yīng)的 partnerLink 來命名伙伴服務(wù)。

          portType

          該元素用于識(shí)別伙伴服務(wù)的 portType 元素。

          operation

          流程服務(wù)需要發(fā)送請(qǐng)求到的伙伴服務(wù)操作。

          inputVariable

          輸入消息將用于和伙伴服務(wù)操作進(jìn)行通信。注意這里所提及的是作為變量,因?yàn)樗昧司哂?/span> messageType 屬性的 WS-BPEL 變量。

          outputVariable

          當(dāng)基于請(qǐng)求 - 響應(yīng)的 MEP 進(jìn)行通信的時(shí)候采用該元素。返回值存儲(chǔ)在單獨(dú)的 variable 元素中。

          /SPAN>

          示例 16.7. invoke 元素確定了目標(biāo)伙伴服務(wù)的細(xì)節(jié)

          <invoke name=“ValidateWeeklyHours”

          partnerLink=“Employee”

          portType=“emp:EmployeeInterface”

          operation=“GetWeeklyHoursLimit”

          inputVariable=“EmployeeHoursRequest”

          outputVariable=“EmployeeHoursResponse”/>

          16.1.10. receive 元素

          receive 元素允許我們建立流程服務(wù)期望從外部客戶端伙伴服務(wù)中接收請(qǐng)求的信息。在這個(gè)案例中,流程服務(wù)被視作是等待調(diào)用的服務(wù)提供者。

          receive 元素包含一組屬性,它們中的每一個(gè)都被賦值,涉及到預(yù)期進(jìn)來的通信( 16.2 )。

          16.2. receive 元素屬性

          屬性

          描述

          partnerLink

          客戶端伙伴服務(wù)在相應(yīng)的 partnerLink 結(jié)構(gòu)中被識(shí)別。

          portType

          流程服務(wù) portType 會(huì)等待從伙伴服務(wù)中接收請(qǐng)求消息。

          operation

          會(huì)接收請(qǐng)求的流程服務(wù)操作。

          variable

          進(jìn)來的請(qǐng)求消息將會(huì)被存儲(chǔ)在流程定義的 variable 結(jié)構(gòu)中。

          createInstance

          當(dāng)這個(gè)屬性被設(shè)置成“ yes ”的時(shí)候,這個(gè)特殊請(qǐng)求的可能負(fù)責(zé)創(chuàng)建新的進(jìn)程實(shí)例。

          注意這個(gè)元素同樣能夠被用于在異步消息交換的過程中接收回調(diào)消息。

          示例 16.8. 用于工單提交流程定義的 receive 元素預(yù)示著客戶端的伙伴服務(wù)負(fù)責(zé)啟動(dòng)工單文擋提交流程

          <receive name=“receiveInput”

          partnerLink=“client”

          portType=“tns:TimesheetSubmissionInterface”

          operation=“Submit”

          variable=“ClientSubmission”

          createInstance=“yes”/>

          發(fā)表評(píng)論










          輸入驗(yàn)證碼(0-9,A-F,沒有字母o或O,只有數(shù)字0)



          16.1.1. reply 元素

          當(dāng)制訂了同步交換的時(shí)候,哪里有 receive 元素, 哪里就有 reply 元素。 reply 元素負(fù)責(zé)建立細(xì)節(jié),關(guān)于返回響應(yīng)消息到所要求的客戶端伙伴服務(wù)。由于這個(gè)元素與它相應(yīng)的 receive 元素的相同的 partnerLink 元素關(guān)聯(lián),它重復(fù)了許多同樣的屬性( 16.3 )。


          16.3. reply 元素屬性

          屬性

          描述

          partnerLink

          建立在 receive 元素中的相同的 partnerLink 元素。

          portType

          顯示在 receive 元素中的相同的 portType 元素。

          operation

          來自于 receive 元素中的相同的 operation 元素。

          variable

          流程服務(wù)的 variable 元素?fù)碛蟹祷氐交锇榉?wù)的消息。

          messageExchange

          WS-BPEL 2.0 規(guī)范被提議增加了這個(gè)可選屬性。它允許明確地與消息活動(dòng)關(guān)聯(lián)的 reply 元素能夠接收消息(比如 receive 元素)

          示例 16.9. reply 元素與先前顯示的 receive 元素可能的配對(duì)

          <reply partnerLink=“client”

          portType=“tns:TimesheetSubmissionInterface”

          operation=“Submit”

          variable=“TimesheetSubmissionResponse”/>

          16.1.1. switch case otherwise 元素

          這三個(gè)結(jié)構(gòu)化的活動(dòng)元素允許我們?cè)黾訔l件化的邏輯到我們的流程定義中,與在傳統(tǒng)編程語言中使用的所熟悉的 select case/case else 結(jié)構(gòu)相類似。 switch 元素建立了條件邏輯的工作范圍,在其中多個(gè) case 結(jié)構(gòu)能夠嵌套,以檢查使用 condition 屬性的各種條件。當(dāng) condition 屬性解析為“ true ”的時(shí)候,定義在相應(yīng) case 結(jié)構(gòu)中的活動(dòng)就被執(zhí)行。

          otherwise 元素能夠被添加作為 switch 結(jié)構(gòu)末尾的 catch all 。當(dāng)所有前述的 case 條件失敗時(shí), otherwise 結(jié)構(gòu)中的活動(dòng)就被執(zhí)行。

          示例 16.10. ca se 元素的框架,在其中 condition 屬性使用 getVariableData 函數(shù)來對(duì) EmployeeResponseMessage 的變量?jī)?nèi)容和 0 值作比較

          <switch>

          <case condition=

          “getVariableData('EmployeeResponseMessage'

          'ResponseParameter')=0”>

          ...

          </case>

          <otherwise>

          ...

          </otherwise>

          </switch>

          注意

          WS-BPEL2.0 中提議了將 switch case 、與 otherwise 元素替換為 if elseif 、與 else 元素。

          16.1.2. assign copy from to 元素

          這組元素只是提供給我們?cè)谶M(jìn)程變量之間復(fù)制值的能力,它允許我們貫穿整個(gè)進(jìn)程來傳送數(shù)據(jù),因?yàn)樾畔?huì)在進(jìn)程的執(zhí)行過程中接收和修改。

          示例 16.11. 在該 assign 結(jié)構(gòu)中, TimesheetSubmissionFailedMessage 變量的內(nèi)容被復(fù)制到兩個(gè)不同的消息變量中

          <assign>

          <copy>

          <from variable=“TimesheetSubmissionFailedMessage”/>

          <to variable=“EmployeeNotificationMessage”/>

          </copy>

          <copy>

          <from variable=“TimesheetSubmissionFailedMessage”/>

          <to variable=“ManagerNotificationMessage”/>

          </copy>

          </assign>

          注意 copy 結(jié)構(gòu)可以處理各種數(shù)據(jù)傳輸函數(shù)(例如,只有部分消息能夠被抽取和復(fù)制到變量中)。 from to 元素同樣也可以包含可選的 part query 屬性,允許引用變量的特定的部分或特定的值。

          16.1.3. faultHandlers catch catchAll 元素

          這個(gè)結(jié)構(gòu)包含多個(gè) catch 元素,每個(gè)都提供活動(dòng)為特定類型的錯(cuò)誤條件進(jìn)行異常處理。故障會(huì)通過接收 WSDL 定義的故障消息來生成,或者它們可以通過使用 throw 元素被明確觸發(fā)。 faultHandlers 結(jié)構(gòu)可以由 catchAll 元素構(gòu)成(或終止)以提供缺省的錯(cuò)誤處理活動(dòng)。

          示例 16.12. faultHandlers 結(jié)構(gòu)包含 catch catchAll 子結(jié)構(gòu)

          <faultHandlers>

          <catch faultName=“SomethingBadHappened”

          faultVariable=“TimesheetFault”>

          ...

          </catch>

          <catchAll>

          ...

          </catchAll>

          </faultHandlers>

          16.1.4. 其他 WS-BPEL 元素

          下列表格提供了對(duì) WS-BPEL 語言其他相關(guān)部分的簡(jiǎn)要描述。

          16.4. 快速參考表提供了對(duì)附加 WS-BPEL 元素的簡(jiǎn)短描述 (按照字母順序排列)

          元素

          描述

          compensationHandler

          WS-BPEL 流程定義能夠定義出補(bǔ)償流程,當(dāng)確定的條件發(fā)生時(shí)加入一系列的活動(dòng)以證明補(bǔ)償?shù)恼?dāng)性。這些活動(dòng)就被保留在 compensationHandler 結(jié)構(gòu)中。(更多關(guān)于補(bǔ)償?shù)男畔ⅲ瑓⒁姷?/span> 6 章中的業(yè)務(wù)活動(dòng)一節(jié)。

          correlationSets

          WS-BPEL 使用這個(gè)元素來實(shí)現(xiàn)相關(guān)性,主要和進(jìn)程實(shí)例的消息關(guān)聯(lián)。消息可以屬于多個(gè) correlationSets 。更進(jìn)一步,消息屬性可以在 WSDL 文檔中定義。

          empty

          這個(gè)簡(jiǎn)單的元素允許你聲明在特定的條件下沒有活動(dòng)應(yīng)該發(fā)生。

          eventHandlers

          eventHandlers 元素使得進(jìn)程響應(yīng)處理邏輯執(zhí)行過程中的事件。這個(gè)結(jié)構(gòu)可以包含 onMessage onAlarm 子元素,在特定類型的消息到達(dá)時(shí)觸發(fā)處理活動(dòng)(分別在預(yù)定義的一段時(shí)間后,或者在指定的日期和時(shí)間)

          exit

          參見下面的 terminate 元素描述。

          flow

          flow 結(jié)構(gòu)允許你定義一系列會(huì)并發(fā)產(chǎn)生并需要在所有都結(jié)束執(zhí)行后完成的活動(dòng)。在 flow 結(jié)構(gòu)中的活動(dòng)之間的從屬關(guān)系使用子元素 link 來定義。

          pick

          eventHandlers 元素類似,這個(gè)結(jié)構(gòu)也能夠包含子元素 onMessage onAlarm ,但更多地用于響應(yīng)針對(duì)進(jìn)程執(zhí)行掛起的外部事件。

          scope

          在流程定義中的部分邏輯能夠被細(xì)分到使用這個(gè)結(jié)構(gòu)的范圍中。它允許你定義 variables faultHandlers correlationSets compensationHandler 以及 eventHandlers 元素定位到這個(gè)范圍。

          terminate

          該元素有效地終止進(jìn)程實(shí)例。 WS-BPEL 2.0 規(guī)范建議這個(gè)元素重命名為 exit

          throw

          WS-BPEL 支持眾多的故障條件。使用 throw 元素允許你明確地觸發(fā)故障狀態(tài)以響應(yīng)特定的條件。

          wait

          wait 元素能夠被設(shè)置成在進(jìn)程中引入有意識(shí)的延遲。它的值可以是指定時(shí)間或是預(yù)定義的日期。

          while

          這個(gè)有用的元素允許你定義循環(huán)。它包含了 condition 屬性,與 case 元素一起,只要在“ true ”的時(shí)候,它會(huì)繼續(xù)執(zhí)行在 while 結(jié)構(gòu)中的活動(dòng)。

          要點(diǎn)小結(jié)

          • WS-BPEL 流程定義由流程服務(wù)在運(yùn)行時(shí)表示。
          • 參與 WS-BPEL 定義流程的服務(wù)被認(rèn)為是伙伴服務(wù)并且作為流程定義的一部分所建立。
          • 許多活動(dòng)元素由 WS-BPEL 所提供,以實(shí)現(xiàn)各種類型的流程邏輯。

          posted on 2006-12-03 07:53 BPM 閱讀(1815) 評(píng)論(0)  編輯  收藏 所屬分類: BPEL

          主站蜘蛛池模板: 务川| 木兰县| 湘阴县| 新建县| 淄博市| 安达市| 卫辉市| 洪江市| 商洛市| 延长县| 天祝| 敦煌市| 哈密市| 恭城| 筠连县| 义马市| 宝丰县| 祁阳县| 霍邱县| 霍州市| 安阳县| 库伦旗| 贵定县| 黄浦区| 遵义市| 卢龙县| 昌邑市| 竹北市| 游戏| 上高县| 康乐县| 大厂| 澎湖县| 沧州市| 广西| 安塞县| 华宁县| 澄迈县| 福安市| 灌南县| 西贡区|