Skip to content

Commit

Permalink
fix: updatePayment payment lookup fails during retry due to already c…
Browse files Browse the repository at this point in the history
…hanged reference to orderId
  • Loading branch information
MLenterman committed Jun 17, 2024
1 parent ef681b5 commit 94f27e6
Showing 1 changed file with 53 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -35,17 +35,17 @@
</Exits>

<XsltPipe
name="CreateLookUpPaymentsMessage"
name="CreateLookUpPaymentsMessageByCaseReference"
getInputFromFixedValue="&lt;dummy/&gt;"
styleSheetName="Bpel/Payment/Model/LookUpPaymentsMessage.xslt"
storeResultInSessionKey="LookUpPaymentsMessage"
>
<Param name="ReferenceNumber" sessionKey="CaseReferenceNumber" />
<Forward name="success" path="BpelPaymentPostLookUpPaymentsSender" />
<Forward name="success" path="BpelPaymentPostLookUpPaymentsSenderByCaseReference" />
</XsltPipe>

<SenderPipe
name="BpelPaymentPostLookUpPaymentsSender"
name="BpelPaymentPostLookUpPaymentsSenderByCaseReference"
storeResultInSessionKey="LookUpPaymentsResponseMessage"
>
<IbisLocalSender
Expand All @@ -54,22 +54,68 @@
>
</IbisLocalSender>
<Param name="soapAction" value="payments:lookUpPayments" />
<Forward name="success" path="CreateUpdateDetailedPaymentRequestMessage" />
<Forward name="success" path="LookUpByReferenceNumberNoPayments_Condition" />
</SenderPipe>

<XmlIfPipe
name="LookUpByReferenceNumberNoPayments_Condition"
xpathExpression="string-length(//*:lookUpPaymentsResponse/*:paymentDetailsMessage/*:payments) = 0"
>
<Forward name="then" path="CreateLookUpPaymentsMessageByPaymentOrderId" />
<Forward name="else" path="CreateUpdateDetailedPaymentRequestMessage" />
</XmlIfPipe>

<!--
LookUp with PaymentOrderId as ReferenceNumber for retries. After `updateDetailedPayment` the ReferenceNumber has been changed to the PaymentOrderId.
If this yields a result, `updateDetailedPayment` must have already succeeded in a previous run, so we can skip it.
-->
<XsltPipe
name="CreateLookUpPaymentsMessageByPaymentOrderId"
getInputFromFixedValue="&lt;dummy/&gt;"
styleSheetName="Bpel/Payment/Model/LookUpPaymentsMessage.xslt"
storeResultInSessionKey="LookUpPaymentsMessage"
>
<Param name="ReferenceNumber" sessionKey="PaymentOrderId" />
<Forward name="success" path="BpelPaymentPostLookUpPaymentsSenderByPaymentOrderId" />
</XsltPipe>

<SenderPipe
name="BpelPaymentPostLookUpPaymentsSenderByPaymentOrderId"
storeResultInSessionKey="LookUpPaymentsResponseMessage"
>
<IbisLocalSender
name="BpelPaymentPostLookUpPaymentsLocalSender"
javaListener="Bpel_Payment_Post"
>
</IbisLocalSender>
<Param name="soapAction" value="payments:lookUpPayments" />
<Forward name="success" path="NoPaymentFound_Condition" />
</SenderPipe>

<XmlIfPipe
name="NoPaymentFound_Condition"
xpathExpression="string-length(//*:lookUpPaymentsResponse/*:paymentDetailsMessage/*:payments) = 0"
>
<Forward name="then" path="NoPaymentFound_Exception" />
<!-- If BpelPaymentPostLookUpPaymentsSenderByPaymentOrderId yields a result, `updateDetailedPayment` must have succeeded already in a previous run, so skip it. -->
<Forward name="else" path="CreateAddPaymentStatesMessage" />
</XmlIfPipe>

<ExceptionPipe name="NoPaymentFound_Exception" />

<XsltPipe
name="CreateUpdateDetailedPaymentRequestMessage"
styleSheetName="Bpel/Payment/Model/UpdateDetailedPaymentRequestMessage.xslt"
storeResultInSessionKey="UpdateDetailedPaymentRequestMessage"
>
<Param name="ReferenceNumber" sessionKey="PaymentOrderId" />
<Param name="Description" sessionKey="CaseReferenceNumber" />
<Forward name="success" path="CreateUpdateDetailedPaymentRequestSender" />
<Forward name="success" path="UpdateDetailedPaymentRequestSender" />
</XsltPipe>

<SenderPipe
name="CreateUpdateDetailedPaymentRequestSender"
storeResultInSessionKey="CreateUpdateDetailedPaymentResponseMessage"
name="UpdateDetailedPaymentRequestSender"
storeResultInSessionKey="UpdateDetailedPaymentResponseMessage"
>
<IbisLocalSender
name="CreateUpdateDetailedPaymentRequestLocalSender"
Expand Down

0 comments on commit 94f27e6

Please sign in to comment.