网站首页 > java教程 正文
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 绘制了简单的流程图
IDEA 插件
- 查看编译出的流程业务 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 文件右键创建 单元测试
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 设计插件[1]在 2021 版本兼容性存在问题。
- 自动生成的单元测试代码依赖版本较低不支持 Junit5
猜你喜欢
- 2024-10-25 Spring Boot 整合流程引擎 Flowable,so easy
- 2024-10-25 规则引擎重塑业务灵活性,但是你真的会用吗?
- 2024-10-25 Java表达式求值引擎Aviator(二)(java数学表达式解析)
- 2024-10-25 高德打车通用可编排订单状态机引擎设计
- 2024-10-25 NET RulesEngine(规则引擎)(规则引擎easy rule)
- 2024-10-25 25-规则引擎概述(使用规则引擎的优势)
- 2024-10-25 开启灵活开发编码模式:规则引擎drools——LHS部分
- 2024-10-25 21-规则引擎内容介绍(规则引擎使用案例场景)
- 2024-10-25 Aviator规则引擎最佳实践(规则引擎教程)
- 2024-10-25 开源规则引擎LiteFlow:为低代码开发带来革命性的变革
你 发表评论:
欢迎- 最近发表
-
- 五,网络安全IDA Pro反汇编工具初识及逆向工程解密实战
- 「JAVA8」- Lambda 表达式(java lambda表达式原理)
- 深入探讨Java代码保护:虚拟机保护技术的新时代
- Nginx反向代理原理详解(图文全面总结)
- 逆向拆解日本IT,哪些Java技术栈薪资溢价高
- mybatis 逆向工程使用姿势不对,把表清空了,心里慌的一比
- Spring Boot集成ProGuard轻松实现Java 代码混淆, Java 应用固若金汤
- 从 Java 代码逆向工程生成 UML 类图和序列图
- 人与人相处:尊重是标配,靠谱是高配,厚道是顶配
- Windows系统安装日期如何修改(windows10怎么修改安装日期)
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)