反序列化问题。

This commit is contained in:
dengqichen 2024-12-11 19:10:19 +08:00
parent 5a7eff8b97
commit b3bc78a39e
4 changed files with 46 additions and 46 deletions

View File

@ -8,8 +8,8 @@ import com.fasterxml.jackson.annotation.JsonValue;
* @date 2024-12-11
*/
public enum NodeType {
START("start"),
END("end"),
START_EVENT("startEvent"),
END_EVENT("endEvent"),
USER_TASK("userTask"),
SERVICE_TASK("serviceTask"),
SCRIPT_TASK("scriptTask"),

View File

@ -99,9 +99,9 @@ public class BpmnConverter {
}
switch (node.getType()) {
case START:
case START_EVENT:
return createStartEvent(node);
case END:
case END_EVENT:
return createEndEvent(node);
case SERVICE_TASK:
return createServiceTask(node);

View File

@ -166,8 +166,8 @@ INSERT INTO workflow_definition (
-- 简单流程:开始 -> 服务任务 -> 结束
(
'简单服务任务流程', 'simple_service_flow', 1, '一个包含服务任务的简单流程', 'test',
'<?xml version="1.0" encoding="UTF-8"?><definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:flowable="http://flowable.org/bpmn" targetNamespace="http://www.flowable.org/test"><process id="simple_service_flow" name="简单服务任务流程" isExecutable="true"><startEvent id="start1" name="开始"></startEvent><serviceTask id="service1" name="服务任务"><extensionElements><flowable:field name="script"><flowable:string><![CDATA[echo "Hello World"]]></flowable:string></flowable:field></extensionElements></serviceTask><endEvent id="end1" name="结束"></endEvent><sequenceFlow id="flow1" sourceRef="start1" targetRef="service1"></sequenceFlow><sequenceFlow id="flow2" sourceRef="service1" targetRef="end1"></sequenceFlow></process></definitions>',
'{"nodes":[{"id":"start1","type":"start","name":"开始","position":{"x":100,"y":100},"config":{"type":"start"},"properties":{},"size":{"width":40,"height":40}},{"id":"service1","type":"serviceTask","name":"服务任务","position":{"x":300,"y":100},"config":{"type":"serviceTask","implementation":"shell","fields":{"script":{"string":"echo \\"Hello World\\""}}},"properties":{},"size":{"width":100,"height":60}},{"id":"end1","type":"end","name":"结束","position":{"x":500,"y":100},"config":{"type":"end"},"properties":{},"size":{"width":40,"height":40}}],"edges":[{"id":"flow1","source":"start1","target":"service1","name":"","config":{"type":"sequenceFlow"},"properties":{}},{"id":"flow2","source":"service1","target":"end1","name":"","config":{"type":"sequenceFlow"},"properties":{}}],"properties":{}}',
'<?xml version="1.0" encoding="UTF-8"?><definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:flowable="http://flowable.org/bpmn" targetNamespace="http://www.flowable.org/test"><process id="simple_service_flow" name="简单服务任务流程" isExecutable="true"><startEvent id="startEvent1" name="开始"></startEvent><serviceTask id="service1" name="服务任务"><extensionElements><flowable:field name="script"><flowable:string><![CDATA[echo "Hello World"]]></flowable:string></flowable:field></extensionElements></serviceTask><endEvent id="endEvent1" name="结束"></endEvent><sequenceFlow id="flow1" sourceRef="startEvent1" targetRef="service1"></sequenceFlow><sequenceFlow id="flow2" sourceRef="service1" targetRef="endEvent1"></sequenceFlow></process></definitions>',
'{"nodes":[{"id":"startEvent1","type":"startEvent","name":"开始","position":{"x":100,"y":100},"config":{"type":"startEvent"},"properties":{},"size":{"width":40,"height":40}},{"id":"service1","type":"serviceTask","name":"服务任务","position":{"x":300,"y":100},"config":{"type":"serviceTask","implementation":"shell","fields":{"script":{"string":"echo \\"Hello World\\""}}},"properties":{},"size":{"width":100,"height":60}},{"id":"endEvent1","type":"endEvent","name":"结束","position":{"x":500,"y":100},"config":{"type":"endEvent"},"properties":{},"size":{"width":40,"height":40}}],"edges":[{"id":"flow1","source":"startEvent1","target":"service1","name":"","config":{"type":"sequenceFlow"},"properties":{}},{"id":"flow2","source":"service1","target":"endEvent1","name":"","config":{"type":"sequenceFlow"},"properties":{}}],"properties":{}}',
'{"formItems":[]}',
'["simple","test","service"]',
'PUBLISHED', TRUE, 'http://www.flowable.org/test',
@ -177,8 +177,8 @@ INSERT INTO workflow_definition (
-- 用户任务流程:开始 -> 用户任务 -> 结束
(
'用户审批流程', 'user_approval_flow', 1, '一个简单的用户审批流程', 'approval',
'<?xml version="1.0" encoding="UTF-8"?><definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:flowable="http://flowable.org/bpmn" targetNamespace="http://www.flowable.org/test"><process id="user_approval_flow" name="用户审批流程" isExecutable="true"><startEvent id="start1" name="开始"></startEvent><userTask id="user1" name="审批任务" flowable:assignee="$${initiator}" flowable:candidateUsers="user1,user2" flowable:candidateGroups="group1,group2" flowable:dueDate="$${dueDate}" flowable:formKey="form1" flowable:priority="1"></userTask><endEvent id="end1" name="结束"></endEvent><sequenceFlow id="flow1" name="提交审批" sourceRef="start1" targetRef="user1"></sequenceFlow><sequenceFlow id="flow2" name="审批完成" sourceRef="user1" targetRef="end1"></sequenceFlow></process></definitions>',
'{"nodes":[{"id":"start1","type":"start","name":"开始","position":{"x":100,"y":100},"config":{"type":"start"},"properties":{},"size":{"width":40,"height":40}},{"id":"user1","type":"userTask","name":"审批任务","position":{"x":300,"y":100},"config":{"type":"userTask","assignee":"user1"},"properties":{},"size":{"width":100,"height":60}},{"id":"end1","type":"end","name":"结束","position":{"x":500,"y":100},"config":{"type":"end"},"properties":{},"size":{"width":40,"height":40}}],"edges":[{"id":"flow1","source":"start1","target":"user1","name":"提交审批","config":{"type":"sequenceFlow"},"properties":{}},{"id":"flow2","source":"user1","target":"end1","name":"审批完成","config":{"type":"sequenceFlow"},"properties":{}}],"properties":{}}',
'<?xml version="1.0" encoding="UTF-8"?><definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:flowable="http://flowable.org/bpmn" targetNamespace="http://www.flowable.org/test"><process id="user_approval_flow" name="用户审批流程" isExecutable="true"><startEvent id="startEvent1" name="开始"></startEvent><userTask id="user1" name="审批任务" flowable:assignee="$${initiator}" flowable:candidateUsers="user1,user2" flowable:candidateGroups="group1,group2" flowable:dueDate="$${dueDate}" flowable:formKey="form1" flowable:priority="1"></userTask><endEvent id="endEvent1" name="结束"></endEvent><sequenceFlow id="flow1" name="提交审批" sourceRef="startEvent1" targetRef="user1"></sequenceFlow><sequenceFlow id="flow2" name="审批完成" sourceRef="user1" targetRef="endEvent1"></sequenceFlow></process></definitions>',
'{"nodes":[{"id":"startEvent1","type":"startEvent","name":"开始","position":{"x":100,"y":100},"config":{"type":"startEvent"},"properties":{},"size":{"width":40,"height":40}},{"id":"user1","type":"userTask","name":"审批任务","position":{"x":300,"y":100},"config":{"type":"userTask","assignee":"user1"},"properties":{},"size":{"width":100,"height":60}},{"id":"endEvent1","type":"endEvent","name":"结束","position":{"x":500,"y":100},"config":{"type":"endEvent"},"properties":{},"size":{"width":40,"height":40}}],"edges":[{"id":"flow1","source":"startEvent1","target":"user1","name":"提交审批","config":{"type":"sequenceFlow"},"properties":{}},{"id":"flow2","source":"user1","target":"endEvent1","name":"审批完成","config":{"type":"sequenceFlow"},"properties":{}}],"properties":{}}',
'{"formItems":[{"type":"input","label":"意见","name":"comment","required":true}]}',
'["approval","user-task"]',
'PUBLISHED', TRUE, 'http://www.flowable.org/test',
@ -188,8 +188,8 @@ INSERT INTO workflow_definition (
-- 复杂流程:开始 -> 服务任务 -> 用户任务 -> 脚本任务 -> 结束
(
'复杂业务流程', 'complex_business_flow', 1, '包含多种任务节点的复杂业务流程', 'business',
'<?xml version="1.0" encoding="UTF-8"?><definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:flowable="http://flowable.org/bpmn" targetNamespace="http://www.flowable.org/test"><process id="complex_business_flow" name="复杂业务流程" isExecutable="true"><startEvent id="start1" name="开始"></startEvent><serviceTask id="service1" name="服务任务"><extensionElements><flowable:field name="implementation"><flowable:string><![CDATA[com.example.ServiceTask]]></flowable:string></flowable:field></extensionElements></serviceTask><userTask id="user1" name="用户任务" flowable:assignee="user1"></userTask><scriptTask id="script1" name="脚本任务" scriptFormat="groovy"><script><![CDATA[println "Hello"]]></script></scriptTask><endEvent id="end1" name="结束"></endEvent><sequenceFlow id="flow1" sourceRef="start1" targetRef="service1"></sequenceFlow><sequenceFlow id="flow2" sourceRef="service1" targetRef="user1"><conditionExpression xsi:type="tFormalExpression">$${condition}</conditionExpression></sequenceFlow><sequenceFlow id="flow3" sourceRef="user1" targetRef="script1"></sequenceFlow><sequenceFlow id="flow4" sourceRef="script1" targetRef="end1"></sequenceFlow></process></definitions>',
'{"nodes":[{"id":"start1","type":"start","name":"开始","position":{"x":100,"y":100},"config":{"type":"start"},"properties":{},"size":{"width":40,"height":40}},{"id":"service1","type":"serviceTask","name":"服务任务","position":{"x":300,"y":100},"config":{"type":"serviceTask","implementation":"com.example.ServiceTask"},"properties":{},"size":{"width":100,"height":60}},{"id":"user1","type":"userTask","name":"用户任务","position":{"x":500,"y":100},"config":{"type":"userTask","assignee":"user1"},"properties":{},"size":{"width":100,"height":60}},{"id":"script1","type":"scriptTask","name":"脚本任务","position":{"x":700,"y":100},"config":{"type":"scriptTask","scriptFormat":"groovy","script":"println \\"Hello\\""},"properties":{},"size":{"width":100,"height":60}},{"id":"end1","type":"end","name":"结束","position":{"x":900,"y":100},"config":{"type":"end"},"properties":{},"size":{"width":40,"height":40}}],"edges":[{"id":"flow1","source":"start1","target":"service1","name":"","config":{"type":"sequenceFlow"},"properties":{}},{"id":"flow2","source":"service1","target":"user1","name":"条件分支","config":{"type":"sequenceFlow","conditionExpression":"$${condition}"},"properties":{}},{"id":"flow3","source":"user1","target":"script1","name":"","config":{"type":"sequenceFlow"},"properties":{}},{"id":"flow4","source":"script1","target":"end1","name":"","config":{"type":"sequenceFlow"},"properties":{}}],"properties":{}}',
'<?xml version="1.0" encoding="UTF-8"?><definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:flowable="http://flowable.org/bpmn" targetNamespace="http://www.flowable.org/test"><process id="complex_business_flow" name="复杂业务流程" isExecutable="true"><startEvent id="startEvent1" name="开始"></startEvent><serviceTask id="service1" name="服务任务"><extensionElements><flowable:field name="implementation"><flowable:string><![CDATA[com.example.ServiceTask]]></flowable:string></flowable:field></extensionElements></serviceTask><userTask id="user1" name="用户任务" flowable:assignee="user1"></userTask><scriptTask id="script1" name="脚本任务" scriptFormat="groovy"><script><![CDATA[println "Hello"]]></script></scriptTask><endEvent id="endEvent1" name="结束"></endEvent><sequenceFlow id="flow1" sourceRef="startEvent1" targetRef="service1"></sequenceFlow><sequenceFlow id="flow2" sourceRef="service1" targetRef="user1"><conditionExpression xsi:type="tFormalExpression"><![CDATA[$${condition}]]></conditionExpression></sequenceFlow><sequenceFlow id="flow3" sourceRef="user1" targetRef="script1"></sequenceFlow><sequenceFlow id="flow4" sourceRef="script1" targetRef="endEvent1"></sequenceFlow></process></definitions>',
'{"nodes":[{"id":"startEvent1","type":"startEvent","name":"开始","position":{"x":100,"y":100},"config":{"type":"startEvent"},"properties":{},"size":{"width":40,"height":40}},{"id":"service1","type":"serviceTask","name":"服务任务","position":{"x":300,"y":100},"config":{"type":"serviceTask","implementation":"com.example.ServiceTask"},"properties":{},"size":{"width":100,"height":60}},{"id":"user1","type":"userTask","name":"用户任务","position":{"x":500,"y":100},"config":{"type":"userTask","assignee":"user1"},"properties":{},"size":{"width":100,"height":60}},{"id":"script1","type":"scriptTask","name":"脚本任务","position":{"x":700,"y":100},"config":{"type":"scriptTask","scriptFormat":"groovy","script":"println \\"Hello\\""},"properties":{},"size":{"width":100,"height":60}},{"id":"endEvent1","type":"endEvent","name":"结束","position":{"x":900,"y":100},"config":{"type":"endEvent"},"properties":{},"size":{"width":40,"height":40}}],"edges":[{"id":"flow1","source":"startEvent1","target":"service1","name":"","config":{"type":"sequenceFlow"},"properties":{}},{"id":"flow2","source":"service1","target":"user1","name":"条件分支","config":{"type":"sequenceFlow","conditionExpression":"$${condition}"},"properties":{}},{"id":"flow3","source":"user1","target":"script1","name":"","config":{"type":"sequenceFlow"},"properties":{}},{"id":"flow4","source":"script1","target":"endEvent1","name":"","config":{"type":"sequenceFlow"},"properties":{}}],"properties":{}}',
'{"formItems":[{"type":"input","label":"业务参数","name":"businessParam","required":true},{"type":"select","label":"审批结果","name":"approvalResult","options":[{"label":"同意","value":"approve"},{"label":"拒绝","value":"reject"}]}]}',
'["complex","business","multi-task"]',
'PUBLISHED', TRUE, 'http://www.flowable.org/test',

View File

@ -34,8 +34,8 @@ class BpmnConverterTest {
// 开始节点
WorkflowNode startNode = new WorkflowNode();
startNode.setId("start");
startNode.setType(NodeType.START);
startNode.setId("startEvent1");
startNode.setType(NodeType.START_EVENT);
startNode.setName("开始");
startNode.setPosition(new Position(100.0, 100.0));
nodes.add(startNode);
@ -48,7 +48,7 @@ class BpmnConverterTest {
serviceNode.setPosition(new Position(300.0, 100.0));
NodeConfig serviceConfig = new NodeConfig();
serviceConfig.setImplementation("${shellTaskDelegate}");
serviceConfig.setImplementation("$${shellTaskDelegate}");
Map<String, Object> fields = new HashMap<>();
fields.put("script", "echo 'Hello World'");
fields.put("workDir", "/tmp");
@ -59,8 +59,8 @@ class BpmnConverterTest {
// 结束节点
WorkflowNode endNode = new WorkflowNode();
endNode.setId("end");
endNode.setType(NodeType.END);
endNode.setId("endEvent1");
endNode.setType(NodeType.END_EVENT);
endNode.setName("结束");
endNode.setPosition(new Position(500.0, 100.0));
nodes.add(endNode);
@ -71,7 +71,7 @@ class BpmnConverterTest {
// 开始 -> 服务任务
WorkflowEdge edge1 = new WorkflowEdge();
edge1.setId("flow1");
edge1.setSource("start");
edge1.setSource("startEvent1");
edge1.setTarget("service1");
edge1.setName("流转到服务任务");
edges.add(edge1);
@ -80,7 +80,7 @@ class BpmnConverterTest {
WorkflowEdge edge2 = new WorkflowEdge();
edge2.setId("flow2");
edge2.setSource("service1");
edge2.setTarget("end");
edge2.setTarget("endEvent1");
edge2.setName("流转到结束");
edges.add(edge2);
@ -107,7 +107,7 @@ class BpmnConverterTest {
assertEquals(5, process.getFlowElements().size());
// 验证开始节点
StartEvent startEvent = (StartEvent) process.getFlowElement("start");
StartEvent startEvent = (StartEvent) process.getFlowElement("startEvent1");
assertNotNull(startEvent);
assertEquals("开始", startEvent.getName());
@ -115,7 +115,7 @@ class BpmnConverterTest {
ServiceTask serviceTask = (ServiceTask) process.getFlowElement("service1");
assertNotNull(serviceTask);
assertEquals("服务任务", serviceTask.getName());
assertEquals("${shellTaskDelegate}", serviceTask.getImplementation());
assertEquals("$${shellTaskDelegate}", serviceTask.getImplementation());
// 验证服务任务字段
List<FieldExtension> fieldExtensions = serviceTask.getFieldExtensions();
@ -132,7 +132,7 @@ class BpmnConverterTest {
assertEquals("30", fieldMap.get("timeout"));
// 验证结束节点
EndEvent endEvent = (EndEvent) process.getFlowElement("end");
EndEvent endEvent = (EndEvent) process.getFlowElement("endEvent1");
assertNotNull(endEvent);
assertEquals("结束", endEvent.getName());
@ -140,14 +140,14 @@ class BpmnConverterTest {
SequenceFlow flow1 = (SequenceFlow) process.getFlowElement("flow1");
assertNotNull(flow1);
assertEquals("流转到服务任务", flow1.getName());
assertEquals("start", flow1.getSourceRef());
assertEquals("startEvent1", flow1.getSourceRef());
assertEquals("service1", flow1.getTargetRef());
SequenceFlow flow2 = (SequenceFlow) process.getFlowElement("flow2");
assertNotNull(flow2);
assertEquals("流转到结束", flow2.getName());
assertEquals("service1", flow2.getSourceRef());
assertEquals("end", flow2.getTargetRef());
assertEquals("endEvent1", flow2.getTargetRef());
}
@Test
@ -160,8 +160,8 @@ class BpmnConverterTest {
// 开始节点
WorkflowNode startNode = new WorkflowNode();
startNode.setId("start");
startNode.setType(NodeType.START);
startNode.setId("startEvent1");
startNode.setType(NodeType.START_EVENT);
startNode.setName("开始");
startNode.setPosition(new Position(100.0, 100.0));
nodes.add(startNode);
@ -174,10 +174,10 @@ class BpmnConverterTest {
userNode.setPosition(new Position(300.0, 100.0));
NodeConfig userConfig = new NodeConfig();
userConfig.setAssignee("${initiator}");
userConfig.setAssignee("$${initiator}");
userConfig.setCandidateUsers(Arrays.asList("user1", "user2"));
userConfig.setCandidateGroups(Arrays.asList("group1", "group2"));
userConfig.setDueDate("${dueDate}");
userConfig.setDueDate("$${dueDate}");
userConfig.setPriority(1);
userConfig.setFormKey("form1");
userNode.setConfig(userConfig);
@ -185,8 +185,8 @@ class BpmnConverterTest {
// 结束节点
WorkflowNode endNode = new WorkflowNode();
endNode.setId("end");
endNode.setType(NodeType.END);
endNode.setId("endEvent1");
endNode.setType(NodeType.END_EVENT);
endNode.setName("结束");
endNode.setPosition(new Position(500.0, 100.0));
nodes.add(endNode);
@ -197,7 +197,7 @@ class BpmnConverterTest {
// 开始 -> 用户任务
WorkflowEdge edge1 = new WorkflowEdge();
edge1.setId("flow1");
edge1.setSource("start");
edge1.setSource("startEvent1");
edge1.setTarget("user1");
edge1.setName("提交审批");
edges.add(edge1);
@ -206,7 +206,7 @@ class BpmnConverterTest {
WorkflowEdge edge2 = new WorkflowEdge();
edge2.setId("flow2");
edge2.setSource("user1");
edge2.setTarget("end");
edge2.setTarget("endEvent1");
edge2.setName("审批完成");
edges.add(edge2);
@ -233,10 +233,10 @@ class BpmnConverterTest {
UserTask userTask = (UserTask) process.getFlowElement("user1");
assertNotNull(userTask);
assertEquals("审批任务", userTask.getName());
assertEquals("${initiator}", userTask.getAssignee());
assertEquals("$${initiator}", userTask.getAssignee());
assertEquals(Arrays.asList("user1", "user2"), userTask.getCandidateUsers());
assertEquals(Arrays.asList("group1", "group2"), userTask.getCandidateGroups());
assertEquals("${dueDate}", userTask.getDueDate());
assertEquals("$${dueDate}", userTask.getDueDate());
assertEquals("1", userTask.getPriority());
assertEquals("form1", userTask.getFormKey());
}
@ -258,8 +258,8 @@ class BpmnConverterTest {
// 开始节点
WorkflowNode startNode = new WorkflowNode();
startNode.setId("start");
startNode.setType(NodeType.START);
startNode.setId("startEvent1");
startNode.setType(NodeType.START_EVENT);
startNode.setName("开始");
startNode.setPosition(new Position(100.0, 100.0));
nodes.add(startNode);
@ -272,7 +272,7 @@ class BpmnConverterTest {
serviceNode.setPosition(new Position(250.0, 100.0));
NodeConfig serviceConfig = new NodeConfig();
serviceConfig.setImplementation("${shellTaskDelegate}");
serviceConfig.setImplementation("$${shellTaskDelegate}");
Map<String, Object> serviceFields = new HashMap<>();
serviceFields.put("script", "echo 'Hello World'");
serviceFields.put("workDir", "/tmp");
@ -288,7 +288,7 @@ class BpmnConverterTest {
userNode.setPosition(new Position(400.0, 100.0));
NodeConfig userConfig = new NodeConfig();
userConfig.setAssignee("${initiator}");
userConfig.setAssignee("$${initiator}");
List<String> candidateUsers = Arrays.asList("user1", "user2");
List<String> candidateGroups = Arrays.asList("group1", "group2");
userConfig.setCandidateUsers(candidateUsers);
@ -315,8 +315,8 @@ class BpmnConverterTest {
// 结束节点
WorkflowNode endNode = new WorkflowNode();
endNode.setId("end");
endNode.setType(NodeType.END);
endNode.setId("endEvent1");
endNode.setType(NodeType.END_EVENT);
endNode.setName("结束");
endNode.setPosition(new Position(700.0, 100.0));
nodes.add(endNode);
@ -327,7 +327,7 @@ class BpmnConverterTest {
// 开始 -> 服务任务
WorkflowEdge edge1 = new WorkflowEdge();
edge1.setId("flow1");
edge1.setSource("start");
edge1.setSource("startEvent1");
edge1.setTarget("service1");
edge1.setName("流转到服务任务");
EdgeConfig edgeConfig1 = new EdgeConfig();
@ -343,7 +343,7 @@ class BpmnConverterTest {
edge2.setName("流转到用户任务");
EdgeConfig edgeConfig2 = new EdgeConfig();
edgeConfig2.setType("sequence");
edgeConfig2.setCondition("${approved}");
edgeConfig2.setCondition("$${approved}");
edge2.setConfig(edgeConfig2);
edges.add(edge2);
@ -362,7 +362,7 @@ class BpmnConverterTest {
WorkflowEdge edge4 = new WorkflowEdge();
edge4.setId("flow4");
edge4.setSource("script1");
edge4.setTarget("end");
edge4.setTarget("endEvent1");
edge4.setName("流转到结束");
EdgeConfig edgeConfig4 = new EdgeConfig();
edgeConfig4.setType("sequence");
@ -402,7 +402,7 @@ class BpmnConverterTest {
assertEquals(9, process.getFlowElements().size()); // 5个节点 + 4个连线
// 验证开始节点
StartEvent startEvent = (StartEvent) process.getFlowElement("start");
StartEvent startEvent = (StartEvent) process.getFlowElement("startEvent1");
assertNotNull(startEvent);
assertEquals("开始", startEvent.getName());
@ -410,13 +410,13 @@ class BpmnConverterTest {
ServiceTask serviceTask = (ServiceTask) process.getFlowElement("service1");
assertNotNull(serviceTask);
assertEquals("服务任务", serviceTask.getName());
assertEquals("${shellTaskDelegate}", serviceTask.getImplementation());
assertEquals("$${shellTaskDelegate}", serviceTask.getImplementation());
// 验证用户任务
UserTask userTask = (UserTask) process.getFlowElement("user1");
assertNotNull(userTask);
assertEquals("用户任务", userTask.getName());
assertEquals("${initiator}", userTask.getAssignee());
assertEquals("$${initiator}", userTask.getAssignee());
assertEquals(Arrays.asList("user1", "user2"), userTask.getCandidateUsers());
assertEquals(Arrays.asList("group1", "group2"), userTask.getCandidateGroups());
@ -427,13 +427,13 @@ class BpmnConverterTest {
assertEquals("groovy", scriptTask.getScriptFormat());
// 验证结束节点
EndEvent endEvent = (EndEvent) process.getFlowElement("end");
EndEvent endEvent = (EndEvent) process.getFlowElement("endEvent1");
assertNotNull(endEvent);
assertEquals("结束", endEvent.getName());
// 验证连线
SequenceFlow flow2 = (SequenceFlow) process.getFlowElement("flow2");
assertNotNull(flow2);
assertEquals("${approved}", flow2.getConditionExpression());
assertEquals("$${approved}", flow2.getConditionExpression());
}
}