当前位置: 首页 > news >正文

流程引擎之Flowable简介

背景

Flowable 是一个流行的轻量级的采用 Java 开发的业务流程引擎,通过 Flowable 流程引擎,我们可以部署遵循 BPMN2.0 协议的流程定义(一般为XML文件)文件,并能创建流程实例,查询和访问流程相关的实例与数据等等。

2016 年 10 月,Activiti 工作流引擎的核心开发者 Tijs Rademakers 离开 Alfresco 公司并在 Activiti 5.22 版本分支基础上开启了 Flowable 开源项目。Flowable 项目中包括 BPMN(Business Process Model and Notation)引擎、CMMN(Case Management Model and Notation)引擎、DMN(Decision Model and Notation)引擎、表单引擎(Form Engine)等模块。

  • 2016年10月13日,Tijs Rademakers 发布Flowable 5.22.0

  • 2017.02.15发布Flowable 6.0,该版本基于Activiti6

  • ......

  • 2021.12.28发布Flowable 6.7.2 release

附 Flowable 官方地址:

  • Flowable 官方网站:https://www.flowable.com/

  • Flowable github:https://github.com/flowable

  • Flowable 版本发布记录:https://github.com/flowable/flowable-engine/releases?page=1

  • Flowable 文档:https://www.flowable.com/open-source/docs/

中文 Flowable 文档:https://tkjohn.github.io/flowable-userguide/#chapterApi
  • Flowable 教程:https://documentation.flowable.com/latest/howto/tutorial/first-experience

Flowable 使用

1)Flowable UI 使用

与 jBPM 的 Business Central 类似(相对来说 Business Central 功能更强大),Flowable UI 是 Flowable 官方提供给用户可初始化的流程等资源设计和管理器,使用步骤如下:

Step 1:下载 flowable-6.8.0.zip 文件,并解压在 wars 目录下找到 flowable-ui.war 文件
  • flowable zip 包 github 地址:https://github.com/flowable/flowable-engine/releases/tag/flowable-6.8.0

Step 2:执行 "java -jar flowable-ui.war" 命令启动 Flowable UI
Step 3:访问 http://localhost:8080/flowable-ui/,并账密(admin/test)登录

Flowable UI 登录后主要包括以下四个功能(图如上):

  • 任务应用程序(Flowable Task):运行时任务应用,这个提供了启动流程实例、编辑任务表单、完成任务,以及查询流程实例与任务的功能。

  • 建模器应用程序(Flowable Modeler):让具有建模权限的用户可以创建流程模型、表单、选择表与应用定义。

  • 管理员应用程式(Flowable Admin): 管理应用。让具有管理员权限的用户可以查询流程、CMMN、APP、Form、DMN 及 Content 引擎,并提供了许多选项用于修改流程实例、任务、作业等。

  • 身份管理应用程序(Flowable IDM):为所有 Flowable UI 应用提供单点登录认证功能,并且为拥有 IDM 管理员权限的用户提供了管理用户、组与权限的功能。

Step 4:请假流程示例 demo

其中导入的 holiday.bpmn 如下(该流程文件不能在 Flowable UI 上执行,只做建模示例使用):

<process id="holidayRequest" name="Holiday Request" isExecutable="true"><startEvent id="startEvent"/><sequenceFlow sourceRef="startEvent" targetRef="approveTask"/><userTask id="approveTask" name="Approve or reject request" flowable:candidateGroups="managers" /><sequenceFlow sourceRef="approveTask" targetRef="decision"/><exclusiveGateway id="decision"/><sequenceFlow sourceRef="decision" targetRef="externalSystemCall"><conditionExpression xsi:type="tFormalExpression"><![CDATA[${approved}]]></conditionExpression></sequenceFlow><sequenceFlow  sourceRef="decision" targetRef="sendRejectionMail"><conditionExpression xsi:type="tFormalExpression"><![CDATA[${!approved}]]></conditionExpression></sequenceFlow><serviceTask id="externalSystemCall" name="Enter holidays in external system"flowable:class="com.flowable.zqh.ExternalDelegateApproved"/><sequenceFlow sourceRef="externalSystemCall" targetRef="holidayApprovedTask"/><userTask id="holidayApprovedTask" name="Holiday approved" flowable:assignee="${employee}"/><sequenceFlow sourceRef="holidayApprovedTask" targetRef="approveEnd"/><serviceTask id="sendRejectionMail" name="Send out rejection email"flowable:class="com.flowable.zqh.SendRejectionEmail"/><sequenceFlow sourceRef="sendRejectionMail" targetRef="rejectEnd"/><endEvent id="approveEnd"/><endEvent id="rejectEnd"/></process>

2)Flowable demo

以请假流程作为 Flowable 基本使用示例(流程示例同 Flowable UI):

  • 请假流程文件 holiday.bpmn 配置

同 Flowable UI 示例中的 holiday.bpmn。

  • 代码示例

示例源码参考 csdn 下载地址:https://download.csdn.net/download/zhuqiuhui/87462589

3)Flowable 与 Spring 集成

spring boot 与 Flowable 集成比较简单,引入以下依赖后,会自动注入 Flowable 相关核心类,直接在代码中使用即可。更详情的参考 Flowable 官方文档说明:https://www.flowable.com/open-source/docs/bpmn/ch05a-Spring-Boot

<dependency><groupId>org.flowable</groupId><artifactId>flowable-spring-boot-starter</artifactId><version>${flowable.version}</version>
</dependency>

4)流程引擎对比

Flowable 相对于其他流程引擎,优点如下:

  • 以 Flowable6.4.1版本为分水岭,大力发展其商业版产品,开源版本维护不及时,部分功能已经不再开源版发布,比如表单生成器(表单引擎)、历史数据同步至其他数据源、ES等

  • 支持了流程、CMMN、APP、Form、DMN 及 Content 引擎

  • 支持异步执行器、动态脚本等

  • Flowable 启动后会自动初始化 46 张数据表

  • ......

Flowable 整体架构

使用引擎 API 是与 Flowable 交互的最常见方式,核心类是 ProcessEngine,从 ProcessEngine 中可以获取包含工作流/BPM方法的各种服务(与 Activiti5 类似,有兴趣可进一步深入)。如下图所示:

流程引擎系列文章

  • 流程引擎之发展史及对比总结:https://blog.csdn.net/zhuqiuhui/article/details/128986403

  • 流程引擎之KIE项目简介:https://blog.csdn.net/zhuqiuhui/article/details/129035796

  • 流程引擎之jBPM简介:https://blog.csdn.net/zhuqiuhui/article/details/129052162

  • 流程引擎之Activiti简介:https://blog.csdn.net/zhuqiuhui/article/details/129107741

  • 流程引擎之Camunda简介:https://blog.csdn.net/zhuqiuhui/article/details/129107897

  • 流程引擎之Flowable简介:https://blog.csdn.net/zhuqiuhui/article/details/129109273

  • 流程引擎之compileflow简介:https://blog.csdn.net/zhuqiuhui/article/details/129109391

相关文章:

流程引擎之Flowable简介

背景Flowable 是一个流行的轻量级的采用 Java 开发的业务流程引擎&#xff0c;通过 Flowable 流程引擎&#xff0c;我们可以部署遵循 BPMN2.0 协议的流程定义&#xff08;一般为XML文件&#xff09;文件&#xff0c;并能创建流程实例&#xff0c;查询和访问流程相关的实例与数据…...

AcWing:4861. 构造数列、4862. 浇花(C++)

目录 4861. 构造数列 问题描述&#xff1a; 实现代码&#xff1a; 4862. 浇花 问题描述&#xff1a; 实现代码&#xff1a; 4861. 构造数列 问题描述&#xff1a; 我们规定如果一个正整数满足除最高位外其它所有数位均为 00&#xff0c;则称该正整数为圆数。 例如&…...

进程的概念

进程的概念 程序的概念 这里说的是一个可执行文件&#xff0c;passive的意思可以理解为我们这个执行文件需要我们进行双击才会被被执行。 双击后&#xff0c;程序入口地址读入寄存器&#xff0c;程序加载入主存&#xff0c;成为一个进程 进程是主动去获取想要的资源&#xff0…...

自动化测试5年经验,分享一些心得

自动化测试介绍 自动化测试(Automated Testing)&#xff0c;是指把以人为驱动的测试行为转化为机器执行的过程。实际上自动化测试往往通过一些测试工具或框架&#xff0c;编写自动化测试用例&#xff0c;来模拟手工测试过程。比如说&#xff0c;在项目迭代过程中&#xff0c;持…...

independentsoft.de/MSG .NET Framework Crack

MSG .NET 是用于 .NET Framework / .NET Core 的 Microsoft Outlook .msg 文件 API。API 允许您轻松创建/读取/解析/转换 .msg 文件等。API 不需要在机器上安装 Microsoft Outlook 或任何其他第三方应用程序或库即可工作。 以下示例向您展示了如何打开现有文件并显示消息的某些…...

基于Transformer的NLP处理管线

HuggingFace transformers 是一个整合了跨语言、视觉、音频和多模式模态与最先进的预训练模型并且提供用户友好的 API 的AI开发库。 它由 170 多个预训练模型组成&#xff0c;支持 PyTorch、TensorFlow 和 JAX 等框架&#xff0c;能够在代码之间进行互操作。 这个库还易于部署&…...

二叉树OJ(一)二叉树的最大深度 二叉搜索树与双向链表 对称的二叉树

二叉树的最大深度 二叉树中和为某一值的路径(一) 二叉搜索树与双向链表 对称的二叉树 二叉树的最大深度 描述 求给定二叉树的最大深度&#xff0c; 深度是指树的根节点到任一叶子节点路径上节点的数量。 最大深度是所有叶子节点的深度的最大值。 &#xff08;注&#xff1a;…...

使用Fairseq进行Bart预训练

文章目录前言环境流程介绍数据部分分词部分预处理部分训练部分遇到的问题问题1可能遇到的问题问题1问题2前言 本文是使用 fairseq 做 Bart 预训练任务的踩坑记录huggingface没有提供 Bart 预训练的代码 facebookresearch/fairseq: Facebook AI Research Sequence-to-Sequence…...

n阶数字回转方阵 ← 模拟法

【问题描述】 请编程输出如下数字回旋方阵。 【算法代码】 #include <bits/stdc.h> using namespace std;const int maxn100; int z[maxn][maxn];void matrix(int n) {int num2;z[0][0]1;int i0,j1;while(i<n && j<n) {while(i<j) z[i][j]num;while(j&…...

【人工智能AI】二、NoSQL 基础知识《NoSQL 企业级基础入门与进阶实战》

写一篇介绍 NoSQL 基础知识的技术文章&#xff0c;分5个章节&#xff0c;每个章节细分到3级目录&#xff0c;重点介绍一下NoSQL 数据模型&#xff0c;NoSQL 数据库架构&#xff0c;NoSQL 数据库特性等&#xff0c;不少于2000字。 NoSQL 基础知识 NoSQL&#xff08;Not Only SQ…...

Camera Rolling Shutter和Global Shutter的区别

卷帘快门&#xff08;Rolling Shutter&#xff09;与全局快门&#xff08;Global Shutter&#xff09;的区别 什么是快门 快门是照相机用来控制感光片有效曝光时间的机构。 快门是照相机的一个重要组成部分&#xff0c;它的结构、形式及功能是衡量照相机档次的一个重要因素。 …...

模版之AnyType

title: 模版之AnyType date: 2023-02-19 21:49:53 permalink: /pages/54a0bf/ categories: 通用领域编程语言C tags:C元编程 author: name: zhengzhibing link: https://azmddy.top/pages/54a0bf/ 模版之AnyType 在研究C的编译期反射时&#xff0c;发现了AnyType很有意思。 首…...

【汇编】一、环境搭建(一只 Assember 的成长史)

嗨~你好呀&#xff01; 我是一名初二学生&#xff0c;热爱计算机&#xff0c;码龄两年。最近开始学习汇编&#xff0c;希望通过 Blog 的形式记录下自己的学习过程&#xff0c;也和更多人分享。 这篇文章主要讲述汇编环境的搭建过程。 话不多说~我们开始吧&#xff01; 系统环…...

【博客628】k8s pod访问集群外域名原理以及主机开启了systemd-resolved的不同情况

k8s pod访问集群外域名原理以及使用了systemd-resolved的不同情况 1、不同情况下的linux主机访问外部域名原理 没有使用systemd-resolved的linux主机上访问外部域名一般是按照以下步骤来的&#xff1a; 从dns缓存里查找域名与ip的映射关系 从/etc/hosts里查找域名与ip的映射…...

测试3.测试方法的分类

3.测试分类 系统测试包括回归测试和冒烟测试 回归测试&#xff1a;修改了旧的代码后&#xff0c;重新测试功能是否正确&#xff0c;有没有引入新的错误或导致其它代码产生错误 冒烟测试&#xff1a;目的是确认软件基本功能正常&#xff0c;可以进行后续的正式测试工作 按是否…...

Android 基础知识4-2.9 FrameLayout(帧布局)详解

一、FrameLayout&#xff08;帧布局&#xff09;概述 FrameLayout又称作帧布局&#xff0c;它相比于LinearLayout和RelativeLayout要简单很多&#xff0c;因为它的应用场景也少了很多。这种布局没有方便的定位方式&#xff0c;所有的控件都会默认摆放在布局的左上角。 示例1代…...

Go语言xorm框架

xorm xorm是一个简单而强大的Go语言ORM库通过它可以使数据库操作非常简便。 官网: https://xorm.io/ 中文文档: https://gitea.com/xorm/xorm/src/branch/master/README_CN.md 特性 支持 Struct 和数据库表之间的灵活映射&#xff0c;并支持自动同步事务支持同时支持原始SQL…...

19_微信小程序之优雅实现侧滑菜单

19_微信小程序之优雅实现侧滑菜单一.先上效果图 要实现这样一个效果&#xff0c;布局其实很简单&#xff0c;整体布局是一个横向滚动的scroll-view&#xff0c;难点在于怎么控制侧滑菜单的回弹&#xff0c;以及寻找回弹的边界条件? 此篇文章主要是基于uni-app来实现的&#xf…...

JSP中JDBC与javaBean学习笔记

本博文源于博主偷偷复习期末的java web&#xff0c;博文主要讲述JDBC API与JavaBean&#xff0c;涉及driver,driver Manager\connection、statement接口、PreparedStatement接口、ResultSet接口&#xff0c;JavaBean包含一些标记介绍。 1.JDBC API JDBC由一组接口和类组成&am…...

编译Android系统源码推荐的电脑配置

工欲善其事&#xff0c;必先利其器。 看到很多客户&#xff0c;搞Android产品开发&#xff0c;用的电脑配置是惨不忍睹。 这些老板脑子有坑吗... ------------ 编译Android9推荐电脑配置&#xff1a; 处理器&#xff1a;酷睿i7 5代系列 8线程以上 内存&#xff1a; 8GB以上…...

加油站会员管理小程序实战开发教程10

上一篇我们介绍了计算距离及到店导航的功能,本篇我们介绍一下今日油价的功能。 如果要按日显示最新的数据,那么我们首先需要有数据源来存放每日的油价数据。这里涉及数据源的时候要考虑你的数据是只录入一条,还是每日录入一条。 录入一条呢,比较简单,但有个问题是如果我…...

shell编程之条件判断和流程控制

typora-copy-images-to: pictures typora-root-url: …\pictures 文章目录typora-copy-images-to: pictures typora-root-url: ..\..\pictures本节课程目标一、条件判断语法结构2. 条件判断相关参数㈠ 判断文件类型㈡ 判断文件权限㈢ 判断文件新旧㈣ 判断整数㈤ 判断字符串㈥ 多…...

第一次接触jquery

文章目录一.关于jqurey二.什么是jqurey三.上课实例1.表格 2.鼠标移动效果 3隐藏和显示效果代码如下注意一.关于jqurey 简而言之&#xff1a;jQuery 是一个 JavaScript 库。 jQuery 极大地简化了 JavaScript 编程。 二.什么是jqurey jQuery 是一个 JavaScript 函数库。 jQu…...

Vue中 引入使用 babel-polyfill 兼容低版本浏览器

注意&#xff1a;本文主要介绍的 vue-cli 版本&#xff1a;3.x&#xff0c; 4.x&#xff1b; 最近在项目中使用 webpack 打包后升级&#xff0c;用户反馈使用浏览器&#xff08;chrome 45&#xff09;访问白屏。经过排查发现&#xff1a;由于 chrome 45 无法兼容 ES6 语法导致的…...

ArcGIS Enterprise on Kubernetes 11.0安装示例

博客主页&#xff1a;https://tomcat.blog.csdn.net 博主昵称&#xff1a;农民工老王 主要领域&#xff1a;Java、Linux、K8S 期待大家的关注&#x1f496;点赞&#x1f44d;收藏⭐留言&#x1f4ac; 目录安装前置条件基本安装解压文件生成秘钥执行安装脚本配置DNS方法一方法二…...

js 防抖函数 节流函数

某些事件中(如 onresize onscroll onkeydown onkeyup onmousemove …)&#xff0c;会连续触发函数的执行&#xff0c;如果函数执行一些耗时的操作(如请求数据…)&#xff0c;会影响性能&#xff0c;也有可能造成服务器压力。这时可以用 防抖函数 或 节流函数解决这种问题。 防…...

Yarn节点unhealthy解决办法

这几天用Spark计算任务时&#xff0c;发现yarn上有两个节点不参与计算&#xff0c;很是tm的离谱。使用下面的命令查看Yarn上的nodemanager节点状态yarn node -list -all发现两个节点处于unhealthy状态。经过Google查明原因&#xff1a;这种情况一般是因为那个节点上HDFS文件过多…...

【jumpServer 功能梳理】

用户管理 1.1 用户列表 创建jumpServe 账号 ;角色分为用户 管理员&#xff1b;更新账号信息&#xff1b;查看用户详情以及授权的资产&#xff1b; 1.2 用户组 用户组&#xff0c;这个组的意义在于用一个统称对接资源&#xff1b;用户组包含多个用户&#xff0c;可以操作增加删除…...

中国各省人力资本测算就业人员受教育程度构成(2000-2021年)

数据来源&#xff1a;自主整理 时间跨度&#xff1a;2000-2021年 区域范围&#xff1a;全国各省 指标说明&#xff1a; 人力资本测算公式&#xff1a;&#xff08;小学*6初中*9高中*12大专及以上*16&#xff09;/六岁及以上人口 参考文献&#xff1a; [1]罗仁福, 刘承芳,…...

java面试题-集合篇

Collection1.Collection有哪些类&#xff1f;Java集合框架中的Collection接口是所有集合类的基础接口&#xff0c;定义了一些基本的集合操作&#xff0c;如添加元素、删除元素、判断是否包含某个元素等。常见的集合类包括List、Set和Queue。ListList接口定义了按照索引访问和操…...

西安有哪些做网站的公司/深圳网络公司推广平台

上文&#xff08;https://mp.csdn.net/editor/html/115607641&#xff09;我们用实例讲解了如何利用.m文件实现对simulink系统的动态仿真&#xff0c;实例中有一句代码为&#xff1a; [t1,x1,y1]sim(new,10) 该语句中x1,y1均为空数组&#xff0c;其表示什么含义呢&#xff1f…...

重庆做网站建设企业/百度自媒体平台

【人工智能】Astar算法求解8数码问题&#xff08;QDU&#xff09; 【人工智能】利用α-β搜索的博弈树算法编写一字棋游戏&#xff08;QDU&#xff09; 【人工智能】Fisher 线性分类器的设计与实现&#xff08;QDU&#xff09;【人工智能】感知器算法的设计实现&#xff08;QDU…...

广东品牌网站建设/微信推广朋友圈广告

详解Linux命令中&#xff1b;、|、& 、&& 、 ||之间的区别?一、";"分号的用法方式&#xff1a;command1 ; command2用;号隔开每个命令, 每个命令按照从左到右的顺序,顺序执行&#xff0c; 彼此之间不关心是否失败&#xff0c; 所有命令都会执行。二、&q…...

如何把地图放到自己做的网站上/百度推广登录地址

转载于:https://www.cnblogs.com/lianghong881018/p/10761990.html...

哈尔滨网站建设制作哪家便宜/搜索引擎营销与seo优化

【零样本知识蒸馏】(八)CVPR 2020:Dreaming to Distill: Data-free Knowledge Transfer via DeepInversion 论文地址:代码地址:主要思路:基本符号:知识蒸馏:DeepDream:具体实现:DI:ADI:实验结果:论文地址: https://arxiv.org/abs/1912.08795 代码地址: https…...

潍坊网站建设wfyckj/自己怎样在百度上做推广

1.一个人总要走陌生的路&#xff0c;看陌生的风景&#xff0c;听陌生的歌&#xff0c;然后在某个不经意的瞬间&#xff0c;你会发现&#xff0c;原本是费尽心机想要忘记的事情真的就那么忘记了。1.One is always on a strange road, watching strange scenery and listeningto …...