gpt4 book ai didi

java - Activiti:从特定步骤重新启动流程

转载 作者:行者123 更新时间:2023-11-29 04:13:11 24 4
gpt4 key购买 nike

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

例如,以下是我的流程:

开始 –> Service-Task1 –>User-Task2 –>Service-Task3 –>User-Task4 –>Service-Task5 –> User-Task6 –> Service-Task7 –> User-Task8 –>End

客户希望在流程执行期间的任何时间点,管理员用户应该能够将工作流执行从:例如状态“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 也处于 Activity 状态并分配给了我不想要的用户,因为我想取消当前任务并从所需的步骤重新运行它。

感谢您对代码示例的帮助。

问候,桑迪普

最佳答案

我写了一个简单的命令方法,应该可以实现你想做的事情。您可以在 Alfresco 论坛上的以下主题中找到答案:

https://community.alfresco.com/thread/224300-user-task-rollback

关于java - Activiti:从特定步骤重新启动流程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53883917/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com