{"repo":"didi/turbo","free":true,"listed":false,"github":"https://github.com/didi/turbo","clone":"git clone https://github.com/didi/turbo.git","description":"Turbo is a light-weight flow engine framework, support BPMN2.0. 一款轻量级流程引擎服务框架，可作为底层服务支持各类流程设计、低代码设计、工作流、审批流、服务编排等场景","language":"Java","stars":1214,"topics":["bpmn","flow-engine","java","low-code","lowcode","workflow"],"license":"Apache-2.0","category":"workflow-automation","readme_excerpt":"Turbo 简介 Turbo是一款Java实现的轻量级流程引擎，是公司内多个低代码平台的核心后端服务。 特性 1. 提供“定义流程，并根据流程定义，执行流程”的核心能力 2. 轻量级的库表操作 3. 支持流程回滚操作 核心能力 我们提供了以下核心能力: 1. 流程定义：保存流程基本信息和流程图模型 2. 流程部署：校验和部署流程模型，记录流程模型快照。部署后流程可以执行 3. 流程执行：从开始节点开始执行，到用户节点挂起或结束节点结束 4. 流程提交：提交指定的用户任务，到下一个用户节点挂起或者结束节点结束 5. 流程回滚：从当前用户节点开始回滚，回滚至上一个用户节点或者开始节点 6. 执行轨迹追溯：查看流程实例的执行轨迹，可用于快照 为什么选择Turbo 1. 什么时候使用Turbo 业务支持 模块化 拆分、 有序 执行，并且有 多变 的编排诉求时，可以考虑采用Turbo作为底层引擎，同时可以配合使用 logicflow 进行可视化配置。 案例1：某团购售后流程 用户A在订单列表中选择订单，判断订单状态，如果状态为未发货，则直接跳转至退款申请页，如果状态为待收货则提示不支持售后，跳转至物流信息页，如果状态为已收货，则跳转至售后页填写售后信息并提交。 案例2：请假审批流程 员工A输入请假天数，判断请假天数是否大于等于3天，是的话由间接领导审批，否的话则由直属领导批准。 2. Turbo有什么不同 谈到流程引擎，当前市面上大部分是 Activiti 、 Flowable 、 Camunda 等面向OA场景，功能强大且有比较完整的生态的工作流引擎（平台），同时因为OA复杂的场景，库表关联操作非常多，但是对于其它业务场景，引擎运维以及学习成本较高，性能不可避免有一定损失，不适用于C端场景。 同时还有部分专注于纯内存执行、无状态的流程引擎，比如阿里的 Compileflow ，这类引擎中断后不可重入，不适用于人机交互场景，适用于执行业务规则。举例：N个人去ktv唱歌，每人唱首歌，ktv消费原价为30元/人，如果总价超过300打九折，小于300按原价付款。 Turbo的定位是兼容BPMN2.0的轻量级流程引擎（而非平台），支持可重入交互，主要负责提供稳定而高效的核心能力： 流程定义 、 流程驱动 ，而节点的具体执行由接入方实现，可以快速搭建面向各种场景的流程编排类系统或产品，接入简单，支持灵活扩展，引擎扩展能力通过插件或组件的形式进行补充，支持按需使用，大大降低了用户的运维以及学习成本。 3. 开源流程引擎对比 Activiti Camunda Compileflow turbo 核心表量 28 22 0 5 特性 中断可重入 √ √ × √ 支持回滚 × √ × √ 运行模式 独立运行和内嵌 独立运行和内嵌 内嵌 内嵌 兼容性 流程格式 BPMN2.0、XPDL、PDL BPMN2.0、XPDL、PDL BPMN2.0 BPMN2.0 支持脚本 JUEL、groovy python、ruby、groovy、JUEL QlExpress groovy 支持数据库 Oracle、SQL Server、MySQL Oracle、SQL Server、MySQL、postgre 无 MySQL 关键模型 1 流程 (Flow) 定义了起点、终点以及起点到终点需要执行的活动、执行路径、执行策略。 2 流程实例 (FlowInstance) 一个流程可能会被多次执行，比如同一个场景的审批流是一个流程，每次有人提交审批这个流程都会被执行一次。流程每执行一次，对应一个流","default_branch":null,"files":null,"tree":[],"storefront":"/r/didi","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/didi/turbo/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}