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

FlowLong工作流

随着信息技术的飞速发展,企业和组织日益依赖高效的业务流程管理(BPM)来提升核心竞争力。然而,在实践中,许多现有的工作流引擎往往存在一些普遍的痛点:配置复杂、灵活性不足、难以适配充满“中国特色”的复杂审批场景(如会签、加签、驳回等)。那么,是否存在一款能够优雅解决这些问题的工具呢?

答案是肯定的。今天,给大家介绍一款真正为国内企业和组织量身打造的开源工作流引擎——FlowLong

图片

介绍

FlowLong 是一款由国人自主研发的轻量级、高性能工作流引擎。它采用 JSON 格式来定义流程模型,并配备了简洁直观的流程设计器,使得流程定义与维护变得前所未有的简单。其设计的初衷,就是为了精准解决国内企业在流程审批中遇到的各种复杂需求。

图片

图片

工作流引擎在需要自动化、管理和优化业务流程的场景中扮演着至关重要的角色,尤其适用于复杂的跨部门协作、自动化任务决策、流程监控与报告、变更管理以及跨系统集成等。通过引入 FlowLong 这样的工作流引擎,企业能够显著提升应用的自动化水平、优化业务流程、提高工作效率与质量,并有效降低人为错误,从而创造更大的商业价值。

特点

  1. 纯国产化: 完全自主研发,技术自主可控,不受国外技术限制。

  2. JSON 流程模型: 流程定义以 JSON 格式存储,结构清晰,易于理解、维护和进行版本控制。

  3. 可视化流程设计器: 提供图形化设计界面,用户可通过拖拉拽的方式轻松设计出复杂的业务流程。

  4. 适配中国特色审批: 原生支持多种国内常见的审批操作,如顺序会签、并行会签、或签、票签、驳回、转办、加签等。

  5. 丰富的功能支持: 内置条件分支、并行分支、包容分支等多种标准 BPMN 流程控制机制。

  6. 灵活的集成能力: 提供对 Mybatis-Plus 等主流 ORM 框架和 Spring Boot 等开发框架的无缝支持。

功能展示

FlowLong 支持多种标准 BPMN 功能,同时针对中国特色的审批流程进行了优化。以下是部分功能及其描述:

支持功能

功能描述

完成程度

条件分支

排它分支用于在流程中实现决策,即根据条件选择一个分支执行。也用于处理异常情况,将流程路由到特定的异常处理分支。

并行分支

并行分支允许将流程分成多条分支,也可以把多条分支汇聚到一起。其功能是基于进入和外出顺序流的,即可以分叉(fork)成多个并行分支,也可以汇聚(join)多个并行分支。

包容分支

包容分支可以看做是排它分支和并行分支的结合体。它允许基于条件选择多条分支执行,但如果没有任何一个分支满足条件,则可以选择默认分支。

路由分支

根据条件选择一个分支执行(重定向到指定配置节点),也可以选择默认分支执行(继续往下执行)。

父子流程

主流程节点设置子流程,子流程节点会自动进入子流程,子流程结束后,主流程节点会自动跳转。

顺序会签

指同一个审批节点设置多个人,如 A、B、C 三人,三人按顺序依次收到待办,即 A 先审批,A 提交后 B 才能审批,需全部同意之后,审批才可到下一审批节点。

并行会签

指同一个审批节点设置多个人,如 A、B、C 三人,三人会同时收到待办任务,需全部同意之后,审批才可到下一审批节点。

或签

一个流程审批节点里有多个处理人,任意一个人处理后就能进入下一个节点。

票签

指同一个审批节点设置多个人,如 A、B、C 三人,分别定义不同的权重,当投票权重比例大于 50% 就能进入下一个节点。

抄送

将审批结果通知给抄送列表对应的人,同一个流程实例默认不重复抄送给同一人。

驳回

将审批重置发送给某节点,重新审批。驳回也叫退回,也可以分退回申请人、退回上一步、任意退回等。

分配

允许用户自行决定任务转办、委派、主办 及其它。

转办

A 转给其 B 审批,B 审批后,进入下一节点。

委派

A 转给其 B 审批,B 审批后,转给 A,A 审批后进入下一节点。

代理

A 指定代理人 B 之后,就不用做任何操作了。B 完成任务后,A 和 B 都能查到这个任务,A 完成任务,B 就看不到任务了。

跳转

可以将当前流程实例跳转到任意办理节点。

拿回

在当前办理人尚未处理文件前,允许上一节点提交人员执行拿回。

唤醒

历史任务唤醒,重新进入审批流程。

撤销

流程发起者可以对流程进行撤销处理。

加签

允许当前办理人根据需要自行增加当前办理节点的办理人员(前置节点,后置节点)。

减签

在当前办理人操作之前减少办理人。

追加

发起流程动态追加修改节点处理人,更灵活的实例级动态调整节点处理人的可伸缩处理方案。

认领

公共任务认领。

已阅

任务是否查看状态显示。

催办

通知当前活动任务处理人办理任务。

沟通

与当前活动任务处理人沟通。

终止

在任意节点终止流程实例。

定时

设置时间节点定时执行任务进入下一步。

触发

执行流程触发器业务逻辑实现,结束执行进入下一步,支持【立即触发】【定时触发】两种实现。

动态构建

根据当前任务动态构建执行新任务,并且不体现在流程图中。

超时审批

根据设置的超时审批时间,超时后自动审批【自动通过或拒绝】。

自动提醒

根据设置的提醒时间,提醒审批人审批【可设定提醒次数】实现接口任意方式提醒【短信,Email ,微-信,钉钉等】。

快速开始

技术架构

FlowLong 采用清晰的模块化设计,项目结构一目了然,便于二次开发与维护。

|- db                           # 数据库脚本目录
|- flowlong-core                # 工作流核心库
|- flowlong-mybatis-plus        # 数据访问层 (默认 Mybatis-Plus, 可适配其他ORM)
|- flowlong-solon-plugin        # Solon 框架启动插件
|- flowlong-spring-boot-example # Spring Boot 示例项目
|- flowlong-spring-boot-starter # Spring Boot 启动插件
|- build.gradle                 # Gradle 配置文件
|- pom.xml                      # Maven 配置文件

核心概念

概念

说明

模型

流程模型是对业务流程进行抽象和描述的模型,由流程图、活动、参与者等要素组成。用于展示业务流程中各个环节的顺序和逻辑,是设计和优化业务流程管理的关键环节。

实例

流程实例基于特定的流程模型启动,代表了一次具体的执行过程,包含流程定义、状态、执行路径、变量及参与者信息等。它记录了流程执行的全过程,并支持实时监控和管理。

任务

流程任务是在业务流程中需要由参与者完成的具体工作或操作,分为人工任务、自动任务或服务任务等类型。每个任务都有责任人指派、执行条件、结果以及可能的任务流转机制。

本地开发

1. 克隆仓库

git clone https://gitee.com/aizuda/flowlong.git

2. 导入 IDEA

导入项目,选择 Gradle 或 Maven 方式管理依赖。

3. 运行测试-用例

  • 初始化执行 db/flowlong-mysql.sql 数据库脚本

  • 找到 flowlong-spring-boot-starter 模块,目录 test 部分 java/test

  • 找到 mysql 相关测试类 Test...java 执行观察数据库中表数据变化

安装集成

Maven

<dependency><groupId>com.aizuda</groupId><artifactId>flowlong-spring-boot-starter</artifactId><version>最新版本</version>
</dependency>

Gradle

//Gradle Version:<4.1
compile group: 'com.aizuda', name: 'flowlong-spring-boot-starter', version: '最新版本'//Gradle Version:>=4.1
implementation 'com.aizuda:flowlong-spring-boot-starter:最新版本'

表结构说明

引擎核心仅 8 张表实现逻辑数据存储,采用 JSON 数据格式存储模型结构简洁直观。

流程定义表 flw_process

用于存储流程模型信息。

字段

描述

id

主键 ID

tenant_id

租户 ID

create_id

创建人 ID

create_by

创建人名称

create_time

创建时间

process_key

流程定义 key 唯一标识

process_name

流程定义名称

process_icon

流程图标地址

process_type

流程类型

process_version

流程版本,默认 1

instance_url

实例地址(外置表单发起地址)

remark

备注说明

use_scope

使用范围 0,全员 1,指定人员(业务关联) 2,均不可提交

process_state

流程状态 0,不可用 1,可用 2,历史版本

model_content

流程模型定义 JSON 内容

sort

排序

流程实例表 flw_instance

记录每一次启动执行流程模型的具体实例信息。

字段

描述

id

主键 ID

tenant_id

租户 ID

create_id

创建人 ID

create_by

创建人名称

create_time

创建时间

process_id

流程定义 ID

parent_instance_id

父流程实例 ID

priority

优先级

instance_no

流程实例编号

business_key

业务 KEY

variable

变量 json

current_node_name

当前所在节点名称

current_node_key

当前所在节点 key

expire_time

期望完成时间

last_update_by

上次更新人

last_update_time

上次更新时间

历史流程实例表 flw_his_instance

流程实例表的历史记录,每次生成实例信息同时记录该表,该表继承流程实例表字段的基础上增加 状态``结束时间``处理耗时 字段。

字段

描述

instance_state

状态 0,审批中 1,审批通过 2,审批拒绝 3,撤销审批 4,超时结束 5,强制终止

end_time

结束时间

duration

处理耗时

扩展流程实例表 flw_ext_instance

扩展流程实例功能表,例如 modelContent 用于支持动态添加节点存储临时模型。

字段

描述

id

主键 ID

tenant_id

租户 ID

process_id

流程定义 ID

instance_id

流程实例 ID

process_name

流程名称

process_type

流程类型

model_content

流程模型定义 JSON 内容

任务表 flw_task

流程实例执行阶段的具体执行任务信息。

字段

描述

id

主键 ID

tenant_id

租户 ID

create_id

创建人 ID

create_by

创建人名称

create_time

创建时间

instance_id

流程实例 ID

parent_task_id

父任务 ID

task_name

任务名称

task_key

任务 key 唯一标识

task_type

任务类型

perform_type

参与类型

action_url

任务处理的 url

variable

变量 json

assignor_id

委托人 ID

assignor

委托人

expire_time

任务期望完成时间

remind_time

提醒时间

remind_repeat

提醒次数

viewed

已阅 0,否 1,是

历史任务表 flw_his_task

流程实例执行任务表的历史记录,每次生成任务信息同时记录该表,该表继承流程任务表字段的基础上增加 完成时间``任务状态``处理耗时 字段。

字段

描述

call_process_id

调用外部流程定义 ID

call_instance_id

调用外部流程实例 ID

finish_time

完成时间

task_state

任务状态 0,活动 1,跳转 2,完成 3,拒绝 4,撤销审批 5,超时 6,终止 7,驳回终止

duration

处理耗时

任务参与者表 flw_task_actor

流程实例执行任务具体任务参与者信息,用于存储实时任务参与者关联信息。

字段

描述

id

主键 ID

tenant_id

租户 ID

instance_id

流程实例 ID

task_id

任务 ID

actor_id

参与者 ID

actor_name

参与者名称

actor_type

参与者类型 0,用户 1,角色 2,部门

weight

权重,票签任务时,该值为不同处理人员的分量比例

agent_id

代理人 ID

agent_type

代理人类型 0,代理 1,被代理 2,认领角色 3,认领部门

extend

扩展 json

历史任务参与者表 flw_his_task_actor

流程实例执行任务具体任务参与者信息历史表,该表和表 flw_task_actor 的表结构一致,用于存储历史任务参与者关联信息。

字段

描述

id

主键 ID

tenant_id

租户 ID

instance_id

流程实例 ID

task_id

任务 ID

actor_id

参与者 ID

actor_name

参与者名称

actor_type

参与者类型 0,用户 1,角色 2,部门

weight

权重,票签任务时,该值为不同处理人员的分量比例

agent_id

代理人 ID

agent_type

代理人类型 0,代理 1,被代理 2,认领角色 3,认领部门

extend

扩展 json

开源协议

项目采用双协议授权:

  • 默认采用 Apache-2.0 协议开源 完全开放 遵守附加协议 的前提下允许任何目的商用。 如果违反附加协议自动升级为 AGPL-3.0 协议。

  • 附加协议:使用方在项目介绍中显著位置必须标注版权信息(链接仓库地址),不允许删除源码注释申明,不允许山寨换皮商用与官方企业版竞争,否则视为侵权(索赔 100 万)。

总结

FlowLong 是一款功能强大、高度灵活且真正适合国内使用场景的开源工作流引擎。它通过简洁的 JSON 模型和对中国特色审批流程的深度支持,为企业提供了一个现代化、易于集成和维护的业务流程管理解决方案。

  • 源码地址: https://gitee.com/aizuda/flowlong

  • 官方网站: https://flowlong.aizuda.com/

http://www.dtcms.com/a/305144.html

相关文章:

  • OI 杂讲
  • ASDIP Concrete(混凝土结构设计软件) v6.0.0.2 免费版
  • 光环云 × 零一万物在上海WAIC联合发布“法律智算综合云服务”,以专业Agent助力法律普惠发展
  • debug redis里面的lua脚本
  • JSON在java中的使用
  • c++之链表
  • 技术干货 | 矢网DTF测量技术:透视线缆、天线与波导内部缺陷的“射频X光”(二)
  • 人工智能赋能社会治理:深度解析与未来展望
  • 移位运算以及定点数的加减法操作
  • 深入解析 Spring SpEL:SpelExpressionParser 的使用与实践
  • Python游戏开发:Pygame全面指南与实战
  • JAVA存储原生json字符串到redis,去除@class,实现原生命令操作教程
  • 从传统到智能:Midscene.js 如何用 AI 颠覆自动化测试!
  • 【Lua】题目小练4
  • 深入解析RocksDB的MVCC和LSM Tree level
  • 基于springboot/java/VUE的旅游管理系统/旅游网站的设计与实现
  • USB Type-C PD协议一文通
  • mangoDB面试题及详细答案 117道(026-050)
  • CVE-2021-1675
  • 【C语言进阶】题目练习
  • docker部署zingerbee/netop 轻量级网络流量监控工具
  • 河南萌新联赛2025第(二)场:河南农业大学(补题)
  • 高端医疗超声AFE模拟前端应用
  • 机器学习之线性回归——小白教学
  • 关于为什么写分配法搭配写回法?非写分配法搭配全写法?
  • python基础:request请求查询参数的基本使用、携带请求参数的两种方法、 json串和python中数据类型转化、 post模拟登录
  • 全方位Python学习方法论:从入门到精通的系统指南
  • GB/T 4706.1-2024 家用和类似用途电器的安全 第1部分:通用要求 与2005版差异(21)
  • 【Spring】日志级别的分类和使用
  • 计算机视觉-局部图像描述子