2023年8月1日发(作者:)
Activiti主流程各个属性⽤法Id流程定义的key,可⽤来启动流程,例如假如我的key为myProcess,流程成功发布后就可以通过以下代码启动流程,如果流程发布了多个版本,那startProcessInstanceByKey就会以最新的版本启动流程。ProcessInstance pi = rocessInstanceByKey(“myProcess”);Name流程定义的名称,如果未指定name属性,则将id(key)属性⽤作名称,这个属性⽤处不⼤。Is Executable-流程是否可⽤,不勾选的话发布流程就会报错。Is Closed暂时不懂,后续更新。。。Process Type暂时不懂,后续更新。。。Candidate Starter Users⽤来指定允许发起流程的⽤户id,多个⽤户使⽤英⽂逗号隔开,例如设置Candidate Starter Users了123456这个⽤户来启动流程,实现代码如下:String userId = "123456";List processDefinitions = ProcessDefinitionQuery().startableByUser(userId).list(); for (ProcessDefinition processDefinition : processDefinitions ) { //通过流程定义id启动流程实例 rocessInstanceById(()); }Candidate Starter Groups⽤来指定允许发起流程的⽤户组id,多个⽤户组id使⽤英⽂逗号隔开,相当⾓⾊id,⼀个组下可绑定多个⽤户id,例如在设置了CandidateStarter Groups为1这个组来启动流程,实现如下:1.在数据库act_id_group表中增加⼀条组,ID_设置为12.在数据库act_id_user表添加⽤户,ID_为1234563.在数据库act_id_membership关系表绑定上⾯添加的⽤户组id和⽤户id,USER_ID_填123456,GROUP_ID_填14.实现代码如下,和Candidate Starter Users实现的代码⼀样,只要传⼊⽤户id即可:String userId = "123456";List processDefinitions = ProcessDefinitionQuery().startableByUser(userId).list(); for (ProcessDefinition processDefinition : processDefinitions ) { //通过流程定义id启动流程实例 rocessInstanceById(()); }Error Definitions看下⾯的例⼦,我设置了⼀个错误定义,名字为未知错误,错误码为500,流程启动后直接执⾏java服务任务,其实就是执⾏⼀段java代码,我的服务代码位置rrorDelegate,所以我在服务任务的class属性中选择了这个类,如果执⾏成功就结束流程,如果执⾏过程中出现500错误就跳转到⽤户任务UserTask(1)流程图:(2)ThrowErrorDelegate 服务任务执⾏类:import ror;import teExecution;import legate;import e;public class ThrowErrorDelegate implements JavaDelegate { public void execute(DelegateExecution execution) throws Exception { String errorCode = "500"; n("抛出错误,errorCode为:" + errorCode); throw new BpmnError(errorCode);}}Message Definitions(1)演⽰的流程,我设置了⼀个消息定义,名字为go,流程启动后直接到达接收任务(等待⼀个消息或者信号,这个消息或者信号传过来后就会执⾏任务并跳转到下⼀部),⽽且这个接收任务中还定义了⼀个消息边界事件引⽤go,当执⾏任务传过来的消息是go时流程下⼀步就跳到任务1,如果代码不传go消息过来,就默认按照原来的流程⾛,这⾥直接流程结束。(2)执⾏接收任务代码eEventReceived(“go”,“72504”);//72504是executionId,在act_ru_execution表中的ID_,执⾏这段代码之后流程到达任务1。(“72504”);//没传消息名称,执⾏这段代码的话流程直接到达结束节点。Signal Definitions(1)演⽰的流程,我设置了⼀个信号定义,名字为signal,流程启动后直接到达接收任务(等待⼀个消息或者信号,这个消息或者信号传过来后就会执⾏任务并跳转到下⼀部),⽽且这个接收任务中还定义了⼀个信号边界事件引⽤signal,当执⾏接收任务传过来的信号是signal时流程下⼀步就跳到任务1,如果代码不传signal信号过来,就默认按照原来的流程⾛,这⾥直接流程结束。(2)代码实现EventReceived(“signal”);执⾏这句代码后流程跳到任务1,因为信号边界事件指向了任务1 。(“72504”);//没传信号名称,执⾏这段代码的话流程直接到达结束节点。
发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1690872675a451893.html
评论列表(0条)