[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: RE: [wsbpel] Issue 6.2 - Updated Proposal For Vote
Hi Chris, #1: How about to add in (5) the following: "... a completionCondition element the completion condition is evaluated each time AFTER a directly enclosed activity completes." > It would seem better if the expression was evaluated once prior to the flow executing. What does is mean "prior to the flow executing"? How does that work because multiple activities are started in parallel. #2: You are right. How about the following: "If all directly enclosed activities have been completed but the completion condition evaluates to false the "bpws:completionConditionFailure" MUST be thrown by the flow/parallel forEach activity." #3: The current proposal is inline with section 13.4.4. But we may discuss this on the call and you may propose an amendment. Would that be ok for you? #4: Any suggestion? Thanks, Ivana -----Original Message----- From: Chris Keller To: Trickovic, Ivana; wsbpel@lists.oasis-open.org Cc: alex.yiu@oracle.com Sent: 14.09.2005 18:14 Subject: RE: [wsbpel] Issue 6.2 - Updated Proposal For Vote Hi Ivana, Some questions/comments: 1. Is the branches expression evaluated each time a directly enclosed activity completes or is the test evaluated each time? It is unclear in your description below. It would seem better if the expression was evaluated once prior to the flow executing. 2. What happens if the flow or parallel forEach completes, but the completion condition is not met? 3. If this is adopted we would also have to change section 13.4.4 Semantics of Activity Termination from: "However, a termination handler cannot throw any fault. Even if an uncaught fault occurs during its behavior, it is not rethrown to the next enclosing scope. This is because the enclosing scope has already either faulted or is in the process of being terminated, which is what is causing the forced termination of the nested scope." to just: "However, a termination handler cannot throw any fault. Even if an uncaught fault occurs during its behavior, it is not rethrown to the next enclosing scope." 4. Is branches the most suitable name for the element name? Regards, Chris Keller Regards, Chris _____ From: Trickovic, Ivana [mailto:ivana.trickovic@sap.com] Sent: Wednesday, September 14, 2005 3:15 AM To: wsbpel@lists.oasis-open.org Cc: alex.yiu@oracle.com Subject: [wsbpel] Issue 6.2 - Updated Proposal For Vote Below please find an updated proposal for issue 6.2. Kind regards, Ivana Issue 6.2: Updated proposal: Last modified: Sept 13, 2005 - 23:30 PDT Motivation =========== The current semantics of the flow activity is that it completes when all its (directly) enclosed activities have completed, either successfully or unsuccessfully. However, there are scenarios where it is necessary to have ability to (successfully) complete the flow activity before all its directly enclosed activities complete in order to speed up the process execution. The completion condition may have different flavors: (1) Wait for N out of M nested activities to complete (2) Wait until after boolean condition C evaluates to true This updated proposal is restricted to case (1). The completion condition is interesting for the flow activity and for the parallel forEach activity. Proposal ========= Syntax: <flow standard-attributes> standard-elements <links>? <link name="ncname">+ </links> <completionCondition>? activity+ </flow> <forEach counterName="ncname" ...> standard-elements <iterator> <startCounterValue expressionLanguage="anyURI"> ... </startCounterValue>? <finalCounterValue expressionLanguage="anyURI"> ... </finalCounterValue>? </iterator> <completionCondition>? Scope </foreach> <completionCondition extension-attribute> extension-element <branches expressionLanguage="URI"? countCompletedBranchesOnly="yes|no"?> an-integer-expression </branches> </completionCondition> Semantics: (1) The completionCondition element is an optional element of the flow activity and the parallel forEach activity. Default behavior of the flow activity and the parallel forEach activity is they wait for all their directly enclosed activities to complete. Optional <completionCondition> is applicable to parallel forEach only, and not serial forEach. This restriction MUST be enforced by static analysis. (2) <branches> is an integer value expression which is used to define condition of flavor N out of M. It is evaluated at the end of execution of each directly enclosed activity. This condition has "at least N out of M" semantics. (The exact N out of M condition semantics involve resolving racing condition among directly enclosed activities.) (3) If the integer value is larger than the number of directly enclosed activities, then bpws:invalidBranchCondition fault MUST be thrown. Note that the number of branches may be known only during runtime in some cases. Static analysis should be encouraged to detect this erroneous situation at design time when possible. (For example, when the branches expression is a constant.) (4) Element <branches> has an optional attribute "countCompletedBranchesOnly". Its default value is "no". If countCompletedBranchesOnly is "no", it means the BPEL processor will count branches which have completed (either successfully or unsuccessfully). If countCompletedBranchesOnly is "yes", it means the BPEL processor will count branches which have completed successfully only. (5) If flow/parallel forEach activity specifies a completionCondition element the completion condition is evaluated each time a directly enclosed activity completes. If the completion condition evaluates to true the flow/parallel forEach activity completes successfully. All still running directly enclosed activities will be terminated. This means that the flow/parallel forEach activity begins implicitly terminating the directly enclosed activities that are still active. (6) Standard BPEL termination semantics applies to running directly enclosed activities when the completion condition is met. The termination of running nested activities follows the termination semantics defined in the specification (see section 13.4.4 Semantics of Activity Termination). (end) ----------------
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]