在谈工作流开发之前,请先了解下BPMN规范,BPMN规范定义了用图元如何定义一个业务流程图。BPMN的主要目标就是要提供被所有业务用户理解的一套标记语言,包括业务分析者、软件开发者以及业务管理者与监察者。
下面是一个请假流程的基于BPMN的业务流程图
一个最简单的流程也要至少包括 启动事件 ,任务,结束事件 ,顺序流,网关(可以没有)。转化为BPMN标记语言如下
<?xml version="1.0" encoding="UTF-8"?>
<bpmn:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" 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:pm="http://processmaker.com/BPMN/2.0/Schema.xsd" xmlns:tns="http://sourceforge.net/bpmn/definitions/_1530553328908" xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://bpmn.io/schema/bpmn" exporter="ProcessMaker Modeler" exporterVersion="1.0" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL http://bpmn.sourceforge.net/schemas/BPMN20.xsd">
<bpmn:process id="ProcessId" name="ProcessName" isExecutable="true">
<bpmn:startEvent id="node_1" name="提交申请">
<bpmn:outgoing>node_9</bpmn:outgoing>
</bpmn:startEvent>
<bpmn:endEvent id="node_2" name="结束">
<bpmn:incoming>node_18</bpmn:incoming>
</bpmn:endEvent>
<bpmn:task id="node_3" name="人事审批" pm:assignment="requester">
<bpmn:incoming>node_14</bpmn:incoming>
<bpmn:outgoing>node_19</bpmn:outgoing>
</bpmn:task>
<bpmn:task id="node_4" name="部门领导审批