2017-10-16 3 views
0

Existe-t-il un moyen de terminer ou d'ignorer une tâche utilisateur activiti avec Java? Je mis en place un TaskListener de le faire, mais quand j'appelle ce code:Ignorer ou terminer une tâche utilisateur avec le workflow Activiti

delegateTask.getExecution().getEngineServices().getTaskService().complete(task.getId()); 

Je reçois cette exception:

Caused by: org.activiti.engine.ActivitiException: UserTask should not be signalled before complete 
    at org.activiti.engine.impl.bpmn.behavior.UserTaskActivityBehavior.signal(UserTaskActivityBehavior.java:146) 
    at org.activiti.engine.impl.persistence.entity.ExecutionEntity.signal(ExecutionEntity.java:407) 
    at org.activiti.engine.impl.persistence.entity.TaskEntity.complete(TaskEntity.java:201) 
    at org.activiti.engine.impl.cmd.CompleteTaskCmd.execute(CompleteTaskCmd.java:50) 
    at org.activiti.engine.impl.cmd.CompleteTaskCmd.execute(CompleteTaskCmd.java:24) 
    at org.activiti.engine.impl.cmd.NeedsActiveTaskCmd.execute(NeedsActiveTaskCmd.java:59) 
    at org.activiti.engine.impl.interceptor.CommandInvoker.execute(CommandInvoker.java:24) 
    at org.activiti.engine.impl.interceptor.CommandContextInterceptor.execute(CommandContextInterceptor.java:57) 
    at org.activiti.engine.impl.interceptor.LogInterceptor.execute(LogInterceptor.java:31) 
    at org.activiti.engine.impl.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:40)[415:org.activiti.engine:5.17.0] 
    at org.activiti.engine.impl.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:35)[415:org.activiti.engine:5.17.0] 
    at org.activiti.engine.impl.TaskServiceImpl.complete(TaskServiceImpl.java:179) 
    at Proxy7b61ad98_bd2d_436d_94dd_1e7381cca64e.complete(Unknown Source) 

Répondre

1

Vous ne pouvez pas terminer une tâche dans un auditeur de la tâche puisque le contexte est toujours instancié. Si vous souhaitez ignorer une tâche, vous devez le faire en utilisant une passerelle.

Une autre alternative qui est uniquement pris en charge au niveau xml (non exposée dans le modeleur) est d'utiliser la syntaxe d'expression ignorer documentée dans le blog suivant assez bien:

https://blog.canang.com.my/2016/09/30/whats-activiti-skiptask-about/