Activiti工作流进阶

一、Activiti表单

1
2
3
4
5
6
7
8
<startEvent id="startevent1" name="Start">
<extensionElements>
<activiti:formProperty id="userName" name="userName"
variable="userName" type="string" />
<activiti:formProperty id="age" name="age"
variable="age" type="string" />
</extensionElements>
</startEvent>
1
2
3
4
5
6
7
8
9
10
11
12
13
FormService formService = engine.getFormService();
StartFormData sfd = formService.getStartFormData(pd.getId());
List<FormProperty> formProps = sfd.getFormProperties();
Map<String, Object> variables = Maps.newHashMap();
for(FormProperty fp : formProps) {
System.out.println(fp.getName() + "--" + fp.getType());
if (StringFormType.class.isInstance(formProperty.getType())) {
variables.put(formProperty.getId(), "1");
} else if (DateFormType.class.isInstance(formProperty.getType())) {
variables.put(formProperty.getId(), "1");
}
taskService.complete(task.getId(), variables);
}

执行任务

1
2
//这样也会执行任务到下一个任务节点
proccessEngine.getFormService().submitTaskFormData(task.getId(),map);

二、事件监听

配置监听

activiti.cfg.xml配置文件添加配置:
添加一个bean实现ActivitiEventListener接口
根据ActivitiEventType枚举判断监听的类型

程序添加
runtimeService.addEventListener(new MyEventListenner());

主动触发监听自定义类型

runtimeService.dispatchEvent(new ActivitiEventImpl(ActivitiEventType.CUSTOM));

会签

利用多实例,实现多个审核通过

其他

taskAssignee 优先 taskCandidateGroup
delegate > setAssignee > claim 后两者都是设置Assignee(代理人),设置claim时,存在就会抛出异常不会设置成功

lightquant wechat
欢迎您订阅灯塔量化公众号!