You are viewing limited content. For full access, please sign in.

Question

Question

Modifying Running Process

asked on June 29, 2018

We have a fairly involved Legal Contract process.  It writes to various databases and sends emails and such.  What we have it a Timer Event on some of the users tasks that point back to themselves after 3 days.  This was so that the user would get a reminder email (the task assignment email).

After some time they now want to turn these off.  So, I figured that much like workflow, removing the events and then saving the process would work.  Any forms in the existing process would finish out with the timers, and new ones would start with no timers..

However, it seems that these processes are failing because the timer still triggers and then when it goes to evaluate there is nothing there and the process terminates.  

Even though there is no Timer Event in the existing process, the monitoring still shows it went through it:

Because it is not a suspend but a Terminate we are stuck.  The whole process has to be started over which is a big deal.

So I guess my question is: 

1.  Forms seems to know that it has a timer event (which was in the old process) but it doesn't know what to do next?  If it recognized the old timer event shouldn't it recognize the output?

2.  To try and stop the errors, I added the timer events back in.  However it still fails.  So it recognizes the timer but not that the timer is there again?

 

I am confused as to how Forms handles the activities when making an update.  How would you go about making the change in a real environment?  There is really no way to tell users to stop starting new contracts until all other contracts are completed, then make the change, then have the start again.

0 0

Replies

replied on June 29, 2018

For those curious it seems that reassigning the task does not work but moving on from the task does.

For the last hour I've been going through each instance and checking what step it was at.  Then I put a gateway after the step on a condition of last user action = submit and pointed it right back to the task.

 

After deleting the timer event, saved it, then submitted the task which then went back to itself.  On a small scale test in a dummy process with a timer of a minute this is how it behaved.  Will have to wait 3 days to see..

In short, if you delete a timer event in an ongoing process, the process will terminate.  If you delete the timer event, reassign the task, the process still expects a timer event.  If you delete the timer event, submit the form to go back to itself, it seems to do the task again without the timer event.

 

1 0
replied on June 29, 2018

Cool, I'm happy you found a different workaround given that the timer is already gone.

My guess is that the data for the timer is written directly into the "current step" entry in the forms database, so that it doesn't actually consult the process map again until it needs to take a routing action (either the task completes or the timer elapses).

Hopefully my other bit of advice helps you if you need to modify a live process in the future. I know it's saved me many times.

0 0
replied on June 29, 2018 Show version history

In my experience, the safest way I've found to make changes like this are as follows:

  1. Copy the original activity without the timer
  2. Disconnect the input routing path from the original activity and move it to the new activity.
  3. Leave the original activity and timer in place, but redirect the timer path to an endpoint (do nothing) and configure it so it no longer interrupts the attached activity.
  4. Recreate any output paths from the original activity with the new activity. There should now be 2 inputs to all the subsequent activities.
  5. Now, no NEW tasks should be getting to the OLD activity. Use the monitoring tools to wait for all the currently running instances that are running the OLD activity to be completed.
  6. Once there are no active instances running the old activity, you can delete it.

 

This basic logic of disconnect the inputs, wait for the running processes to complete, then cleanup later seems to work well for anything where you are making significant changes to the routing path.

0 0
replied on June 29, 2018

That would work but we are stuck now in that the change was made already.  So essentially everything in their process will break if they dont do the tasks by the timer event.

 

How are the timer event linked to task assignments?  Here is what I am wondering:

If a task is assigned to a person and that task has a timer event.  If I delete the timer event, save the process, re-assign the task to a different person, then assign the task back to the original person, is the timer event still there and in play?

If not the process to fix this would be to delete all the timer events and then manually re-assign all the tasks and back again.  

0 0
replied on June 29, 2018

As a test, I created a task and put a 1 minute timer on it.  

I got the task and verified that the timer event triggered through the monitoring.

Then I deleted the timer event.

Then I reassigned it to someone, then back to myself.

I waited a minute and the timer event still triggered?

How does the task now it has a timer if the timer was deleted and the task was reassigned?

0 0
You are not allowed to follow up in this post.

Sign in to reply to this post.