天天看点

流程引擎之compileflow简介

背景

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代码并预览,比较清楚看到流程内容。

流程引擎之compileflow简介

另外,自动节点关联指定类方法界面如下:

流程引擎之compileflow简介
流程启动
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简介

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