Friday, August 10, 2012

Migration issue of In-flight Instances when Delay Timer is removed



What happens to the inflight instances when a delay timer is removed from the workflow during the subsequent releases?


Lets take a scenario as shown in figure.



Say we have an in-flight instance for this Workflow, which is waiting at delay timer as shown in below Figure.


In my subsequent release, Delay timer  has to be detached (removed) from the workflow and all the in-flight instance are migrated from the previous snapshot to new snapshot. What happens to the inflight instances after migration? will they proceed to work after migration or fail?

Actually none of the above happens. Those instances neither fail nor work as usual. Those instance will become hanging instances (useless), as the active token which is on the timer is missing.



So how do we avoid this situation and enable the instances to work as usual ? Is there a work around?
Actually Yes.

When we had to remove the delay timer from the work flow, don't delete the timer activity, just detach the timer activity from the step1 and leave transaction from timer activity to step2  from the workflow as shown in below figure.


When this is done, the active token which is on timer will still be active and once delay time is over, the token on timer activity will be moved to the next activity and  task will be created for the next activity as shown in below fig.

In this way we can avoid migration issues when a delay timer is removed from the workflow in subsequent releases.




3 comments:

  1. Smart and easy solution. Does this applicable to all kinds of activities or this is applicable to only delay timer events. Per say, if we have 3 activities in a BPD and we have remove Activity B and done production move. To taker of orphaned tokes standing on activity B, does this technique works?

    ReplyDelete
  2. As long as the component exists, token will be active. We need some mechanism to move that token if it is not a timer. timer will move automatically once time lapses.For example, if it is human activity, that activity has to be executed manually etc.

    ReplyDelete
  3. Hi Pradeep,

    I have made new version of my process application and follwing are the changes:

    1. create a new variable of list type and pass that variable as input to activity.

    I want to know whether i can migrate the instances from older snapshot to new one with out any issue?

    ReplyDelete