背景
compileflow 是一个非常轻量、高性能、可集成、可扩展的流程引擎。compileflow Process 引擎是淘宝工作流 TBBPM 引擎之一,是专注于纯内存执行,无状态的流程引擎,通过将流程文件转换生成 java 代码编译执行,简洁高效。当前是阿里业务中台交易等多个核心系统的流程引擎。compileflow能让开发人员通过流程编辑器设计自己的业务流程,将复杂的业务逻辑可视化,为业务设计人员与开发工程师架起了一座桥梁。
compileflow github 地址:https://github.com/alibaba/compileflow
Idea插件设计器:https://github.com/alibaba/compileflow-idea-designer
compileflow 特性
高性能:通过将流程文件转换生成java代码编译执行,简洁高效。
丰富的应用场景:在阿里巴巴中台解决方案中广泛使用,支撑了导购、交易、履约、资金等多个业务场景。
可集成:轻量、简洁的设计使得可以极其方便地集成到各个解决方案和业务场景中。
完善的插件支持:流程设计目前有IntelliJ IDEA、Eclipse插件支持,可以在流程设计中实时动态生成java代码并预览,所见即所得。
支持流程设计图导出svg文件和单元测试代码。
compileflow 使用
1)compileflow demo 使用示例
compileflow 官方 demo 项目中有一个 ktv 唱歌的例子,如果价格大于等于300的话打九折,否则不打折(demo源码地址:https://github.com/compileflow/compileflow-demo)。示例如下:
maven 依赖
<dependency>
<groupId>com.alibaba.compileflow</groupId>
<artifactId>compileflow</artifactId>
<version>1.2.0</version>
</dependency>
compileflow-designer 使用
compileflow-designer 是 compileflow 开放的流程设计插件,可直接在上面编辑流程文件,同时可实时动态生成java代码并预览,比较清楚看到流程内容。
另外,自动节点关联指定类方法界面如下:
流程启动
public void run() {
//code在bpm文件中定义
String code = "bpm.ktvExample";
//执行流程的入参
Map<String, Object> context = new HashMap<>();
List<String> pList = new ArrayList<>();
pList.add("wuxiang");
pList.add("yusu");
pList.add("xugong");
pList.add("fandu");
context.put("pList", pList);
try {
ProcessEngine processEngine = ProcessEngineFactory.getProcessEngine();
Map<String, Object> result = processEngine.start(code, context);
System.out.println(result.get("price"));
} catch (Exception e) {
e.printStackTrace();
}
}
2)流程引擎对比
相对于其他流程引擎,compileflow 具有以下优点:
compileflow 极其容易上手,降低工作流学习的难度
compileflow 专注于纯内存执行,无状态的流程引擎,更偏向于代码流程编排,即编排引擎
compileflow 标签
compileflow 原生只支持淘宝 BPM 规范,为兼容 BPMN 2.0 规范,做了一定适配,但仅支持部分 BPMN 2.0 元素,如需其他元素支持,可在原来基础上扩展。
原始淘宝BPM规范详细说明:https://github.com/alibaba/compileflow/wiki/%E5%8D%8F%E8%AE%AE%E8%AF%A6%E8%A7%A3
compileflow 整体架构
compileflow 运行阶段如下:
compileflow 定义了一套协议可以解析 xml 文件,并生成 java 类,再编译成 class 文件,加载内存后反射生成对象缓存起来,等引擎需要执行指定的 xml 流程时就会调用该对象。
流程引擎系列文章
流程引擎之发展史及对比总结: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