activiti入门-第一天

从年前看activiti相关大约一个多月了,在网上搜索了无数的文章,感谢这个楼主的分享,从他的几篇文章总算是入门了,自己尝试写了比较复杂的流程,总算实现了所有功能和业务,楼主链接https://blog.****.net/u011320740/article/details/52994361,再次感谢大牛的快速入门。

这次用的是activiti6.x,此次使用的是框架是若依的框架,官网请直接去这里下载http://ruoyi.vip/,里面有一个集成mysql版本的工作流项目,不过在使用中有一些问题,做了一些改进,数据库版本也修改成oracle了,都是血和泪啊,改一个框架太难了啊!!!

言归正传,工作流开发第一步就是画图,若依的示例给了一个请假的业务,最简单的业务,可以完全跑通,跟我一样的小白可以参考这个去入门,画图框架自带了一个工具是官方的Activiti Modeler,不过我尝试了几次,最后都是以失败告终,最后我用的是开发工具带的插件,一共两款(idea和eclipse都有对应的插件),idea虽然比较新,但是插件最后一次更新的时间是14年,所以也不是很好用,界面和使用个人都不太喜欢,最后采用的是eclipse的插件,eclipse用的是比较新的19的版本,插件下载这里就不再说明了,比较简单。

activiti工作流的流程图是bpmn的格式,新建之后直接画图即可。

activiti入门-第一天

这次就介绍一个比较简单的流程,从开始到结束用到了两次排他网关,排他网关就是根据条件,当符合条件满足时进行之后的流程,在流程进行中只需要传一个写好的参数,然后在流程图绘制时写好对应的判断条件即可。

流程开始即流程发起,activiti入门的博主也写了一下,但是没有配图,第一步如果需要参数有几种形式,99%的应该都是动态参数。

activiti入门-第一天

activiti的参数传参形式都是${},这里可以根据具体的业务进行传参,如果是单个人完成此节点,则传一个人即可map.put("jzqr", "a"),也就是承办人为a,如果是多人就有两种形式,可以把多个人用逗号分隔,map.put("jzqr", "a,b,c"),如果是组的话,比较灵活,规定好对应的组名,后期可以把人添加到组内即可办理此次节点的任务,组的创建和人物绑定就不再叙述了,网上资料一大把,map.put("jzqr", "group"),这里重点说明一下,如果画图时设置了Main config,那么流程进行中必须要传对应的参数,否则会报错,导致流程停滞。

后端对应的代码也贴上:

Map<String,Object> map = new HashMap<String,Object>();

map.put("jzqr", "小明");

ProcessInstance processInstance = runtimeService .startProcessInstanceByKey("inspect", map);

String processInstanceId = processInstance.getId();

然后说一下排他网关,如图

activiti入门-第一天activiti入门-第一天activiti入门-第一天

条件需要设置到对应的线上,这个对应的条件写在Condition中,可以写很多种条件比如大于小于等于之类的,我这里用的是true和false,当流程需要进行到排他网关前,传对应的dossierpass即可,后端代码贴上:

Map<String, Object> map = new HashMap<String,Object>();
map.put("dossierpass", true); 
taskService.complete(taskid, map);

流程进行中只要这么传参就可以了,activiti会根据给出的条件自动判断流程之后的走向,如果是true则流程进入打分,如果是false则流程进入再次维护。