⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 atm.bpel

📁 ejb3 java session bean
💻 BPEL
📖 第 1 页 / 共 2 页
字号:
<?xml version="1.0" encoding="UTF-8"?><process name="AtmFrontEnd" targetNamespace="http://jbpm.org/examples/atm"  xmlns:tns="http://jbpm.org/examples/atm" xmlns:atm="http://jbpm.org/examples/atm"  xmlns:tic="http://jbpm.org/examples/ticket" xmlns:acc="http://jbpm.org/examples/account"  xmlns:xsd="http://www.w3.org/2001/XMLSchema"  xmlns:bpel="http://schemas.xmlsoap.org/ws/2003/03/business-process/"  xmlns="http://schemas.xmlsoap.org/ws/2003/03/business-process/">  <partnerLinks>    <!-- relationship with the ATM -->    <partnerLink name="atm" partnerLinkType="tns:Atm-Front" myRole="FrontEnd" />    <!-- relationship with the ticket issuer -->    <partnerLink name="ticket" partnerLinkType="tns:Front-Ticket" partnerRole="TicketIssuer" />    <!-- relationship with the account system -->    <partnerLink name="account" partnerLinkType="tns:Front-Account" partnerRole="AccountSystem" />  </partnerLinks>  <variables>    <!-- ticket number wrapper -->    <variable name="ticketMsg" messageType="tic:ticketMessage" />    <!-- ATM connection flag -->    <variable name="connected" type="xsd:boolean" />    <!-- customer access flag -->    <variable name="logged" type="xsd:boolean" />  </variables>  <correlationSets>    <!-- conversation with a connected ATM -->    <correlationSet name="atmInteraction" properties="tns:ticketId" />  </correlationSets>  <sequence name="MainSeq">    <scope name="TicketCreationUnit">      <variables>        <!-- ATM connection request -->        <variable name="connectReq" messageType="atm:connectRequest" />        <!-- ticket creation request -->        <variable name="ticketReq" messageType="tic:ticketRequest" />      </variables>      <sequence name="TicketCreationSeq">        <!-- receive a connection request -->        <receive name="AcceptConnection" partnerLink="atm" portType="atm:FrontEnd"          operation="connect" variable="connectReq" createInstance="yes" />        <!-- generate a ticket number -->        <invoke name="CreateTicket" partnerLink="ticket" portType="tic:TicketIssuer"          operation="createTicket" inputVariable="ticketReq" outputVariable="ticketMsg">          <correlations>            <correlation set="atmInteraction" pattern="in" initiate="yes" />          </correlations>        </invoke>        <!-- send the ticket number back to the ATM -->        <reply name="SendTicketNumber" operation="connect" partnerLink="atm" portType="atm:FrontEnd"          variable="ticketMsg">          <correlations>            <correlation set="atmInteraction" />          </correlations>        </reply>      </sequence>    </scope>    <!-- initialize the status flags -->    <assign name="InitializeStatus">      <copy>        <from expression="true()" />        <to variable="connected" />      </copy>      <copy>        <from expression="false()" />        <to variable="logged" />      </copy>    </assign>    <!-- handle the ATM connection -->    <scope name="ConnectionUnit">      <variables>        <!-- customer log on request -->        <variable name="logOnReq" messageType="atm:logOnRequest" />        <!-- connection status response -->        <variable name="statusRsp" messageType="atm:statusResponse" />      </variables>      <eventHandlers>        <!-- listen for connection status requests -->        <onMessage operation="status" partnerLink="atm" portType="atm:FrontEnd"          variable="ticketMsg">          <correlations>            <correlation set="atmInteraction" />          </correlations>          <!-- report the connection status -->          <sequence name="StatusSeq">            <!-- set a status string depending on the flag values -->            <switch name="StatusDecision">              <case condition="bpel:getVariableData('logged')">                <assign name="setStatusLogged">                  <copy>                    <from expression="'logged'" />                    <to variable="statusRsp" part="status" />                  </copy>                </assign>              </case>              <case condition="bpel:getVariableData('connected')">                <assign name="setStatusConnected">                  <copy>                    <from expression="'connected'" />                    <to variable="statusRsp" part="status" />                  </copy>                </assign>              </case>              <otherwise>                <assign name="setStatusDisconnected">                  <copy>                    <from expression="'disconnected'" />                    <to variable="statusRsp" part="status" />                  </copy>                </assign>              </otherwise>            </switch>            <!-- send the status back to the ATM -->            <reply name="SendStatus" operation="status" partnerLink="atm" portType="atm:FrontEnd"              variable="statusRsp" />          </sequence>        </onMessage>      </eventHandlers>      <!-- process ATM requests, one at a time -->      <while name="ConnectionLoop" condition="bpel:getVariableData('connected')">        <!-- listen for either disconnect or log on request -->        <pick name="ConnectionMenu">          <onMessage operation="disconnect" partnerLink="atm" portType="atm:FrontEnd"            variable="ticketMsg">            <correlations>              <correlation set="atmInteraction" />            </correlations>            <!-- turn off connected flag -->            <assign name="SetDisconnected">              <copy>                <from expression="false()" />                <to variable="connected" />              </copy>            </assign>          </onMessage>          <onMessage operation="logOn" partnerLink="atm" portType="atm:FrontEnd"            variable="logOnReq">            <correlations>              <correlation set="atmInteraction" />            </correlations>            <!-- handle account access -->            <scope name="AccountUnit">              <variables>                <!-- customer name wrapper -->                <variable name="customerMsg" messageType="acc:customerMessage" />                <!-- access check response -->                <variable name="accessMsg" messageType="acc:accessMessage" />                <!-- customer access acknowledgement -->                <variable name="logOnRsp" messageType="atm:logOnResponse" />                <!-- account balance wrapper -->                <variable name="balanceMsg" messageType="acc:balanceMessage" />                <!-- balance change request -->                <variable name="balanceChange" messageType="atm:balanceChange" />                <!-- account system operation request -->                <variable name="accountOperation" messageType="acc:accountOperation" />                <!-- customer access fault -->                <variable name="unauthorizedAccess" messageType="atm:unauthorizedAccess" />                <!-- withdraw fault -->                <variable name="insufficientFunds" messageType="atm:insufficientFunds" />                <!-- resulting balance after withdrawal -->                <variable name="newBalance" type="xsd:double" />              </variables>              <correlationSets>                <!-- conversation with a logged customer -->                <correlationSet name="customerInteraction" properties="tns:customerId" />              </correlationSets>              <sequence name="AccountSeq">                <!-- populate access check request -->                <assign name="PrepareAccessCheck">                  <copy>                    <from variable="logOnReq" part="customerName" />                    <to variable="customerMsg" part="customerName" />                  </copy>                </assign>                <!-- check account access privilege -->                <invoke name="CheckAccess" operation="checkAccess" partnerLink="account"                  portType="acc:AccountSystem" inputVariable="customerMsg"                  outputVariable="accessMsg">                  <correlations>                    <correlation set="customerInteraction" pattern="out" initiate="yes" />                  </correlations>                </invoke>                <!-- decide outcome of customer access request -->                <switch name="AccessDecision">                  <case condition="bpel:getVariableData('accessMsg', 'granted')">                    <!-- grant customer access -->                    <sequence name="AccessGrantedSeq">                      <!-- turn on logged flag -->                      <assign name="SetLoggedOn">                        <copy>                          <from expression="true()" />                          <to variable="logged" />                        </copy>                      </assign>                      <!-- send acknowledgement back to ATM -->                      <reply name="GrantAccess" operation="logOn" partnerLink="atm"                        portType="atm:FrontEnd" variable="logOnRsp" />                    </sequence>                  </case>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -