1. addClasspathResource
src/main/resources/processes/LeaveProcess.bpmn20.xml
Deployment deploy = repositoryService.createDeployment()
.name("请假审批")
.addClasspathResource("processes/LeaveProcess.bpmn20.xml")
.deploy();
2. addInputStream
InputStream is = new FileInputStream("/Users/xxx/processes/LeaveProcess.bpmn20.xml");
Deployment deploy = repositoryService.createDeployment()
.name("请假审批")
.addInputStream("LeaveProcess.bpmn20.xm", is)
.deploy();
3. addZipInputStream
zip中可以同时包含bpmn文件和png文件,也可以只有bpmn文件。
InputStream zip = new FileInputStream("/Users/xxx/Temp/LeaveProcess.zip");
Deployment deploy = repositoryService.createDeployment()
.name("请假审批")
.addZipInputStream(new ZipInputStream(zip))
.deploy();
4. addBytes
byte[] 可以从数据库中读取,也可以从文件中获取,也可以从字符串中获取。
InputStream is = new FileInputStream("/Users/mengday/Temp/springboot-flowable/src/main/resources/processes/LeaveProcess.bpmn20.xml");
byte[] bytes = new byte[is.available()];
is.read(bytes);
is.close();
Deployment deploy = repositoryService.createDeployment()
.name("请假审批")
.addBytes("LeaveProcess.bpmn20.xml", bytes)
.deploy();
5. addString
可以直接使用bpmn文件中的内容来部署,文件内容可以前端传参,也可以保存到数据库中获取。
String text = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
"<definitions xmlns=\"http://www.omg.org/spec/BPMN/20100524/MODEL\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:flowable=\"http://flowable.org/bpmn\" xmlns:bpmndi=\"http://www.omg.org/spec/BPMN/20100524/DI\" xmlns:omgdc=\"http://www.omg.org/spec/DD/20100524/DC\" xmlns:omgdi=\"http://www.omg.org/spec/DD/20100524/DI\" typeLanguage=\"http://www.w3.org/2001/XMLSchema\" expressionLanguage=\"http://www.w3.org/1999/XPath\" targetNamespace=\"http://www.flowable.org/processdef\">\n" +
" <process id=\"HelloWorld\" name=\"HelloWorld\" isExecutable=\"true\">\n" +
" <startEvent id=\"start\"/>\n" +
" <userTask id=\"UserTask1\" name=\"提交\"/>\n" +
" <endEvent id=\"end\"/>\n" +
" <sequenceFlow id=\"sid-82f14707-cd94-46d1-aec7-39fef470fbb8\" sourceRef=\"start\" targetRef=\"UserTask1\"/>\n" +
" <sequenceFlow id=\"sid-e1bab619-907a-40ac-a3ea-234896b048d6\" sourceRef=\"UserTask1\" targetRef=\"end\"/>\n" +
" </process>\n" +
" <bpmndi:BPMNDiagram id=\"BPMNDiagram_HelloWorld\">\n" +
" <bpmndi:BPMNPlane bpmnElement=\"HelloWorld\" id=\"BPMNPlane_HelloWorld\">\n" +
" <bpmndi:BPMNShape id=\"shape-7af2fe47-7aa1-4914-b067-6cc4ca20f0b5\" bpmnElement=\"start\">\n" +
" <omgdc:Bounds x=\"-40.0\" y=\"60.0\" width=\"30.0\" height=\"30.0\"/>\n" +
" </bpmndi:BPMNShape>\n" +
" <bpmndi:BPMNShape id=\"shape-b82b6f62-7593-4152-bd56-b237310e14e4\" bpmnElement=\"UserTask1\">\n" +
" <omgdc:Bounds x=\"40.000004\" y=\"57.5\" width=\"54.999996\" height=\"35.0\"/>\n" +
" </bpmndi:BPMNShape>\n" +
" <bpmndi:BPMNShape id=\"shape-b13a4cf4-5071-41bb-8e6d-97bcc6bb0064\" bpmnElement=\"end\">\n" +
" <omgdc:Bounds x=\"145.0\" y=\"60.0\" width=\"30.0\" height=\"30.0\"/>\n" +
" </bpmndi:BPMNShape>\n" +
" <bpmndi:BPMNEdge id=\"edge-8c366281-90fb-43b6-b462-1ff3a6f14027\" bpmnElement=\"sid-82f14707-cd94-46d1-aec7-39fef470fbb8\">\n" +
" <omgdi:waypoint x=\"-10.0\" y=\"75.0\"/>\n" +
" <omgdi:waypoint x=\"40.0\" y=\"75.0\"/>\n" +
" </bpmndi:BPMNEdge>\n" +
" <bpmndi:BPMNEdge id=\"edge-e0337398-70b4-46b5-8c0d-5bba82f50332\" bpmnElement=\"sid-e1bab619-907a-40ac-a3ea-234896b048d6\">\n" +
" <omgdi:waypoint x=\"95.0\" y=\"75.0\"/>\n" +
" <omgdi:waypoint x=\"145.0\" y=\"75.0\"/>\n" +
" </bpmndi:BPMNEdge>\n" +
" </bpmndi:BPMNPlane>\n" +
" </bpmndi:BPMNDiagram>\n" +
"</definitions>\n";
Deployment deploy = repositoryService.createDeployment()
.name("请假审批")
.addString("HelloWorld.bpmn20.xml", text)
.deploy();
6. addBpmnModel
通过Java代码来创建xml中的对象。
// StartEvent -flow1-> UserTask -flow2-> EndEvent
SequenceFlow flow1 = new SequenceFlow();
flow1.setId("flow1");
flow1.setName("start-userTask1");
flow1.setSourceRef("start");
flow1.setTargetRef("userTask1");
SequenceFlow flow2 = new SequenceFlow();
flow1.setId("flow2");
flow1.setName("userTask1-end");
flow1.setSourceRef("userTask1");
flow1.setTargetRef("end");
StartEvent startEvent = new StartEvent();
startEvent.setId("start");
startEvent.setOutgoingFlows(Arrays.asList(flow1));
UserTask userTask1 = new UserTask();
userTask1.setId("userTask1");
userTask1.setName("提交");
userTask1.setIncomingFlows(Arrays.asList(flow1));
userTask1.setOutgoingFlows(Arrays.asList(flow2));
EndEvent endEvent = new EndEvent();
endEvent.setId("end");
endEvent.setIncomingFlows(Arrays.asList(flow2));
BpmnModel bpmnModel = new BpmnModel();
Process process = new Process();
process.setId("HelloWorld");
process.setName("请假审批");
process.addFlowElement(startEvent);
process.addFlowElement(flow1);
process.addFlowElement(userTask1);
process.addFlowElement(flow2);
process.addFlowElement(endEvent);
bpmnModel.addProcess(process);
Deployment deploy = repositoryService.createDeployment()
.name("自定义BpmnModel")
.addBpmnModel("HelloWorld", bpmnModel)
.deploy();