当前位置: 首页 > 软件库 > 程序开发 > 工作流引擎 >

compileflow

轻量级可扩展流程引擎
授权协议 Apache
开发语言 Java
所属分类 程序开发、 工作流引擎
软件类型 开源软件
地区 国产
投 递 者 彭宏深
操作系统 跨平台
开源组织 阿里巴巴
适用人群 未知
 软件概览

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

compileflow Process引擎是淘宝工作流TBBPM引擎之一,是专注于纯内存执行,无状态的流程引擎,通过将流程文件转换生成java代码编译执行,简洁高效。

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

Design Intention

  1. 希望为业务开发提供端至端,从设计至实现的业务流程解决方案。
  2. 提供多种流程引擎,实现从战略至商业能力,商业能力至业务流程,业务流程至系统,并最终实现业务的可视化全局架构。
  3. 设计高效的执行引擎,实现对服务的快速组合或扩展,提升ideavalue的研发响应与交互速度。

Features

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

Quick Start

Step1: 下载安装IntelliJ IDEA插件(可选)

插件下载地址:https://github.com/alibaba/compileflow-idea-designer

安装说明:请使用IntelliJ IDEA本地安装方法进行安装,重新启动IntelliJ IDEA就会生效。

Step2: 引入POM文件

首发包暂时还未上传到公网,后续稳定后会进行上传

<dependency>
    <groupId>com.alibaba.compileflow</groupId>
    <artifactId>compileflow</artifactId>
    <version>1.0.0</version>
</dependency>

注意: compileflow仅支持JDK 1.8及以上版本。

Step3: 流程设计

下面以ktv demo为例,通过demo的演示和实践了解节点及属性的配置和API的使用。

demo描述:N个人去ktv唱歌,每人唱首歌,ktv消费原价为30元/人,如果总价超过300打九折,小于300按原价付款。

S3.1

创建bpm文件,如下图:

注:bpm文件路径要和code保持一致,在文件加载模式下流程引擎执行时会根据code找到文件。

S3.2

通过插件进行流程设计或者直接编写流程xml文件。

S3.3 调用流程

编写如下单元测试:

@Test
public void testProcessEngine() {
    final String code = "bpm.ktv.ktvExample";

    final Map<String, Object> context = new HashMap<>();
    final List<String> pList = new ArrayList<>();
    pList.add("wuxiang");
    pList.add("xuan");
    pList.add("yusu");
    context.put("pList", pList);

    final ProcessEngine processEngine = ProcessEngineFactory.getProcessEngine();

    final TbbpmModel tbbpmModel = (TbbpmModel)processEngine.load(code);
    final OutputStream outputStream = TbbpmModelConverter.getInstance().convertToStream(tbbpmModel);
    System.out.println(outputStream);
    System.out.println(processEngine.getTestCode(code));

    processEngine.preCompile(code);

    System.out.println(processEngine.start(code, context));
}

compileflow原生只支持淘宝BPM规范,为兼容BPMN 2.0规范,做了一定适配,但仅支持部分BPMN 2.0元素,如需其他元素支持,可在原来基础上扩展。

更多资料

  • CompileFlow源码解析 源码地址 https://gitee.com/mirrors/compileflow 项目介绍 compileflow是一个非常轻量、高性能、可集成、可扩展的流程引擎。 compileflow Process引擎是淘宝工作流TBBPM引擎之一,是专注于纯内存执行,无状态的流程引擎,通过将流程文件转换生成java代码编译执行,简洁高效。当前是阿里业务中台交易等多个核

 相关资料
  • 问题内容: 编写新的工作流引擎还是使用现有的BPM引擎更好吗:jBPM 5,Activiti 5? 我的应用程序是基于Web的应用程序,性能非常重要。我的疑问是,与编写简单的工作流引擎相比,使用jBPM / Activiti是否会增加性能开销。 如果我采用自我实现,我会错过工作流程的可视化。为了性能,可以进行交易。 问题答案: 这确实取决于您的要求。首先,查看您是否真的需要工作流引擎(此资源或其他

  • 主要内容:使用普通函数创建 goroutine,使用匿名函数创建goroutine在编写 Socket 网络程序时,需要提前准备一个线程池为每一个 Socket 的收发包分配一个线程。开发人员需要在线程数量和 CPU 数量间建立一个对应关系,以保证每个任务能及时地被分配到 CPU 上进行处理,同时避免多个任务频繁地在线程间切换执行而损失效率。 虽然,线程池为逻辑编写者提供了线程分配的抽象机制。但是,如果面对随时随地可能发生的并发和线程处理需求,线程池就不是非常直观和方便了。能否

  • 构建平台插件首先是需要一个普通的编辑器插件格式,关于插件的基本结构可以参考 Package 插件系统。扩展构建功能首先需要对构建的整体处理流程有所了解,不熟悉的用户建议先阅读 构建流程简介与常见问题指南。 快速开始 点击编辑器内的菜单内的 项目 -> 生成构建插件模板,选择文件夹后即可在对应位置生成一份构建插件模板。作为项目使用的构建插件可以选择项目下的 packages/xxx 路径,作为全局使

  • 本文向大家介绍浅谈轻量级js模板引擎simplite,包括了浅谈轻量级js模板引擎simplite的使用技巧和注意事项,需要的朋友参考一下 模板地址:https://github.com/zhangshaolong/simplite欢迎各位提出宝贵意见及贡献代码。特点: 1:代码量少,学习成本低; 2:默认jsp语法标签方式,熟悉jsp的朋友可以直接按照jsp的语法书写模板; 3:使用原生js语法

  • 我正在做一个项目,该项目将有许多JavaFX应用程序,这些应用程序具有相似但又足够不同的功能,因此我创建了一个抽象基类来扩展Application以处理常见的功能并指示它们需要做什么,还创建了一系列具体的类来扩展这些功能。然而,当我试图跑的时候,我得到 应用程序构造函数java.lang.Reflect.InvocationTargetException位于java.base/jdk.intern

  • 在常用的并发模型中,多进程、多线程、分布式是最普遍的,不过近些年来逐渐有一些语言以first-class或者library的形式提供对基于协程的并发模型的支持。其中比较典型的有Scheme、Lua、Python、Perl、Go等以first-class的方式提供对协程的支持。 同样地,Kotlin也支持协程。 本章我们主要介绍: 什么是协程 协程的用法实例 挂起函数 通道与管道 协程的实现原理 c