RE: [wsbpel] Issue 6 - Rough draft of proposal for vote

From
Trickovic, Ivana <>
Date
2004-09-08T12:54:46+00:00
ID
Thread
RE: [wsbpel] Issue 6 - Rough draft of proposal for vote
Alex,

 

Please 
see my response to Axel's proposal. The same comments apply 
here.

 

Regards,

 

Ivana

  
-----Original Message-----
From: Alex Yiu 
  [mailto:]
Sent: Samstag, 4. September 2004 
  00:08
To: Trickovic, Ivana
Cc: ''; 
  ''; ''; Alex 
  Yiu
Subject: Re: [wsbpel] Issue 6 - Rough draft of proposal for 
  vote

Hi, Ivana, 

Sorry for replying you a bit 
  late. 
Because, I am trying to sort out another related issue at the same 
  time - issue 135. 

After looking into Issue 135 and the email from Axel 
  Martens, I think "earlyCompletionFault" should be replaced by 
  "forcedTermination" or its equivalent concept (depending on Issue 135). [ I 
  guess that is a part of my thinking-out-loud process :-) ]

I also agree 
  with you in the sense that. We can and should leverage the existing fault 
  handler semantics that you mentioned. Quoted 
  from Section 13.4:
"The 
  behavior of a fault handler for scope C begins by implicitly terminating all 
  activities that are currently active and directly enclosed within C (see Semantics of Activity Termination). 
  "

Here 
  is an example for illustration:
[Please 
  don't consider the following as the formal description of semantics of 
  completeCondition for now.] 

The 
  completeCondition construct below:

<flow>    
  <completeCondition>someCondition</completeCondition>     <scope-A/>    
  <activity-B/></flow> 
would have a similar (but maybe not 
  identical) effect of the following code:
<scope 
  name="flowScope">
    <catch faultName="forcedTermination"> 
    <!-- this faulthandler 
  may be renamed to 
         cancelHandler from 
  Issue 135 -->
       <empty /> 
  
    </catch>
    
  <flow>
        <sequence> 
  
            
  <scope-A>
            <!-- 
  
            
      The completeCondition logic happens here: 
  
                If 
  completeConditon is true,
          
        then we will trigger the "cancel" mechanism. 
  
            
  -->
        </sequence> 
  
        <sequence>
        
      <activity-B/>
        
      <!-- 
        
           The same completeCondition logic 
  happens here again. 
            
  -->
        
  </sequence> 
         
  
    </flow></flow> 
  

Note:

  
    
The 
    "cancellation" effect of the flow does not go beyond the enclosing 
    "flowScope". 
    
The 
    code pattern is similar to the one from Axen. The difference is just that it 
    does not involve links. 
    
And, 
    this completeCondition concept is basically borrowed from the 
    "Bundles_Requirement_F2F.ppt" made by Ivana and Dieter Roller in March F2F. 
    I think we should generaliize the same concept from 
    "bundle"/"parallel-forEach" to any parallel flow construct - including 
    <flow>. 

Thanks!

Regards,
Alex 
  Yiu

Trickovic, Ivana wrote:

  
    
    
Alex,

    
Regarding the proposed semantics: Would you 
    elaborate how the fault (bpws:earlyCompletionFault) will be signaled to other incomplete flow 
    activities? Those activities are enclosed within the flow activity. If I 
    understand the fault handling model correctly there is no possibility 
    to communicate faults to nested activities/scopes except canceling the 
    enclosing activity (in this case, the flow activity). 
    

    
Regards,

    
Ivana

    
      
-----Original Message-----
From: Alex Yiu [mailto:]
Sent: 
      Mittwoch, 1. September 2004 04:28
To: Satish 
      Thatte
Cc: ; ; 
      Alex Yiu
Subject: Re: [wsbpel] Issue 6 - Rough draft of proposal 
      for vote

Hi, Yaron and others, 

I agree 
      with the concern of Edwin and Satish. We should define a general mechansim 
      to express early completion condition. Then, define the "orJoin" attribute 
      or other syntax as a macro/special syntax short cut.

If you guys 
      don't mind, I can supplement some alternative ideas to this issue. I am in 
      the thinking-out-loud mode again. That means, I need to verify whether 
      this idea makes sense to other people at Oracle.  [ But, as Ron said, 
      this thinking-out-loud mode has worked quite well for me in the past. ;-) 
      ]

We should allow a <completeCondition> subelement attached 
      to parallel-flow-starter activity (e.g. <flow> or future potential 
      parallel <forEach>). 

Syntax of 
      completeCondition:
It has two forms:
(1) 
      <completeCondition>a_boolean_expr</completeCondition> 
(2) 
      <completeCondition minFlow="a_number" /> 
    
              ...  or 
      ...
       <completeCondition 
      countMinFlow="yes">a_number_expr</completeCondition> 

The 
      first form is the most generic form of completion condition. 
The 
      second form provides a convienent shorthand to achieves the N out of M 
      semantics. 

The suggested orJoin="yes" is equivalent to: 
      
<flow>
    <completeCondition minFlow="1" 
      /> 
     ... 
      
</flow>

Semantics of completeCondition:
The 
      complete condition will be evaluated at the completion of each flow. If 
      the condition is true, a standard fault bpws:earlyCompletionFault will be 
      signaled to other incomplete flow activities. Each incomplete flow 
      activity can potentially be compensated if each flow is a scope activity. 
      (Potentially, we can add static analysis to enforce that when a 
      completionCondition is used in <flow>, <scope> must be used as 
      activities within the flow.) 

The completeCondition itself is 
      executed in the same scope context of the <flow> activity.  [ 
      And, the completeCondition should be executed serially, to avoid racing 
      condition among flows (?)]

I hope this rough draft of ideas 
      serves as a good base of discussion for this 
      issue.

Thanks!

Regards,
Alex 
      Yiu

Satish Thatte wrote:

      
        
        
        
        

        
I echo Edwin's 
        second question.  Yaron, your proposal clearly doesn't address the 
        intent of 6.  It seems too narrow to just address this corner case 
        of completion of one among many (corner case from my 
        perspective).

        

        
Satish

        

        

        

        

        

        
        

        
From: 
        Edwin Khodabakchian [mailto:] 
        
Sent: Friday, 
        August 27, 
        2004 5:38 
        PM
To: 
Subject: RE: [wsbpel] Issue 6 - 
        Rough draft of proposal for vote

        

        

        
Hi 
        Yaron,

        
2 
        questions:

        
1) are we sure that 
        termination is the desired behavior for the non completed 
        activity?

        
2) what happens if the join 
        rule is: "the first search result which is non empty or includes at 
        least 3 entries with more than 85% accuracy"? The point here is that a 
        lot of join patterns might have logic in them. I know that in the past 
        we talked about having something like <break> for flow. (This is 
        something that a lot of our customers are asking us and might address 
        the same us case is a more flexible way specially if the <break> 
        can be configure to tell the engine to compensate or 
        terminate).

        
Best,

        
Edwin