Flowable 基本用法

本文介绍了Flowable,一个基于Java的轻量级业务流程引擎,如何部署BPMN2.0流程定义,通过Tomcat集成并利用FlowableUI进行用户管理和流程设计。详细步骤包括安装、启动UI、绘制工作流图和权限设置。

一、简介

Flowable 是一个用 Java 编写的轻量级业务流程引擎。Flowable 流程引擎允许您部署 BPMN 2.0 流程定义(用于定义流程的行业 XML 标准)、创建这些流程定义的流程实例、运行查询、访问活动或历史流程实例和相关数据

Flowable 在将其添加到应用程序、服务、体系结构时非常灵活。您可以将引擎嵌入到您的应用程序或服务中,方法是包含 Flowable 库,该库作为 JAR 提供。因为它是一个 JAR,所以可以很容易地将它添加到任何 Java 环境中:javase;servlet 容器,如 Tomcat或 Jetty、Spring;javaee 服务器,如 JBoss 或 WebSphere 等。或者,您可以使用可流动的 restapi 通过 HTTP 进行通信。还有一些可流动的应用程序(Flowable Modeler、Flowable Admin、Flowable IDM 和 Flowable Task),它们提供了用于处理流程和任务的现成示例 UI。

二、Flowable UI 的安装部署

首先下载文件 Flowable 相关的资源,下载下来以后有如图两个文件:

将这两个文件复制到Tomcat文件夹下:

右击在资源管理器中启动输入

java -jar flowable-ui.war

启动之后会显示

如果一闪而过则检查 jdk 的环境变量配置。启动成功后,在浏览器中访问 http://localhost:8080/flowable-ui/#/,默认的账号密码是:admin/test

进入之后:

创建一个用户

然后授予权限

三、绘制工作流程图

回到主页,打开建模器应用程序

然后创建流程

创建完毕

  • 主键 ID:可以结合业务需求,业务可以根据不同步骤执行不同的业务操作
  • 分配用户:这里为了方便,直接选择了固定值,这里的候选组是具体的业务系统的角色 ID 从而实现不同角色审批不同流程的效果

画完

下载工作流程图

<?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="a1" name="Myfirst-CTB" isExecutable="true">
    <startEvent id="startEvent1" flowable:formFieldValidation="true"></startEvent>
    <userTask id="sid-874A9365-4D7A-413C-BB21-4773530BAAAC" name="测试一下" flowable:formFieldValidation="true"></userTask>
    <sequenceFlow id="sid-CB16684B-AE18-444D-80E8-44185DC39CE4" sourceRef="startEvent1" targetRef="sid-874A9365-4D7A-413C-BB21-4773530BAAAC"></sequenceFlow>
    <exclusiveGateway id="sid-B6CE259C-B065-4B74-B922-AD33768C9EC2"></exclusiveGateway>
    <endEvent id="sid-33C4DAD4-E09E-44DB-9897-C69D52631577"></endEvent>
    <sequenceFlow id="sid-462D6D36-E48C-43E7-AECF-27E6B903605F" name="同意" sourceRef="sid-B6CE259C-B065-4B74-B922-AD33768C9EC2" targetRef="sid-33C4DAD4-E09E-44DB-9897-C69D52631577">
      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${executeType=='YES'}]]></conditionExpression>
    </sequenceFlow>
    <sequenceFlow id="sid-D231B9F3-C63C-4AF8-AEAE-8F9AB52B5481" sourceRef="sid-874A9365-4D7A-413C-BB21-4773530BAAAC" targetRef="sid-B6CE259C-B065-4B74-B922-AD33768C9EC2">
      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${executeType=='YES'}]]></conditionExpression>
    </sequenceFlow>
    <endEvent id="sid-81CC6B7F-36C6-42FD-B285-5C74B58C8725"></endEvent>
    <sequenceFlow id="sid-1DDBDE16-19CF-4697-93E5-950FF37D8FEE" name="拒绝" sourceRef="sid-B6CE259C-B065-4B74-B922-AD33768C9EC2" targetRef="sid-81CC6B7F-36C6-42FD-B285-5C74B58C8725">
      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${executeType=='NO'}]]></conditionExpression>
    </sequenceFlow>
  </process>
  <bpmndi:BPMNDiagram id="BPMNDiagram_a1">
    <bpmndi:BPMNPlane bpmnElement="a1" id="BPMNPlane_a1">
      <bpmndi:BPMNShape bpmnElement="startEvent1" id="BPMNShape_startEvent1">
        <omgdc:Bounds height="30.0" width="30.0" x="105.0" y="163.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="sid-874A9365-4D7A-413C-BB21-4773530BAAAC" id="BPMNShape_sid-874A9365-4D7A-413C-BB21-4773530BAAAC">
        <omgdc:Bounds height="80.0" width="100.0" x="225.0" y="138.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="sid-B6CE259C-B065-4B74-B922-AD33768C9EC2" id="BPMNShape_sid-B6CE259C-B065-4B74-B922-AD33768C9EC2">
        <omgdc:Bounds height="40.0" width="40.0" x="465.0" y="158.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="sid-33C4DAD4-E09E-44DB-9897-C69D52631577" id="BPMNShape_sid-33C4DAD4-E09E-44DB-9897-C69D52631577">
        <omgdc:Bounds height="28.0" width="28.0" x="635.5" y="164.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="sid-81CC6B7F-36C6-42FD-B285-5C74B58C8725" id="BPMNShape_sid-81CC6B7F-36C6-42FD-B285-5C74B58C8725">
        <omgdc:Bounds height="28.0" width="28.0" x="471.0" y="293.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNEdge bpmnElement="sid-462D6D36-E48C-43E7-AECF-27E6B903605F" id="BPMNEdge_sid-462D6D36-E48C-43E7-AECF-27E6B903605F" flowable:sourceDockerX="20.5" flowable:sourceDockerY="20.5" flowable:targetDockerX="14.0" flowable:targetDockerY="14.0">
        <omgdi:waypoint x="504.50212408312484" y="178.44189602446482"></omgdi:waypoint>
        <omgdi:waypoint x="635.5000622194184" y="178.04253044527786"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sid-D231B9F3-C63C-4AF8-AEAE-8F9AB52B5481" id="BPMNEdge_sid-D231B9F3-C63C-4AF8-AEAE-8F9AB52B5481" flowable:sourceDockerX="50.0" flowable:sourceDockerY="40.0" flowable:targetDockerX="20.5" flowable:targetDockerY="20.5">
        <omgdi:waypoint x="324.9499999999905" y="178.11864608076007"></omgdi:waypoint>
        <omgdi:waypoint x="465.45238095238096" y="178.45238095238096"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sid-CB16684B-AE18-444D-80E8-44185DC39CE4" id="BPMNEdge_sid-CB16684B-AE18-444D-80E8-44185DC39CE4" flowable:sourceDockerX="15.0" flowable:sourceDockerY="15.0" flowable:targetDockerX="50.0" flowable:targetDockerY="40.0">
        <omgdi:waypoint x="134.9499992392744" y="178.0"></omgdi:waypoint>
        <omgdi:waypoint x="224.9999999999684" y="178.0"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sid-1DDBDE16-19CF-4697-93E5-950FF37D8FEE" id="BPMNEdge_sid-1DDBDE16-19CF-4697-93E5-950FF37D8FEE" flowable:sourceDockerX="20.5" flowable:sourceDockerY="20.5" flowable:targetDockerX="14.0" flowable:targetDockerY="14.0">
        <omgdi:waypoint x="485.42578125" y="197.51656908665106"></omgdi:waypoint>
        <omgdi:waypoint x="485.0542797509776" y="293.0001043765593"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
    </bpmndi:BPMNPlane>
  </bpmndi:BPMNDiagram>
</definitions>

Flowable 是一个开源的 BPMN 2.0 流程引擎,它提供了一套强大的 API 和工具,以便您可以创建和执行复杂的业务流程。以下是 Flowable 的使用方法: 1. 引入 Flowable 的依赖 您可以通过添加以下 Maven 依赖来使用 Flowable: ``` <dependency> <groupId>org.flowable</groupId> <artifactId>flowable-spring-boot-starter</artifactId> <version>6.6.0</version> </dependency> ``` 2. 创建流程定义(Process Definition) 在 Flowable 中,流程定义是一个 BPMN 2.0 XML 文件,它描述了流程中每个任务的执行顺序和条件。您可以使用 Flowable Designer 或其他 BPMN 设计工具创建流程定义。 3. 部署流程定义 在您的应用程序中,您可以使用以下代码片段将流程定义部署到 Flowable 引擎中: ``` Deployment deployment = repositoryService.createDeployment() .addClasspathResource("processes/myProcess.bpmn20.xml") .deploy(); ``` 4. 启动流程实例 在流程定义部署后,您可以使用以下代码片段启动流程实例: ``` ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("myProcess"); ``` 5. 处理任务 一旦流程实例启动,您可以使用以下代码片段查询并处理当前任务: ``` List<Task> tasks = taskService.createTaskQuery() .processInstanceId(processInstance.getId()) .list(); for (Task task : tasks) { taskService.complete(task.getId()); } ``` 6. 监听流程事件 在 Flowable 中,您可以监听流程事件以便在特定事件发生时执行自定义逻辑。例如,您可以监听任务完成事件以便在任务完成后发送电子邮件通知。 ``` public class MyTaskEventListener implements TaskListener { public void notify(DelegateTask delegateTask) { // 发送电子邮件通知 } } runtimeService.addEventListener(new MyTaskEventListener()); ``` 以上就是 Flowable基本使用方法,您可以继续了解更多 Flowable 的 API 和工具以便更好地使用它来管理和执行您的业务流程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值