compileflow简单使用
compileflow引用:https://gitee.com/mirrors/compileflow/blob/master/README_CN.md
什么是流程引擎?
流程引擎就是“业务过程的部分或整体在计算机应用环境下的自动化”,它主要解决的是“使在多个参与者之间按照某种预定义的规则传递文档、信息或任务的过程自动进行,从而实现某个预期的业务目标,或者促使此目标的实现”。通俗的说,流程就是多种业务对象在一起合作完成某件事情的步骤,把步骤变成计算机能理解的形式就是流程引擎。
compileflow是什么
compileflow是一个非常轻量、高性能、可集成、可扩展的流程引擎。
compileflow Process引擎是淘宝工作流TBBPM
引擎之一,是专注于纯内存执行,无状态的流程引擎,通过将流程文件转换生成java
代码编译执行,简洁高效。当前是阿里业务中台交易等多个核心系统的流程引擎。
compileflow能让开发人员通过流程编辑器设计自己的业务流程,将复杂的业务逻辑可视化,为业务设计人员与开发工程师架起了一座桥梁。
Design Intention
- 希望为业务开发提供端至端,从设计至实现的业务流程解决方案。
- 提供多种流程引擎,实现从战略至商业能力,商业能力至业务流程,业务流程至系统,并最终实现业务的可视化全局架构。
- 设计高效的执行引擎,实现对服务的快速组合或扩展,提升
idea
至value
的研发响应与交互速度。、
快速上手
Step1: idea在插件市场搜索compileflow安装
本地安装,插件下载地址:https://github.com/alibaba/compileflow-idea-designer
Step2:maven项目引入pom文件
<dependency>
<groupId>com.alibaba.compileflow</groupId>
<artifactId>compileflow</artifactId>
<version>1.2.0</version>
</dependency>
可以在 search.maven.org 查看可用的版本。
注意: compileflow
仅支持JDK 1.8
及以上版本。
Step3: Demo创建
1、创建bpm文件
2、点击创建的bpm
在进行界面编排有以下几个注意的点,都是一步一步踩的坑呀,因为百度很少基本教的都是初步使用,问题解决的也很少,只能趟坑才知道!!!
注意
-
结束节点、开始节点只能有一个,目前为止。
-
判断节点可以是多个,但是不能都直接走结束节点,也就是结束节点只能有一根线连着。
-
传参,最好是一个实体进行传参,多个list传参不仅选不中那个list实体,而且还会报错。
-
在自动节点里的action setting的type 有两个类型选择一个是java、一个是spring bean,这里需要注意下,使用java的话比较简单,无注意的点,如果使用spring bean的话,需要创建下面方法进行加载。
/** * 注意:这里是想让系统启动时,预先加载bpm流程到内存,防止第一次调用时,初始化流程所带来的耗时 * */ @Component @Configuration public class BpmInitializer implements InitializingBean, ApplicationContextAware { @Override public void afterPropertiesSet() throws Exception { ProcessEngine processEngine = ProcessEngineFactory.getProcessEngine(); //将自己的bpm加载到内存里面 processEngine.preCompile("bpm.buy"); } @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { SpringApplicationContextProvider.applicationContext = applicationContext; } }
3、点击创建bpm的全局变量
-
联系点击两次界面黑处,弹出配置界面。
-
这时候大家肯定很疑惑,传list实体,官方是怎么传的,界面选择不了,这里要传list的话,需要去test里面去配置,需要手动加list,对这个感到很不解,只能理解为还没有这个功能,这里还是要提一下刚刚的注意点,不能传两个list,会报错。
4、自动节点选择方法
-
这里就比较简单,需要注意点就是传入的bean了。
-
选择对应类和方法,会自动出需要传入的参数,然后再全局变量里面传入就好了,这里也需要注意点,如果一个变量的话,会选择不了变量。
5、判断节点返回
-
点击返回的那根线,会出对应的窗口
-
根据上节点的返回变量进行判断。
6、运行bpm
@org.junit.Test public void test(){ final Map<String, Object> context = new HashMap<>(); List<User> list = new ArrayList<>(0); User user = new User(); user.setAge(12); user.setName("张三"); list.add(user); User user1 = new User(); user1.setAge(20); user1.setName("李四"); list.add(user1); User user2 = new User(); user2.setAge(20); user2.setName("李四1"); list.add(user2); context.put("userList", list); LoginInfo loginInfo = new LoginInfo(); loginInfo.setLoginName("李四2"); //上下文传值 context.put("logininfo", loginInfo); final ProcessEngine<TbbpmModel> processEngine = ProcessEngineFactory.getProcessEngine(); processEngine.start("bpm.buy", context);
-
总结
-
上手确实很快,其实也有一些坑,主要是一步一步趟着过,百度不出来,也无什么沟通群之类的(官方的解散了)
-
根据自己的业务进行编排,易解耦。
-
快速集成。