工作流之Camunda开发记录(一)---常用API与流程

工作流之Camunda开发记录(一)---常用API与流程

2023年8月1日发(作者:)

⼯作流之Camunda开发记录(⼀)----常⽤API与流程它是什么 ⼀种⼯作流引擎,是Activiti的变种,他怎么来的其他很多地⽅有介绍 我不怎么关⼼做什么 我本次记录的是作为⼯作流引擎使⽤ 进⾏⼆次封装开发 只⽤他的⼀个壳⼦

具体流程是: 1、前端传他⾃⼰的Json结构。当然必要时需要添加后端定制化的东西 2、后端解析为Camunda识别的Json结构 3、解析中需要通过camunda 的 ⽤户任务与服务任务调⽤⾃⼰业务的逻辑 4、发布流程定义 5、启动流程实例⽇常API使⽤与名词介绍准备⼯作 1、⾸先我使⽤的是Springboot+Camunda 启动时加上注解即可使⽤ 在主类 + @EnableProcessApplication 当然依赖也不能少 我使⽤的是Gradle开发依赖是最新版的 compile group: 'boot', name: 'camunda-bpm-spring-boot-starter-webapp', version: '7.14.0' 使⽤maven的同学可以⾃⼰再找哈 这个没啥难度 2、想要后端⾃⼰测试 可以下载⼀个官⽅画图插件 Camunda-modeler

地址为: /camunda/camunda-modeler/releases 3、画图插件使⽤很简单啦 简单的画图随便看看就会了API介绍流程定义发布 1、上⾯的准备⼯作做完了 启动boot⼯程 第⼀次⽐较慢 会⾃动⽣成47张表 这个我⼏乎不关⼼ 因为我⽤我⾃⼰的业务流程 只是⽤它的壳⼦⽽已 2、我们先拿到⼀个简单的XML结构:3、这⾥的xml有⼏种形式可以使⽤我只说两种a、⽂件形式 ⽂件必须以结尾b、字符串形式 没有什么过多要求 名称必须是bpmn内的名称统⼀拿到xml结构我们就可以进⾏发布了 发布后得到的对象我们称之为流程定义 这⼀步很重要//

之前我们已经在主类加了注解的话

这⾥直接通过Spring注⼊RepositoryService对象就可以使⽤

之后关于camunda的所有的Service

同理//

字符串发布 s1则为xml格式字符串Deployment deploy = Deployment().addString("", s1).deploy();//

⽂件发布

其中param

是⽂件的路径信息Deployment deploy = Deployment().addInputStream("bpmnProcessId",new FileInputStream(param)).deploy();通过以上两种⽅式 我们都可以成功进⾏发布 这⾥发布失败会有提⽰在我的使⽤过程中 我总结了⼏点会遇到的错误1、bpmn⽂件中的id 必须以字母开头 不能以数字开始2、若为⽂件发布 则⽂件名称必须以结尾,否则即使发布成功也不会⽣成流程定义,在启动实例时会报错说找不到定义3、end是必要的但不是必须的、若没有end 我经历过启动⽆限循环跳不出的情况 找不到结束了嘛这⾥我们还需要拿到⼀个发布后的idProcessDefinitionQuery processDefinitionQuery = ProcessDefinitionQuery().deploymentId(()); List list = (); ProcessDefinition processDefinition = Result(); n("=========1" + ()); String name = e();这样就可以拿到流程定义id 了 如果 到这⾥还没有报错 就基本是发布成功了启动流程实例Map params = new HashMap<>(); DemoParam demoParam1 = new DemoParam(); DemoParam demoParam2 = new DemoParam(); DemoParam demoParam3 = new DemoParam(); ("s1", demoParam1); ("s2", demoParam2); ("s3", 2); ProcessInstance processInstance = rocessInstanceById(param, params); String id = ();启动流程是可以加⼊全局参数的 具体参数的使⽤ 请看我关于服务任务的介绍。这⾥的param是上⾯的流程定义id这步还没有报错的话 就启动成功并且拿到了实例id所谓的流程实例就是流程定义启动后的东西 注意⼀个定义可以发布多个实例这⾥要提到任务种类、所谓的任务就是⼀个正⽅形 可以执⾏任务的种类、服务任务是⾃动执⾏的,⽤户任务是需要审批执⾏的,所以如果遇到的⽤户任务 任务是中⽌ 需要审批才会继续执⾏审批⽅法Map params = new HashMap<>(); ("x", 1); List list = TaskQuery().processInstanceId(param).active().list(); h(s-> { te(()); });当然审批过程中也可以继续在全局变量中添加参数全局参数很重要 关系到我们以后的业务流程怎么添加参数 怎么使⽤参数 因为⼯作流是⾃动执⾏的 所以参数是在启动任务流程之前就设置好的东西到此为⽌ ⼀个基本的流程就执⾏成功了⾄于什么查询历史等 具体业务再具体查询API即可下⾯简单介绍⼀下其他名词任务节点:包括⽤户任务、服务任务、⼦任务等序列流:即为线⽹关:即为分叉 ⽹关本⾝没有什么业务意义,只作为条件判断的⼀个标识、⽹关后的序列流可以添加条件表达式⽤作判断依据如果还想知道什么Camunda其他的知识、可以留⾔与我分享讨论

发布者:admin,转转请注明出处:http://www.yc00.com/news/1690874014a452201.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信