Flowable工作流之核心流程操作的本质

本文详细介绍了Flowable工作流的核心操作,包括流程定义、流程实例和执行实例的概念,阐述了流程部署、启动流程实例、处理任务以及完成任务流程的具体实现和涉及的数据库表结构,提供了对工作流实例生命周期的全面理解。
摘要由CSDN通过智能技术生成

1. 前言

部署之后的流程,这个还不能直接运行,例如我们部署了一个请假流程,现在 zhangsan 想要请假,他就需要开启一个请假流程,lisi 想请假,他也需要开启一个请假流程,这一个一个开启的请假流程就是流程实例,而我们一开始部署的请假流程,则类似于一个模版,基于此模版,我们可以开启很多个具体的流程实例

2. 捋清三个概念

  • 流程定义 ProcessDefinition
  • 流程实例 ProcessInstance
  • 执行实例 Execution

2.1. 流程定义

流程定义 ProcessDefinition 这个好说,其实就是我们上篇文章中和大家介绍的内容。将一个流程 XML 文件部署到 flowable 中,这就是一个定义好的流程了,基于这个定义好的流程,我们可以开启很多流程实例

2.2. 流程实例

流程实例 ProcessInstance 就是通过流程定义启动的一个流程,他表示一个流程从开始到结束的最大的流程分支,在一个已经启动的流程中,只存在一个流程实例

2.3. 执行实例

在一个流程中,出口和入口可以算是一个流程实例的节点,而中间的过程则是执行实例。假如流程本身就是一条线,那么流程实例和执行实例基本上是一样的,但是如果流程中包含多条线,例如下图

在这里插入图片描述
这张图中有并行网关,并行任务执行的时候,每一个并行任务就是一个执行实例,这样大家就好理解了

结论就是,在一个流程实例中,除了开始和结束之外,其他的都是执行实例。即使流程只有一条线,中间的也都是执行实例,只不过此时的执行实例等于流程实例而已

3. 流程启动方式

// 通过流程定义的 id 去启动
RuntimeService.startProcessInstanceById()

// 通过流程的 key 去启动
RuntimeService.startProcessInstanceByKey()

// 通过流程的 key+tenantId 去启动
RuntimeService.startProcessInstanceByKeyAndTenantId()

// 通过流程的 message 去启动
RuntimeService.startProcessInstanceByMessage()

// 通过流程的 message+tenanId 去启动
RuntimeService.startProcessInstanceByMessageAndTenantId()

4. Flowable 完整流程操作

4.1. 流程部署

  • 请假发起人是小王
  • 主管是张主管
  • 经理是李经理

工作流程图如下

在这里插入图片描述

<?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: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" exporter="Flowable Open Source Modeler"
             exporterVersion="6.7.2">
    <process id="MyLeave" name="MyLeave" isExecutable="true">
        <documentation>员工请假流程</documentation>
        <startEvent id="sid-159DD77D-9878-4288-AC29-B898E08DC216" flowable:formFieldValidation="true"></startEvent>
        <userTask id="zgID" name="主管审批" flowable:assignee="张主管" flowable:formFieldValidation="true">
            <extensionElements>
                <modeler:initiator-can-complete xmlns:modeler="http://flowable.org/modeler">
                    <![CDATA[false]]></modeler:initiator-can-complete>
            </extensionElements>
        </userTask>
        <sequenceFlow id="sid-1E8F84D7-6C11-4D88-84C9-B818474F880E" sourceRef="sid-159DD77D-9878-4288-AC29-B898E08DC216"
                      targetRef="zgID"></sequenceFlow>
        <exclusiveGateway id="sid-A6E285DA-5C65-4BA7-8BB4-5F4D97AC12E0"></exclusiveGateway>
        <sequenceFlow id="sid-08020782-2DDE-4C56-BFC0-224DC99FB50E" sourceRef="zgID"
                      targetRef="sid-A6E285DA-5C65-4BA7-8BB4-5F4D97AC12E0"></sequenceFlow>
        <endEvent id="sid-5BFB0FC6-B2A5-4F6E-9BDB-8785F2883AEB"></endEvent>
        <userTask id="jlID" name="经理审批" flowable:assignee="李经理" flowable:formFieldValidation="true">
            <extensionElements>
                <modeler:initiator-can-complete xmlns:modeler="http://flowable.org/modeler">
                    <![CDATA[false]]></modeler:initiator-can-complete>
            </extensionElements>
        </userTask>
        <exclusiveGateway id="sid-0DA07C30-2930-40F5-A887-FA1C5BF307EF"></exclusiveGateway>
        <sequenceFlow id="sid-833DAA1C-F1C2-41A1-8455-3FAB79893C14" sourceRef="jlID"
                      targetRef="sid-0DA07C30-2930-40F5-A887-FA1C5BF307EF"></sequenceFlow>
        <endEvent id="sid-8941849E-B17F-4848-BFC8-C6B05CC21A9F"></endEvent>
        <endEvent id="sid-3596170A-0E0F-4C07-BD32-F04AFB375EB1"></endEvent>
        <sequenceFlow id="sid-A74937CE-02B1-493B-8033-08CA2D652771" name="同意"
                      sourceRef="sid-A6E285DA-5C65-4BA7-8BB4-5F4D97AC12E0" targetRef=
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值