Flowable 工作流API应用与数据库对应展示

模型保存

请求参数分析

流程基本信息 process

{

"id": "process_8616qrt8",

"name": "name_d5mdibck"

}

流程图位置信息 svg

XML 复制代码
<?xml version="1.0" encoding="utf-8"?>
<!-- created with bpmn-js / http://bpmn.io -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="322" height="97"
     viewBox="-31 154 322 97" version="1.1">
    <defs>
        <marker id="sequenceflow-end-white-black-3sruubs92w8hngtoqurf3y84v" viewBox="0 0 20 20" refX="11" refY="10"
                markerWidth="10" markerHeight="10" orient="auto">
            <path d="M 1 5 L 11 10 L 1 15 Z"
                  style="fill: black; stroke-width: 1px; stroke-linecap: round; stroke-dasharray: 10000, 1; stroke: black;"/>
        </marker>
    </defs>
    <g class="djs-group">
        <g class="djs-element djs-shape" data-element-id="Event_02lbc8a" style="display: block;"
           transform="matrix(1 0 0 1 222 182)">
            <g class="djs-visual">
                <circle cx="18" cy="18" r="18"
                        style="stroke: black; stroke-width: 4px; fill: white; fill-opacity: 0.95;"/>
            </g>
            <rect class="djs-hit djs-hit-all" x="0" y="0" width="36" height="36"
                  style="fill: none; stroke-opacity: 0; stroke: white; stroke-width: 15px;"/>
            <rect x="-6" y="-6" width="48" height="48" class="djs-outline" style="fill: none;"/>
        </g>
    </g>
    <g class="djs-group">
        <g class="djs-element djs-connection" data-element-id="Flow_00van8r" style="display: block;">
            <g class="djs-visual">
                <path d="m  160,200L222,200 "
                      style="fill: none; stroke-width: 2px; stroke: black; stroke-linejoin: round; marker-end: url('#sequenceflow-end-white-black-3sruubs92w8hngtoqurf3y84v');"/>
            </g>
            <polyline points="160,200 222,200 " class="djs-hit djs-hit-stroke"
                      style="fill: none; stroke-opacity: 0; stroke: white; stroke-width: 15px;"/>
            <rect x="154" y="194" width="74" height="12" class="djs-outline" style="fill: none;"/>
        </g>
    </g>
    <g class="djs-group">
        <g class="djs-element djs-connection" data-element-id="Flow_1eyb522" style="display: block;">
            <g class="djs-visual">
                <path d="m  5,200L60,200 "
                      style="fill: none; stroke-width: 2px; stroke: black; stroke-linejoin: round; marker-end: url('#sequenceflow-end-white-black-3sruubs92w8hngtoqurf3y84v');"/>
            </g>
            <polyline points="5,200 60,200 " class="djs-hit djs-hit-stroke"
                      style="fill: none; stroke-opacity: 0; stroke: white; stroke-width: 15px;"/>
            <rect x="-1" y="194" width="67" height="12" class="djs-outline" style="fill: none;"/>
        </g>
    </g>
    <g class="djs-group">
        <g class="djs-element djs-shape" data-element-id="event_start" style="display: block;"
           transform="matrix(1 0 0 1 -25 185)">
            <g class="djs-visual">
                <circle cx="15" cy="15" r="15"
                        style="stroke: black; stroke-width: 2px; fill: white; fill-opacity: 0.95;"/>
            </g>
            <rect class="djs-hit djs-hit-all" x="0" y="0" width="30" height="30"
                  style="fill: none; stroke-opacity: 0; stroke: white; stroke-width: 15px;"/>
            <rect x="-6" y="-6" width="42" height="42" class="djs-outline" style="fill: none;"/>
        </g>
    </g>
    <g class="djs-group">
        <g class="djs-element djs-shape" data-element-id="startNode1_label" style="display: block;"
           transform="matrix(1 0 0 1 -23 222)">
            <g class="djs-visual">
                <text lineHeight="1.2" class="djs-label"
                      style="font-family: Arial, sans-serif; font-size: 11px; font-weight: normal; fill: black;">
                    <tspan x="0" y="9.899999999999999">开始</tspan>
                </text>
            </g>
            <rect class="djs-hit djs-hit-all" x="0" y="0" width="23" height="14"
                  style="fill: none; stroke-opacity: 0; stroke: white; stroke-width: 15px;"/>
            <rect x="-6" y="-6" width="35" height="26" class="djs-outline" style="fill: none;"/>
        </g>
    </g>
    <g class="djs-group">
        <g class="djs-element djs-shape" data-element-id="khjl001" style="display: block;"
           transform="matrix(1 0 0 1 60 160)">
            <g class="djs-visual">
                <rect x="0" y="0" width="100" height="80" rx="10" ry="10"
                      style="stroke: black; stroke-width: 2px; fill: white; fill-opacity: 0.95;"/>
                <text lineHeight="1.2" class="djs-label"
                      style="font-family: Arial, sans-serif; font-size: 12px; font-weight: normal; fill: black;">
                    <tspan x="50" y="43.599999999999994"/>
                </text>
                <path d="m 15,12 c 0.909,-0.845 1.594,-2.049 1.594,-3.385 0,-2.554 -1.805,-4.62199999 -4.357,-4.62199999 -2.55199998,0 -4.28799998,2.06799999 -4.28799998,4.62199999 0,1.348 0.974,2.562 1.89599998,3.405 -0.52899998,0.187 -5.669,2.097 -5.794,4.7560005 v 6.718 h 17 v -6.718 c 0,-2.2980005 -5.5279996,-4.5950005 -6.0509996,-4.7760005 zm -8,6 l 0,5.5 m 11,0 l 0,-5"
                      style="fill: white; stroke-width: 0.5px; stroke: black;"/>
                <path d="m 15,12 m 2.162,1.009 c 0,2.4470005 -2.158,4.4310005 -4.821,4.4310005 -2.66499998,0 -4.822,-1.981 -4.822,-4.4310005 "
                      style="fill: white; stroke-width: 0.5px; stroke: black;"/>
                <path d="m 15,12 m -6.9,-3.80 c 0,0 2.25099998,-2.358 4.27399998,-1.177 2.024,1.181 4.221,1.537 4.124,0.965 -0.098,-0.57 -0.117,-3.79099999 -4.191,-4.13599999 -3.57499998,0.001 -4.20799998,3.36699999 -4.20699998,4.34799999 z"
                      style="fill: black; stroke-width: 0.5px; stroke: black;"/>
            </g>
            <rect class="djs-hit djs-hit-all" x="0" y="0" width="100" height="80"
                  style="fill: none; stroke-opacity: 0; stroke: white; stroke-width: 15px;"/>
            <rect x="-6" y="-6" width="112" height="92" class="djs-outline" style="fill: none;"/>
        </g>
    </g>
    <g class="djs-group">
        <g class="djs-element djs-shape" data-element-id="Event_02lbc8a_label" style="display: block;"
           transform="matrix(1 0 0 1 195 225)">
            <g class="djs-visual">
                <text lineHeight="1.2" class="djs-label"
                      style="font-family: Arial, sans-serif; font-size: 11px; font-weight: normal; fill: black;">
                    <tspan x="0" y="9.899999999999999">结束</tspan>
                </text>
            </g>
            <rect class="djs-hit djs-hit-all" x="0" y="0" width="90" height="20"
                  style="fill: none; stroke-opacity: 0; stroke: white; stroke-width: 15px;"/>
            <rect x="-6" y="-6" width="102" height="32" class="djs-outline" style="fill: none;"/>
        </g>
    </g>
</svg>

流程图实例信息(关键) xml

XML 复制代码
<?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:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI"
             xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:bioc="http://bpmn.io/schema/bpmn/biocolor/1.0"
             xmlns:flowable="http://flowable.org/bpmn" xmlns:di="http://www.omg.org/spec/DD/20100524/DI"
             xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.flowable.org/processdef">
    <process id="process_8616qrt8" name="name_d5mdibck">
        <documentation>随便一个</documentation>
        <extensionElements>
            <flowable:executionListener class="com.bu.xxx" event="take"/>
        </extensionElements>
        <startEvent id="event_start" name="开始" flowable:formKey="表单11key" flowable:initiator="zhangs">
            <documentation>开始节点</documentation>
            <outgoing>Flow_1eyb522</outgoing>
        </startEvent>
        <sequenceFlow id="Flow_1eyb522" sourceRef="event_start" targetRef="khjl001"/>
        <userTask id="khjl001" name="客户经理" flowable:candidateGroups="90112111">
            <documentation>客户经理</documentation>
            <incoming>Flow_1eyb522</incoming>
            <outgoing>Flow_00van8r</outgoing>
        </userTask>
        <endEvent id="Event_02lbc8a" name="结束">
            <documentation>结束节点</documentation>
            <extensionElements>
                <flowable:executionListener class="com.bu.xxx" event="end"/>
            </extensionElements>
            <incoming>Flow_00van8r</incoming>
        </endEvent>
        <sequenceFlow id="Flow_00van8r" sourceRef="khjl001" targetRef="Event_02lbc8a"/>
    </process>
    <bpmndi:BPMNDiagram id="BPMNDiagram_flow">
        <bpmndi:BPMNPlane id="BPMNPlane_flow" bpmnElement="process_8616qrt8">
            <bpmndi:BPMNEdge id="Flow_1eyb522_di" bpmnElement="Flow_1eyb522">
                <di:waypoint x="5" y="200"/>
                <di:waypoint x="60" y="200"/>
            </bpmndi:BPMNEdge>
            <bpmndi:BPMNEdge id="Flow_00van8r_di" bpmnElement="Flow_00van8r">
                <di:waypoint x="160" y="200"/>
                <di:waypoint x="222" y="200"/>
            </bpmndi:BPMNEdge>
            <bpmndi:BPMNShape id="BPMNShape_startNode1" bpmnElement="event_start" bioc:stroke="">
                <omgdc:Bounds x="-25" y="185" width="30" height="30"/>
                <bpmndi:BPMNLabel>
                    <omgdc:Bounds x="-23" y="222" width="23" height="14"/>
                </bpmndi:BPMNLabel>
            </bpmndi:BPMNShape>
            <bpmndi:BPMNShape id="Activity_17r1b2u_di" bpmnElement="khjl001">
                <omgdc:Bounds x="60" y="160" width="100" height="80"/>
            </bpmndi:BPMNShape>
            <bpmndi:BPMNShape id="Event_02lbc8a_di" bpmnElement="Event_02lbc8a">
                <omgdc:Bounds x="222" y="182" width="36" height="36"/>
                <bpmndi:BPMNLabel>
                    <omgdc:Bounds x="195" y="225" width="90" height="20"/>
                </bpmndi:BPMNLabel>
            </bpmndi:BPMNShape>
        </bpmndi:BPMNPlane>
    </bpmndi:BPMNDiagram>
</definitions>

流程部署API

核心 API

RepositoryService 负责deploy部署

java 复制代码
String tenantId = UUID.randomUUID().toString();
        repositoryService.createDeployment()
                .name(processName)
                // 租户
                .tenantId(tenantId)
                // 种类
                .category(processName)
                .deploymentProperty("name", processName)
                .deploymentProperty("path", processPath)
                // 工作流文件位置
                .addClasspathResource("processes/" + processPath)
                // 部署
                .deploy();

ACT_RE_DEPLOYMENT 存储部署信息 与 API 映射保持一致

复制代码
ACT_GE_BYTEARRAY [deployment_id] 流程资源 XML 信息 与 ACT_RE_DEPLOYMENT [id] 关联
复制代码
ACT_RE_PROCDEF [deployment_id] 流程基本信息 与 ACT_RE_DEPLOYMENT [id] 关联
相关推荐
洛阳纸贵3 分钟前
基于SpringCloud的广告系统设计与实现(一)
java·开发语言
m0_7482449612 分钟前
使用Nginx正向代理让内网主机通过外网主机访问互联网
java·前端·nginx
曲奇是块小饼干_35 分钟前
leetcode刷题记录(四十八)——128. 最长连续序列
java·算法·leetcode·职场和发展
几何心凉42 分钟前
ToDesk云电脑、顺网云、网易云、易腾云、极云普惠云横测对比:探寻电竞最佳拍档
前端
黄名富1 小时前
Kafka 日志存储 — 文件目录及日志格式
java·分布式·微服务·zookeeper·kafka
ekskef_sef2 小时前
Spring Boot——日志介绍和配置
java·数据库·spring boot
老K(郭云开)2 小时前
最新版Edge浏览器加载ActiveX控件技术——allWebPlugin中间件之awp_CreateActiveXObject接口用法
前端·javascript·chrome·中间件·edge
理想青年宁兴星2 小时前
【RabbitMQ】rabbitmq广播模式的使用
java·rabbitmq·java-rabbitmq
一点一木2 小时前
从零开始:使用 Brain.js 创建你的第一个神经网络(一)
前端·javascript·人工智能
小璇玑学前端2 小时前
微信小程序地图,定位,仿多多自提点
前端