2017-10-16 6 views
0

Javaを使用してactivitiユーザータスクを完了またはスキップする方法はありますか? 私はそうするTaskListenerを実施したが、私はこのコードを呼び出すとき:Activitiワークフローを使用してユーザータスクをスキップまたは完了する

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

を、私はこの例外を取得:

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) 

答えて

1

コンテキストがまだインスタンス化されるので、あなたはタスクリスナーの中にタスクを完了することはできません。タスクをスキップする場合は、ゲートウェイを使用してタスクをスキップする必要があります。

のみのXMLレベルでサポートされているもう一つの選択肢は、(モデラーで公開されていない)非常にうまく、次のブログに記載スキップ表現の構文を使用することです:

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

関連する問題