2017-10-16 1 views
0

Java로 activiti 사용자 작업을 완료하거나 건너 뛸 수있는 방법이 있습니까? 나는 그렇게 할 TaskListener을 구현하지만 난이 코드를 호출 할 때 : 상황이 여전히 인스턴스화되기 때문에Activiti 워크 플로로 사용자 작업 건너 뛰기 또는 완료

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

당신은 작업 리스너 내에서 작업을 완료 할 수 없습니다 :

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

을 나는이 예외를 얻을. 작업을 건너 뛰려면 게이트웨이를 사용하여 작업을 수행해야합니다.

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

:

만 XML 레벨 (모델러에 노출되지 않음)에서 지원하는 또 다른 대안은 아주 능숙하게 다음 블로그에 설명 된 건너 뛰기 식 구문을 사용하는

입니다

관련 문제