Re: Re: Re: [OSWF] Status of JIRA WF-198?

"Nick Dellamaggiore" <[email protected]> Mon, 13 Oct 2003 12:18:42 -0700
Newsgroups gmane.comp.java.open-symphony.devel
Message-ID <[email protected]>
Ok. I attached all my files to a new JIRA (WF-225).  I accidentally attached
2 workflow.dtd files. They are both the same. I also attach 2
ValidationTestCase.java files. Use the 2nd one.  The code changes were
pretty straightforward and hopefully shouldn't hose anything.

-nick


"Hani Suleiman" <[email protected]> wrote in message
news:[email protected]...
> Patches are best attached to jira issues, so we can make sure they're
> tracked properly etc.
>
> On Monday, October 13, 2003, at 03:03 AM, Nick Dellamaggiore wrote:
>
> >> <action id="2" refid="0" /> would be more explicit and clearer.
> >
> > I actually ended up using a special <common-action id="2" /> tag to
> > denote
> > common-action references under the <actions> tag (required DTD
> > modifications...Hope that's ok).  Also added a JUnit to make sure I
> > didn't
> > hose anything.  I ended up having to change 2 classes in the loader
> > package
> > along with the DTD.  What is the recommended patching strategy? Should
> > I
> > send you diffs of all the files?
> >
> > Also, I've finally come to closure regarding the original problem I was
> > trying to solve (WF-198).  After stepping through AbstractWorkflow, I
> > realized that there is really no easy fix.  I basically need to
> > 'cancel' a
> > split state and have it forcefully resolve into a single step without a
> > join.  The way the join code works is that it requires n-1 steps in the
> > split state to be markedFinished before it can resolve the join (it
> > only
> > marks the nth step finished).  In the end, I decided not to hack up
> > AbstractWorkflow just to solve my special case. Instead, I added a
> > hack to
> > my own code like so:
> >
> > public void forceJoin( /* params */ ) {
> > ...
> >    if( currentSteps.size() > 1 ) {  // in split state => move n-1
> > steps to
> > history
> >       for( int i = 0; i < currentSteps.size() - 1; i++ ) {
> >         Step currStep = (Step)currentSteps.get( i ) ;
> >          if( currStep.getFinishDate() == null ) {
> >             workflowStore.markFinished( currStep /* ... */ ) ;
> >          }
> >          workflowStore.moveToHistory( currStep ) ;
> >       }
> >    }
> >    // now, let OSWorkflow finish the transition off
> >    wf.doAction( wfId, actionId, null ) ;  // not in split => let
> > OSWorkflow
> > handle it
> > }
> >
> > ugly, but it works. You can cancel WF-198.
> >
> > -nick
> >
> > "Hani Suleiman" <[email protected]> wrote in message
> > news:[email protected]...
> >> Yeah, +1 to this from me, so I'll be accepting any patches for it!
> >>
> >> One thing to note though, is that instead of an implicit 'if no body
> >> then look in common-actions' I'd say something like:
> >>
> >> <action id="2" refid="0" /> would be more explicit and clearer.
> >>
> >> On Saturday, October 11, 2003, at 07:50 AM, Eric Pugh wrote:
> >>
> >>> I have to say, one of the things that attracted me to OSWF was the
> >>> simplicity..  And I think that what Nick is proposing is simpler
> >>> because it
> >>> removes the concept of local versus global actions, and provides a
> >>> more
> >>> compact way of referencing a action over and over.   Also, while what
> >>> he is
> >>> proposing is to solve using the same action over and over, if you
> >>> have
> >>> an
> >>> action used 3 times, this is a much compactor, simpler way to
> >>> describe
> >>> that
> >>> as well.
> >>>
> >>> If we change it, lets definitly make sure that the global-actions
> >>> syntax is
> >>> clearly highlighted as deprecated.
> >>>
> >>> Eric
> >>>
> >>>> -----Original Message-----
> >>>> From: [email protected]
> >>>> [mailto:[email protected]]On
> >>>>  Behalf Of
> >>>> Nick Dellamaggiore
> >>>> Sent: Friday, October 10, 2003 8:47 PM
> >>>> To: [email protected]
> >>>> Subject: [Opensymphony-developers] Re: [OSWF] Status of JIRA WF-198?
> >>>>
> >>>>
> >>>> Ok. Before I patch, I want to know how global-actions play
> >>>> into the new
> >>>> "workflow state" semantics of v2.6.  Here is the section that
> >>>> worries me:
> >>>>
> >>>> " If the caller does not explicitly alters the instance
> >>>> state, the workflow
> >>>> will remain in this state until it is unambigiously completed. This
> >>>> is
> >>>> defined to be the case when the workflow cannot possibly
> >>>> perform any further
> >>>> actions. In this case, the workflow will automatically move
> >>>> to the COMPLETED
> >>>> state. "
> >>>>
> >>>> So, once we reach an action with no 'local actions'
> >>>> available, the workflow
> >>>> is marked completed. Thus, no further actions can be
> >>>> performed due to the
> >>>> following code in doAction():
> >>>>
> >>>> if( entry.getState() != WorkflowEntry.ACTIVATED ) {
> >>>>    return;
> >>>> }
> >>>>
> >>>> So, the notion of global actions doesn't apply here.  There
> >>>> ARE potential
> >>>> (global) actions to be fired, but the workflow state
> >>>> disallows it since
> >>>> there are no local actions left for the current step. Fair enough.
> >>>>
> >>>> Actually, in a true finite state machine, each state has a
> >>>> set of actions
> >>>> (as you've correctly modelled). There is no notion of a
> >>>> 'global-action'.
> >>>> Should we just do away with this feature entirely (in a
> >>>> future release)?
> >>>> That would be fine by me as long as there was a feature in
> >>>> the XML file
> >>>> allowing me to refactor a common (not global) action out that
> >>>> can then be
> >>>> compactly referenced by id in each step it can be used.  At
> >>>> runtime, it
> >>>> would simply appear as another ActionDescriptor for the Step.  The
> >>>> XML
> >>>> notation below would just be shorthand (macro) for writing
> >>>> the action out
> >>>> over and over again:
> >>>>
> >>>> <workflow>
> >>>>
> >>>>    <common-actions>
> >>>>       <action id="99" name="Cancel Review">
> >>>>          <pre-functions>
> >>>>             <!-- ... -->
> >>>>          </pre-functions>
> >>>>          <results>
> >>>>             <unconditional-result old-status   = "Interrupted"
> >>>>                                   status       = "Cancelled"
> >>>>                                   step         = "100"
> >>>>                                   owner        = "${caller}" >
> >>>>         <post-functions>
> >>>>            <!-- lots of post function definitions I don't
> >>>> want to have to
> >>>> copy/paste into each action below -->
> >>>>         </post-functions>
> >>>>        </unconditional-result>
> >>>>          </results>
> >>>>       </action>
> >>>>    </common-actions>
> >>>>
> >>>>     <step id="10" name="Initial Review"
> >>>>             <action id="101" name="Complete Review">
> >>>>                <!-- regular action xml goes here -->
> >>>>             </action>
> >>>>
> >>>>            <!-- Workflow Loader code will resolve this action from
> >>>> common-actions above since the action body is missing -->
> >>>>            <action id="99" />
> >>>>
> >>>>           <!-- OR give it a special tag to aid in
> >>>> parsability/readability -->
> >>>>           <common-action id="99" />
> >>>>       </step>
> >>>> </workflow>
> >>>>
> >>>>
> >>>> I can write the code for this.  I'd leave the current global-action
> >>>> semantics intact to allow backward-compatibility and just
> >>>> change the Loader
> >>>> so it recognized the new shorthard notation.  What do you think?
> >>>>
> >>>> -nick
> >>>>
> >>>>
> >>>> "Hani Suleiman" <[email protected]> wrote in message
> >>>> news:[email protected]...
> >>>>> Please do provide a patch, the splits/join stuff is rather
> >>>> murky for me
> >>>>> and I'd rather someone who is actively using it provide
> >>>> patches than be
> >>>>> guessing what it's supposed to be doing.
> >>>>>
> >>>>> On Wednesday, October 8, 2003, at 08:58 PM, Nicholas J.
> >>>> Dellamaggiore
> >>>>> wrote:
> >>>>>
> >>>>>> I posted a JIRA about 2 months ago regarding a pretty serious
> >>>>>> OSWorkflow corruption issue.  In a nutshell, if you're in a split
> >>>>>> state (i.e 2 current steps are active) and you fire a
> >>>> global action
> >>>>>> before the split is resolved, the global action creates
> >>>> its new step
> >>>>>> and leaves the splits steps alive, thus resulting in THREE current
> >>>>>> steps.  The offending code is in AbstractWorkflow
> >>>> (actually, I think
> >>>>>> all non-getter/setter OSWF code lives here) and I detailed the
> >>>>>> potentially buggy areas in the JIRA.  I noticed that the
> >>>> JIRA hasn't
> >>>>>> been placed into the 2.6 release.  Were you planning to
> >>>> fix it for the
> >>>>>> upcoming release? If not, I plan to just go ahead and
> >>>> patch it myself.
> >>>>>>  Thanks.
> >>>>>>
> >>>>>> http://jira.opensymphony.com/secure/ViewIssue.jspa?key=WF-198
> >>>>>>
> >>>>>> -nick
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>> -------------------------------------------------------
> >>>>>> This SF.net email is sponsored by: SF.net Giveback Program.
> >>>>>> SourceForge.net hosts over 70,000 Open Source Projects.
> >>>>>> See the people who have HELPED US provide better services:
> >>>>>> Click here: http://sourceforge.net/supporters.php
> >>>>>> _______________________________________________
> >>>>>> Opensymphony-developers mailing list
> >>>>>> [email protected]
> >>>>>>
> >>>> https://lists.sourceforge.net/lists/listinfo/opensymphony-developers
> >>>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>> -------------------------------------------------------
> >>>>> This SF.net email is sponsored by: SF.net Giveback Program.
> >>>>> SourceForge.net hosts over 70,000 Open Source Projects.
> >>>>> See the people who have HELPED US provide better services:
> >>>>> Click here: http://sourceforge.net/supporters.php
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>> -------------------------------------------------------
> >>>> This SF.net email is sponsored by: SF.net Giveback Program.
> >>>> SourceForge.net hosts over 70,000 Open Source Projects.
> >>>> See the people who have HELPED US provide better services:
> >>>> Click here: http://sourceforge.net/supporters.php
> >>>> _______________________________________________
> >>>> Opensymphony-developers mailing list
> >>>> [email protected]
> >>>> https://lists.sourceforge.net/lists/listinfo/opensymphony-developers
> >>>
> >>>
> >>>
> >>> -------------------------------------------------------
> >>> This SF.net email is sponsored by: SF.net Giveback Program.
> >>> SourceForge.net hosts over 70,000 Open Source Projects.
> >>> See the people who have HELPED US provide better services:
> >>> Click here: http://sourceforge.net/supporters.php
> >>> _______________________________________________
> >>> Opensymphony-developers mailing list
> >>> [email protected]
> >>> https://lists.sourceforge.net/lists/listinfo/opensymphony-developers
> >>>
> >>
> >>
> >>
> >> -------------------------------------------------------
> >> This SF.net email is sponsored by: SF.net Giveback Program.
> >> SourceForge.net hosts over 70,000 Open Source Projects.
> >> See the people who have HELPED US provide better services:
> >> Click here: http://sourceforge.net/supporters.php
> >
> >
> >
> >
> >
> > -------------------------------------------------------
> > This SF.net email is sponsored by: SF.net Giveback Program.
> > SourceForge.net hosts over 70,000 Open Source Projects.
> > See the people who have HELPED US provide better services:
> > Click here: http://sourceforge.net/supporters.php
> > _______________________________________________
> > Opensymphony-developers mailing list
> > [email protected]
> > https://lists.sourceforge.net/lists/listinfo/opensymphony-developers
>
>
>
> -------------------------------------------------------
> This SF.net email is sponsored by: SF.net Giveback Program.
> SourceForge.net hosts over 70,000 Open Source Projects.
> See the people who have HELPED US provide better services:
> Click here: http://sourceforge.net/supporters.php





-------------------------------------------------------
This SF.net email is sponsored by: SF.net Giveback Program.
SourceForge.net hosts over 70,000 Open Source Projects.
See the people who have HELPED US provide better services:
Click here: http://sourceforge.net/supporters.php