Java 人生

          java (Java EE)&Linux

          BlogJava 首頁 新隨筆 聯系 聚合 管理
            15 Posts :: 2 Stories :: 5 Comments :: 0 Trackbacks
           

          BPEL的概念

                BPEL(Business Process Execution Language)又叫BPEL4WS(Business Process Execution Language For Web Service),面向Web服務的業務流程執行語言。是一種使用Web服務定義和執行業務流程的語言。BPEL提供了一種相對簡單易懂的方法,可將多個WEB服務組合到一個新的復合服務(稱作業務流程)中。

                BPEL本身是一個Web服務,可以作為服務的提供者。

                BPEL是基於Web服務的,沒有Web服務就沒有BPEL


            

           BPEL
          的運作方式


           BPEL的一般構成

                一個以bpel為後綴的文件(例如MyFlow.bpel)

                一個WSDL文件

                一個部置XML文件,樣子形似bpel.xml

           BPEL的實現需求

                需要熟悉單個的Web Service的使用方法

                需要了解具體的業務流程

                需要一個運行BPEL的處理器

                需要一個流程設計器

                當然需要對BPEL語法標簽的掌握等

          8.6 BPEL的結構

          BPEL的一般結構

                      <process>

                        <partnerLinks>

                          <partnerLink>

                          </partnerLink>

                        </partnerLinks>

                        <variables>

                          <variable/>

                        </variables>

                        <faultHandlers>   

                        </faultHandlers>

                        <sequence>

                            Activities

                        </sequence>

                      </process>

          <process>的屬性

          <process name="ncname" targetNamespace="uri"

                   queryLanguage="anyURI"?

                   expressionLanguage="anyURI"?

                   suppressJoinFailure="yes|no"?

                   enableInstanceCompensation="yes|no"?

                   abstractProcess="yes|no"?         xmlns="http://schemas.xmlsoap.org/ws/2003/03/business-process/">

          .

          .

          </process>

          <partnerLinks>樣式

          <partnerLinks>

              <!– 注意:至少要指定一個角色. -->

              <partnerLink name="ncname"

                                   partnerLinkType="qname"

                                   myRole="ncname“

                                   partnerRole="ncname">

              </partnerLink>

           </partnerLinks>

          <variables>樣式

          <variables>

              <variable name="ncname"  

                              messageType="qname/>

           </variables>

          <faultHandlers>樣式

          <faultHandlers>

           <catch faultName="qname“

                       faultVariable="ncname">

                activity

              </catch>

              <catchAll>

                activity

              </catchAll>

           </faultHandlers>

          Activities包含具體如下

                      <receive>

                      <reply>

                      <invoke>

                      <assign>

                      <throw>

                      <terminate>

                      <wait>

                      <empty>

                      <sequence>

                      <switch>

                      <while>

                      <pick>

                      <flow>

                      <scope>

                      <compensate>

          基本活動一

                      <invoke>

          – 調用某個 Web 服務上的操作

                      <receive>

          – 等待一條消息來回應由某人從外部進行調用的服務介面的操作

                      <reply>

          – 生成輸入/輸出操作的回應

                      <wait>

          – 等待一段時間

          基本活動二

                      <assign>

          – 把資料從一個地方複製到另一個地方

                      <throw>

          – 指明某個地方出錯了

                      <terminate>

          – 終止整個服務實例

                      <empty>

          – 什麼也不做

          結構化活動

                      <sequence>

          – 定義一組步驟的有序序列

                      <switch>

          – 使用現在常見的“case-statement”辦法來産生分支

                      <while>

          – 定義一個迴圈

                      <pick>

          – 執行幾條可選路徑中的一條

                      <flow>

          – 以及指明一組步驟應該並行地執行

          一個完整的簡單示例

          <process name="test" targetNamespace="http://acm.org/samples"

                         suppressJoinFailure="yes"

                         xmlns:tns="http://acm.org/samples"

                         xmlns="http://schemas.xmlsoap.org/ws/2003/03/business-process/"

                         xmlns:bpelx="http://schemas.oracle.com/bpel/extension"

                         xmlns:ora="http://schemas.oracle.com/xpath/extension"

                         xmlns:bpws="http://schemas.xmlsoap.org/ws/2003/03/business-process/">

             <partnerLinks>

             <!-- The 'client' role represents the requester of this service. -->

                <partnerLink name="client" partnerLinkType="tns:test" myRole="testProvider"/>

             </partnerLinks>

             <variables>

                <variable name="input" messageType="tns:testRequestMessage"/>

                <variable name="output" messageType="tns:testResponseMessage"/>

             </variables>

             <sequence name="main">

                <receive name="receiveInput" partnerLink="client" portType="tns:test" operation="process" variable="input" createInstance="yes"/>

                <assign name="creatReturnStr">

                   <copy>

                      <from expression="concat(&quot;Hello&quot;, bpws:getVariableData('input','payload','/tns:testRequest/tns:input'))"></from>

                      <to variable="output" part="payload" query="/tns:testResponse/tns:result"/>

                   </copy>

                </assign>

                <reply name="replyOutput" partnerLink="client" portType="tns:test" operation="process" variable="output"/>

             </sequence>

          </process>

          posted on 2007-09-14 08:51 jinmy liao 閱讀(513) 評論(0)  編輯  收藏 所屬分類: SOA
          主站蜘蛛池模板: 新泰市| 蒲江县| 高台县| 静乐县| 平陆县| 阜新| 化德县| 平舆县| 冀州市| 桐城市| 大渡口区| 天峻县| 务川| 中卫市| 泸水县| 邯郸县| 疏勒县| 康定县| 万宁市| 广汉市| 上杭县| 邯郸县| 清涧县| 凤山县| 瑞安市| 灵台县| 莱西市| 香港 | 井研县| 和林格尔县| 合肥市| 康马县| 漳平市| 佛山市| 翁源县| 乐都县| 忻州市| 九台市| 青州市| 南宁市| 体育|