activiti流程属性详解


1、Id:流程定义的key,可用来启动流程,例如假如我的key为myProcess,流程成功发布后就可以通过以下代码启动流程,如果流程发布了多个版本,那startProcessInstanceByKey就会以最新的版本启动流程。
ProcessInstance pi = runtimeService.startProcessInstanceByKey("myProcess");

2、Name:流程定义的名称,如果未指定name属性,则将id(key)属性用作名称,这个属性用处不大。

3、Is Executable:流程是否可用,不勾选的话发布流程就会报错。

4、Is Closed:暂时不懂,后续更新。。。

5、Process Type:暂时不懂,后续更新。。。

6、Candidate Starter Users:用来指定允许发起流程的用户id,多个用户使用英文逗号隔开,例如设置Candidate Starter Users了123456这个用户来启动流程,实现代码如下:

String userId = "123456";
List<ProcessDefinition> processDefinitions = repositoryService.createProcessDefinitionQuery().startableByUser(userId).list();
        for (ProcessDefinition processDefinition : processDefinitions ) {
            //通过流程定义id启动流程实例
            runtimeService.startProcessInstanceById(processDefinition.getId());
        }

7、Candidate Starter Groups:用来指定允许发起流程的用户组id,多个用户组id使用英文逗号隔开,相当角色id,一个组下可绑定多个用户id,例如在设置了Candidate Starter Groups为1这个组来启动流程,实现如下:
1.在数据库act_id_group表中增加一条组,ID_设置为1
2.在数据库act_id_user表添加用户,ID_为123456
3.在数据库act_id_membership关系表绑定上面添加的用户组id和用户id,USER_ID_填123456,GROUP_ID_填1

4.实现代码如下,和Candidate Starter Users实现的代码一样,只要传入用户id即可:

String userId = "123456";
List<ProcessDefinition> processDefinitions = repositoryService.createProcessDefinitionQuery().startableByUser(userId).list();
        for (ProcessDefinition processDefinition : processDefinitions ) {
            //通过流程定义id启动流程实例
            runtimeService.startProcessInstanceById(processDefinition.getId());
        }

8、Error Definitions错误定义,看下面的例子,我设置了一个错误定义,名字为未知错误,错误码为500,流程启动后直接执行java服务任务,其实就是执行一段java代码,我的服务代码位置com.plancode.ThrowErrorDelegate,所以我在服务任务的class属性中选择了这个类,如果执行成功就结束流程,如果执行过程中出现500错误就跳转到用户任务UserTask
(1)流程图:

top Created with Sketch.