Hi all. I have been using Oracle Workflow for the last 18 years. It was way ahead of its time but Oracle has de supported it in 2003 but we did not find any other tool that came close to it. BPMN gives us the same functions now.
In the Workflow tool we have a Monitor where we can see the path the Process took. Like this.
We are also able to interact with the diagram in the tool. If the process fails an item will have a red block around it and we can retry the item.
I have now modeled the same process as a POC in Activity.
Using the REST API I can show the Diagram where the process is at this time.
My question is this. Can Activiti also show the path the process took ? And also how do we interact with the process if a step in the process fails? Let's say the mail server is off-line and can not send an e-mail. Then I should be able to retry the mail step.
Dennis here from the Alfresco Support team and I just came accross your post here and thought I had to answer it.
I now checked the behaviour in our Alfresco Process Services (APS) product and in there, administrators or process initiators have a "Show diagram" button, that when clicked opens a dialog that shows them quite nicely in which activity the process instance stands at that time (highlighted in green) and shows the passed path until there (highlighted in blue):
This would of course also work for more complex diagrams with splitting executions or sub-processe :-)
Now APS is using the Activiti engine and its APIs and REST endpoints internally, so what works from the end user application should also be possible using the REST API, whereas you might need a combination of the History API (Activiti User Guide ) and the process instance diagram API endpoint.
Now coming to your question about retrying failed actions, it depends on how activities are configured, as the Activiti engine is able to handle actvities in a process synchronously or asynchronously (see also Activiti User Guide ). For your example of running into a mail task, but the mail server cannot be reached, it means that if the mail task is configured to be executed synchronously, the process cannot move on and transactions will roll back to the actual task before the mail task (in my example process diagram above, it means that Task B cannot be completed and the assigned user would see an error trying to complete Task B). When the mail task is configured to be executed asynchronously, Task B can be completed and a job will be created internally for the mail task, that is handled by the engine´s async job executor (see Activiti User Guide ). If the execution of this job fails (as the mail server cannot be reached), the Activiti engine by default automatically retries to execute this job 3 times (number of retries could be changed by configuration). If after all automatic attempts, the job could still not be executed (that is actually the case in my runtime diagram above, as the send mail task is highlighted in green and not executed), an administartor can use an jobs REST API endpoint (Activiti User Guide ) or the APS activiti-admin application to manually retry this failed job. In the related UI, administrators would also see the stacktrace and cause for the failed job:
I hope that this explanation makes sense to you Jaco and that this did indeed answers your questions here.
Hi Dennis. Thanks so much for coming back to me. I am using the version of Activiti that is part of WSO2. I was told to ask all the BPM questions on this Forum. The functions you are talking about is that only available in the APS version? I get the diagram from activity using the REST API but it does not look like the one you are showing.
Using this endpoint, one can at least see in which activitiy/task the process instance stands/hangs, but one cannot see the executed path to that point.
Having a quick look into the APS source code, it looks like this is an APS feature only and it is using a mixture of the above REST API but also historic APIs to see which activities of that instance have been completed and then overlay them in the process diagram to display the executed path.
Thank you very much for your help. I am now able to retry a failed job if something fails. I have one more question from a monitor interaction point of view. Let say for whatever reason a process variable that is used in an exclusive gate was set to the wrong value and the process took a wrong path and now sits at a wong human task. I know how to change variables but is there a way to tell the process to re-execute from a certain activity/node in the process? We have very big processes that take many days to complete. Sometimes things go wrong and a process will follow a path it should not have and we have to fix it. It would be great if we can tell the process to run from a certain point again and not have to cancel and rerun from the start.