compileflow 是什么

compileflow 是一个非常轻量、高性能、可集成、可扩展的流程引擎。

compileflow Process 引擎是淘宝工作流 TBBPM 引擎之一,是专注于纯内存执行,无状态的流程引擎,通过将流程文件转换生成 java 代码编译执行,简洁高效。当前是阿里业务中台交易等多个核心系统的流程引擎。

compileflow 能让开发人员通过流程编辑器设计自己的业务流程,将复杂的业务逻辑可视化,为业务设计人员与开发工程师架起了一座桥梁。

功能列表

  • 高性能:通过将流程文件转换生成 java 代码编译执行,简洁高效。
  • 丰富的应用场景:在阿里巴巴中台解决方案中广泛使用,支撑了导购、交易、履约、资金等多个业务场景。
  • 可集成:轻量、简洁的设计使得可以极其方便地集成到各个解决方案和业务场景中。
  • 完善的插件支持:流程设计目前有 IntelliJ IDEA、Eclipse 插件支持,可以在流程设计中实时动态生成 java 代码并预览,所见即所得。
  • 支持流程设计图导出 svg 文件和单元测试代码。
  • 支持基于 Java 反射和 Spring 容器的代码触发

快速上手

  • 引入 compileflow jar 依赖
<dependency><groupId>com.alibaba.compileflow</groupId><artifactId>compileflow</artifactId><version>1.0.0</version>
</dependency>
  • 使用 compileflow 绘制了简单的流程图

  • 查看编译出的流程业务Java代码(以下代码为compileflow自动根据流程图生成的)
public class PigFlow implements ProcessInstance {private java.lang.Integer price = null;public Map<String, Object> execute(Map<String, Object> _pContext) throws Exception {price = (Integer)DataType.transfer(_pContext.get("price"), Integer.class);Map<String, Object> _pResult = new HashMap<>();decision8();//AutoTaskNode: 付款((BizMock)ObjectFactory.getInstance("com.example.compileflow.bean.BizMock")).payMoney(price);_pResult.put("price", price);return _pResult;}private void decision8() {//DecisionNode: 计算费用bizMockCalMoney();if (price>=100) {//超过100{//ScriptTaskNode: 春哥请客 腿打折IExpressContext<String, Object> nfScriptContext = new DefaultContext<>();nfScriptContext.put("price", price);price = (java.lang.Integer)ScriptExecutorProvider.getInstance().getScriptExecutor("QL").execute("price*2", nfScriptContext);}} else {//不超过100{//ScriptTaskNode: 冷冷请客 打5折IExpressContext<String, Object> nfScriptContext = new DefaultContext<>();nfScriptContext.put("price", price);price = (java.lang.Integer)ScriptExecutorProvider.getInstance().getScriptExecutor("QL").execute("(round(price*0.5,0)).intValue()", nfScriptContext);}}}private void bizMockCalMoney() {price = ((BizMock)ObjectFactory.getInstance("com.example.compileflow.bean.BizMock")).calMoney(price);}}
  • 在设计好的 bpm 文件右键创建 单元测试

@Test
public void testProcess() throws Exception {String code = "pig";ProcessEngine<TbbpmModel> engine = ProcessEngineFactory.getProcessEngine();System.out.println(engine.getJavaCode(code));Map<String, Object> context = new HashMap<>();context.put("price", 10);Map<String, Object> execute = engine.execute(code, context);System.out.println(execute);
}
  • 执行流程单元测试,输出目标过程
假装在计算金额~~~~~~10
支付了~~~~~~5

总结

  • compileflow 极其容易上手,降低工作流学习的难度。

  • compileflow IDEA 设计插件在 2021 版本兼容性存在问题。

  • 自动生成的单元测试代码依赖版本较低不支持 Junit5

阿里开源工作流框架 compileflow 上手使用相关推荐

  1. 干掉activity、flowable,阿里开源工作流引擎compileflow使用指南

    你知道的越多,不知道的就越多,业余的像一棵小草! 成功路上并不拥挤,因为坚持的人不多. 编辑:业余草 推荐:https://www.xttblog.com/?p=5247 compileflow 是什 ...

  2. .NET 5 开源工作流框架elsa技术研究

    编者注: 工作流框架 elsa 是.NET基金会下面的开源项目,2.0版本即将在3月份发布,目前正在紧锣密鼓的开发之中,2020年2月份我也介绍过推荐一个很棒的开源工作流elsa-core ,今天给大 ...

  3. 什么是开源工作流框架?有什么特点?

    在大数据时代,开源工作流框架也成为大家提升办公效率的利器软件之一.那么,什么是开源工作流框架?又有哪些特点?作为低代码平台服务商,流辰信息有责任和义务潜心研发更多优良的软件产品,为各大中型企业提升协同 ...

  4. 阿里开源 GNN 框架 Graph-Learn,实现了各类可复用模型和编程接口!

    近日,阿里巴巴开源了面向图神经网络(GNN)的框架Graph-Learn(GL,原AliGraph).该框架由阿里内部团队研发,面向工业场景而设计,为当下主流GNN算法提供了基础运行框架. 项目地址: ...

  5. 阿里开源 GNN 框架 Graph-Learn,实现了各类可复用模型和编程接口

    2020-04-01 20:54:40 近日,阿里巴巴开源了面向图神经网络(GNN)的框架Graph-Learn(GL,原AliGraph).该框架由阿里内部团队研发,面向工业场景而设计,为当下主流G ...

  6. (4.2.40)阿里开源路由框架ARouter的源码分析

    一需求背景 1 Android原生方案的不足 2 自定义路由框架的适用场景 3 对自定义路由框架的设想 二ARouter的概述 三ARouter的引入和使用 四源码分析 1 arouter-annot ...

  7. 开源工作流框架 workflow-core 的学习和使用

    首先感谢作者能写出如此优雅的作品,作品地址:Workflow-Core 由于工作需要,需要在项目中添加工作流引擎,经过产品经理的选型,决定用这个,并且将这个任务分配给我.经过几天的研究,我在这边做一点 ...

  8. 阿里开源分布式框架dubbo

    百度网盘下载 课程目录: 其他 05.dubbo快速学习 6课 04.dubbo分布式架构架构篇 12课 03.dubbo分布式架构高级篇 17课 02.dubbo分布式架构基础篇 19课 01.du ...

  9. 详解工作流框架Activiti的服务架构和组件

    摘要:通过这篇文章,可以对工作流有一个基本的认识,为后续工作流框架Activiti的学习打下坚实的基础. 本文分享自华为云社区<BPMN工作流的基本概念!详解工作流框架Activiti的服务架构 ...

最新文章

  1. Linux13-计划任务crontab
  2. JavaXml教程(二)使用DOM方式解析XML文件
  3. jq的链式调用.end();
  4. java int 128 ==_为什么 Java Integer 中“128==128”为false,而”100==100“为true?
  5. discuz插件开发新手入门 超详细[转载]
  6. 一个研究生毕业以后的人生规划(ZT)
  7. 你电脑上「最引以为豪」的软件是什么?
  8. Java EE入门教程系列第二章JSP(一)——第一个JSP程序
  9. 飞思卡尔智能车准备篇
  10. PUF论文整理2:2021_A_Novel_Modeling-Attack_Resilient_Arbiter-PUF_Design
  11. UGUI长按按钮的实现(技能蓄力使用)
  12. elasticsearch6.5.4破解白金版xpack
  13. 29、RFM客户价值分析(有图有案例)
  14. SpringBoot 导出 PDF 图表(折现图、饼状图等)
  15. javascript弹出浏览器的三种提示框:提示信息框、确认框、输入文本框
  16. 电脑上与android手机文件互传
  17. MySQL数据库基础详细教程
  18. STM32 USB HID Mouse And Keyboard (guide)
  19. 【lnmp】require(): open_basedir restriction in effect.【百度不是万能的,关键时刻还得靠自己】
  20. Java实现“梭哈”游戏

热门文章

  1. 金三银四过去大半,你确定好跳槽了吗?
  2. 7-20 简单计算器分数 (详解)
  3. SQL Server数据库学习笔记整理-数据类型
  4. 命名实体识别(NER)算法
  5. SpringBoot+Vue前后端分离
  6. 固定资产模块事务代码
  7. 共享经济迎来盈利时代
  8. airtest连接设备黑屏或者运行报错minicap超时问题
  9. 学的计算机专业要购怎样的笔记本电脑,参考:上大学了买电脑吗?大学新生笔记本电脑购置全攻略...
  10. unity 双屏,一个UI控制,一个展示