反序列化问题。
This commit is contained in:
parent
5a7eff8b97
commit
b3bc78a39e
@ -8,8 +8,8 @@ import com.fasterxml.jackson.annotation.JsonValue;
|
|||||||
* @date 2024-12-11
|
* @date 2024-12-11
|
||||||
*/
|
*/
|
||||||
public enum NodeType {
|
public enum NodeType {
|
||||||
START("start"),
|
START_EVENT("startEvent"),
|
||||||
END("end"),
|
END_EVENT("endEvent"),
|
||||||
USER_TASK("userTask"),
|
USER_TASK("userTask"),
|
||||||
SERVICE_TASK("serviceTask"),
|
SERVICE_TASK("serviceTask"),
|
||||||
SCRIPT_TASK("scriptTask"),
|
SCRIPT_TASK("scriptTask"),
|
||||||
|
|||||||
@ -99,9 +99,9 @@ public class BpmnConverter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
switch (node.getType()) {
|
switch (node.getType()) {
|
||||||
case START:
|
case START_EVENT:
|
||||||
return createStartEvent(node);
|
return createStartEvent(node);
|
||||||
case END:
|
case END_EVENT:
|
||||||
return createEndEvent(node);
|
return createEndEvent(node);
|
||||||
case SERVICE_TASK:
|
case SERVICE_TASK:
|
||||||
return createServiceTask(node);
|
return createServiceTask(node);
|
||||||
|
|||||||
@ -166,8 +166,8 @@ INSERT INTO workflow_definition (
|
|||||||
-- 简单流程:开始 -> 服务任务 -> 结束
|
-- 简单流程:开始 -> 服务任务 -> 结束
|
||||||
(
|
(
|
||||||
'简单服务任务流程', 'simple_service_flow', 1, '一个包含服务任务的简单流程', 'test',
|
'简单服务任务流程', '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>',
|
'<?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":"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":{}}',
|
'{"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":[]}',
|
'{"formItems":[]}',
|
||||||
'["simple","test","service"]',
|
'["simple","test","service"]',
|
||||||
'PUBLISHED', TRUE, 'http://www.flowable.org/test',
|
'PUBLISHED', TRUE, 'http://www.flowable.org/test',
|
||||||
@ -177,8 +177,8 @@ INSERT INTO workflow_definition (
|
|||||||
-- 用户任务流程:开始 -> 用户任务 -> 结束
|
-- 用户任务流程:开始 -> 用户任务 -> 结束
|
||||||
(
|
(
|
||||||
'用户审批流程', 'user_approval_flow', 1, '一个简单的用户审批流程', 'approval',
|
'用户审批流程', '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>',
|
'<?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":"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":{}}',
|
'{"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}]}',
|
'{"formItems":[{"type":"input","label":"意见","name":"comment","required":true}]}',
|
||||||
'["approval","user-task"]',
|
'["approval","user-task"]',
|
||||||
'PUBLISHED', TRUE, 'http://www.flowable.org/test',
|
'PUBLISHED', TRUE, 'http://www.flowable.org/test',
|
||||||
@ -188,8 +188,8 @@ INSERT INTO workflow_definition (
|
|||||||
-- 复杂流程:开始 -> 服务任务 -> 用户任务 -> 脚本任务 -> 结束
|
-- 复杂流程:开始 -> 服务任务 -> 用户任务 -> 脚本任务 -> 结束
|
||||||
(
|
(
|
||||||
'复杂业务流程', 'complex_business_flow', 1, '包含多种任务节点的复杂业务流程', 'business',
|
'复杂业务流程', '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>',
|
'<?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":"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":{}}',
|
'{"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"}]}]}',
|
'{"formItems":[{"type":"input","label":"业务参数","name":"businessParam","required":true},{"type":"select","label":"审批结果","name":"approvalResult","options":[{"label":"同意","value":"approve"},{"label":"拒绝","value":"reject"}]}]}',
|
||||||
'["complex","business","multi-task"]',
|
'["complex","business","multi-task"]',
|
||||||
'PUBLISHED', TRUE, 'http://www.flowable.org/test',
|
'PUBLISHED', TRUE, 'http://www.flowable.org/test',
|
||||||
|
|||||||
@ -34,8 +34,8 @@ class BpmnConverterTest {
|
|||||||
|
|
||||||
// 开始节点
|
// 开始节点
|
||||||
WorkflowNode startNode = new WorkflowNode();
|
WorkflowNode startNode = new WorkflowNode();
|
||||||
startNode.setId("start");
|
startNode.setId("startEvent1");
|
||||||
startNode.setType(NodeType.START);
|
startNode.setType(NodeType.START_EVENT);
|
||||||
startNode.setName("开始");
|
startNode.setName("开始");
|
||||||
startNode.setPosition(new Position(100.0, 100.0));
|
startNode.setPosition(new Position(100.0, 100.0));
|
||||||
nodes.add(startNode);
|
nodes.add(startNode);
|
||||||
@ -48,7 +48,7 @@ class BpmnConverterTest {
|
|||||||
serviceNode.setPosition(new Position(300.0, 100.0));
|
serviceNode.setPosition(new Position(300.0, 100.0));
|
||||||
|
|
||||||
NodeConfig serviceConfig = new NodeConfig();
|
NodeConfig serviceConfig = new NodeConfig();
|
||||||
serviceConfig.setImplementation("${shellTaskDelegate}");
|
serviceConfig.setImplementation("$${shellTaskDelegate}");
|
||||||
Map<String, Object> fields = new HashMap<>();
|
Map<String, Object> fields = new HashMap<>();
|
||||||
fields.put("script", "echo 'Hello World'");
|
fields.put("script", "echo 'Hello World'");
|
||||||
fields.put("workDir", "/tmp");
|
fields.put("workDir", "/tmp");
|
||||||
@ -59,8 +59,8 @@ class BpmnConverterTest {
|
|||||||
|
|
||||||
// 结束节点
|
// 结束节点
|
||||||
WorkflowNode endNode = new WorkflowNode();
|
WorkflowNode endNode = new WorkflowNode();
|
||||||
endNode.setId("end");
|
endNode.setId("endEvent1");
|
||||||
endNode.setType(NodeType.END);
|
endNode.setType(NodeType.END_EVENT);
|
||||||
endNode.setName("结束");
|
endNode.setName("结束");
|
||||||
endNode.setPosition(new Position(500.0, 100.0));
|
endNode.setPosition(new Position(500.0, 100.0));
|
||||||
nodes.add(endNode);
|
nodes.add(endNode);
|
||||||
@ -71,7 +71,7 @@ class BpmnConverterTest {
|
|||||||
// 开始 -> 服务任务
|
// 开始 -> 服务任务
|
||||||
WorkflowEdge edge1 = new WorkflowEdge();
|
WorkflowEdge edge1 = new WorkflowEdge();
|
||||||
edge1.setId("flow1");
|
edge1.setId("flow1");
|
||||||
edge1.setSource("start");
|
edge1.setSource("startEvent1");
|
||||||
edge1.setTarget("service1");
|
edge1.setTarget("service1");
|
||||||
edge1.setName("流转到服务任务");
|
edge1.setName("流转到服务任务");
|
||||||
edges.add(edge1);
|
edges.add(edge1);
|
||||||
@ -80,7 +80,7 @@ class BpmnConverterTest {
|
|||||||
WorkflowEdge edge2 = new WorkflowEdge();
|
WorkflowEdge edge2 = new WorkflowEdge();
|
||||||
edge2.setId("flow2");
|
edge2.setId("flow2");
|
||||||
edge2.setSource("service1");
|
edge2.setSource("service1");
|
||||||
edge2.setTarget("end");
|
edge2.setTarget("endEvent1");
|
||||||
edge2.setName("流转到结束");
|
edge2.setName("流转到结束");
|
||||||
edges.add(edge2);
|
edges.add(edge2);
|
||||||
|
|
||||||
@ -107,7 +107,7 @@ class BpmnConverterTest {
|
|||||||
assertEquals(5, process.getFlowElements().size());
|
assertEquals(5, process.getFlowElements().size());
|
||||||
|
|
||||||
// 验证开始节点
|
// 验证开始节点
|
||||||
StartEvent startEvent = (StartEvent) process.getFlowElement("start");
|
StartEvent startEvent = (StartEvent) process.getFlowElement("startEvent1");
|
||||||
assertNotNull(startEvent);
|
assertNotNull(startEvent);
|
||||||
assertEquals("开始", startEvent.getName());
|
assertEquals("开始", startEvent.getName());
|
||||||
|
|
||||||
@ -115,7 +115,7 @@ class BpmnConverterTest {
|
|||||||
ServiceTask serviceTask = (ServiceTask) process.getFlowElement("service1");
|
ServiceTask serviceTask = (ServiceTask) process.getFlowElement("service1");
|
||||||
assertNotNull(serviceTask);
|
assertNotNull(serviceTask);
|
||||||
assertEquals("服务任务", serviceTask.getName());
|
assertEquals("服务任务", serviceTask.getName());
|
||||||
assertEquals("${shellTaskDelegate}", serviceTask.getImplementation());
|
assertEquals("$${shellTaskDelegate}", serviceTask.getImplementation());
|
||||||
|
|
||||||
// 验证服务任务字段
|
// 验证服务任务字段
|
||||||
List<FieldExtension> fieldExtensions = serviceTask.getFieldExtensions();
|
List<FieldExtension> fieldExtensions = serviceTask.getFieldExtensions();
|
||||||
@ -132,7 +132,7 @@ class BpmnConverterTest {
|
|||||||
assertEquals("30", fieldMap.get("timeout"));
|
assertEquals("30", fieldMap.get("timeout"));
|
||||||
|
|
||||||
// 验证结束节点
|
// 验证结束节点
|
||||||
EndEvent endEvent = (EndEvent) process.getFlowElement("end");
|
EndEvent endEvent = (EndEvent) process.getFlowElement("endEvent1");
|
||||||
assertNotNull(endEvent);
|
assertNotNull(endEvent);
|
||||||
assertEquals("结束", endEvent.getName());
|
assertEquals("结束", endEvent.getName());
|
||||||
|
|
||||||
@ -140,14 +140,14 @@ class BpmnConverterTest {
|
|||||||
SequenceFlow flow1 = (SequenceFlow) process.getFlowElement("flow1");
|
SequenceFlow flow1 = (SequenceFlow) process.getFlowElement("flow1");
|
||||||
assertNotNull(flow1);
|
assertNotNull(flow1);
|
||||||
assertEquals("流转到服务任务", flow1.getName());
|
assertEquals("流转到服务任务", flow1.getName());
|
||||||
assertEquals("start", flow1.getSourceRef());
|
assertEquals("startEvent1", flow1.getSourceRef());
|
||||||
assertEquals("service1", flow1.getTargetRef());
|
assertEquals("service1", flow1.getTargetRef());
|
||||||
|
|
||||||
SequenceFlow flow2 = (SequenceFlow) process.getFlowElement("flow2");
|
SequenceFlow flow2 = (SequenceFlow) process.getFlowElement("flow2");
|
||||||
assertNotNull(flow2);
|
assertNotNull(flow2);
|
||||||
assertEquals("流转到结束", flow2.getName());
|
assertEquals("流转到结束", flow2.getName());
|
||||||
assertEquals("service1", flow2.getSourceRef());
|
assertEquals("service1", flow2.getSourceRef());
|
||||||
assertEquals("end", flow2.getTargetRef());
|
assertEquals("endEvent1", flow2.getTargetRef());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -160,8 +160,8 @@ class BpmnConverterTest {
|
|||||||
|
|
||||||
// 开始节点
|
// 开始节点
|
||||||
WorkflowNode startNode = new WorkflowNode();
|
WorkflowNode startNode = new WorkflowNode();
|
||||||
startNode.setId("start");
|
startNode.setId("startEvent1");
|
||||||
startNode.setType(NodeType.START);
|
startNode.setType(NodeType.START_EVENT);
|
||||||
startNode.setName("开始");
|
startNode.setName("开始");
|
||||||
startNode.setPosition(new Position(100.0, 100.0));
|
startNode.setPosition(new Position(100.0, 100.0));
|
||||||
nodes.add(startNode);
|
nodes.add(startNode);
|
||||||
@ -174,10 +174,10 @@ class BpmnConverterTest {
|
|||||||
userNode.setPosition(new Position(300.0, 100.0));
|
userNode.setPosition(new Position(300.0, 100.0));
|
||||||
|
|
||||||
NodeConfig userConfig = new NodeConfig();
|
NodeConfig userConfig = new NodeConfig();
|
||||||
userConfig.setAssignee("${initiator}");
|
userConfig.setAssignee("$${initiator}");
|
||||||
userConfig.setCandidateUsers(Arrays.asList("user1", "user2"));
|
userConfig.setCandidateUsers(Arrays.asList("user1", "user2"));
|
||||||
userConfig.setCandidateGroups(Arrays.asList("group1", "group2"));
|
userConfig.setCandidateGroups(Arrays.asList("group1", "group2"));
|
||||||
userConfig.setDueDate("${dueDate}");
|
userConfig.setDueDate("$${dueDate}");
|
||||||
userConfig.setPriority(1);
|
userConfig.setPriority(1);
|
||||||
userConfig.setFormKey("form1");
|
userConfig.setFormKey("form1");
|
||||||
userNode.setConfig(userConfig);
|
userNode.setConfig(userConfig);
|
||||||
@ -185,8 +185,8 @@ class BpmnConverterTest {
|
|||||||
|
|
||||||
// 结束节点
|
// 结束节点
|
||||||
WorkflowNode endNode = new WorkflowNode();
|
WorkflowNode endNode = new WorkflowNode();
|
||||||
endNode.setId("end");
|
endNode.setId("endEvent1");
|
||||||
endNode.setType(NodeType.END);
|
endNode.setType(NodeType.END_EVENT);
|
||||||
endNode.setName("结束");
|
endNode.setName("结束");
|
||||||
endNode.setPosition(new Position(500.0, 100.0));
|
endNode.setPosition(new Position(500.0, 100.0));
|
||||||
nodes.add(endNode);
|
nodes.add(endNode);
|
||||||
@ -197,7 +197,7 @@ class BpmnConverterTest {
|
|||||||
// 开始 -> 用户任务
|
// 开始 -> 用户任务
|
||||||
WorkflowEdge edge1 = new WorkflowEdge();
|
WorkflowEdge edge1 = new WorkflowEdge();
|
||||||
edge1.setId("flow1");
|
edge1.setId("flow1");
|
||||||
edge1.setSource("start");
|
edge1.setSource("startEvent1");
|
||||||
edge1.setTarget("user1");
|
edge1.setTarget("user1");
|
||||||
edge1.setName("提交审批");
|
edge1.setName("提交审批");
|
||||||
edges.add(edge1);
|
edges.add(edge1);
|
||||||
@ -206,7 +206,7 @@ class BpmnConverterTest {
|
|||||||
WorkflowEdge edge2 = new WorkflowEdge();
|
WorkflowEdge edge2 = new WorkflowEdge();
|
||||||
edge2.setId("flow2");
|
edge2.setId("flow2");
|
||||||
edge2.setSource("user1");
|
edge2.setSource("user1");
|
||||||
edge2.setTarget("end");
|
edge2.setTarget("endEvent1");
|
||||||
edge2.setName("审批完成");
|
edge2.setName("审批完成");
|
||||||
edges.add(edge2);
|
edges.add(edge2);
|
||||||
|
|
||||||
@ -233,10 +233,10 @@ class BpmnConverterTest {
|
|||||||
UserTask userTask = (UserTask) process.getFlowElement("user1");
|
UserTask userTask = (UserTask) process.getFlowElement("user1");
|
||||||
assertNotNull(userTask);
|
assertNotNull(userTask);
|
||||||
assertEquals("审批任务", userTask.getName());
|
assertEquals("审批任务", userTask.getName());
|
||||||
assertEquals("${initiator}", userTask.getAssignee());
|
assertEquals("$${initiator}", userTask.getAssignee());
|
||||||
assertEquals(Arrays.asList("user1", "user2"), userTask.getCandidateUsers());
|
assertEquals(Arrays.asList("user1", "user2"), userTask.getCandidateUsers());
|
||||||
assertEquals(Arrays.asList("group1", "group2"), userTask.getCandidateGroups());
|
assertEquals(Arrays.asList("group1", "group2"), userTask.getCandidateGroups());
|
||||||
assertEquals("${dueDate}", userTask.getDueDate());
|
assertEquals("$${dueDate}", userTask.getDueDate());
|
||||||
assertEquals("1", userTask.getPriority());
|
assertEquals("1", userTask.getPriority());
|
||||||
assertEquals("form1", userTask.getFormKey());
|
assertEquals("form1", userTask.getFormKey());
|
||||||
}
|
}
|
||||||
@ -258,8 +258,8 @@ class BpmnConverterTest {
|
|||||||
|
|
||||||
// 开始节点
|
// 开始节点
|
||||||
WorkflowNode startNode = new WorkflowNode();
|
WorkflowNode startNode = new WorkflowNode();
|
||||||
startNode.setId("start");
|
startNode.setId("startEvent1");
|
||||||
startNode.setType(NodeType.START);
|
startNode.setType(NodeType.START_EVENT);
|
||||||
startNode.setName("开始");
|
startNode.setName("开始");
|
||||||
startNode.setPosition(new Position(100.0, 100.0));
|
startNode.setPosition(new Position(100.0, 100.0));
|
||||||
nodes.add(startNode);
|
nodes.add(startNode);
|
||||||
@ -272,7 +272,7 @@ class BpmnConverterTest {
|
|||||||
serviceNode.setPosition(new Position(250.0, 100.0));
|
serviceNode.setPosition(new Position(250.0, 100.0));
|
||||||
|
|
||||||
NodeConfig serviceConfig = new NodeConfig();
|
NodeConfig serviceConfig = new NodeConfig();
|
||||||
serviceConfig.setImplementation("${shellTaskDelegate}");
|
serviceConfig.setImplementation("$${shellTaskDelegate}");
|
||||||
Map<String, Object> serviceFields = new HashMap<>();
|
Map<String, Object> serviceFields = new HashMap<>();
|
||||||
serviceFields.put("script", "echo 'Hello World'");
|
serviceFields.put("script", "echo 'Hello World'");
|
||||||
serviceFields.put("workDir", "/tmp");
|
serviceFields.put("workDir", "/tmp");
|
||||||
@ -288,7 +288,7 @@ class BpmnConverterTest {
|
|||||||
userNode.setPosition(new Position(400.0, 100.0));
|
userNode.setPosition(new Position(400.0, 100.0));
|
||||||
|
|
||||||
NodeConfig userConfig = new NodeConfig();
|
NodeConfig userConfig = new NodeConfig();
|
||||||
userConfig.setAssignee("${initiator}");
|
userConfig.setAssignee("$${initiator}");
|
||||||
List<String> candidateUsers = Arrays.asList("user1", "user2");
|
List<String> candidateUsers = Arrays.asList("user1", "user2");
|
||||||
List<String> candidateGroups = Arrays.asList("group1", "group2");
|
List<String> candidateGroups = Arrays.asList("group1", "group2");
|
||||||
userConfig.setCandidateUsers(candidateUsers);
|
userConfig.setCandidateUsers(candidateUsers);
|
||||||
@ -315,8 +315,8 @@ class BpmnConverterTest {
|
|||||||
|
|
||||||
// 结束节点
|
// 结束节点
|
||||||
WorkflowNode endNode = new WorkflowNode();
|
WorkflowNode endNode = new WorkflowNode();
|
||||||
endNode.setId("end");
|
endNode.setId("endEvent1");
|
||||||
endNode.setType(NodeType.END);
|
endNode.setType(NodeType.END_EVENT);
|
||||||
endNode.setName("结束");
|
endNode.setName("结束");
|
||||||
endNode.setPosition(new Position(700.0, 100.0));
|
endNode.setPosition(new Position(700.0, 100.0));
|
||||||
nodes.add(endNode);
|
nodes.add(endNode);
|
||||||
@ -327,7 +327,7 @@ class BpmnConverterTest {
|
|||||||
// 开始 -> 服务任务
|
// 开始 -> 服务任务
|
||||||
WorkflowEdge edge1 = new WorkflowEdge();
|
WorkflowEdge edge1 = new WorkflowEdge();
|
||||||
edge1.setId("flow1");
|
edge1.setId("flow1");
|
||||||
edge1.setSource("start");
|
edge1.setSource("startEvent1");
|
||||||
edge1.setTarget("service1");
|
edge1.setTarget("service1");
|
||||||
edge1.setName("流转到服务任务");
|
edge1.setName("流转到服务任务");
|
||||||
EdgeConfig edgeConfig1 = new EdgeConfig();
|
EdgeConfig edgeConfig1 = new EdgeConfig();
|
||||||
@ -343,7 +343,7 @@ class BpmnConverterTest {
|
|||||||
edge2.setName("流转到用户任务");
|
edge2.setName("流转到用户任务");
|
||||||
EdgeConfig edgeConfig2 = new EdgeConfig();
|
EdgeConfig edgeConfig2 = new EdgeConfig();
|
||||||
edgeConfig2.setType("sequence");
|
edgeConfig2.setType("sequence");
|
||||||
edgeConfig2.setCondition("${approved}");
|
edgeConfig2.setCondition("$${approved}");
|
||||||
edge2.setConfig(edgeConfig2);
|
edge2.setConfig(edgeConfig2);
|
||||||
edges.add(edge2);
|
edges.add(edge2);
|
||||||
|
|
||||||
@ -362,7 +362,7 @@ class BpmnConverterTest {
|
|||||||
WorkflowEdge edge4 = new WorkflowEdge();
|
WorkflowEdge edge4 = new WorkflowEdge();
|
||||||
edge4.setId("flow4");
|
edge4.setId("flow4");
|
||||||
edge4.setSource("script1");
|
edge4.setSource("script1");
|
||||||
edge4.setTarget("end");
|
edge4.setTarget("endEvent1");
|
||||||
edge4.setName("流转到结束");
|
edge4.setName("流转到结束");
|
||||||
EdgeConfig edgeConfig4 = new EdgeConfig();
|
EdgeConfig edgeConfig4 = new EdgeConfig();
|
||||||
edgeConfig4.setType("sequence");
|
edgeConfig4.setType("sequence");
|
||||||
@ -402,7 +402,7 @@ class BpmnConverterTest {
|
|||||||
assertEquals(9, process.getFlowElements().size()); // 5个节点 + 4个连线
|
assertEquals(9, process.getFlowElements().size()); // 5个节点 + 4个连线
|
||||||
|
|
||||||
// 验证开始节点
|
// 验证开始节点
|
||||||
StartEvent startEvent = (StartEvent) process.getFlowElement("start");
|
StartEvent startEvent = (StartEvent) process.getFlowElement("startEvent1");
|
||||||
assertNotNull(startEvent);
|
assertNotNull(startEvent);
|
||||||
assertEquals("开始", startEvent.getName());
|
assertEquals("开始", startEvent.getName());
|
||||||
|
|
||||||
@ -410,13 +410,13 @@ class BpmnConverterTest {
|
|||||||
ServiceTask serviceTask = (ServiceTask) process.getFlowElement("service1");
|
ServiceTask serviceTask = (ServiceTask) process.getFlowElement("service1");
|
||||||
assertNotNull(serviceTask);
|
assertNotNull(serviceTask);
|
||||||
assertEquals("服务任务", serviceTask.getName());
|
assertEquals("服务任务", serviceTask.getName());
|
||||||
assertEquals("${shellTaskDelegate}", serviceTask.getImplementation());
|
assertEquals("$${shellTaskDelegate}", serviceTask.getImplementation());
|
||||||
|
|
||||||
// 验证用户任务
|
// 验证用户任务
|
||||||
UserTask userTask = (UserTask) process.getFlowElement("user1");
|
UserTask userTask = (UserTask) process.getFlowElement("user1");
|
||||||
assertNotNull(userTask);
|
assertNotNull(userTask);
|
||||||
assertEquals("用户任务", userTask.getName());
|
assertEquals("用户任务", userTask.getName());
|
||||||
assertEquals("${initiator}", userTask.getAssignee());
|
assertEquals("$${initiator}", userTask.getAssignee());
|
||||||
assertEquals(Arrays.asList("user1", "user2"), userTask.getCandidateUsers());
|
assertEquals(Arrays.asList("user1", "user2"), userTask.getCandidateUsers());
|
||||||
assertEquals(Arrays.asList("group1", "group2"), userTask.getCandidateGroups());
|
assertEquals(Arrays.asList("group1", "group2"), userTask.getCandidateGroups());
|
||||||
|
|
||||||
@ -427,13 +427,13 @@ class BpmnConverterTest {
|
|||||||
assertEquals("groovy", scriptTask.getScriptFormat());
|
assertEquals("groovy", scriptTask.getScriptFormat());
|
||||||
|
|
||||||
// 验证结束节点
|
// 验证结束节点
|
||||||
EndEvent endEvent = (EndEvent) process.getFlowElement("end");
|
EndEvent endEvent = (EndEvent) process.getFlowElement("endEvent1");
|
||||||
assertNotNull(endEvent);
|
assertNotNull(endEvent);
|
||||||
assertEquals("结束", endEvent.getName());
|
assertEquals("结束", endEvent.getName());
|
||||||
|
|
||||||
// 验证连线
|
// 验证连线
|
||||||
SequenceFlow flow2 = (SequenceFlow) process.getFlowElement("flow2");
|
SequenceFlow flow2 = (SequenceFlow) process.getFlowElement("flow2");
|
||||||
assertNotNull(flow2);
|
assertNotNull(flow2);
|
||||||
assertEquals("${approved}", flow2.getConditionExpression());
|
assertEquals("$${approved}", flow2.getConditionExpression());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Loading…
Reference in New Issue
Block a user