学习目标:
路虽远行则将至,事虽难做则可成!
总是被庞大的flowable工作引擎几十张表让一些小白摸不着头脑。路虽远行则将至,事虽难做则可成!先从单元测试跑通flowable整个流程,小白瞬间变成男神!哈哈(≧ω≦),从此再无烦恼!
学习周期:
- 用一个周末时间,少约会一次,成为男神你便有无数次约会的机会!哈哈(≧ω≦)
测试环境:
在现代软件工程的精密齿轮中,工作流引擎如同一位隐形的指挥家,调控着业务流程的每一个节拍。Flowable 作为开源工作流领域的佼佼者,其稳定性与正确性直接关系到业务流转的顺畅与否。单元测试,这门验证代码行为的严谨艺术,在 Flowable 的世界里更显重要 —— 它不仅是功能验证的盾牌,更是流程设计思想的具象化表达。
- 开发工具:IDEA
- 数据库: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过长。

最低0.47元/天 解锁文章
575

被折叠的 条评论
为什么被折叠?



