- From: Gary Brown <gary@enigmatec.net>
- Date: Wed, 20 Oct 2004 10:08:00 +0100
- To: <public-ws-chor@w3.org>
Hi, [Observations based on BPEL1.1 fault handling - may have changed since?] Although BPEL does define fault handlers at the process level, that could be used to interrupt a process if a fault was to occur, it does also allow fault handlers to be scoped to the 'invoke' activity. This effectively means that alternative paths through the process can be taken, depending on whether a normal or a fault message occurs, without interrupting the process. I think it is important that a choreography should be able to receive a fault message without necessarily causing an exception, so that more comprehensive choreographies can be defined - otherwise each interaction that may result in a fault message would have to be defined in its own sub-choreography. However, I don't know that embedding exception handlers within the 'interaction'/'exchange' statement would necessarily be the best thing. If we were to model the alternative responses as separate interactions, with their own exchange and record elements, this would simplify the notation - but then the problem is ensuring that the association between the interactions is valid - which I think could be handled by a semi-intelligent parser. For example, we need to ensure that all of the interactions statements (representing the receipt of the normal response or one of possibly many fault responses) are placed in a single choice statement, so they are mutually exclusive. When doing endpoint generation to BPEL, it would then be relative straightforward to take the projections associated with each of the choice elements, and place the fault projections within fault handlers inside the associated invoke activity. The other approach would be to have multiple exchange elements in a single interaction (as Nick's proposal suggested), but we would need to ensure that the occurance of a fault did not simply cause an exception to be thrown. However, this would mean having some form of decision block following the interaction that would have to check to see which variable had been populated, before knowing which workunit (path) to take next. I believe this second approach may not be as straightforward to project onto BPEL exception handlers (within the invoke statement) due to the potential for a user to define more complex guards on the workunits following the interaction - although we could always validate to avoid this situation aswell. Regards Gary
Received on Wednesday, 20 October 2004 09:08:18 UTC