You are on page 1of 5

<process name=PurchaseOrderProcess ... > <!-Roles played by actual process participants at endpoints of an interaction --> <partnerLinks> ...

< partnerLinks > <!! "ata used by the process --> <#ariables> ... < #ariables > <!! $upports asynchronous interactions --> <correlation$ets> ... < correlation$ets> <!! %cti#ities that the process performs --> &acti#ities'( <!!)*ception handlin+, %lternate e*ecution path to deal -ith faulty situations --> <fault.andlers> ... < fault.andlers> <!!/ode that is e*ecuted -hen an action is 0undone --> <compensation.andlers> ... < compensation.andlers> <!!.andlin+ of concurrent e#ents --> <e#ent.andlers> ... < e#ent.andlers> < process>

Listing 1 Structure of BPEL process.


<partnerLinks> <partnerLink name=1Purchasin+1 partnerLink2ype=1PurchaseOrderPL21 myRole=1Purchase$er#ice1 > <partnerLink name=1/redit/hecker1 partnerLink2ype=1/redit/heckPL21 myRole=1/reditRe3uestor1 partnerRole=1/redit/hecker1 > <partnerLink name=14n#entory/hecker1 partnerLink2ype=14n#entory/heckPL21 myRole=14n#etoryRe3uestor1 partnerRole=14n#entory$er#ice1 > <partnerLink name=1 5illin+$er#ice1 partnerLink2ype=15illin+PL21 myRole=15illRe3uestor1 partnerRole=15iller1 > < partnerLinks>
<portType name= Purc!ase"rderPortType#$ <operation name= SendPurc!ase#$ + .. <&operation$ <&portType$

Purc!ase process ,SDL PortType


sync!ronous <partnerLinkType name= Purc!ase"rderPLT#$ <role name= Purc!aseSer%ice#$ <portType name= Purc!ase"rderPortType#&$ <&role$ <&partnerLinkType$ <partnerLinkType name= 'redit'!eckPLT#$ <role name= 'redit'!ecker#$ <portType name=#'redit'!eckPortType#&$ <&role$ <role name= 'redit'!eck(e)uester#$ <portType name=#'redit'!eck'all*ackPortType#&$ <&role$ <&partnerLinkType$

<partnerLinks$ <partnerLink name= #Purc!asing# partnerLinkType= Purc!ase"rderPLT# my(ole= #Purc!aseSer%ice# &$ <partnerLink name= 'redit'!ecker-partnerLinkType= 'redit'!eckPLT# my(ole=#'redit(e)uester# partner(ole= 'redit'!ecker#&$ <partnerLink name= BillingSer%ice# partnerLinkType= BillingPLT# my(ole= Bill(e)uester# partner(ole= Biller#&$ <&partnerLinks$

Purc!ase process partner link declarations

async!ronous

Purc!ase process partner link types

Listing 2 Definition of roles in a BPL document.


<-sa,)ndpointReference *mlns,-sa=1...1>

<-sa,%ddress>http, ---.someendpoint.com< -sa,%ddress> <-sa,Port2ype>PurchaseOrderPort2ype< -sa,Port2ype> < -sa,)ndpointReference>

Listing . End point reference declaration.

<%aria*les$ <%aria*le name= P" messageType= P"0essage#&$ <%aria*le name= 1n%oice messageType= 1n%0essage#&$ < %aria*le name= "rder2cceptance# messageType= "rder2ccept0essage#& $ < %aria*le name= P"3ault# messageType= P"3aultType#& $ <&%aria*les$ <assign$ <copy$ <from %aria*le=#P"# part= purc!ase"rder#&$ <to %aria*le= credit(e)uest-part= purc!ase"rder#&$ <&copy$ <&assign$

<4sdl5 message name= P"0essage$ < 4sdl5 part name= manufacturer1nfo-type= sns5manufacturer1nfo&$ < 4sdl5 part name= purc!ase"rder-type= sns5purc!ase"rder&$ <& 4sdl5 message$ ++ < 4sdl5 message name=#"rder2ccept0essage# $ < 4sdl5 part name= "2-type= sns5"rder2cceptance &$ <& 4sdl5 message$ < 4sdl5 message name= P"3aultType$ < 4sdl5 part name= pro*lem1nfo -type= 6sd 5string&$ <& 4sdl5 message$ <788 portTypes supported *y t!e purc!ase order process 88$ ++ <portType name= Purc!asePortType#$ <operation name= SendPurc!ase#$ <input message=#pos5 P"0essage#&$ <output message=#pos5 1n%0essage#&$ <fault name=#cannot'omplete"rder# message=#pos5P"3aultType#& $ <&operation$ <&portType$

Purc!ase order process ,SDL definitions

Listing / BPEL data %aria*les for t!e Purc!ase"rder process.

<se3uence>

<recei#e

partnerLink=1Purchasin+1 port2ype=1lns,PurchaseOrderPort2ype1 operation=1$endPurchase1 #ariable=1PO1 create4nstance=1yes1 >

< recei#e> <flo-> <links> <link name=1in#entory-check1 > <link name=1credit-check1 > < links> <!! /heck in#entory --> <in#oke partnerLink=1in#entory/hecker1 port2ype=1lns,4n#entoryPort2ype1 operation=1check4n#entory1 input6ariable=1in#entoryRe3uest1 output6ariable=1in#entoryResponse1> <source link7ame=1in#entory-check1 > 8. <in#oke > <!! /heck credit --> <in#oke partnerLink=1credit/hecker1 port2ype=1lns,/redit/heckPort2ype1 operation=1check/redit1 input6ariable=1creditRe3uest1 output6ariable=1creditResponse1> <source link7ame=1credit-check1 > 8. <in#oke > <!! 4ssue bill once in#entory and credit checks are successful --> <in#oke partnerLink=15illin+$er#ice1 port2ype=1lns,5illin+Port2ype1 operation=1bill/lient1 input6ariable=1billRe3uest1 output6ariable=14n#oice1 9oin/ondition=1+etLink$tatus&:in#entory-check;' %7" +etLink$tatus&:credit-check;'1> <tar+et link7ame=1in#entory-check1 > <tar+et link7ame=0credit-check1 > 8. <in#oke > < flo-> ... <reply partnerLink=1Purchasin+1 port2ype=1lns,purchaseOrderP21 operation=1Purchase1 #ariable=14n#oice1 > < se3uence>

Listing 9 BPEL process flo4 for Purc!ase"rder process.


<!-- define correlation properties --> <bp-s,property name=1manufact4"1 type=1*sd,strin+1 > <bp-s,property name=1order7umber1 type=1*sd,int1 > <bp-s,property name=1supplier4"1 type=1*sd,strin+1 > <bp-s,property name=1in#oice7umber1 type=1*sd,int1 > 8 <!<define schema types and messa+es for PO and in#oice information --> <types> <*sd,comple*2ype name=1PurchaseOrder1> <*sd,element name=1/4"1 type=1*sd,strin+1 > <*sd,element name=1order1 type=1*sd,int1 > ... < *sd,comple*2ype> <*sd,comple*2ype name=1PurchaseOrderResponse1> <*sd,element name=1/4"1 type=1*sd,strin+1 > <*sd,element name=1order1 type=1*sd,int1 > ... < *sd,comple*2ype> < types> <messa+e name=1PO=essa+e1> <part name=1PO1 type=1tns,PurchaseOrder1 > < messa+e> <messa+e name=1POResponse1>

<part name=1R$P1 type=1tns,PurchaseOrderResponse1 > < messa+e> 8 <correlation$ets> <correlation$et name=1PO/orr1 properties=1cor,manufact4d cor,order4d1 > <correlation$et name=14n#oice/orr1 properties=1cor,supplier4d cor,in#oice7umber1 > < correlation$ets> ... <recei#e partnerLink=1=anufacturer1 port2ype=1PO$ubmissionPort2ype1 operation=$ubmitPurchase1 #ariable=1PO1> <correlations> <correlation set=1PO/orr1 initiate=1yes1> < correlations> < recei#e> 8 <in#oke partnerLink=1=anufacturer1 port2ype=1order/allbackPort2ype1 operation=1PurchaseResponse1 input6ariable=1POResponse1> <correlations> <correlation set=1PO/orr1 initiate=1no1 pattern=1out1> <correlation set=14n#oice/orr1 initiate=1yes1 pattern=1out1> < correlations> < in#oke> 8

Listing : 'ode fragment representing constructs in 3igure 2;.

<fault.andlers> <catch fault7ame=1Order7ot/omplete1 fault6ariable=1PO>ault1> <reply partnerLink=0=anufacturer1 port2ype=0PurchasePort2ype1 operation=0Purchase1 #ariable=1PO>ault1 fault7ame=1Order7ot/omplete1 > < catch> < fault.andlers>

Listing < 2 simple fault !andler for t!e Purc!ase"rder process.


<in#oke partnerLink=1$eller1 port2ype=1$P,Purchasin+1 operation=1$yncPurchase1 input6ariable=1sendPO1 output6ariable=1+etResponse1> <correlations> <correlation set=1PurchaseOrder1 initiate=1yes1 pattern=1out1 > < correlations> <compensation.andler> <in#oke partnerLink=1$eller1 port2ype=1$P,Purchasin+1 operation=1/ancelPurchase1 input6ariable=1+etResponse1 output6ariable=1+et/onfirmation1> <correlations> <correlation set=1PurchaseOrder1 pattern=1out1 > < correlations> < in#oke> < compensation.andler> < in#oke>

Listing = Possi*le compensation acti%ity.

<packa+e name=0=anufacturer$upplier/horeo+raphy1 #ersion=1?.@1

<information2ype name=1purchaseOrder2ype1 type=1pons,PurchaseOrder=s+1 > <information2ype name=1purchaseOrder%ck2ype1 type=1pons,PurchaseOrder%ck=s+1 > <token name=1purchaseOrder4"1 information2ype=1tns,int2ype1 > <token name=0supplierRef1 information2ype=1tns,uri2ype1 > 88 <role name=0=anufacturer1> <beha#ior name=0manufacturer>or$upplier1 interface=1cns,=anufacturer$upplierP21 > <beha#ior name=1manufacturer>orAarehouse1 interface=1cns,$upplierAarehouseP21 > < role> <role name=1$upplier1> <beha#ior name=0supplier>or=anufacturer1 interface=1rns,=anufacturer$upplierP21 > < role> <relationship name=1=anufacturer$upplierRelationship1> <role type=1tns,=anufacturer1 beha#ior=1 manufacturer>or$upplier1 > <role type=1tns,$upplier1 beha#ior=0supplier>or=anufacturer1 > < relationship> <channel2ype name=1=anufacturer/hannel1> <role type=1tns,=anufacturer1 > <reference> <token type=1tns,manufacturerRef1 > < reference> <identity> <token type=1tns,purchaseOrder4"1 > < identity> < channel2ype> 88 <choreo+raphy name=1 =anufacturer$upplier/horeo1 root=1true1> <relationship type=1tns,=anufacturer$upplierRelationship1 > <#ariable"efinitions> <#ariable name=1purchaseOrder1 information2ype=1tns,purchaseOrder2ype1 > 88 <#ariable name=1supplier-channel1 channel2ype=1tns,$supplier/hannel1 > 88 <interaction channel6ariable=1tns,supplier-channel1 operation=1handlePurchaseOrder1 ali+n=1true1initiate/horeo+raphy=1true1> <participate relationship=1tns,=anufacturer$upplierRelationship1 fromRole=1tns,=anufacturer1 toRole=1tns,$upplier 1 > <e*chan+e messa+e/ontent2ype=1tns,purchaseOrder2ype1 action=1re3uest1> <use #ariable=1cdl,+et6ariable&tns,purchaseOrderB tns,=anufacturer'1 > <populate #ariable=1cdl,+et6ariable&tns,purchaseOrderB tns,$upplier '1 > < e*chan+e> <e*chan+e messa+e/ontent2ype=1purchaseOrder%ck2ype1 action=1respond1> <use #ariable=1cdl,+et6ariable&tns,purchaseOrder%ckB tns,$upplier'1 > <populate #ariable=1cdl,+et6ariable&tns,purchaseOrder%ckB tns,=anufacturer'1 > < e*chan+e> <record role=1tns, $upplier 1action=1re3uest1> <source #ariable=1cdl,+et6ariable&tns,purchaseOrderB PO =anufacturer RefB tns, $upplier '1 > <tar+et #ariable=1cdl,+et6ariable&tns,manufacturer-channelB tns,$upplier '1 > < record> < interaction> < choreo+raphy> < packa+e>

Listing > 2 sample c!oreograp!y in ,S8'DL.

You might also like