compileflow什么是compileflow?Compileflow是一个非常轻量级、高性能、可集成和可扩展的流程引擎。compileflowProcess引擎是淘宝工作流TBBPM引擎之一。它是一个专注于纯内存执行的无状态流程引擎。它将进程文件转换成java代码编译执行,简洁高效。目前是阿里巴巴业务中端交易等多个核心系统的流程引擎。compileflow允许开发者通过流程编辑器设计自己的业务流程,将复杂的业务逻辑可视化,搭建业务设计师和开发工程师之间的桥梁。功能列表高性能:通过将进程文件转换生成java代码编译执行,简洁高效。应用场景丰富:广泛应用于阿里巴巴中台解决方案,支持导购、交易、履约、资金等多种业务场景。可集成:轻巧简洁的设计,极其方便地集成到各种解决方案和业务场景中。完善的插件支持:流程设计目前支持IntelliJIDEA和Eclipse插件,可以在流程设计过程中实时动态生成和预览java代码,所见即所得。支持流程设计图导出svg文件和单元测试代码。支持基于Java反射和Spring容器的代码触发快速入门导入compileflowjar依赖com.alibaba.compileflowcompileflow1.0.0使用compileflow绘制简单流程图查看编译后的流程业务Java代码(以下代码是compileflow根据流程图自动生成的)publicclassPigFlowimplementsProcessInstance{privatejava.lang.Integerprice=null;publicMapexecute(Map_pContext)throwsException{price=(Integer)DataType.transfer(_pContext.get("price"),Integer.class);Map_pResult=newHashMap<>();决定8();//AutoTaskNode:Payment((BizMock)ObjectFactory.getInstance("com.example.compileflow.bean.BizMock")).payMoney(price);_pResult.put("价格",价格);返回_pResult;}privatevoiddecision8(){//DecisionNode:计算费用bizMockCalMoney();如果(公关ice>=100){//超过100{//ScriptTaskNode:春哥请客腿打折IExpressContextnfScriptContext=newDefaultContext<>();nfScriptContext.put("价格",价格);price=(java.lang.Integer)ScriptExecutorProvider.getInstance().getScriptExecutor("QL").execute("价格*2",nfScriptContext);}}else{//不超过100{//ScriptTaskNode:冷请客打5折IExpressContextnfScriptContext=newDefaultContext<>();nfScriptContext.put("价格",价格);price=(java.lang.Integer)ScriptExecutorProvider.getInstance().getScriptExecutor("QL").execute("(round(price*0.5,0)).intValue()",nfScriptContext);}}}privatevoidbizMockCalMoney(){price=((BizMock)ObjectFactory.getInstance("com.example.compileflow.bean.BizMock")).calMoney(价格);}}右击设计好的bpm文件,创建单元测试@TestpublicvoidtestProcess()throwsException{Stringcode="pig";ProcessEngineengine=ProcessEngineFactory.getProcessEngine();System.out.println(engine.getJavaCode(code));Mapcontext=newHashMap<>();context.put("价格",10);Mapexecute=engine.execute(code,context);System.out.println(execute);}执行进程单元测试,输出目标进程,假装在计算金额~~~~~~10paid~~~~~~5总结compileflow非常好用而且降低工作流学习难度CompileflowIDEA设计插件2021版本存在兼容性问题,自动生成的单元测试代码依赖低版本,不支持Junit5