Our customer requested to add a new "On Hold" " button to every project workflow step so that any project can be put on hold by clicking this button in the workflow button area that would move it out of its current workflow step and into a separate "On Hold" workflow step. Then once a project is in that holding step, there would be a button to move it back to its original active status.
Is this doable? If Yes, what's key point of the solution?
I did this for a customer once. We had the first step of the workflow be an OR step that branched down different paths. One, the primary workflow, and the other was an On Hold path. When the user put the Request (or Project as was our case), a series of execution steps collected and stored the other active step in the workflow then turned off that step. Ultimately, that left the workflow with only the On Hold decision step active and the other step stored for later use. Then, when the request/project is resumed, the old step can be reactivated. Since this was a project and there were several steps in the workflow, we used a Token check step and then transitioned back to the last active step owned by the PM. Since the project could have been put on hold during a QA review, we sent it back to the PM to validate the project was still elligible for the QA or whatever the next step turned out to be. I have also helped some others where the previously active step was just re-enabled.
Thank you so much for your response. I am working on this requirement right now and really interested in your solution.
1. As for the sub-path for On Hold after the initial OR step, I suppose there was a loop of: (1)a decision step with a only available button of "On Hold" (2)when the only "On Hold" button was hit, a several of execution steps to collect and store the current status, and then turn off the active step (3)a decision step with a only available button of "Release" (4)when the only "Release" button was hit, a several of execution steps to check the stored status, and then reactivate the step (5)go back to step (1) Please correct me for any wrong. Here my question is: is it necessary to have any end step for this sub-path? Or the end step for the primary workflow is enough?
2. When you said a Token, can I assume it the token of a hidden field in the project?
3. How to turn off the active step and then reactivate it? Our expectation is that, when the workflow is On Hold, all normal buttons in "Available Actions" section would be invisible.
By the way, I have send you a private message and please help to check.
1.(1). Yes, there was a loop that had an In Progress decision step that had Put On Hold as the only action button available.
1.(2). When the Put On Hold button was selected, there was an execution step that ran a sql query to get the workflow step number of the other (not the execution step) active step. This step number was stored in a hidden field. There was then another execution step that ran an UPDATE statement to set the active_flag of the other step from 'Y' to 'N' so it didn't show up any more.
1.(3). Once the executions were done, the loop rested in an On Hold decision step with a Release button.
1.(4). When the Release button was pressed, there were two transitions out of that step.
1.(5). The first was to go back to the In Progress step so the project could be put on hold again, if necessary. The second transition went to an execution step that would check the value of the step that was stored in Step 2 above. The transitions out of this execution step would then go to the last step "owned" by the PM. The workflow was very full, so if the project was put on hold, it went back to the last place in the process where the PM was the owner of the step.
2. I don't remember at this point (I originallly built this in 2007) if it was a Project Details field or a Workflow parameter. Either would work.
3. I created an execution step that would do a DB update to set the ACTIVE_FLAG column of the workflow step instance for the other active step in the workflow to 'N'. The "activation" was done through a transition out of an execution step. I'll try to see if I saved the code I used to build that.
I am a little confused by the two transitions out of the step with "Release" button. Are those two transitions parallel and both of them the result of "Release" button? If possible, would you please draw a draft for an example workflow for your solution?
So when the workflow is in normal status (without being hold) there are two active workflow steps, one is the normal step, and the other is "In Process" step in the "On Hold" sub-path. When the workflow is put on hold, there is only one active workflow step, the "On Hold" step in the "On Hold" sub-path. Am I correct?
When the main workflow comes to an end status, for example "Closed" or "Cancelled', for the "On Hold" sub-path, the step of "In Progress" would still be active. Is there any side impact for this situation?