gpt4 book ai didi

java - 如何在 Camunda-bpm 中结束流程实例?

转载 作者:行者123 更新时间:2023-12-01 09:42:14 26 4
gpt4 key购买 nike

我的bpmn文件如下: Addition.bpmn

我正在使用接收任务,以便我可以使用 RuntimeService,我在 sayHello 类中启动我的流程,如下所示:

public void sayHello(ProcessEngine processEngine) {

try {
System.out.println("inside postdeploy ");
variables.put("a", 2);
variables.put("b", 5);
variables.put("c", 0);

ProcessInstance instance= processEngine.getRuntimeService().startProcessInstanceByKey("Process_2", variables);


variables.put("c",processEngine.getRuntimeService().getVariable(instance.getId(), "c"));

Execution execution = processEngine.getRuntimeService().createExecutionQuery()
.processInstanceId(instance.getId())
.activityId("ReceiveTask_16nulbx")
.singleResult();

processEngine.getRuntimeService().signal(execution.getId());

我在 Calculator 类中设置了我的 c 变量,该类由我的服务任务实现,如下所示:

public class Calculator implements JavaDelegate {

public void execute(DelegateExecution exe) throws Exception {

System.out.println("Inside calculator again");

Integer x = (Integer) exe.getVariable("a");
Integer y = (Integer) exe.getVariable("b");
int add = x+y;
System.out.println("Addition is"+add);
exe.setVariable("c", add);

}

问题是我的流程实例在此之后没有结束。我的问题是在获取我的 c 变量后如何结束我的 Process 实例?

最佳答案

问题是接收任务完成后您的流程实例对象不会更新。如果要检查实例是否结束,则必须查询流程实例。使用以下语句检查实例是否仍然存在:

ProcessInstance processInstance = processEngine
.getRuntimeService()
.createProcessInstanceQuery()
.processInstanceId(processInstanceId)
.singleResult();

如果processInstancenull,则实例已完成。

关于java - 如何在 Camunda-bpm 中结束流程实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38366751/

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