Flowable中6种部署方式

发布时间:2023年12月29日

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();

在这里插入图片描述

文章来源:https://blog.csdn.net/vbirdbest/article/details/135298048
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。