RR从指定步骤运行流程

时间:2019-01-09 07:24:59

标签: java spring-boot activiti

我正在使用activiti 6为我们的一个项目设计业务流程。这个过程非常简单,它由多个“用户任务”或“服务任务”以及基于角色的分配组成。但是,我们的客户希望管理员用户应该能够在任何时间重新运行以前的“用户任务”或“服务任务”中的任何一个。

例如,以下是我的过程:

开始–>服务任务1 –>用户任务2 –>服务任务3 –>用户任务4 –>服务任务5->用户任务6->服务任务7->用户任务8->结束

客户端希望在流程执行过程中的任何时间点,管理员用户都应该能够将工作流执行方式从:例如,状态“ User-Task8”更改为Service-Task1或User-Task2或Service-Task3中的任何一个或User-Task4或Service-Task5或User-Task6或Service-Task7。

根据Alfresco社区线程:用户任务回滚

我已经创建了一个自定义命令

   public class RestartInstanceActivitiCommand implements Command<Void> { 
           private final String executionId;
           private final FlowElement flowElement;

           public RestartInstanceActivitiCommand(String executionId, FlowElement flowElement) {
              this.executionId = executionId;
              this.flowElement = flowElement;
           }

           public Void execute(CommandContext commandContext) {
              ExecutionEntity execution = commandContext.getExecutionEntityManager().findById(this.executionId); 
              execution.setCurrentFlowElement(flowElement); 
              return null;
           }
        }

并使用:

执行它
 BpmnModel bpmnModel = repositoryService.getBpmnModel(processInstance.getProcessDefinitionId());
    FlowElement flowElement = bpmnModel.getFlowElement("Service-Task1");
    commandExecutor.execute(new RestartInstanceActivitiCommand(processInstanceId, flowElement));
    runtimeService.trigger(processInstanceId);

通过此操作,当前任务被设置为Service-Task1,但是它不会像通常的流程那样自动执行。另外,我可以看到User-Task8也处于活动状态并分配给了我不希望的用户,因为我想取消当前任务并从所需步骤中重新运行它。

通过代码示例感谢您的帮助。

关于桑迪普

0 个答案:

没有答案