cancel
Showing results for 
Search instead for 
Did you mean: 

Queue and process monitoring

gromar
Champ in-the-making
Champ in-the-making
Hello all.

I am thinking about process instances monitoring features, application of queuing theory in process optimization. The basic thing to monitor can be queue of waiting process instances in waiting states (e.g. user task). Currently there is possibility to add timer on user task. It could be interesting to have possibility to withdraw waiting in the queue or create a signal when there is high probability that task won't be finished on time (can be based on task execution history).
Queues can detect e.g. bottlenecks of the process (when they are monitored).

Why process definition does not support queues?
15 REPLIES 15

gromar
Champ in-the-making
Champ in-the-making
The simplest DueDate monitoring results should look like:

[img]https://github.com/gro-mar/process-monitor/blob/timer-prediction/generator/src/test/resources/org/pr...[/img]

It means that in 100% of simulation runs due time for at least one task in the queue for checkFormalRequirements node was met and in 61% of simulation runs due time for ValueCheck was met.

(there is a test which has generated this process diagram https://github.com/gro-mar/process-monitor/blob/timer-prediction/generator/src/test/java/org/process...)

Question
Does HistoricTaskInstance

  /** Difference between {@link #getEndTime()} and {@link #getStartTime()} in milliseconds.  */
  Long getDurationInMillis();
return time delta between claiming the task and task complete/delete?


Another topic
Next time I would simulate more ( users in the group,…)  Timers, gateways decisions…..
How can I get potential task owners from the Task?

jbarrez
Star Contributor
Star Contributor
return time delta between claiming the task and task complete/delete?

No, the time between the task creation time and when it is completed

How can I get potential task owners from the Task?

Check the candidateUsers / candidateGroups attribute on a user task.

gromar
Champ in-the-making
Champ in-the-making
Duration
<code>
getDurationInMillis();
</code>
it make sense to get only task creation time and task end time in the process audit trail.

From logical point of view task claim/complete event should be part of TaskService audit trail. Does something like this  exist, from where I can get this kind of information?
How can I extend TaskService to log this information?


Candidate users
org.activiti.engine.task.Task Interface (Returned from the TaskInstanceQuery) does not have any getCandidateUsers/groups method. In fact  taskQuery is returning List<Task>, which is TaskEntity which implements TaskDelegate interface. (To get candidates I can recast it - not clean) - Is there better way?

jbarrez
Star Contributor
Star Contributor
From logical point of view task claim/complete event should be part of TaskService audit trail. Does something like this exist, from where I can get this kind of information? How can I extend TaskService to log this information?

No, this information is indeed not recorded.
To fix this, you'd need to extend the current ClaimTaskCmd and add a call to the history manager yourself.

org.activiti.engine.task.Task Interface (Returned from the TaskInstanceQuery) does not have any getCandidateUsers/groups method. In fact taskQuery is returning List<Task>, which is TaskEntity which implements TaskDelegate interface. (To get candidates I can recast it - not clean) - Is there better way?

Yes - use the getIdentityLinksForTask method on the TaskService

gromar
Champ in-the-making
Champ in-the-making
No, this information is indeed not recorded.
To fix this, you'd need to extend the current ClaimTaskCmd and add a call to the history manager yourself.

I have implemented it locally. How can I publish these changes? (another branch, I do not have permissions, is there any need to have such a functionality ….)

jbarrez
Star Contributor
Star Contributor
Since we're on GitHub, the easiest way is just forking our project and creating a pull request (like all the cool frameworks nowadays do ;-))