SpringBoot集成工作流引擎Camunda的示例分析
小编给大家分享一下Spring Boot集成工作流引擎Camunda的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
成都创新互联公司专注于网站建设,为客户提供做网站、网站建设、网页设计开发服务,多年建网站服务经验,各类网站都可以开发,成都品牌网站建设,公司官网,公司展示网站,网站设计,建网站费用,建网站多少钱,价格优惠,收费合理。
过程:进入官网。主页主色调让我想起了橙子,顶部白色背景配上黑Bold菜单,扫了一遍,点击Developers(嗯,这是直觉,毕竟用来开发嘛)。咦,发现还有二级菜单,再扫一遍,先LEARN吧,然后就点了 Build Your First Project 。一直滚动鼠标,看到了Quick Start,点击Learn more,新开了个页签。因为我的是SpringBoot项目,所以直接点开了Spring Boot,然后就跟着文档真正Start了。
1.IDEA创建一个SpringBoot项目,还是用阿里云的Initializr吧,比spring.io快。
2.引入Camunda BPM的依赖,我只引入了camunda-bpm-spring-boot-starter-webapp(因为我要查看Camunda的表结构,必须用自己的MySQL),而且调整了版本为3.4.0。
然后在resources下面新增META-INF/processes.xml空文件。
(引入Camunda的SpringBoot项目,启动时会自动建表)
3.Spring Boot程序入口添加注解@EnableProcessApplication。
4.接下来就是要设计一个工作流了,需要下载设计软件Camunda Modeler ,一家的,下吧,不慌。然后参照文档设计了借款工作流。然后根据项目需要设计了自己的工作流
流程开始,先走“开发”,走完会输出一个布尔值pass,true则通过走“测试”,false则不通过“流程失败结束”。走“测试”的话,也会输出一个布尔值pass,true则通过走“流程成功结束”,否则“流程失败结束”。
5.保存工作流,放入SpringBoot项目resources目录下,也可以在resources下新建子目录存放,便于分类管理。
6.接下来的内容很重要,因为开始涉及编码了。
A、首先就是流程怎么开始,这个简单
/** 操作流程实例 */@Autowiredprivate RuntimeService runtimeService;
ProcessInstance instance = runtimeService.startProcessInstanceByKey(参数是工作流ID);System.out.println("实例启动成功,实例ID:" + instance.getProcessInstanceId());
记住,这个实例ID(不是工作流ID)一定要跟你的业务绑定,因为流程一启动,就会走“开发”。
B、第二步就是怎么设置这个“开发”的输出参数pass了(踩了很多的坑)
/** 操作任务 */@Autowiredprivate TaskService taskService;
Task task = taskService.createTaskQuery().processInstanceId(刚才那个跟业务绑定的实例ID).singleResult();Mapvariables = new HashMap<>(1);variables.put("pass", true);taskService.complete(task.getId(), variables);System.out.println("开发任务执行成功,任务ID:" + task.getId());
singleResult是因为我这里开发就一个task,如果你的工作流某个节点有多个task,就用list()方法,然后一个个处理task。
然后“测试”的跟“开发”就差不多了,拿到task,设置参数,完成task,结束。
C、至于“开发”和“测试”,各节点里面要做的事情,我是设计工作流时,设置节点的Listeners处理的,有Execution Listener和Task Listener,然和配合Event Type。
以上是“Spring Boot集成工作流引擎Camunda的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联行业资讯频道!
新闻名称:SpringBoot集成工作流引擎Camunda的示例分析
文章转载:http://scyanting.com/article/gddoih.html