[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: Issue 126 - Proposal For Vote
Issue 126 - Event Handlers with local partnerLinks & Correlation Sets Disclaimer: This proposal is contingent on my propose for 139 passing Proposal: Add the ability to declare correlation sets inside of an onEvent handler for use within a specific onEvent instance. Rationale: Issue 126 brought up two questions. The first question was based on my assumption that partnerRoles are used to filter incoming messages on receives/picks/onEvent handlers. My proposal for issue 139 would make that assumption invalid and so remove my first question. My second question had to do with correlation set initialization on event handlers. In some cases, such as the example I gave in the issue list, we want to be able to have a correlation set whose value is local to a single event handler instance. Section 13.5.1 From: The usage and interpretation of correlation is exactly the same as for receive activities. To: The usage and interpretation of correlation is exactly the same as for receive activities with the addition that it is possible to declare correlation sets locally to an onEvent handler instance. Those locally declared correlation sets can then be used as part of onEvent’s receive. For example: … <eventHandlers> <onEvent partnerLink=”travelAgency” portType=”ns:agent” operation=”travelUpdate” messageType=”ns:travelStatsUpdate” variable=”travelUpdate”> <correlationSets> <correlationSet name=”updateCode” properties=”ns:updateCode”/> </correlationSets> <correlations> <correlation set=”travelCode” initialize=”no”/> <correlation set=”updateCode” initialize=”yes”/> </correlations> … </eventHandlers> … In this example a process is managing travel reservations for a customer and needs to handle reservation updates from the travel booking system. The onEvent handler is used to receive the update messages which are correlated using the travelCode property, which is defined and initialized elsewhere in the process. However sometimes the event handler needs to contact the travel booking system to follow up on an update message. To do that the outgoing message needs both the value in the travelCode property but also the value in an update code included in the travel update message. This is where the updateCode correlation set, declared locally to the onEvent handler comes in. When the update message is received the updateCode correlation set is initialized and its value made available only to the onEvent handler instance. The BNF for eventHandlers needs to be updated in sections 6.2 and 13.5 to the following: <eventHandlers>? <!-- Note: There must be at least one onEvent or onAlarm handler. --> <onEvent partnerLink="ncname" portType="qname"? operation="ncname" messageType="qname" variable="ncname" messageExchange="ncname"? >* * <correlationSets>? * <correlationSet name="ncname" properties="qname-list"/>+ * </correlationSets> <correlations>? <correlation set="ncname" initiate="yes|rendezvous|no"?/>+ </correlations> activity </onEvent> <onAlarm>* ( <for expressionLanguage="anyURI"?>duration-expr</for> | <until expressionLanguage="anyURI"?>deadline-expr</until> )? <repeatEvery expressionLanguage="anyURI"?>duration-expr</repeatEvery>? activity </onAlarm> </eventHandlers>
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]