Browse Source

success

master
燕鹏 4 years ago
parent
commit
74e9fee2f2
  1. 25
      src/main/java/com/example/demo/controller/WorkFlowController.java
  2. 18
      src/main/resources/bpmn/testex1.bpmn

25
src/main/java/com/example/demo/controller/WorkFlowController.java

@ -29,6 +29,7 @@ import org.springframework.web.bind.annotation.RestController;
import javax.xml.stream.XMLInputFactory; import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamReader; import javax.xml.stream.XMLStreamReader;
import java.io.UnsupportedEncodingException; import java.io.UnsupportedEncodingException;
import java.nio.charset.Charset;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -52,7 +53,7 @@ public class WorkFlowController {
public void model() { public void model() {
RepositoryService repositoryService = processEngine.getRepositoryService(); RepositoryService repositoryService = processEngine.getRepositoryService();
Model model = repositoryService.newModel(); Model model = repositoryService.newModel();
model.setName("请假工作流"); model.setName("请假工作流市场部");
model.setKey("holidayex"); model.setKey("holidayex");
repositoryService.saveModel(model); repositoryService.saveModel(model);
System.out.println(model.getId()); System.out.println(model.getId());
@ -98,6 +99,7 @@ public class WorkFlowController {
JsonNode modelNode = new ObjectMapper().readTree(bytes); JsonNode modelNode = new ObjectMapper().readTree(bytes);
BpmnModel model = new BpmnJsonConverter().convertToBpmnModel(modelNode); BpmnModel model = new BpmnJsonConverter().convertToBpmnModel(modelNode);
model.getProcesses().get(0).setName(modelData.getName()); model.getProcesses().get(0).setName(modelData.getName());
model.getProcesses().get(0).setId(modelData.getKey());
//校验有没有开始结束节点- //校验有没有开始结束节点-
List<EndEvent> endEventList = model.getProcesses().get(0).findFlowElementsOfType(EndEvent.class); List<EndEvent> endEventList = model.getProcesses().get(0).findFlowElementsOfType(EndEvent.class);
List<StartEvent> startEventList = model.getProcesses().get(0).findFlowElementsOfType(StartEvent.class); List<StartEvent> startEventList = model.getProcesses().get(0).findFlowElementsOfType(StartEvent.class);
@ -106,19 +108,9 @@ public class WorkFlowController {
for (ExclusiveGateway gateway : gateways) { for (ExclusiveGateway gateway : gateways) {
System.out.println(gateway.getId()); System.out.println(gateway.getId());
Collection<FlowElement> flowElements = model.getProcesses().get(0).getFlowElements(); Collection<FlowElement> flowElements = model.getProcesses().get(0).getFlowElements();
List<SequenceFlow> collect = model.getProcesses().get(0).findFlowElementsOfType(SequenceFlow.class).stream().filter(x -> { List<SequenceFlow> collect = model.getProcesses().get(0).findFlowElementsOfType(SequenceFlow.class).stream().filter(x -> x.getSourceRef().equals(gateway.getId())).collect(Collectors.toList());
flowElements.remove(x); flowElements.removeAll(collect);
return x.getSourceRef().equals(gateway.getId()); Collections.sort(collect, (x1, x2) -> x1.getConditionExpression() == null && x2.getConditionExpression() != null ? 1 : x1.getConditionExpression() != null && x2.getConditionExpression() == null ? -1 : 0);
}).collect(Collectors.toList());
Collections.sort(collect, (x1, x2) -> {
if (x1.getConditionExpression() == null && x2.getConditionExpression() != null) {
return 1;
}
if (x1.getConditionExpression() != null && x2.getConditionExpression() == null) {
return -1;
}
return 0;
});
flowElements.addAll(collect); flowElements.addAll(collect);
System.out.println(collect); System.out.println(collect);
} }
@ -133,13 +125,12 @@ public class WorkFlowController {
byte[] bpmnByates = new BpmnXMLConverter().convertToXML(model); byte[] bpmnByates = new BpmnXMLConverter().convertToXML(model);
//发布流程 //发布流程
String processName = modelData.getName() + ".bpmn20.xml"; String processName = modelData.getName() + ".bpmn20.xml";
String convertToXML = new String(bpmnByates); String convertToXML = new String(bpmnByates, "UTF-8");
System.out.println(convertToXML); System.out.println(convertToXML);
DeploymentBuilder deployment = repositoryService.createDeployment(); DeploymentBuilder deployment = repositoryService.createDeployment();
deployment.name(modelData.getName()); deployment.name(modelData.getName());
deployment.addString(processName, convertToXML); deployment.addString(processName, convertToXML);
// deployment.key(modelData.getKey()); deployment.key(modelData.getKey());
deployment.key("holidayex");
Deployment deploy = deployment.deploy(); Deployment deploy = deployment.deploy();
modelData.setDeploymentId(deploy.getId()); modelData.setDeploymentId(deploy.getId());
System.out.println(deploy.getId()); System.out.println(deploy.getId());

18
src/main/resources/bpmn/testex1.bpmn

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:activiti="http://activiti.org/bpmn" 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" xmlns:tns="http://www.activiti.org/testm1604633800390" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" expressionLanguage="http://www.w3.org/1999/XPath" id="m1604633800390" name="" targetNamespace="http://www.activiti.org/testm1604633800390" typeLanguage="http://www.w3.org/2001/XMLSchema"> <definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:activiti="http://activiti.org/bpmn" 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" xmlns:tns="http://www.activiti.org/testm1604633800390" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" expressionLanguage="http://www.w3.org/1999/XPath" id="m1604633800390" name="" targetNamespace="http://www.activiti.org/testm1604633800390" typeLanguage="http://www.w3.org/2001/XMLSchema">
<process id="holiday请假" isClosed="false" isExecutable="true" processType="None"> <process id="holiday请假" isClosed="true" isExecutable="true" processType="None">
<startEvent id="_2" name="StartEvent"/> <startEvent id="_2" name="StartEvent"/>
<userTask activiti:exclusive="true" id="_5" name="启动任务"/> <userTask activiti:exclusive="true" id="_5" name="启动任务"/>
<endEvent id="_12" name="EndEvent"/> <endEvent id="_12" name="EndEvent"/>
@ -9,18 +9,22 @@
<sequenceFlow id="_6" sourceRef="_2" targetRef="_5"/> <sequenceFlow id="_6" sourceRef="_2" targetRef="_5"/>
<userTask activiti:exclusive="true" id="_7" name="第一分支"/> <userTask activiti:exclusive="true" id="_7" name="第一分支"/>
<userTask activiti:exclusive="true" id="_9" name="第三分支"/> <userTask activiti:exclusive="true" id="_9" name="第三分支"/>
<userTask activiti:exclusive="true" id="_20" name="默认分支"/> <userTask activiti:exclusive="true" id="_20" name="默认分支">
<multiInstanceLoopCharacteristics isSequential="false"/>
</userTask>
<userTask activiti:exclusive="true" id="_10" name="结束节点"/> <userTask activiti:exclusive="true" id="_10" name="结束节点"/>
<sequenceFlow id="_11" sourceRef="_10" targetRef="_12"/> <sequenceFlow id="_11" sourceRef="_10" targetRef="_12"/>
<sequenceFlow id="_13" sourceRef="_4" targetRef="_7"> <sequenceFlow id="_13" sourceRef="_4" targetRef="_7">
<conditionExpression xsi:type="tFormalExpression"> <conditionExpression xsi:type="tFormalExpression">
<![CDATA[${num>=7}]]> <![CDATA[
]]>
</conditionExpression> </conditionExpression>
</sequenceFlow> </sequenceFlow>
<sequenceFlow id="_8" sourceRef="_4" targetRef="_20"/> <sequenceFlow id="_8" sourceRef="_4" targetRef="_20"/>
<sequenceFlow id="_3" sourceRef="_4" targetRef="_9"> <sequenceFlow id="_3" sourceRef="_4" targetRef="_9">
<conditionExpression xsi:type="tFormalExpression"> <conditionExpression xsi:type="tFormalExpression">
<![CDATA[${num>=3 && num<7}]]> <![CDATA[
]]>
</conditionExpression> </conditionExpression>
</sequenceFlow> </sequenceFlow>
<sequenceFlow id="_15" sourceRef="_7" targetRef="_10"/> <sequenceFlow id="_15" sourceRef="_7" targetRef="_10"/>
@ -72,7 +76,7 @@
</bpmndi:BPMNLabel> </bpmndi:BPMNLabel>
</bpmndi:BPMNShape> </bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="_20" id="Shape-_20"> <bpmndi:BPMNShape bpmnElement="_20" id="Shape-_20">
<dc:Bounds height="55.0" width="85.0" x="440.0" y="155.0"/> <dc:Bounds height="55.0" width="85.0" x="440.0" y="145.0"/>
<bpmndi:BPMNLabel> <bpmndi:BPMNLabel>
<dc:Bounds height="55.0" width="85.0" x="0.0" y="0.0"/> <dc:Bounds height="55.0" width="85.0" x="0.0" y="0.0"/>
</bpmndi:BPMNLabel> </bpmndi:BPMNLabel>
@ -92,7 +96,7 @@
</bpmndi:BPMNLabel> </bpmndi:BPMNLabel>
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="_14" id="BPMNEdge__14" sourceElement="_20" targetElement="_10"> <bpmndi:BPMNEdge bpmnElement="_14" id="BPMNEdge__14" sourceElement="_20" targetElement="_10">
<di:waypoint x="525.0" y="182.5"/> <di:waypoint x="525.0" y="172.5"/>
<di:waypoint x="675.0" y="162.5"/> <di:waypoint x="675.0" y="162.5"/>
<bpmndi:BPMNLabel> <bpmndi:BPMNLabel>
<dc:Bounds height="0.0" width="0.0" x="0.0" y="0.0"/> <dc:Bounds height="0.0" width="0.0" x="0.0" y="0.0"/>
@ -128,7 +132,7 @@
</bpmndi:BPMNEdge> </bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="_8" id="BPMNEdge__8" sourceElement="_4" targetElement="_20"> <bpmndi:BPMNEdge bpmnElement="_8" id="BPMNEdge__8" sourceElement="_4" targetElement="_20">
<di:waypoint x="327.0" y="166.0"/> <di:waypoint x="327.0" y="166.0"/>
<di:waypoint x="440.0" y="182.5"/> <di:waypoint x="440.0" y="172.5"/>
<bpmndi:BPMNLabel> <bpmndi:BPMNLabel>
<dc:Bounds height="0.0" width="0.0" x="0.0" y="0.0"/> <dc:Bounds height="0.0" width="0.0" x="0.0" y="0.0"/>
</bpmndi:BPMNLabel> </bpmndi:BPMNLabel>

Loading…
Cancel
Save