<?xml version="1.0" encoding="UTF-8"?>
<!--
BPEL Process Definition
Edited using ActiveBPEL(tm) Designer Version 2.0 (http://www.active-endpoints.com)
-->
<process name="ASTROBookStore" suppressJoinFailure="yes" targetNamespace="http://astroproject.org/BusinessProcesses/ASTROBookStore" xmlns="http://schemas.xmlsoap.org/ws/2003/03/business-process/" xmlns:ASTROBookCart="http://astroproject.org/BusinessProcesses/ASTROBookCart" xmlns:ASTROBookSearch="http://astroproject.org/BusinessProcesses/ASTROBookSearch" xmlns:bankJPG="http://astroproject.org/BusinessProcesses/bankJPG" xmlns:bpelx="http://schemas.collaxa.com/bpel/extension" xmlns:bpws="http://schemas.xmlsoap.org/ws/2003/03/business-process/" xmlns:ext="http://www.activebpel.org/2.0/bpel/extension" xmlns:ns1="http://astroproject.org/BusinessProcesses/ASTROBookStore" xmlns:tns="http://astroproject.org/BusinessProcesses/ASTROBookStore" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <partnerLinks>
      <partnerLink myRole="bankJPG_Customer" name="bankJPG_PLT" partnerLinkType="bankJPG:bankJPG_PLT" partnerRole="bankJPG_Service"/>
      <partnerLink myRole="ASTROBookCart_Customer" name="ASTROBookCart_PLT" partnerLinkType="ASTROBookCart:ASTROBookCart_PLT" partnerRole="ASTROBookCart_Service"/>
      <partnerLink myRole="ASTROBookSearch_Customer" name="ASTROBookSearch_PLT" partnerLinkType="ASTROBookSearch:ASTROBookSearch_PLT" partnerRole="ASTROBookSearch_Service"/>
      <partnerLink myRole="ASTROBookStore_Service" name="ASTROBookStore_PLT" partnerLinkType="ns1:ASTROBookStore_PLT" partnerRole="ASTROBookStore_Customer"/>
   </partnerLinks>
   <variables>
      <variable messageType="ASTROBookSearch:loginMsg" name="_ASTROBookSearch_login"/>
      <variable messageType="ns1:loginErrorMsg" name="_ASTROBookStore_loginError"/>
      <variable messageType="ASTROBookSearch:loginErrMsg" name="_ASTROBookSearch_loginErr"/>
      <variable messageType="ns1:loginAckMsg" name="_ASTROBookStore_loginAck"/>
      <variable messageType="ASTROBookCart:cartCreateMsg" name="_ASTROBookCart_cartCreate"/>
      <variable messageType="ASTROBookCart:cartCreateErrMsg" name="_ASTROBookCart_cartCreateErr"/>
      <variable messageType="ASTROBookSearch:itemSearchRequestMsg" name="_ASTROBookSearch_itemSearchRequest"/>
      <variable messageType="ns1:searchErrorMsg" name="_ASTROBookStore_searchError"/>
      <variable messageType="ASTROBookSearch:itemSearchErrMsg" name="_ASTROBookSearch_itemSearchErr"/>
      <variable messageType="ns1:searchResultMsg" name="_ASTROBookStore_searchResult"/>
      <variable messageType="ASTROBookCart:cartAddMsg" name="_ASTROBookCart_cartAdd"/>
      <variable messageType="ns1:addErrorMsg" name="_ASTROBookStore_addError"/>
      <variable messageType="ASTROBookCart:cartAddErrMsg" name="_ASTROBookCart_cartAddErr"/>
      <variable messageType="ns1:addAckMsg" name="_ASTROBookStore_addAck"/>
      <variable messageType="ns1:logoutMsg" name="_ASTROBookStore_logout"/>
      <variable messageType="ASTROBookCart:cartGetMsg" name="_ASTROBookCart_cartGet"/>
      <variable messageType="bankJPG:startTransactionMsg" name="_bankJPG_startTransaction"/>
      <variable messageType="ns1:checkoutAckMsg" name="_ASTROBookStore_checkoutAck"/>
      <variable messageType="bankJPG:requestSubmittedMsg" name="_bankJPG_requestSubmitted"/>
      <variable messageType="bankJPG:requestNotAvailableMsg" name="_bankJPG_requestNotAvailable"/>
      <variable messageType="bankJPG:confirmMsg" name="_bankJPG_confirm"/>
      <variable messageType="bankJPG:requestAvailableAckMsg" name="_bankJPG_requestAvailableAck"/>
      <variable messageType="ASTROBookCart:clearMsg" name="_ASTROBookCart_clear"/>
      <variable messageType="ns1:sentMsg" name="_ASTROBookStore_sent"/>
      <variable messageType="bankJPG:confirmAckMsg" name="_bankJPG_confirmAck"/>
      <variable messageType="ns1:confirmErrorMsg" name="_ASTROBookStore_confirmError"/>
      <variable messageType="bankJPG:confirmErrMsg" name="_bankJPG_confirmErr"/>
      <variable messageType="bankJPG:requestAvailableMsg" name="_bankJPG_requestAvailable"/>
      <variable messageType="ns1:requestSubmittedMsg" name="_ASTROBookStore_requestSubmitted"/>
      <variable messageType="bankJPG:startTransactionAckMsg" name="_bankJPG_startTransactionAck"/>
      <variable messageType="ASTROBookCart:nopMsg" name="_ASTROBookCart_nop"/>
      <variable messageType="bankJPG:startTransactionErrMsg" name="_bankJPG_startTransactionErr"/>
      <variable messageType="ASTROBookCart:cartGetResponseMsg" name="_ASTROBookCart_cartGetResponse"/>
      <variable messageType="ASTROBookSearch:logoutMsg" name="_ASTROBookSearch_logout"/>
      <variable messageType="ns1:checkoutErrorMsg" name="_ASTROBookStore_checkoutError"/>
      <variable messageType="ASTROBookCart:cartGetErrMsg" name="_ASTROBookCart_cartGetErr"/>
      <variable messageType="ns1:checkoutMsg" name="_ASTROBookStore_checkout"/>
      <variable messageType="ASTROBookCart:cartAddResponseMsg" name="_ASTROBookCart_cartAddResponse"/>
      <variable messageType="ASTROBookCart:cartCreateResponseMsg" name="_ASTROBookCart_cartCreateResponse"/>
      <variable messageType="ns1:addMsg" name="_ASTROBookStore_add"/>
      <variable messageType="ASTROBookSearch:itemSearchResponseMsg" name="_ASTROBookSearch_itemSearchResponse"/>
      <variable messageType="ns1:searchMsg" name="_ASTROBookStore_search"/>
      <variable messageType="ASTROBookSearch:loginAckMsg" name="_ASTROBookSearch_loginAck"/>
      <variable messageType="ns1:loginMsg" name="_ASTROBookStore_login"/>
      <variable name="_local1_ASTROBookStore_add_quantity" type="xsd:positiveInteger"/>
      <variable name="_local1_ASTROBookStore_add_ASIN" type="xsd:string"/>
      <variable name="_local1_ASTROBookStore_addError_error" type="xsd:string"/>
      <variable name="_local1_ASTROBookStore_addAck_SubTotal" type="xsd:string"/>
      <variable element="ASTROBookSearch:ItemSearchResponse" name="_local1_ASTROBookSearch_itemSearchResponse_body"/>
      <variable element="ASTROBookSearch:ItemSearchResponse" name="_local2_ASTROBookSearch_itemSearchResponse_body"/>
      <variable element="ASTROBookSearch:ItemSearchResponse" name="_local4_ASTROBookSearch_itemSearchResponse_body"/>
      <variable element="ASTROBookSearch:ItemSearchResponse" name="_local3_ASTROBookSearch_itemSearchResponse_body"/>
      <variable element="ASTROBookSearch:ItemSearchResponse" name="_local5_ASTROBookSearch_itemSearchResponse_body"/>
      <variable element="ASTROBookSearch:ItemSearchResponse" name="_local7_ASTROBookSearch_itemSearchResponse_body"/>
      <variable element="ASTROBookSearch:ItemSearchResponse" name="_local8_ASTROBookSearch_itemSearchResponse_body"/>
      <variable element="ASTROBookSearch:ItemSearchResponse" name="_local6_ASTROBookSearch_itemSearchResponse_body"/>
      <variable name="_local2_ASTROBookStore_add_quantity" type="xsd:positiveInteger"/>
      <variable name="_local2_ASTROBookStore_add_ASIN" type="xsd:string"/>
      <variable name="_local2_ASTROBookStore_addError_error" type="xsd:string"/>
      <variable name="_local2_ASTROBookStore_addAck_SubTotal" type="xsd:string"/>
      <variable name="_local_ASTROBookStore_checkoutAck_SubTotal" type="xsd:string"/>
      <variable name="_local2_ASTROBookStore_checkoutAck_SubTotal" type="xsd:string"/>
      <variable name="_local1_ASTROBookStore_checkoutAck_SubTotal" type="xsd:string"/>
      <variable name="_local1_ASTROBookStore_checkoutError_error" type="xsd:string"/>
      <variable name="_local2_ASTROBookStore_checkoutError_error" type="xsd:string"/>
      <variable name="key" type="xsd:string"/>
      <variable messageType="ns1:searchMsg" name="searchMsg"/>
      <variable messageType="ns1:searchResultMsg" name="searchResultMsg"/>
      <variable messageType="ns1:searchErrorMsg" name="searchErrorMsg"/>
      <variable messageType="ns1:checkoutMsg" name="checkoutMsg"/>
      <variable messageType="ns1:checkoutAckMsg" name="checkoutAckMsg"/>
      <variable messageType="ns1:requestSubmittedMsg" name="requestSubmittedMsg"/>
      <variable messageType="ns1:sentMsg" name="sentMsg"/>
      <variable messageType="ns1:confirmErrorMsg" name="confirmErrorMsg"/>
      <variable messageType="ns1:checkoutErrorMsg" name="checkoutErrorMsg"/>
      <variable messageType="ns1:addMsg" name="addMsg"/>
      <variable messageType="ns1:addAckMsg" name="addAckMsg"/>
      <variable messageType="ns1:addErrorMsg" name="addErrorMsg"/>
      <variable messageType="ns1:logoutMsg" name="logoutMsg"/>
   </variables>
   <correlationSets>
      <correlationSet name="_CS_bankJPG_PLT" properties="bankJPG:key"/>
      <correlationSet name="_CS_ASTROBookCart_PLT" properties="ASTROBookCart:key"/>
      <correlationSet name="_CS_ASTROBookSearch_PLT" properties="ASTROBookSearch:key"/>
      <correlationSet name="_CS_ASTROBookStore_PLT" properties="ns1:key"/>
      <correlationSet name="bookstore" properties="ns1:key"/>
   </correlationSets>
   <sequence>
      <receive createInstance="yes" name="receive_ASTROBookStore_login" operation="login" partnerLink="ASTROBookStore_PLT" portType="ns1:ASTROBookStore_PT" variable="_ASTROBookStore_login">
         <correlations>
            <correlation initiate="yes" set="_CS_ASTROBookStore_PLT"/>
         </correlations>
      </receive>
      <assign>
         <copy>
            <from part="key" variable="_ASTROBookStore_login"/>
            <to variable="key"/>
         </copy>
      </assign>
      <assign>
         <copy>
            <from part="customerId" variable="_ASTROBookStore_login"/>
            <to part="customerId" variable="_ASTROBookSearch_login"/>
         </copy>
      </assign>
      <assign>
         <copy>
            <from variable="key"/>
            <to part="key" variable="_ASTROBookSearch_login"/>
         </copy>
      </assign>
      <invoke inputVariable="_ASTROBookSearch_login" name="invoke_ASTROBookSearch_login" operation="login" partnerLink="ASTROBookSearch_PLT" portType="ASTROBookSearch:ASTROBookSearch_PT">
         <correlations>
            <correlation initiate="yes" pattern="out" set="_CS_ASTROBookSearch_PLT"/>
         </correlations>
      </invoke>
      <pick>
         <onMessage operation="loginErr" partnerLink="ASTROBookSearch_PLT" portType="ASTROBookSearch:ASTROBookSearch_CallbackPT" variable="_ASTROBookSearch_loginErr">
            <correlations>
               <correlation set="_CS_ASTROBookSearch_PLT"/>
            </correlations>
            <sequence>
               <assign>
                  <copy>
                     <from variable="key"/>
                     <to part="key" variable="_ASTROBookStore_loginError"/>
                  </copy>
               </assign>
               <invoke inputVariable="_ASTROBookStore_loginError" name="invoke_ASTROBookStore_loginError" operation="loginError" partnerLink="ASTROBookStore_PLT" portType="ns1:ASTROBookStore_CallbackPT">
                  <correlations>
                     <correlation pattern="out" set="_CS_ASTROBookStore_PLT"/>
                  </correlations>
               </invoke>
               <terminate/>
            </sequence>
         </onMessage>
         <onMessage operation="loginAck" partnerLink="ASTROBookSearch_PLT" portType="ASTROBookSearch:ASTROBookSearch_CallbackPT" variable="_ASTROBookSearch_loginAck">
            <correlations>
               <correlation set="_CS_ASTROBookSearch_PLT"/>
            </correlations>
            <sequence>
               <assign>
                  <copy>
                     <from variable="key"/>
                     <to part="key" variable="_ASTROBookStore_loginAck"/>
                  </copy>
               </assign>
               <invoke inputVariable="_ASTROBookStore_loginAck" name="invoke_ASTROBookStore_loginAck" operation="loginAck" partnerLink="ASTROBookStore_PLT" portType="ns1:ASTROBookStore_CallbackPT">
                  <correlations>
                     <correlation pattern="out" set="_CS_ASTROBookStore_PLT"/>
                  </correlations>
               </invoke>
               <while condition="true()">
                  <sequence>
                     <pick name="Pick">
                        <onMessage operation="search" partnerLink="ASTROBookStore_PLT" portType="ns1:ASTROBookStore_PT" variable="searchMsg">
                           <correlations>
                              <correlation set="bookstore"/>
                           </correlations>
                           <sequence>
                              <assign>
                                 <copy>
                                    <from part="author" variable="_ASTROBookStore_search"/>
                                    <to part="body" query="/ASTROBookSearch:ItemSearch/ASTROBookSearch:Request/ASTROBookSearch:Author" variable="_ASTROBookSearch_itemSearchRequest"/>
                                 </copy>
                                 <copy>
                                    <from part="keyword" variable="_ASTROBookStore_search"/>
                                    <to part="body" query="/ASTROBookSearch:ItemSearch/ASTROBookSearch:Request/ASTROBookSearch:Keywords" variable="_ASTROBookSearch_itemSearchRequest"/>
                                 </copy>
                                 <copy>
                                    <from part="publisher" variable="_ASTROBookStore_search"/>
                                    <to part="body" query="/ASTROBookSearch:ItemSearch/ASTROBookSearch:Request/ASTROBookSearch:Publisher" variable="_ASTROBookSearch_itemSearchRequest"/>
                                 </copy>
                                 <copy>
                                    <from part="title" variable="_ASTROBookStore_search"/>
                                    <to part="body" query="/ASTROBookSearch:ItemSearch/ASTROBookSearch:Request/ASTROBookSearch:Title" variable="_ASTROBookSearch_itemSearchRequest"/>
                                 </copy>
                              </assign>
                              <assign>
                                 <copy>
                                    <from variable="key"/>
                                    <to part="key" variable="_ASTROBookSearch_itemSearchRequest"/>
                                 </copy>
                              </assign>
                              <invoke inputVariable="_ASTROBookSearch_itemSearchRequest" name="invoke_ASTROBookSearch_itemSearchRequest" operation="itemSearchRequest" partnerLink="ASTROBookSearch_PLT" portType="ASTROBookSearch:ASTROBookSearch_PT">
                                 <correlations>
                                    <correlation pattern="out" set="_CS_ASTROBookSearch_PLT"/>
                                 </correlations>
                              </invoke>
                              <pick>
                                 <onMessage operation="itemSearchErr" partnerLink="ASTROBookSearch_PLT" portType="ASTROBookSearch:ASTROBookSearch_CallbackPT" variable="_ASTROBookSearch_itemSearchErr">
                                    <correlations>
                                       <correlation set="_CS_ASTROBookSearch_PLT"/>
                                    </correlations>
                                    <sequence>
                                       <assign>
                                          <copy>
                                             <from part="error" query="/ASTROBookSearch:Errors/ASTROBookSearch:Error/ASTROBookSearch:Message" variable="_ASTROBookSearch_itemSearchErr"/>
                                             <to part="error" variable="_ASTROBookStore_searchError"/>
                                          </copy>
                                       </assign>
                                       <assign>
                                          <copy>
                                             <from variable="key"/>
                                             <to part="key" variable="_ASTROBookStore_searchError"/>
                                          </copy>
                                       </assign>
                                       <invoke inputVariable="_ASTROBookStore_searchError" name="invoke_ASTROBookStore_searchError" operation="searchError" partnerLink="ASTROBookStore_PLT" portType="ns1:ASTROBookStore_CallbackPT">
                                          <correlations>
                                             <correlation pattern="out" set="_CS_ASTROBookStore_PLT"/>
                                          </correlations>
                                       </invoke>
                                    </sequence>
                                 </onMessage>
                                 <onMessage operation="itemSearchResponse" partnerLink="ASTROBookSearch_PLT" portType="ASTROBookSearch:ASTROBookSearch_CallbackPT" variable="_ASTROBookSearch_itemSearchResponse">
                                    <correlations>
                                       <correlation set="_CS_ASTROBookSearch_PLT"/>
                                    </correlations>
                                    <sequence>
                                       <assign>
                                          <copy>
                                             <from part="body" variable="_ASTROBookSearch_itemSearchResponse"/>
                                             <to variable="_local1_ASTROBookSearch_itemSearchResponse_body"/>
                                          </copy>
                                       </assign>
                                       <assign>
                                          <copy>
                                             <from query="/ASTROBookSearch:ItemSearchResponse/ASTROBookSearch:Items/ASTROBookSearch:TotalResults" variable="_local1_ASTROBookSearch_itemSearchResponse_body"/>
                                             <to part="numItems" variable="_ASTROBookStore_searchResult"/>
                                          </copy>
                                       </assign>
                                       <assign>
                                          <copy>
                                             <from part="body" variable="_ASTROBookSearch_itemSearchResponse"/>
                                             <to variable="_local2_ASTROBookSearch_itemSearchResponse_body"/>
                                          </copy>
                                       </assign>
                                       <assign>
                                          <copy>
                                             <from query="/ASTROBookSearch:ItemSearchResponse/ASTROBookSearch:Items/ASTROBookSearch:Item[1]/ASTROBookSearch:ASIN" variable="_local2_ASTROBookSearch_itemSearchResponse_body"/>
                                             <to part="ASIN" variable="_ASTROBookStore_searchResult"/>
                                          </copy>
                                       </assign>
                                       <assign>
                                          <copy>
                                             <from part="body" variable="_ASTROBookSearch_itemSearchResponse"/>
                                             <to variable="_local3_ASTROBookSearch_itemSearchResponse_body"/>
                                          </copy>
                                       </assign>
                                       <assign>
                                          <copy>
                                             <from part="body" variable="_ASTROBookSearch_itemSearchResponse"/>
                                             <to variable="_local4_ASTROBookSearch_itemSearchResponse_body"/>
                                          </copy>
                                       </assign>
                                       <assign>
                                          <copy>
                                             <from query="/ASTROBookSearch:ItemSearchResponse/ASTROBookSearch:Items/ASTROBookSearch:Item[1]/ASTROBookSearch:ItemAttributes/ASTROBookSearch:Author[1]" variable="_local4_ASTROBookSearch_itemSearchResponse_body"/>
                                             <to part="author" variable="_ASTROBookStore_searchResult"/>
                                          </copy>
                                       </assign>
                                       <assign>
                                          <copy>
                                             <from query="/ASTROBookSearch:ItemSearchResponse/ASTROBookSearch:Items/ASTROBookSearch:Item[1]/ASTROBookSearch:DetailPageURL" variable="_local3_ASTROBookSearch_itemSearchResponse_body"/>
                                             <to part="detailPageURL" variable="_ASTROBookStore_searchResult"/>
                                          </copy>
                                       </assign>
                                       <assign>
                                          <copy>
                                             <from part="body" variable="_ASTROBookSearch_itemSearchResponse"/>
                                             <to variable="_local5_ASTROBookSearch_itemSearchResponse_body"/>
                                          </copy>
                                       </assign>
                                       <assign>
                                          <copy>
                                             <from query="/ASTROBookSearch:ItemSearchResponse/ASTROBookSearch:Items/ASTROBookSearch:Item[1]/ASTROBookSearch:ItemAttributes/ASTROBookSearch:Title" variable="_local5_ASTROBookSearch_itemSearchResponse_body"/>
                                             <to part="title" variable="_ASTROBookStore_searchResult"/>
                                          </copy>
                                       </assign>
                                       <assign>
                                          <copy>
                                             <from part="body" variable="_ASTROBookSearch_itemSearchResponse"/>
                                             <to variable="_local6_ASTROBookSearch_itemSearchResponse_body"/>
                                          </copy>
                                       </assign>
                                       <assign>
                                          <copy>
                                             <from part="body" variable="_ASTROBookSearch_itemSearchResponse"/>
                                             <to variable="_local7_ASTROBookSearch_itemSearchResponse_body"/>
                                          </copy>
                                       </assign>
                                       <assign>
                                          <copy>
                                             <from query="/ASTROBookSearch:ItemSearchResponse/ASTROBookSearch:Items/ASTROBookSearch:Item[1]/ASTROBookSearch:ItemAttributes/ASTROBookSearch:ISBN" variable="_local7_ASTROBookSearch_itemSearchResponse_body"/>
                                             <to part="ISBN" variable="_ASTROBookStore_searchResult"/>
                                          </copy>
                                       </assign>
                                       <assign>
                                          <copy>
                                             <from part="body" variable="_ASTROBookSearch_itemSearchResponse"/>
                                             <to variable="_local8_ASTROBookSearch_itemSearchResponse_body"/>
                                          </copy>
                                       </assign>
                                       <assign>
                                          <copy>
                                             <from query="/ASTROBookSearch:ItemSearchResponse/ASTROBookSearch:Items/ASTROBookSearch:Item[1]/ASTROBookSearch:ItemAttributes/ASTROBookSearch:ListPrice/ASTROBookSearch:FormattedPrice" variable="_local8_ASTROBookSearch_itemSearchResponse_body"/>
                                             <to part="price" variable="_ASTROBookStore_searchResult"/>
                                          </copy>
                                       </assign>
                                       <assign>
                                          <copy>
                                             <from query="/ASTROBookSearch:ItemSearchResponse/ASTROBookSearch:Items/ASTROBookSearch:Item[1]/ASTROBookSearch:ItemAttributes/ASTROBookSearch:Publisher" variable="_local6_ASTROBookSearch_itemSearchResponse_body"/>
                                             <to part="publisher" variable="_ASTROBookStore_searchResult"/>
                                          </copy>
                                       </assign>
                                       <assign>
                                          <copy>
                                             <from variable="key"/>
                                             <to part="key" variable="_ASTROBookStore_searchResult"/>
                                          </copy>
                                       </assign>
                                       <invoke inputVariable="_ASTROBookStore_searchResult" name="invoke_ASTROBookStore_searchResult" operation="searchResult" partnerLink="ASTROBookStore_PLT" portType="ns1:ASTROBookStore_CallbackPT">
                                          <correlations>
                                             <correlation pattern="out" set="_CS_ASTROBookStore_PLT"/>
                                          </correlations>
                                       </invoke>
                                    </sequence>
                                 </onMessage>
                              </pick>
                           </sequence>
                        </onMessage>
                        <onMessage operation="add" partnerLink="ASTROBookStore_PLT" portType="ns1:ASTROBookStore_PT" variable="addMsg">
                           <correlations>
                              <correlation set="bookstore"/>
                           </correlations>
                           <ext:break/>
                        </onMessage>
                        <onMessage operation="logout" partnerLink="ASTROBookStore_PLT" portType="ns1:ASTROBookStore_PT" variable="logoutMsg">
                           <correlations>
                              <correlation set="bookstore"/>
                           </correlations>
                           <sequence>
                              <assign>
                                 <copy>
                                    <from variable="key"/>
                                    <to part="key" variable="_ASTROBookSearch_logout"/>
                                 </copy>
                              </assign>
                              <invoke inputVariable="_ASTROBookSearch_logout" name="invoke_ASTROBookSearch_logout" operation="logout" partnerLink="ASTROBookSearch_PLT" portType="ASTROBookSearch:ASTROBookSearch_PT">
                                 <correlations>
                                    <correlation pattern="out" set="_CS_ASTROBookSearch_PLT"/>
                                 </correlations>
                              </invoke>
                              <terminate/>
                           </sequence>
                        </onMessage>
                     </pick>
                  </sequence>
               </while>
               <sequence>
                  <assign>
                     <copy>
                        <from part="quantity" variable="_ASTROBookStore_add"/>
                        <to variable="_local1_ASTROBookStore_add_quantity"/>
                     </copy>
                  </assign>
                  <assign>
                     <copy>
                        <from part="ASIN" variable="_ASTROBookStore_add"/>
                        <to variable="_local1_ASTROBookStore_add_ASIN"/>
                     </copy>
                  </assign>
                  <assign>
                     <copy>
                        <from variable="_local1_ASTROBookStore_add_ASIN"/>
                        <to part="body" query="/ASTROBookCart:CartCreate/ASTROBookCart:Request/ASTROBookCart:Items/ASTROBookCart:Item/ASTROBookCart:ASIN" variable="_ASTROBookCart_cartCreate"/>
                     </copy>
                     <copy>
                        <from variable="_local1_ASTROBookStore_add_quantity"/>
                        <to part="body" query="/ASTROBookCart:CartCreate/ASTROBookCart:Request/ASTROBookCart:Items/ASTROBookCart:Item/ASTROBookCart:Quantity" variable="_ASTROBookCart_cartCreate"/>
                     </copy>
                  </assign>
                  <assign>
                     <copy>
                        <from variable="key"/>
                        <to part="key" variable="_ASTROBookCart_cartCreate"/>
                     </copy>
                  </assign>
                  <invoke inputVariable="_ASTROBookCart_cartCreate" name="invoke_ASTROBookCart_cartCreate" operation="cartCreate" partnerLink="ASTROBookCart_PLT" portType="ASTROBookCart:ASTROBookCart_PT">
                     <correlations>
                        <correlation initiate="yes" pattern="out" set="_CS_ASTROBookCart_PLT"/>
                     </correlations>
                  </invoke>
                  <pick>
                     <onMessage operation="cartCreateErr" partnerLink="ASTROBookCart_PLT" portType="ASTROBookCart:ASTROBookCart_CallbackPT" variable="_ASTROBookCart_cartCreateErr">
                        <correlations>
                           <correlation set="_CS_ASTROBookCart_PLT"/>
                        </correlations>
                        <sequence>
                           <assign>
                              <copy>
                                 <from part="error" query="/ASTROBookCart:Errors/ASTROBookCart:Error/ASTROBookCart:Message" variable="_ASTROBookCart_cartCreateErr"/>
                                 <to variable="_local1_ASTROBookStore_addError_error"/>
                              </copy>
                           </assign>
                           <assign>
                              <copy>
                                 <from variable="_local1_ASTROBookStore_addError_error"/>
                                 <to part="error" variable="_ASTROBookStore_addError"/>
                              </copy>
                           </assign>
                           <assign>
                              <copy>
                                 <from variable="key"/>
                                 <to part="key" variable="_ASTROBookSearch_logout"/>
                              </copy>
                           </assign>
                           <invoke inputVariable="_ASTROBookSearch_logout" name="invoke_ASTROBookSearch_logout" operation="logout" partnerLink="ASTROBookSearch_PLT" portType="ASTROBookSearch:ASTROBookSearch_PT">
                              <correlations>
                                 <correlation pattern="out" set="_CS_ASTROBookSearch_PLT"/>
                              </correlations>
                           </invoke>
                           <assign>
                              <copy>
                                 <from variable="key"/>
                                 <to part="key" variable="_ASTROBookStore_addError"/>
                              </copy>
                           </assign>
                           <invoke inputVariable="_ASTROBookStore_addError" name="invoke_ASTROBookStore_addError" operation="addError" partnerLink="ASTROBookStore_PLT" portType="ns1:ASTROBookStore_CallbackPT">
                              <correlations>
                                 <correlation pattern="out" set="_CS_ASTROBookStore_PLT"/>
                              </correlations>
                           </invoke>
                           <terminate/>
                        </sequence>
                     </onMessage>
                     <onMessage operation="cartCreateResponse" partnerLink="ASTROBookCart_PLT" portType="ASTROBookCart:ASTROBookCart_CallbackPT" variable="_ASTROBookCart_cartCreateResponse">
                        <correlations>
                           <correlation set="_CS_ASTROBookCart_PLT"/>
                        </correlations>
                        <sequence>
                           <assign>
                              <copy>
                                 <from part="body" query="/ASTROBookCart:CartCreateResponse/ASTROBookCart:Cart/ASTROBookCart:SubTotal/ASTROBookCart:FormattedPrice" variable="_ASTROBookCart_cartCreateResponse"/>
                                 <to variable="_local1_ASTROBookStore_addAck_SubTotal"/>
                              </copy>
                           </assign>
                           <assign>
                              <copy>
                                 <from variable="_local1_ASTROBookStore_addAck_SubTotal"/>
                                 <to part="SubTotal" variable="_ASTROBookStore_addAck"/>
                              </copy>
                           </assign>
                           <assign>
                              <copy>
                                 <from variable="key"/>
                                 <to part="key" variable="_ASTROBookStore_addAck"/>
                              </copy>
                           </assign>
                           <invoke inputVariable="_ASTROBookStore_addAck" name="invoke_ASTROBookStore_addAck" operation="addAck" partnerLink="ASTROBookStore_PLT" portType="ns1:ASTROBookStore_CallbackPT">
                              <correlations>
                                 <correlation pattern="out" set="_CS_ASTROBookStore_PLT"/>
                              </correlations>
                           </invoke>
                           <while condition="true()">
                              <sequence>
                                 <pick name="Pick">
                                    <onMessage operation="search" partnerLink="ASTROBookStore_PLT" portType="ns1:ASTROBookStore_PT" variable="searchMsg">
                                       <correlations>
                                          <correlation set="bookstore"/>
                                       </correlations>
                                       <sequence>
                                          <assign>
                                             <copy>
                                                <from part="author" variable="_ASTROBookStore_search"/>
                                                <to part="body" query="/ASTROBookSearch:ItemSearch/ASTROBookSearch:Request/ASTROBookSearch:Author" variable="_ASTROBookSearch_itemSearchRequest"/>
                                             </copy>
                                             <copy>
                                                <from part="keyword" variable="_ASTROBookStore_search"/>
                                                <to part="body" query="/ASTROBookSearch:ItemSearch/ASTROBookSearch:Request/ASTROBookSearch:Keywords" variable="_ASTROBookSearch_itemSearchRequest"/>
                                             </copy>
                                             <copy>
                                                <from part="publisher" variable="_ASTROBookStore_search"/>
                                                <to part="body" query="/ASTROBookSearch:ItemSearch/ASTROBookSearch:Request/ASTROBookSearch:Publisher" variable="_ASTROBookSearch_itemSearchRequest"/>
                                             </copy>
                                             <copy>
                                                <from part="title" variable="_ASTROBookStore_search"/>
                                                <to part="body" query="/ASTROBookSearch:ItemSearch/ASTROBookSearch:Request/ASTROBookSearch:Title" variable="_ASTROBookSearch_itemSearchRequest"/>
                                             </copy>
                                          </assign>
                                          <assign>
                                             <copy>
                                                <from variable="key"/>
                                                <to part="key" variable="_ASTROBookSearch_itemSearchRequest"/>
                                             </copy>
                                          </assign>
                                          <invoke inputVariable="_ASTROBookSearch_itemSearchRequest" name="invoke_ASTROBookSearch_itemSearchRequest" operation="itemSearchRequest" partnerLink="ASTROBookSearch_PLT" portType="ASTROBookSearch:ASTROBookSearch_PT">
                                             <correlations>
                                                <correlation pattern="out" set="_CS_ASTROBookSearch_PLT"/>
                                             </correlations>
                                          </invoke>
                                          <pick>
                                             <onMessage operation="itemSearchErr" partnerLink="ASTROBookSearch_PLT" portType="ASTROBookSearch:ASTROBookSearch_CallbackPT" variable="_ASTROBookSearch_itemSearchErr">
                                                <correlations>
                                                   <correlation set="_CS_ASTROBookSearch_PLT"/>
                                                </correlations>
                                                <sequence>
                                                   <assign>
                                                      <copy>
                                                         <from part="error" query="/ASTROBookSearch:Errors/ASTROBookSearch:Error/ASTROBookSearch:Message" variable="_ASTROBookSearch_itemSearchErr"/>
                                                         <to part="error" variable="_ASTROBookStore_searchError"/>
                                                      </copy>
                                                   </assign>
                                                   <assign>
                                                      <copy>
                                                         <from variable="key"/>
                                                         <to part="key" variable="_ASTROBookStore_searchError"/>
                                                      </copy>
                                                   </assign>
                                                   <invoke inputVariable="_ASTROBookStore_searchError" name="invoke_ASTROBookStore_searchError" operation="searchError" partnerLink="ASTROBookStore_PLT" portType="ns1:ASTROBookStore_CallbackPT">
                                                      <correlations>
                                                         <correlation pattern="out" set="_CS_ASTROBookStore_PLT"/>
                                                      </correlations>
                                                   </invoke>
                                                </sequence>
                                             </onMessage>
                                             <onMessage operation="itemSearchResponse" partnerLink="ASTROBookSearch_PLT" portType="ASTROBookSearch:ASTROBookSearch_CallbackPT" variable="_ASTROBookSearch_itemSearchResponse">
                                                <correlations>
                                                   <correlation set="_CS_ASTROBookSearch_PLT"/>
                                                </correlations>
                                                <sequence>
                                                   <assign>
                                                      <copy>
                                                         <from part="body" variable="_ASTROBookSearch_itemSearchResponse"/>
                                                         <to variable="_local1_ASTROBookSearch_itemSearchResponse_body"/>
                                                      </copy>
                                                   </assign>
                                                   <assign>
                                                      <copy>
                                                         <from query="/ASTROBookSearch:ItemSearchResponse/ASTROBookSearch:Items/ASTROBookSearch:TotalResults" variable="_local1_ASTROBookSearch_itemSearchResponse_body"/>
                                                         <to part="numItems" variable="_ASTROBookStore_searchResult"/>
                                                      </copy>
                                                   </assign>
                                                   <assign>
                                                      <copy>
                                                         <from part="body" variable="_ASTROBookSearch_itemSearchResponse"/>
                                                         <to variable="_local2_ASTROBookSearch_itemSearchResponse_body"/>
                                                      </copy>
                                                   </assign>
                                                   <assign>
                                                      <copy>
                                                         <from query="/ASTROBookSearch:ItemSearchResponse/ASTROBookSearch:Items/ASTROBookSearch:Item[1]/ASTROBookSearch:ASIN" variable="_local2_ASTROBookSearch_itemSearchResponse_body"/>
                                                         <to part="ASIN" variable="_ASTROBookStore_searchResult"/>
                                                      </copy>
                                                   </assign>
                                                   <assign>
                                                      <copy>
                                                         <from part="body" variable="_ASTROBookSearch_itemSearchResponse"/>
                                                         <to variable="_local3_ASTROBookSearch_itemSearchResponse_body"/>
                                                      </copy>
                                                   </assign>
                                                   <assign>
                                                      <copy>
                                                         <from part="body" variable="_ASTROBookSearch_itemSearchResponse"/>
                                                         <to variable="_local4_ASTROBookSearch_itemSearchResponse_body"/>
                                                      </copy>
                                                   </assign>
                                                   <assign>
                                                      <copy>
                                                         <from query="/ASTROBookSearch:ItemSearchResponse/ASTROBookSearch:Items/ASTROBookSearch:Item[1]/ASTROBookSearch:ItemAttributes/ASTROBookSearch:Author[1]" variable="_local4_ASTROBookSearch_itemSearchResponse_body"/>
                                                         <to part="author" variable="_ASTROBookStore_searchResult"/>
                                                      </copy>
                                                   </assign>
                                                   <assign>
                                                      <copy>
                                                         <from query="/ASTROBookSearch:ItemSearchResponse/ASTROBookSearch:Items/ASTROBookSearch:Item[1]/ASTROBookSearch:DetailPageURL" variable="_local3_ASTROBookSearch_itemSearchResponse_body"/>
                                                         <to part="detailPageURL" variable="_ASTROBookStore_searchResult"/>
                                                      </copy>
                                                   </assign>
                                                   <assign>
                                                      <copy>
                                                         <from part="body" variable="_ASTROBookSearch_itemSearchResponse"/>
                                                         <to variable="_local5_ASTROBookSearch_itemSearchResponse_body"/>
                                                      </copy>
                                                   </assign>
                                                   <assign>
                                                      <copy>
                                                         <from query="/ASTROBookSearch:ItemSearchResponse/ASTROBookSearch:Items/ASTROBookSearch:Item[1]/ASTROBookSearch:ItemAttributes/ASTROBookSearch:Title" variable="_local5_ASTROBookSearch_itemSearchResponse_body"/>
                                                         <to part="title" variable="_ASTROBookStore_searchResult"/>
                                                      </copy>
                                                   </assign>
                                                   <assign>
                                                      <copy>
                                                         <from part="body" variable="_ASTROBookSearch_itemSearchResponse"/>
                                                         <to variable="_local6_ASTROBookSearch_itemSearchResponse_body"/>
                                                      </copy>
                                                   </assign>
                                                   <assign>
                                                      <copy>
                                                         <from part="body" variable="_ASTROBookSearch_itemSearchResponse"/>
                                                         <to variable="_local7_ASTROBookSearch_itemSearchResponse_body"/>
                                                      </copy>
                                                   </assign>
                                                   <assign>
                                                      <copy>
                                                         <from query="/ASTROBookSearch:ItemSearchResponse/ASTROBookSearch:Items/ASTROBookSearch:Item[1]/ASTROBookSearch:ItemAttributes/ASTROBookSearch:ISBN" variable="_local7_ASTROBookSearch_itemSearchResponse_body"/>
                                                         <to part="ISBN" variable="_ASTROBookStore_searchResult"/>
                                                      </copy>
                                                   </assign>
                                                   <assign>
                                                      <copy>
                                                         <from part="body" variable="_ASTROBookSearch_itemSearchResponse"/>
                                                         <to variable="_local8_ASTROBookSearch_itemSearchResponse_body"/>
                                                      </copy>
                                                   </assign>
                                                   <assign>
                                                      <copy>
                                                         <from query="/ASTROBookSearch:ItemSearchResponse/ASTROBookSearch:Items/ASTROBookSearch:Item[1]/ASTROBookSearch:ItemAttributes/ASTROBookSearch:ListPrice/ASTROBookSearch:FormattedPrice" variable="_local8_ASTROBookSearch_itemSearchResponse_body"/>
                                                         <to part="price" variable="_ASTROBookStore_searchResult"/>
                                                      </copy>
                                                   </assign>
                                                   <assign>
                                                      <copy>
                                                         <from query="/ASTROBookSearch:ItemSearchResponse/ASTROBookSearch:Items/ASTROBookSearch:Item[1]/ASTROBookSearch:ItemAttributes/ASTROBookSearch:Publisher" variable="_local6_ASTROBookSearch_itemSearchResponse_body"/>
                                                         <to part="publisher" variable="_ASTROBookStore_searchResult"/>
                                                      </copy>
                                                   </assign>
                                                   <assign>
                                                      <copy>
                                                         <from variable="key"/>
                                                         <to part="key" variable="_ASTROBookStore_searchResult"/>
                                                      </copy>
                                                   </assign>
                                                   <invoke inputVariable="_ASTROBookStore_searchResult" name="invoke_ASTROBookStore_searchResult" operation="searchResult" partnerLink="ASTROBookStore_PLT" portType="ns1:ASTROBookStore_CallbackPT">
                                                      <correlations>
                                                         <correlation pattern="out" set="_CS_ASTROBookStore_PLT"/>
                                                      </correlations>
                                                   </invoke>
                                                </sequence>
                                             </onMessage>
                                          </pick>
                                       </sequence>
                                    </onMessage>
                                    <onMessage operation="add" partnerLink="ASTROBookStore_PLT" portType="ns1:ASTROBookStore_PT" variable="addMsg">
                                       <correlations>
                                          <correlation set="bookstore"/>
                                       </correlations>
                                       <sequence>
                                          <assign>
                                             <copy>
                                                <from part="ASIN" variable="_ASTROBookStore_add"/>
                                                <to variable="_local2_ASTROBookStore_add_ASIN"/>
                                             </copy>
                                          </assign>
                                          <assign>
                                             <copy>
                                                <from part="quantity" variable="_ASTROBookStore_add"/>
                                                <to variable="_local2_ASTROBookStore_add_quantity"/>
                                             </copy>
                                          </assign>
                                          <assign>
                                             <copy>
                                                <from variable="_local2_ASTROBookStore_add_ASIN"/>
                                                <to part="body" query="/ASTROBookCart:CartAdd/ASTROBookCart:Request/ASTROBookCart:Items/ASTROBookCart:Item/ASTROBookCart:ASIN" variable="_ASTROBookCart_cartAdd"/>
                                             </copy>
                                             <copy>
                                                <from variable="_local2_ASTROBookStore_add_quantity"/>
                                                <to part="body" query="/ASTROBookCart:CartAdd/ASTROBookCart:Request/ASTROBookCart:Items/ASTROBookCart:Item/ASTROBookCart:Quantity" variable="_ASTROBookCart_cartAdd"/>
                                             </copy>
                                          </assign>
                                          <assign>
                                             <copy>
                                                <from variable="key"/>
                                                <to part="key" variable="_ASTROBookCart_cartAdd"/>
                                             </copy>
                                          </assign>
                                          <invoke inputVariable="_ASTROBookCart_cartAdd" name="invoke_ASTROBookCart_cartAdd" operation="cartAdd" partnerLink="ASTROBookCart_PLT" portType="ASTROBookCart:ASTROBookCart_PT">
                                             <correlations>
                                                <correlation pattern="out" set="_CS_ASTROBookCart_PLT"/>
                                             </correlations>
                                          </invoke>
                                          <pick>
                                             <onMessage operation="cartAddErr" partnerLink="ASTROBookCart_PLT" portType="ASTROBookCart:ASTROBookCart_CallbackPT" variable="_ASTROBookCart_cartAddErr">
                                                <correlations>
                                                   <correlation set="_CS_ASTROBookCart_PLT"/>
                                                </correlations>
                                                <sequence>
                                                   <assign>
                                                      <copy>
                                                         <from variable="key"/>
                                                         <to part="key" variable="_ASTROBookCart_nop"/>
                                                      </copy>
                                                   </assign>
                                                   <invoke inputVariable="_ASTROBookCart_nop" name="invoke_ASTROBookCart_nop" operation="nop" partnerLink="ASTROBookCart_PLT" portType="ASTROBookCart:ASTROBookCart_PT">
                                                      <correlations>
                                                         <correlation pattern="out" set="_CS_ASTROBookCart_PLT"/>
                                                      </correlations>
                                                   </invoke>
                                                   <assign>
                                                      <copy>
                                                         <from variable="key"/>
                                                         <to part="key" variable="_ASTROBookCart_nop"/>
                                                      </copy>
                                                   </assign>
                                                   <invoke inputVariable="_ASTROBookCart_nop" name="invoke_ASTROBookCart_nop" operation="nop" partnerLink="ASTROBookCart_PLT" portType="ASTROBookCart:ASTROBookCart_PT">
                                                      <correlations>
                                                         <correlation pattern="out" set="_CS_ASTROBookCart_PLT"/>
                                                      </correlations>
                                                   </invoke>
                                                   <assign>
                                                      <copy>
                                                         <from variable="key"/>
                                                         <to part="key" variable="_ASTROBookSearch_logout"/>
                                                      </copy>
                                                   </assign>
                                                   <invoke inputVariable="_ASTROBookSearch_logout" name="invoke_ASTROBookSearch_logout" operation="logout" partnerLink="ASTROBookSearch_PLT" portType="ASTROBookSearch:ASTROBookSearch_PT">
                                                      <correlations>
                                                         <correlation pattern="out" set="_CS_ASTROBookSearch_PLT"/>
                                                      </correlations>
                                                   </invoke>
                                                   <assign>
                                                      <copy>
                                                         <from part="error" query="/ASTROBookCart:Errors/ASTROBookCart:Error/ASTROBookCart:Message" variable="_ASTROBookCart_cartAddErr"/>
                                                         <to variable="_local2_ASTROBookStore_addError_error"/>
                                                      </copy>
                                                   </assign>
                                                   <assign>
                                                      <copy>
                                                         <from variable="_local2_ASTROBookStore_addError_error"/>
                                                         <to part="error" variable="_ASTROBookStore_addError"/>
                                                      </copy>
                                                   </assign>
                                                   <assign>
                                                      <copy>
                                                         <from variable="key"/>
                                                         <to part="key" variable="_ASTROBookStore_addError"/>
                                                      </copy>
                                                   </assign>
                                                   <invoke inputVariable="_ASTROBookStore_addError" name="invoke_ASTROBookStore_addError" operation="addError" partnerLink="ASTROBookStore_PLT" portType="ns1:ASTROBookStore_CallbackPT">
                                                      <correlations>
                                                         <correlation pattern="out" set="_CS_ASTROBookStore_PLT"/>
                                                      </correlations>
                                                   </invoke>
                                                   <terminate/>
                                                </sequence>
                                             </onMessage>
                                             <onMessage operation="cartAddResponse" partnerLink="ASTROBookCart_PLT" portType="ASTROBookCart:ASTROBookCart_CallbackPT" variable="_ASTROBookCart_cartAddResponse">
                                                <correlations>
                                                   <correlation set="_CS_ASTROBookCart_PLT"/>
                                                </correlations>
                                                <sequence>
                                                   <assign>
                                                      <copy>
                                                         <from part="body" query="/ASTROBookCart:CartAddResponse/ASTROBookCart:Cart/ASTROBookCart:SubTotal/ASTROBookCart:FormattedPrice" variable="_ASTROBookCart_cartAddResponse"/>
                                                         <to variable="_local2_ASTROBookStore_addAck_SubTotal"/>
                                                      </copy>
                                                   </assign>
                                                   <assign>
                                                      <copy>
                                                         <from variable="_local2_ASTROBookStore_addAck_SubTotal"/>
                                                         <to part="SubTotal" variable="_ASTROBookStore_addAck"/>
                                                      </copy>
                                                   </assign>
                                                   <assign>
                                                      <copy>
                                                         <from variable="key"/>
                                                         <to part="key" variable="_ASTROBookStore_addAck"/>
                                                      </copy>
                                                   </assign>
                                                   <invoke inputVariable="_ASTROBookStore_addAck" name="invoke_ASTROBookStore_addAck" operation="addAck" partnerLink="ASTROBookStore_PLT" portType="ns1:ASTROBookStore_CallbackPT">
                                                      <correlations>
                                                         <correlation pattern="out" set="_CS_ASTROBookStore_PLT"/>
                                                      </correlations>
                                                   </invoke>
                                                </sequence>
                                             </onMessage>
                                          </pick>
                                       </sequence>
                                    </onMessage>
                                    <onMessage operation="checkout" partnerLink="ASTROBookStore_PLT" portType="ns1:ASTROBookStore_PT" variable="checkoutMsg">
                                       <correlations>
                                          <correlation set="bookstore"/>
                                       </correlations>
                                       <sequence>
                                          <assign>
                                             <copy>
                                                <from variable="key"/>
                                                <to part="key" variable="_ASTROBookCart_nop"/>
                                             </copy>
                                          </assign>
                                          <invoke inputVariable="_ASTROBookCart_nop" name="invoke_ASTROBookCart_nop" operation="nop" partnerLink="ASTROBookCart_PLT" portType="ASTROBookCart:ASTROBookCart_PT">
                                             <correlations>
                                                <correlation pattern="out" set="_CS_ASTROBookCart_PLT"/>
                                             </correlations>
                                          </invoke>
                                          <assign>
                                             <copy>
                                                <from part="key" variable="_ASTROBookStore_checkout"/>
                                                <to part="key" variable="_ASTROBookCart_cartGet"/>
                                             </copy>
                                          </assign>
                                          <assign>
                                             <copy>
                                                <from variable="key"/>
                                                <to part="key" variable="_ASTROBookCart_cartGet"/>
                                             </copy>
                                          </assign>
                                          <invoke inputVariable="_ASTROBookCart_cartGet" name="invoke_ASTROBookCart_cartGet" operation="cartGet" partnerLink="ASTROBookCart_PLT" portType="ASTROBookCart:ASTROBookCart_PT">
                                             <correlations>
                                                <correlation pattern="out" set="_CS_ASTROBookCart_PLT"/>
                                             </correlations>
                                          </invoke>
                                          <pick>
                                             <onMessage operation="cartGetResponse" partnerLink="ASTROBookCart_PLT" portType="ASTROBookCart:ASTROBookCart_CallbackPT" variable="_ASTROBookCart_cartGetResponse">
                                                <correlations>
                                                   <correlation set="_CS_ASTROBookCart_PLT"/>
                                                </correlations>
                                                <sequence>
                                                   <assign>
                                                      <copy>
                                                         <from expression="'ASTROBookStore@astroproject.org'"/>
                                                         <to part="shopEmail" variable="_bankJPG_startTransaction"/>
                                                      </copy>
                                                   </assign>
                                                   <assign>
                                                      <copy>
                                                         <from part="body" query="/ASTROBookCart:CartGetResponse/ASTROBookCart:Cart/ASTROBookCart:SubTotal/ASTROBookCart:FormattedPrice" variable="_ASTROBookCart_cartGetResponse"/>
                                                         <to variable="_local_ASTROBookStore_checkoutAck_SubTotal"/>
                                                      </copy>
                                                   </assign>
                                                   <assign>
                                                      <copy>
                                                         <from variable="_local_ASTROBookStore_checkoutAck_SubTotal"/>
                                                         <to variable="_local1_ASTROBookStore_checkoutAck_SubTotal"/>
                                                      </copy>
                                                   </assign>
                                                   <assign>
                                                      <copy>
                                                         <from variable="_local_ASTROBookStore_checkoutAck_SubTotal"/>
                                                         <to variable="_local2_ASTROBookStore_checkoutAck_SubTotal"/>
                                                      </copy>
                                                   </assign>
                                                   <assign>
                                                      <copy>
                                                         <from variable="_local2_ASTROBookStore_checkoutAck_SubTotal"/>
                                                         <to part="amount" variable="_bankJPG_startTransaction"/>
                                                      </copy>
                                                   </assign>
                                                   <assign>
                                                      <copy>
                                                         <from expression="'ASTROBookStore'"/>
                                                         <to part="shopId" variable="_bankJPG_startTransaction"/>
                                                      </copy>
                                                   </assign>
                                                   <assign>
                                                      <copy>
                                                         <from variable="key"/>
                                                         <to part="key" variable="_bankJPG_startTransaction"/>
                                                      </copy>
                                                   </assign>
                                                   <invoke inputVariable="_bankJPG_startTransaction" name="invoke_bankJPG_startTransaction" operation="startTransaction" partnerLink="bankJPG_PLT" portType="bankJPG:bankJPG_PT">
                                                      <correlations>
                                                         <correlation initiate="yes" pattern="out" set="_CS_bankJPG_PLT"/>
                                                      </correlations>
                                                   </invoke>
                                                   <pick>
                                                      <onMessage operation="startTransactionAck" partnerLink="bankJPG_PLT" portType="bankJPG:bankJPG_CallbackPT" variable="_bankJPG_startTransactionAck">
                                                         <correlations>
                                                            <correlation set="_CS_bankJPG_PLT"/>
                                                         </correlations>
                                                         <sequence>
                                                            <assign>
                                                               <copy>
                                                                  <from part="paymentURL" variable="_bankJPG_startTransactionAck"/>
                                                                  <to part="paymentURL" variable="_ASTROBookStore_checkoutAck"/>
                                                               </copy>
                                                            </assign>
                                                            <assign>
                                                               <copy>
                                                                  <from variable="_local1_ASTROBookStore_checkoutAck_SubTotal"/>
                                                                  <to part="SubTotal" variable="_ASTROBookStore_checkoutAck"/>
                                                               </copy>
                                                            </assign>
                                                            <assign>
                                                               <copy>
                                                                  <from variable="key"/>
                                                                  <to part="key" variable="_ASTROBookStore_checkoutAck"/>
                                                               </copy>
                                                            </assign>
                                                            <invoke inputVariable="_ASTROBookStore_checkoutAck" name="invoke_ASTROBookStore_checkoutAck" operation="checkoutAck" partnerLink="ASTROBookStore_PLT" portType="ns1:ASTROBookStore_CallbackPT">
                                                               <correlations>
                                                                  <correlation pattern="out" set="_CS_ASTROBookStore_PLT"/>
                                                               </correlations>
                                                            </invoke>
                                                            <receive name="receive_ASTROBookStore_requestSubmitted" operation="requestSubmitted" partnerLink="ASTROBookStore_PLT" portType="ns1:ASTROBookStore_PT" variable="_ASTROBookStore_requestSubmitted">
                                                               <correlations>
                                                                  <correlation set="_CS_ASTROBookStore_PLT"/>
                                                               </correlations>
                                                            </receive>
                                                            <assign>
                                                               <copy>
                                                                  <from part="transactionId" variable="_ASTROBookStore_requestSubmitted"/>
                                                                  <to part="transactionId" variable="_bankJPG_requestSubmitted"/>
                                                               </copy>
                                                            </assign>
                                                            <assign>
                                                               <copy>
                                                                  <from variable="key"/>
                                                                  <to part="key" variable="_bankJPG_requestSubmitted"/>
                                                               </copy>
                                                            </assign>
                                                            <invoke inputVariable="_bankJPG_requestSubmitted" name="invoke_bankJPG_requestSubmitted" operation="requestSubmitted" partnerLink="bankJPG_PLT" portType="bankJPG:bankJPG_PT">
                                                               <correlations>
                                                                  <correlation pattern="out" set="_CS_bankJPG_PLT"/>
                                                               </correlations>
                                                            </invoke>
                                                            <pick>
                                                               <onMessage operation="requestNotAvailable" partnerLink="bankJPG_PLT" portType="bankJPG:bankJPG_CallbackPT" variable="_bankJPG_requestNotAvailable">
                                                                  <correlations>
                                                                     <correlation set="_CS_bankJPG_PLT"/>
                                                                  </correlations>
                                                                  <sequence>
                                                                     <assign>
                                                                        <copy>
                                                                           <from part="errorDesc" variable="_bankJPG_requestNotAvailable"/>
                                                                           <to part="error" variable="_ASTROBookStore_confirmError"/>
                                                                        </copy>
                                                                     </assign>
                                                                     <assign>
                                                                        <copy>
                                                                           <from variable="key"/>
                                                                           <to part="key" variable="_ASTROBookCart_nop"/>
                                                                        </copy>
                                                                     </assign>
                                                                     <invoke inputVariable="_ASTROBookCart_nop" name="invoke_ASTROBookCart_nop" operation="nop" partnerLink="ASTROBookCart_PLT" portType="ASTROBookCart:ASTROBookCart_PT">
                                                                        <correlations>
                                                                           <correlation pattern="out" set="_CS_ASTROBookCart_PLT"/>
                                                                        </correlations>
                                                                     </invoke>
                                                                     <assign>
                                                                        <copy>
                                                                           <from variable="key"/>
                                                                           <to part="key" variable="_ASTROBookSearch_logout"/>
                                                                        </copy>
                                                                     </assign>
                                                                     <invoke inputVariable="_ASTROBookSearch_logout" name="invoke_ASTROBookSearch_logout" operation="logout" partnerLink="ASTROBookSearch_PLT" portType="ASTROBookSearch:ASTROBookSearch_PT">
                                                                        <correlations>
                                                                           <correlation pattern="out" set="_CS_ASTROBookSearch_PLT"/>
                                                                        </correlations>
                                                                     </invoke>
                                                                     <assign>
                                                                        <copy>
                                                                           <from variable="key"/>
                                                                           <to part="key" variable="_ASTROBookStore_confirmError"/>
                                                                        </copy>
                                                                     </assign>
                                                                     <invoke inputVariable="_ASTROBookStore_confirmError" name="invoke_ASTROBookStore_confirmError" operation="confirmError" partnerLink="ASTROBookStore_PLT" portType="ns1:ASTROBookStore_CallbackPT">
                                                                        <correlations>
                                                                           <correlation pattern="out" set="_CS_ASTROBookStore_PLT"/>
                                                                        </correlations>
                                                                     </invoke>
                                                                     <terminate/>
                                                                  </sequence>
                                                               </onMessage>
                                                               <onMessage operation="requestAvailable" partnerLink="bankJPG_PLT" portType="bankJPG:bankJPG_CallbackPT" variable="_bankJPG_requestAvailable">
                                                                  <correlations>
                                                                     <correlation set="_CS_bankJPG_PLT"/>
                                                                  </correlations>
                                                                  <sequence>
                                                                     <assign>
                                                                        <copy>
                                                                           <from variable="key"/>
                                                                           <to part="key" variable="_bankJPG_confirm"/>
                                                                        </copy>
                                                                     </assign>
                                                                     <invoke inputVariable="_bankJPG_confirm" name="invoke_bankJPG_confirm" operation="confirm" partnerLink="bankJPG_PLT" portType="bankJPG:bankJPG_PT">
                                                                        <correlations>
                                                                           <correlation pattern="out" set="_CS_bankJPG_PLT"/>
                                                                        </correlations>
                                                                     </invoke>
                                                                     <pick>
                                                                        <onMessage operation="confirmAck" partnerLink="bankJPG_PLT" portType="bankJPG:bankJPG_CallbackPT" variable="_bankJPG_confirmAck">
                                                                           <correlations>
                                                                              <correlation set="_CS_bankJPG_PLT"/>
                                                                           </correlations>
                                                                           <sequence>
                                                                              <assign>
                                                                                 <copy>
                                                                                    <from variable="key"/>
                                                                                    <to part="key" variable="_bankJPG_requestAvailableAck"/>
                                                                                 </copy>
                                                                              </assign>
                                                                              <invoke inputVariable="_bankJPG_requestAvailableAck" name="invoke_bankJPG_requestAvailableAck" operation="requestAvailableAck" partnerLink="bankJPG_PLT" portType="bankJPG:bankJPG_PT">
                                                                                 <correlations>
                                                                                    <correlation pattern="out" set="_CS_bankJPG_PLT"/>
                                                                                 </correlations>
                                                                              </invoke>
                                                                              <assign>
                                                                                 <copy>
                                                                                    <from part="transactionDate" variable="_bankJPG_confirmAck"/>
                                                                                    <to part="transactionDate" variable="_ASTROBookStore_sent"/>
                                                                                 </copy>
                                                                              </assign>
                                                                              <assign>
                                                                                 <copy>
                                                                                    <from variable="key"/>
                                                                                    <to part="key" variable="_ASTROBookCart_clear"/>
                                                                                 </copy>
                                                                              </assign>
                                                                              <invoke inputVariable="_ASTROBookCart_clear" name="invoke_ASTROBookCart_clear" operation="clear" partnerLink="ASTROBookCart_PLT" portType="ASTROBookCart:ASTROBookCart_PT">
                                                                                 <correlations>
                                                                                    <correlation pattern="out" set="_CS_ASTROBookCart_PLT"/>
                                                                                 </correlations>
                                                                              </invoke>
                                                                              <assign>
                                                                                 <copy>
                                                                                    <from part="transactionTime" variable="_bankJPG_confirmAck"/>
                                                                                    <to part="transactionTime" variable="_ASTROBookStore_sent"/>
                                                                                 </copy>
                                                                              </assign>
                                                                              <assign>
                                                                                 <copy>
                                                                                    <from variable="key"/>
                                                                                    <to part="key" variable="_ASTROBookSearch_logout"/>
                                                                                 </copy>
                                                                              </assign>
                                                                              <invoke inputVariable="_ASTROBookSearch_logout" name="invoke_ASTROBookSearch_logout" operation="logout" partnerLink="ASTROBookSearch_PLT" portType="ASTROBookSearch:ASTROBookSearch_PT">
                                                                                 <correlations>
                                                                                    <correlation pattern="out" set="_CS_ASTROBookSearch_PLT"/>
                                                                                 </correlations>
                                                                              </invoke>
                                                                              <assign>
                                                                                 <copy>
                                                                                    <from part="transactionAuthorization" variable="_bankJPG_confirmAck"/>
                                                                                    <to part="transactionAuthorization" variable="_ASTROBookStore_sent"/>
                                                                                 </copy>
                                                                              </assign>
                                                                              <assign>
                                                                                 <copy>
                                                                                    <from variable="key"/>
                                                                                    <to part="key" variable="_ASTROBookStore_sent"/>
                                                                                 </copy>
                                                                              </assign>
                                                                              <invoke inputVariable="_ASTROBookStore_sent" name="invoke_ASTROBookStore_sent" operation="sent" partnerLink="ASTROBookStore_PLT" portType="ns1:ASTROBookStore_CallbackPT">
                                                                                 <correlations>
                                                                                    <correlation pattern="out" set="_CS_ASTROBookStore_PLT"/>
                                                                                 </correlations>
                                                                              </invoke>
                                                                              <ext:break/>
                                                                           </sequence>
                                                                        </onMessage>
                                                                        <onMessage operation="confirmErr" partnerLink="bankJPG_PLT" portType="bankJPG:bankJPG_CallbackPT" variable="_bankJPG_confirmErr">
                                                                           <correlations>
                                                                              <correlation set="_CS_bankJPG_PLT"/>
                                                                           </correlations>
                                                                           <sequence>
                                                                              <assign>
                                                                                 <copy>
                                                                                    <from variable="key"/>
                                                                                    <to part="key" variable="_ASTROBookCart_nop"/>
                                                                                 </copy>
                                                                              </assign>
                                                                              <invoke inputVariable="_ASTROBookCart_nop" name="invoke_ASTROBookCart_nop" operation="nop" partnerLink="ASTROBookCart_PLT" portType="ASTROBookCart:ASTROBookCart_PT">
                                                                                 <correlations>
                                                                                    <correlation pattern="out" set="_CS_ASTROBookCart_PLT"/>
                                                                                 </correlations>
                                                                              </invoke>
                                                                              <assign>
                                                                                 <copy>
                                                                                    <from part="errorDesc" variable="_bankJPG_confirmErr"/>
                                                                                    <to part="error" variable="_ASTROBookStore_confirmError"/>
                                                                                 </copy>
                                                                              </assign>
                                                                              <assign>
                                                                                 <copy>
                                                                                    <from variable="key"/>
                                                                                    <to part="key" variable="_ASTROBookSearch_logout"/>
                                                                                 </copy>
                                                                              </assign>
                                                                              <invoke inputVariable="_ASTROBookSearch_logout" name="invoke_ASTROBookSearch_logout" operation="logout" partnerLink="ASTROBookSearch_PLT" portType="ASTROBookSearch:ASTROBookSearch_PT">
                                                                                 <correlations>
                                                                                    <correlation pattern="out" set="_CS_ASTROBookSearch_PLT"/>
                                                                                 </correlations>
                                                                              </invoke>
                                                                              <assign>
                                                                                 <copy>
                                                                                    <from variable="key"/>
                                                                                    <to part="key" variable="_ASTROBookStore_confirmError"/>
                                                                                 </copy>
                                                                              </assign>
                                                                              <invoke inputVariable="_ASTROBookStore_confirmError" name="invoke_ASTROBookStore_confirmError" operation="confirmError" partnerLink="ASTROBookStore_PLT" portType="ns1:ASTROBookStore_CallbackPT">
                                                                                 <correlations>
                                                                                    <correlation pattern="out" set="_CS_ASTROBookStore_PLT"/>
                                                                                 </correlations>
                                                                              </invoke>
                                                                              <terminate/>
                                                                           </sequence>
                                                                        </onMessage>
                                                                     </pick>
                                                                  </sequence>
                                                               </onMessage>
                                                            </pick>
                                                         </sequence>
                                                      </onMessage>
                                                      <onMessage operation="startTransactionErr" partnerLink="bankJPG_PLT" portType="bankJPG:bankJPG_CallbackPT" variable="_bankJPG_startTransactionErr">
                                                         <correlations>
                                                            <correlation set="_CS_bankJPG_PLT"/>
                                                         </correlations>
                                                         <sequence>
                                                            <assign>
                                                               <copy>
                                                                  <from part="errorDesc" variable="_bankJPG_startTransactionErr"/>
                                                                  <to variable="_local2_ASTROBookStore_checkoutError_error"/>
                                                               </copy>
                                                            </assign>
                                                            <assign>
                                                               <copy>
                                                                  <from variable="key"/>
                                                                  <to part="key" variable="_ASTROBookCart_nop"/>
                                                               </copy>
                                                            </assign>
                                                            <invoke inputVariable="_ASTROBookCart_nop" name="invoke_ASTROBookCart_nop" operation="nop" partnerLink="ASTROBookCart_PLT" portType="ASTROBookCart:ASTROBookCart_PT">
                                                               <correlations>
                                                                  <correlation pattern="out" set="_CS_ASTROBookCart_PLT"/>
                                                               </correlations>
                                                            </invoke>
                                                            <assign>
                                                               <copy>
                                                                  <from variable="_local2_ASTROBookStore_checkoutError_error"/>
                                                                  <to part="error" variable="_ASTROBookStore_checkoutError"/>
                                                               </copy>
                                                            </assign>
                                                            <assign>
                                                               <copy>
                                                                  <from variable="key"/>
                                                                  <to part="key" variable="_ASTROBookSearch_logout"/>
                                                               </copy>
                                                            </assign>
                                                            <invoke inputVariable="_ASTROBookSearch_logout" name="invoke_ASTROBookSearch_logout" operation="logout" partnerLink="ASTROBookSearch_PLT" portType="ASTROBookSearch:ASTROBookSearch_PT">
                                                               <correlations>
                                                                  <correlation pattern="out" set="_CS_ASTROBookSearch_PLT"/>
                                                               </correlations>
                                                            </invoke>
                                                            <assign>
                                                               <copy>
                                                                  <from variable="key"/>
                                                                  <to part="key" variable="_ASTROBookStore_checkoutError"/>
                                                               </copy>
                                                            </assign>
                                                            <invoke inputVariable="_ASTROBookStore_checkoutError" name="invoke_ASTROBookStore_checkoutError" operation="checkoutError" partnerLink="ASTROBookStore_PLT" portType="ns1:ASTROBookStore_CallbackPT">
                                                               <correlations>
                                                                  <correlation pattern="out" set="_CS_ASTROBookStore_PLT"/>
                                                               </correlations>
                                                            </invoke>
                                                            <terminate/>
                                                         </sequence>
                                                      </onMessage>
                                                   </pick>
                                                </sequence>
                                             </onMessage>
                                             <onMessage operation="cartGetErr" partnerLink="ASTROBookCart_PLT" portType="ASTROBookCart:ASTROBookCart_CallbackPT" variable="_ASTROBookCart_cartGetErr">
                                                <correlations>
                                                   <correlation set="_CS_ASTROBookCart_PLT"/>
                                                </correlations>
                                                <sequence>
                                                   <assign>
                                                      <copy>
                                                         <from part="error" query="/ASTROBookCart:Errors/ASTROBookCart:Error/ASTROBookCart:Message" variable="_ASTROBookCart_cartGetErr"/>
                                                         <to variable="_local1_ASTROBookStore_checkoutError_error"/>
                                                      </copy>
                                                   </assign>
                                                   <assign>
                                                      <copy>
                                                         <from variable="key"/>
                                                         <to part="key" variable="_ASTROBookSearch_logout"/>
                                                      </copy>
                                                   </assign>
                                                   <invoke inputVariable="_ASTROBookSearch_logout" name="invoke_ASTROBookSearch_logout" operation="logout" partnerLink="ASTROBookSearch_PLT" portType="ASTROBookSearch:ASTROBookSearch_PT">
                                                      <correlations>
                                                         <correlation pattern="out" set="_CS_ASTROBookSearch_PLT"/>
                                                      </correlations>
                                                   </invoke>
                                                   <assign>
                                                      <copy>
                                                         <from variable="_local1_ASTROBookStore_checkoutError_error"/>
                                                         <to variable="_local2_ASTROBookStore_checkoutError_error"/>
                                                      </copy>
                                                   </assign>
                                                   <assign>
                                                      <copy>
                                                         <from variable="_local2_ASTROBookStore_checkoutError_error"/>
                                                         <to part="error" variable="_ASTROBookStore_checkoutError"/>
                                                      </copy>
                                                   </assign>
                                                   <assign>
                                                      <copy>
                                                         <from variable="key"/>
                                                         <to part="key" variable="_ASTROBookStore_checkoutError"/>
                                                      </copy>
                                                   </assign>
                                                   <invoke inputVariable="_ASTROBookStore_checkoutError" name="invoke_ASTROBookStore_checkoutError" operation="checkoutError" partnerLink="ASTROBookStore_PLT" portType="ns1:ASTROBookStore_CallbackPT">
                                                      <correlations>
                                                         <correlation pattern="out" set="_CS_ASTROBookStore_PLT"/>
                                                      </correlations>
                                                   </invoke>
                                                   <terminate/>
                                                </sequence>
                                             </onMessage>
                                          </pick>
                                       </sequence>
                                    </onMessage>
                                    <onMessage operation="logout" partnerLink="ASTROBookStore_PLT" portType="ns1:ASTROBookStore_PT" variable="logoutMsg">
                                       <correlations>
                                          <correlation set="bookstore"/>
                                       </correlations>
                                       <sequence>
                                          <assign>
                                             <copy>
                                                <from variable="key"/>
                                                <to part="key" variable="_ASTROBookCart_nop"/>
                                             </copy>
                                          </assign>
                                          <invoke inputVariable="_ASTROBookCart_nop" name="invoke_ASTROBookCart_nop" operation="nop" partnerLink="ASTROBookCart_PLT" portType="ASTROBookCart:ASTROBookCart_PT">
                                             <correlations>
                                                <correlation pattern="out" set="_CS_ASTROBookCart_PLT"/>
                                             </correlations>
                                          </invoke>
                                          <assign>
                                             <copy>
                                                <from variable="key"/>
                                                <to part="key" variable="_ASTROBookCart_nop"/>
                                             </copy>
                                          </assign>
                                          <invoke inputVariable="_ASTROBookCart_nop" name="invoke_ASTROBookCart_nop" operation="nop" partnerLink="ASTROBookCart_PLT" portType="ASTROBookCart:ASTROBookCart_PT">
                                             <correlations>
                                                <correlation pattern="out" set="_CS_ASTROBookCart_PLT"/>
                                             </correlations>
                                          </invoke>
                                          <assign>
                                             <copy>
                                                <from variable="key"/>
                                                <to part="key" variable="_ASTROBookSearch_logout"/>
                                             </copy>
                                          </assign>
                                          <invoke inputVariable="_ASTROBookSearch_logout" name="invoke_ASTROBookSearch_logout" operation="logout" partnerLink="ASTROBookSearch_PLT" portType="ASTROBookSearch:ASTROBookSearch_PT">
                                             <correlations>
                                                <correlation pattern="out" set="_CS_ASTROBookSearch_PLT"/>
                                             </correlations>
                                          </invoke>
                                          <terminate/>
                                       </sequence>
                                    </onMessage>
                                 </pick>
                              </sequence>
                           </while>
                        </sequence>
                     </onMessage>
                  </pick>
               </sequence>
            </sequence>
         </onMessage>
      </pick>
   </sequence>
</process>

