flowable工作流引擎跑通单元测试,可让小白瞬间变男神

学习目标:

路虽远行则将至,事虽难做则可成!

总是被庞大的flowable工作引擎几十张表让一些小白摸不着头脑。路虽远行则将至,事虽难做则可成!先从单元测试跑通flowable整个流程,小白瞬间变成男神!哈哈(≧ω≦),从此再无烦恼!

学习周期:

  • 用一个周末时间,少约会一次,成为男神你便有无数次约会的机会!哈哈(≧ω≦)

测试环境:

在现代软件工程的精密齿轮中,工作流引擎如同一位隐形的指挥家,调控着业务流程的每一个节拍。Flowable 作为开源工作流领域的佼佼者,其稳定性与正确性直接关系到业务流转的顺畅与否。单元测试,这门验证代码行为的严谨艺术,在 Flowable 的世界里更显重要 —— 它不仅是功能验证的盾牌,更是流程设计思想的具象化表达。

  1. 开发工具:IDEA
  2. 数据库:MYSQL5.7

创建项目:

1、首先创建一个maven项目,jdk选中1.8,当然你也可以选jdk17版本,期待程序员的世界永无BUG! 你可以与BUG不共戴天,可别砸坏自己的电脑,哈哈(≧ω≦)
在这里插入图片描述
在这里插入图片描述


准备一个BPMN文件

BPMN 2.0概要(schema)的根元素(root element)是definitions元素。在这个元素中,可以定义多个流程定义(然而我们建议在每个文件中,只有一个流程定义。这样可以简化之后的部署过程)。下面给出的是一个空流程定义。请注意definitions元素最少需要包含xmlns与targetNamespace声明。targetNamespace可以为空,它用于对流程定义进行分类。
我是用的官方的,贴过来自己改了一个名字,将该文件放置于resources目录下,注意文件后缀是xxx.bpmn20.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:flowable="http://flowable.org/bpmn"
             targetNamespace="http://www.flowable.org/processdef">
    <process id="holidayRequest" name="Holiday Request" isExecutable="true">
        <startEvent id="startEvent"/>
        <sequenceFlow sourceRef="startEvent" targetRef="approveTask"/>
        <userTask id="approveTask" name="部门领导审批" flowable:assignee="leader"/>
        <sequenceFlow sourceRef="approveTask" targetRef="decision"/>
        <exclusiveGateway id="decision"/>
        <sequenceFlow sourceRef="decision" targetRef="externalSystemCall">
            <conditionExpression xsi:type="tFormalExpression">${approved}</conditionExpression>
        </sequenceFlow>
        <sequenceFlow sourceRef="decision" targetRef="sendRejectionMail">
            <conditionExpression xsi:type="tFormalExpression">${!approved}</conditionExpression>
        </sequenceFlow>
        <serviceTask id="externalSystemCall" name="人事审批服务" flowable:class="org.flowable.ExternalSystemCall" />
        <sequenceFlow sourceRef="externalSystemCall" targetRef="holidayApprovedTask"/>
        <userTask id="holidayApprovedTask" name="人事领导审批" flowable:assignee="personnel"/>
        <sequenceFlow sourceRef="holidayApprovedTask" targetRef="approveEnd"/>
        <serviceTask id="sendRejectionMail" name="发送邮件" flowable:class="org.flowable.SendRejectionMail"/>
        <sequenceFlow sourceRef="sendRejectionMail" targetRef="rejectEnd"/>
        <endEvent id="approveEnd"/>
        <endEvent id="rejectEnd"/>
    </process>
</definitions>

除了使用Eclipse中的XML分类选项,也可以使用在线概要作为BPMN 2.0 XML概要。

1、process元素有两个属性:
id: 必填属性,将映射为Flowable ProcessDefinition对象的key参数。可以使用RuntimeService中的startProcessInstanceByKey方法,使用id来启动这个流程定义的新流程实例。这个方法总会使用流程定义的最新部署版本。
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(“myProcess”);
请注意这与调用startProcessInstanceById方法不同。startProcessInstanceById方法的参数为Flowable引擎在部署时生成的字符串ID(可以通过调用processDefinition.getId()方法获取)。生成ID的格式为key:version,长度限制为64字符。请注意限制流程key的长度,否则会抛出FlowableException异常,提示生成的ID过长。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值