[Ctk-developers] Another ctkWorkflow thingie: goToStep(..) goes always back to starting step

Jean-Christophe Fillion-Robin jchris.fillionr at kitware.com
Fri Jun 3 20:16:19 UTC 2011


Hi Daniel,

* A workflow is set of transitions.

* If you want to go from a Step X to a Step Y, a transition is required to
exists

* For conditional workflow, there is the concept of branch.

* Each time you click on finish, the pipeline (or workflow) is executed.
Upon success, it returns to the step from where the transition to the
"finish" step was done.  Having a different behavior would make sens. I
propose the following:
   * Add a property named "GoBackToOriginStepUponSuccess" to workflow.
(also open to suggestion regarding the name)
   * By default, this property would be False

Would be great if you could implement the described behavior. To do so:
   1) fork CTK on github
   2) Create a topic branch named
"add-GoBackToOriginStepUponSuccess-workflow-feature" of master
   3) Commit both feature and updated test
   4) Check that test run locally
   5) Send an email to the list asking for review with a pointer to your
topic
   6) Danielle or myself will review your topic and integrate it into master

Note: Make also sure the property is exposed in python. You could play with
the following example to make sure everything is working as expected. See
https://github.com/jcfr/SlicerPy/blob/master/slicer-visual-workflow-example.py

Thanks
Jc

On Fri, Jun 3, 2011 at 3:52 PM, Danielle Pace <danielle.pace at kitware.com>wrote:

> Hi Daniel,
>
> CanGoToStep checks to see if a path exists between two steps - so it is not
> helpful in your case.
>
> Right now, there is no method to go to a specific step without
> transitioning back.  We could add a property that dictates whether to go
> back to the starting step after successfully getting to a 'finish' step...
>
> Thanks,
>
> Danielle
>
>
>
>
>
> On Fri, Jun 3, 2011 at 3:45 PM, Daniel Haehn <haehn at bwh.harvard.edu>wrote:
>
>> Hi Danielle,
>>
>> hm this does not make totally sense to me. What about the canGoToStep
>> method - this only checks for next step?
>>
>> Wouldn't it make more sense to have the behavior I observed and you
>> described for the canGoToStep call and do not go back when you call
>> goToStep?
>>
>> Or is there another method I could use to go from step 1 to step 4, f.e.?
>>
>> Thanks
>> Daniel
>>
>> On Fri, Jun 3, 2011 at 3:40 PM, Danielle Pace <danielle.pace at kitware.com>
>> wrote:
>> > Hi Daniel,
>> > This is the intended behavior when using 'goToStep'.
>> > The idea is that, partway through the workflow, you could execute the
>> steps
>> > until a 'finish step' was reached - using the default parameters for
>> those
>> > steps.  Then you can evaluate the results that occur with default
>> > parameters.  If you get to the 'finish' step successfully, it puts you
>> back
>> > where you started - so that you can continue to step through and alter
>> > parameters if you like.
>> > If you do not get to the 'finish' step successfully (i.e. default
>> parameters
>> > produce errors on your data or because of the parameters you set in
>> prior
>> > steps), it will stop at the error.
>> > Hope that helps,
>> >
>> > Danielle
>> >
>> >
>> >
>> >
>> > On Fri, Jun 3, 2011 at 3:34 PM, Daniel Haehn <haehn at bwh.harvard.edu>
>> wrote:
>> >>
>> >> Hi guys,
>> >>
>> >> if I use ctkWorkflow.goToStep(x), the workflow goes to the step x
>> >> along the workflow (according to onEntry, validate and onExit calls).
>> >>
>> >> But then, after reaching step x, it goes directly back to where I am
>> >> coming from - again along the workflow. This goes so fast so it seems
>> >> there is no movement at all.
>> >>
>> >> I digged a little and it seems line 1035 in ctkWorkflow.cpp is not
>> >> right? After reaching the 'finish step' (which in my understanding is
>> >> the target step), it goes back to the starting step.
>> >>
>> >>
>> >> 1019 //
>> >>
>> --------------------------------------------------------------------------
>> >> 1020 void ctkWorkflow::goToStepSucceeded()
>> >> 1021 {
>> >> 1022   Q_D(ctkWorkflow);
>> >> 1023
>> >> 1024   logger.debug("goToStepSucceeded");
>> >> 1025
>> >> 1026   // after success, go back to the step at which we begin looking
>> for
>> >> 1027   // the finish step (will exit the current step and enter the
>> >> starting step)
>> >> 1028
>> >> 1029   d->createTransitionToPreviousStartingStep(d->StartingStep,
>> >> d->CurrentStep);
>> >> 1030
>> >> 1031   d->GoToStep = 0;
>> >> 1032   d->StartingStep->setStatusText("Attempt to go to the finish
>> >> step succeeded");
>> >> 1033   d->StartingStep = 0;
>> >> 1034
>> >> 1035   this->goFromGoToStepToStartingStep();
>> >> 1036 }
>> >> 1037
>> >>
>> >> Is this correct behavior and I understand the goToStep(x) call wrong
>> >> or is this a bug?
>> >>
>> >> Cheers,
>> >> Daniel
>> >> _______________________________________________
>> >> Ctk-developers mailing list
>> >> Ctk-developers at commontk.org
>> >> http://public.kitware.com/cgi-bin/mailman/listinfo/ctk-developers
>> >
>> >
>> >
>> > --
>> > Danielle Pace, M.ESc.
>> > Research and Development Engineer
>> > Kitware Inc.,
>> > North Carolina Office
>> > www.kitware.com
>> > 919-969-6990 X 319
>> >
>>
>
>
>
> --
> Danielle Pace, M.ESc.
> Research and Development Engineer
> Kitware Inc.,
> North Carolina Office
>
> www.kitware.com
> 919-969-6990 X 319
>
>
> _______________________________________________
> Ctk-developers mailing list
> Ctk-developers at commontk.org
> http://public.kitware.com/cgi-bin/mailman/listinfo/ctk-developers
>
>


-- 
+1 919 869 8849
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/ctk-developers/attachments/20110603/d1ce92c4/attachment.htm>


More information about the Ctk-developers mailing list