Ask the Expert

BPEL in a cyclical scenario

Can BPEL be used in a cyclical scenario where three processes call each other sequentially? (i.e. client => A => B => C => A)

    Requires Free Membership to View

To implement the scenario as described using BPEL, let's use a sequential order approval sequence where the order ID is used for correlating the instances of process A, B and C in the sequence. The document schema carrying the approvals for the order is represented as:

XML Schema:
        OrderId   (string)
        ApprovalA (string)
        ApprovalB (string)
        ApprovalC (string)
The pseudo BPEL code for processes A, B and C is:
process A:
    Receive input OrderApproval
    Assign "Approved by CompanyA" to OrderApproval/ApprovalA
    Invoke service (process) B
    Wait for callback from C with correlation set to OrderId
    Assign OrderApproval to output
    Invoke output OrderApproval on client callback
process B:
    Receive input OrderApproval
    Assign "Approved by CompanyB" to OrderApproval/ApprovalB   
    Invoke service (process) C
process C:
    Receive input OrderApproval
    Assign "Approved by CompanyC" to OrderApproval/ApprovalC   
    Invoke service (process) A
The sequence is instrumented by a client enacting process A, resulting in the call sequence A => B => C => A. See the diagrams FlowA, FlowB and FlowC for a visual representation of the executed flow in each of the three BPEL processes.

Flow A

Flow B

Flow C

This was first published in February 2004

There are Comments. Add yours.

TIP: Want to include a code block in your comment? Use <pre> or <code> tags around the desired text. Ex: <code>insert code</code>

REGISTER or login:

Forgot Password?
By submitting you agree to receive email from TechTarget and its partners. If you reside outside of the United States, you consent to having your personal data transferred to and processed in the United States. Privacy
Sort by: OldestNewest

Forgot Password?

No problem! Submit your e-mail address below. We'll send you an email containing your password.

Your password has been sent to: