从入门到实战—————Flowable(工作流)

目录

前言

相关概念

Flowable

流程图

流程id

任务id

SpringBoot项目集成Flowable

1、pom.xml文件添加依赖

添加flowable依赖(查找依赖有很多方式,这里用idea查找的)

2、配置yml文件

3、绘制流程图

①下载压缩包

②运行war包

4、必知API

常见问题

github下载速度慢怎么办?

绘制流程图生成的xml总是报错?

有没有相关手册?


前言

前段时间项目中用到了Flowable,现在我来聊一聊Flowable的使用,即使没有这方面基础的朋友也可以轻轻松松的阅读实践。

相关概念

Flowable

Flowable是一个使用 Java 编写的轻量级业务流程引擎

流程图

将整个流程形象直观的展现,使各种情况一目了然,构建完成后可以生成xml文件放到项目中。

流程id

按照拟定好的流程图创建出一个流程唯一标识,可以通过此标识查看当前流程状态

任务id

创建流程后,待审批的工作会在对应的审批人上生成一个任务id在审批人审批后任务id无效

SpringBoot项目集成Flowable

1、pom.xml文件添加依赖

添加flowable依赖(查找依赖有很多方式,这里用idea查找的)

 大家可以直接复制下面依赖哦!

        <dependency>
            <groupId>org.flowable</groupId>
            <artifactId>flowable-spring-boot-starter</artifactId>
            <version>6.3.0</version>
        </dependency>

连接mysql依赖我用的8.0.16版本,此版本之前有漏洞!!!

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.16</version>
</dependency>

2、配置yml文件

  flowable:
    # 关闭异步,不关闭历史数据的插入就是异步的,会在同一个事物里面,无法回滚
    # 开发可开启会提高些效率,上线需要关闭
    async-executor-activate: false

3、绘制流程图

①下载压缩包

(1)github网址:Releases · flowable/flowable-engine · GitHub(点击flowable-6.4.0.zip)

 也可以直接点击后面链接下载https://github.com/flowable/flowable-engine/releases/download/flowable-6.4.0/flowable-6.4.0.zip

②运行war包

我的tomcat是9.0.38版本的,上一步下载的压缩包解压,并将所有war包放到tomcat中运行,访问 flowable-modeler (用户名admin,密码test

绘制好流程图验证无异常可以保存后生成xml文件放到项目中的resources/processes/目录下

4、必知API

    @Autowired
    private RuntimeService runtimeService;
    @Autowired
    private TaskService taskService;
    @Autowired
    private HistoryService historyService;
    @Autowired
    private RepositoryService repositoryService;
    @Autowired
    private ProcessEngine processEngine;
/**
     * 创建流程
     *
     * @param key                 process id
     * @param userId              用户ID
     * @param purchaseOrderNumber 采购单号
     * @param remark              采购备注
     * @return 流程ID
     */
    @GetMapping("add")
    public String addExpense(String key, String userId, String purchaseOrderNumber, String remark) {
        Map<String, Object> map = new HashMap<>();
        map.put("userId", userId);
        map.put("purchaseOrderNumber", purchaseOrderNumber);
        map.put("remark", remark);
        ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(key, map);
        return processInstance.getId();
    }
    /**
     * 获取指定用户组流程任务列表
     *
     * @param group 用户(组)
     * @return    
     */
    @GetMapping("lists")
    public Object gettasksByGroup(String group) {
        List<Task> tasks = taskService.createTaskQuery().taskCandidateGroup(group).list();
        return tasks.toString();
    }
     /**
     * 通过/拒绝任务
     *
     * @param taskId   任务ID
     * @param approved 0 :通过 1:拒绝
     * @return ResultUtil是我曾令瑶封装的返回对象
     */
    @GetMapping("apply")
    public ResultUtil apply(String taskId, String approved) {
        Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
        if (task == null) {
            return ResultVoUtil.error("该任务不存在!");
        }
        Map<String, Object> variables = new HashMap<>();
        Boolean apply = approved.equals("0") ? true : false;
        variables.put("approved", apply);
        taskService.complete(taskId, variables);
        return new ResultUtil("操作成功");
    }
    /**
     * 查看历史流程记录
     *
     * @param processInstanceId 流程ID
     * @return 历史信息列表
     */
    @GetMapping("historyList")
    public List<HistoricActivityInstance> getHistoryList(String processInstanceId) {
        return historyService.createHistoricActivityInstanceQuery()
                .processInstanceId(processInstanceId).finished().orderByHistoricActivityInstanceEndTime().asc().list();
    }

常见问题

github下载速度慢怎么办?

答:私信我,让你下载速度快近百倍!!!

绘制流程图生成的xml总是报错?

建议生成之前,先点击左上角那个对号图标,没有异常再生成xml文件

有没有相关手册?

Flowable BPMN 用户手册 (v 6.3.0)

里面内容很不错,比如你想找创建实例api

  • 4
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
从基础讲起,结合应用场景,由浅到深细化讲解BPMN和Flowable的相关组件,并结合具体实例,演示功能的使用和注意事项。最终结合Springboot搭建一套工作流系统,囊括一般项目中所需要的知识点,理论结合实际,让真正入门到熟练。 1 简介 2 学习指南 2.1 Flowable初体验 2.1.1 Flowable是什么? 2.1.2 Flowable 和 Activiti 2.1.3 构建命令行应用程序 2.1.3.1 创建一个流程引擎 2.1.3.2 部署一个流程定义 2.1.3.3 启动一个流程实例 2.1.3.4 查询和完成一个任务 2.1.3.5 写一个JavaDelegate 2.1.3.6 查询历史数据 2.2 Flowable整合Spring 2.3 Flowable整合SpringBoot 2.4 Flowable流程定义部署 2.4.1 使用xml部署 2.4.2 使用压缩文件部署 2.4.3 使用IO流部署 3 BPMN2.0简介 3.1 什么是BPMN2.0 3.2 创建一个BPMN 3.2.1 直接编写XML文件 3.2.2 使用插件编写 3.2.2.1 在线安装插件 3.2.2.2 离线安装 3.2.2.3 插件使用说明 4 BPMN2.0组成 4.1 事件 4.1.1 事件定义 4.1.2 计时器事件定义 4.1.2.1 timeDate 4.1.2.1.1 开始事件TimerStartEvent 4.1.2.1.2 中间事件TimerCatchingEvent 4.1.2.1.3 边界事件TimerBoundaryEvent 4.1.2.2 timeDuration 4.1.2.2.1 开始事件TimerStartEvent 4.1.2.1.2 中间事件TimerCatchingEvent 4.1.2.1.3 边界事件TimerBoundaryEvent 4.1.2.3 timeCycle 4.1.2.3.1 开始事件TimerStartEvent 4.1.2.3.2 中间事件TimerCatchingEvent 4.1.2.3.3 边界事件TimerBoundaryEvent 4.1.3 消息事件 4.1.3.1 开始事件MessageStartEvent 4.1.3.2 中间事件MessagecatchingEvent 4.1.3.3 边界事件MessageBoundaryEvent 4.1.4 错误事件 4.1.4.1 开始事件ErrorStartEvent 4.1.4.2 边界事件ErrorBoundaryEvent 4.1.5 信号事件 4.1.5.1 开始事件SignalStartEvent 4.1.5.2 中间事件 4.1.5.2.1 捕捉事件SignalCatchingEvent 4.1.5.2.2 抛出事件SignalThrowingEvent 4.1.5.3 边界事件SignalBoundaryEvent dream21st 4.1.6结束事件 4.1.6.1 错误结束事件ErrorEndEvent 4.1.6.2 中断结束事件TerminateEndEvent 4.1.6.2.1 中断结束事件案例一 4.1.6.2.2 中断结束事件案例二 4.1.6.3 取消结束事件 CancelEndEvent 4.1.7 补偿事件CompensationThrowing 4.1.8 网关 4.1.8.1 并行网关ParallelGateway 4.1.8.2 排他网关ExclusiveGateway 4.1.8.3 包容网关InclusiveGateWay 4.1.8.4 事件网关EventGateway 4.2 任务 4.2.1 用户任务UserTask 4.2.1.1 用户任务入门案例Assignee指定 4.2.1.2 CandidateUser和CandidateGroup指定 4.2.1.3 多人会签MultiInstance 4.2.1.4 动态表单 4.2.2 服务任务ServiceTask 4.2.3 手工任务ManualTask 4.2.4 接受任务ReceiveTask 4.2.5 调用流程CallActivity 4.2.5.1 固定子流程 4.2.5.2 动态子流程 4.3 容器 5 工作流实战案例 5.1 实战案例一 5.1.1 部署流程定义 5.1.2 启动流程实例 5.1.3 查询待办任务 5.1.4 提交任务 5.1.5 查询候选任务 5.1.6 获取候选任务 5.1.7 通过流程实例ID查询任务流转图 5.2 实战案例二
本课程是《Flowable流程入门课程》的后续高级课程。在学习本课程前,应先学习入门课程,以掌握相关基础知识。高级课程着重讲解Flowable工作流的高级概念、复杂理论和实战应用。课程内容包括流程管理思想、技术与标准、工作流的控制模式和资源模式;Flowable数据库表及变量;与SpringSpring Boot的集成;BPMN 2.0主要类图;Flowable高级服务如JAVA服务任务、脚本任务、Web Service任务、外部工作者任务、多实例任务、补偿处理程序、子流程和调用活动等;Flowable事件侦听器、执行侦听器和任务侦听器;Flowable历史和REST API;Flowable事务、并发性、身份管理及LDAP集成;Flowable高级主题如流程实例迁移、异步执行器的设计与配置、用于高并发的UUID ID生成器、多租户、高级流程引擎配置、执行自定义SQL和实验性流程调试器等;Flowable Eclipse设计器特性及定制;Flowable 事件注册;Flowable相关标准和规范如ISO8601标准和cron等。本课程对Flowable官方文档进行了彻底梳理和融汇贯通,并结合实践,形象生动、系统全面、简单易懂地呈现给大家,让大家从开源软件文档冗长耗时、英文晦涩难懂、概念理解困难、知识点分散等困境中解脱出来,从而能快速地将Flowable具有的高级特性应用到项目的高级需求和复杂实践中去。课程特色:案例和代码驱动、基础概念与经典实战相结合、知识环节融会贯通、关联知识平滑拓展、概念和原理展示形象生动。
Flowable是一个轻量级的工作流引擎,它具有可配置、可扩展和可重用的特性。它可以用于处理业务流程、审批流程、工作流等场景。 下面是一个Flowable工作流实战: 1. 创建流程定义文件 首先需要创建一个流程定义文件,它通常是一个XML文件,描述了流程中的各个节点、任务、流程变量等信息。可以使用Flowable Designer或者手动创建文件。例如,以下是一个简单的流程定义文件: ``` <?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://activiti.org/bpmn20" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd http://flowable.org/bpmn http://flowable.org/xsd/bpmn/flowable-bpmn-2.0.xsd" id="simpleProcess"> <process id="myProcess" name="My process" isExecutable="true"> <startEvent id="startEvent" /> <sequenceFlow id="flow1" sourceRef="startEvent" targetRef="task1" /> <userTask id="task1" name="Task 1" flowable:assignee="${assignee}" /> <sequenceFlow id="flow2" sourceRef="task1" targetRef="endEvent" /> <endEvent id="endEvent" /> </process> </definitions> ``` 2. 部署流程定义文件 部署流程定义文件可以使用Flowable的API或者管理控制台。例如,以下是使用Flowable的API进行部署的示例代码: ``` ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); RepositoryService repositoryService = processEngine.getRepositoryService(); Deployment deployment = repositoryService.createDeployment() .addClasspathResource("simpleProcess.bpmn20.xml") .deploy(); ``` 3. 启动流程实例 启动流程实例可以使用Flowable的API或者通过调用REST API。例如,以下是使用Flowable的API进行流程实例启动的示例代码: ``` ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); RuntimeService runtimeService = processEngine.getRuntimeService(); Map<String, Object> variables = new HashMap<>(); variables.put("assignee", "user1"); ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("myProcess", variables); ``` 4. 处理任务 处理任务可以使用Flowable的API或者通过调用REST API。例如,以下是使用Flowable的API进行任务处理的示例代码: ``` ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); TaskService taskService = processEngine.getTaskService(); Task task = taskService.createTaskQuery().processInstanceId(processInstanceId).singleResult(); taskService.complete(task.getId()); ``` 5. 监控流程实例 可以使用Flowable的API或者Flowable的管理控制台进行流程实例监控。例如,以下是使用Flowable的API进行流程实例监控的示例代码: ``` ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); HistoryService historyService = processEngine.getHistoryService(); List<HistoricProcessInstance> processInstances = historyService.createHistoricProcessInstanceQuery().list(); ``` 以上是一个简单的Flowable工作流实战示例,可根据实际需求进行调整和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值