我创建了流程引擎、存储库服务、运行时服务并部署了 BPMN 工作流程。我还创建了一个 Process 实例并能够启动它。问题是,当我尝试使用“deleteProcessInstance”方法挂起或删除流程实例时,我收到一条错误消息,指出找不到 ProcessInstanceId!PS:我在某处了解到BPMN中的processId在Activiti中被视为processKey。
代码:
public void startProcess(String processDefinitionKey)
{
ListenerClass.processInstance=ListenerClass.runtimeService.startProcessInstanceByKey(processDefinitionKey);
}
public void deleteProcess(String processInstanceId)
{
System.out.println("Stopping Process instance id " +processInstanceId);
ListenerClass.runtimeService.deleteProcessInstance(processInstanceId, "Ok");
}
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,在启动流程实例时,我传递了BPMN.xml文件的“Process Id”。(这意味着BPMN.xml的processId = Activiti的processInstanceKey)
我的 BPMN.xml:
<?xml version="1.0" encoding="UTF-8"?>
<bpmn:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL"
xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC"
xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="Definitions_1" xmlns:activiti="http://activiti.org/bpmn"
targetNamespace="http://bpmn.io/schema/bpmn">
<bpmn:process id="Process_11" isExecutable="true" name="Hima">
<bpmn:startEvent id="StartEvent_1">
<bpmn:outgoing>SequenceFlow_06sykhd</bpmn:outgoing>
</bpmn:startEvent>
<bpmn:sequenceFlow id="SequenceFlow_06sykhd" sourceRef="StartEvent_1" targetRef="Task_1dt8brv" />
<bpmn:endEvent id="EndEvent_0cb0ioi">
<bpmn:incoming>SequenceFlow_1doj4n6</bpmn:incoming>
</bpmn:endEvent>
<bpmn:serviceTask id="Task_1dt8brv"
name="My Java Service Task"
activiti:class="com.bosch.bip.Service.task1" >
<bpmn:incoming>SequenceFlow_06sykhd</bpmn:incoming>
<bpmn:outgoing>SequenceFlow_156te78</bpmn:outgoing>
</bpmn:serviceTask>
<bpmn:serviceTask id="Task_10bfll9" activiti:class="com.bosch.bip.Service.task1">
<bpmn:incoming>SequenceFlow_156te78</bpmn:incoming>
<bpmn:outgoing>SequenceFlow_1doj4n6</bpmn:outgoing>
</bpmn:serviceTask> …Run Code Online (Sandbox Code Playgroud)