[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: Issue R13: BPEL partner link assignments
This is an attempt to crystallize the one of the many issues raised in the first public review, all captured under this issue (R13) Consider the same use case as in the original email exchange: 1. Receive PartnerLinkA, Operation1, messageExchange=First 2. Receive PartnerLinkA, Operation1, messageExchange=Second ... some work (a) ... 3. Reply PartnerLinkA, Operation1, messageExchange=First 4. Reply PartnerLinkA, Operation1, messageExchange=Second ... some work (b) ... In the original issue, there was an implied assumption that any reference to the partner link EPR relies on some engine capability - and mandates some transport specific behavior. While this is true, there should be a portable way of representing a simple behavior such as logging the source of the request - in a generic way (using an serf for example) - without any reliance on a particular transport or its capability. For example, the service ref might encode the TCP connection information (the 5 tuple) or the WSA address or any other identity the engine supports. There are 2 areas not defined by the spec which would make this use case, and other's like it, non-portable: a) The spec allows assignments from a partner link, so "some work (a)" could be an assign from PartnerLinkA. But considering that messageExchange First and messageExchange Second might have been invoked by different entities (i.e. different synchronous TCP connections), the assign activity does not provide enough information (e.g. message exchange) to allow for portable operation. Each engine implementation is free to have its own interpretation - or even to reject this since there's no definite way to disambiguate the 2 originating entities. b) The spec does require the engine to keep track of each open IMA, with enough information to deliver a reply to the appropriate request. A bpel process can assign from an initialized partner link. Considering an assign performed after a reply has been sent ("some work b") - is the partner link still considered initialized? The spec does not address this issue. The 2 points above suggest that for portability of BPEL processes, message exchange attribute should be included on the partner link form of Assign. The same considerations apply to Invoke activities. The requested changes are: - Add an optional messageExchange on the Assign activity when used with a from partner link and on invoke activities. - Clarify the life time of an implicit assignment performed by a receive activity to a partner link - is it for the life time of the partner link (i.e. the scope in which it is defined), or just until the corresponding reply activity. Note that the above changes do not impose any new demands on an engine - they require the engine maintain some identity for the originator of a message, but does not impose any semantics on it. In fact, service-ref already defines a container for such identities. Thank you for seriously considering the issues raised above, Andi Abes Progress Sonic.
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]