Spring Boot集成工作流引擎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 ,一家的,下吧,不慌。然后参照文档设计了借款工作流。然后根据项目需要设计了自己的工作流

Spring Boot集成工作流引擎Camunda的示例分析

流程开始,先走“开发”,走完会输出一个布尔值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();Map<String, Object> variables = 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的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

原创文章,作者:745907710,如若转载,请注明出处:https://blog.ytso.com/230934.html

(0)
上一篇 2022年1月15日
下一篇 2022年1月15日

相关推荐

发表回复

登录后才能评论