SpringBoot集成的Activiti6.0代码(绘制工具界面代码 + 审批代码)
最近工作中需要搞定Activiti的工作流引擎,本文主要是记录一下获取流程任务Form表单的思路,特此记录便于日后查阅。
@Override
public List<Map<String, Object>> listPersonalTasks(String assignee) {
//创建查询对象
TaskQuery query = taskService.createTaskQuery();
//设置查询条件
query.taskAssignee(assignee);
query.orderByProcessDefinitionId().desc();//相同规则放到一起
query.orderByTaskCreateTime().desc();//按时间倒序
//做查询-List<Task>
List<Task> list = query.list();
//声明要返回类型
List<Map<String, Object>> result = new ArrayList<>();
//转换
for (Task task : list) {
//一个task就是一个map
result.add(task2map(task));
}
//返回
return result;
}
private Map<String, Object> task2map(Task task) {
Map<String, Object> obj2map = CommUtil
.obj2map(task, new String[] { "id", "name", "assignee", "createTime", "description" });
//为了构造动态表单,需要将formKey businessObjType businessObjId这三个参数和task属性一起返回
obj2map.put("businessObjType", getBusinessObjType(task));
obj2map.put("businessObjId", getBusinessObjId(task));
obj2map.put("formKey", getFormKey(task));
return obj2map;
}
private String getFormKey(Task task) {
String formKey = task.getFormKey();
return formKey;
}
private Long getBusinessObjId(Task task) {
return taskService.getVariable(task.getId(), "businessObjId", Long.class);
}
private String getBusinessObjType(Task task) {
String businessObjType = taskService.getVariable(task.getId(), "businessObjType", String.class);
businessObjType = businessObjType.substring(0, 1).toLowerCase()+businessObjType.substring(1);
return businessObjType;
}
网上搜不到什么相关资料,我现在猜测获取流程任务Form表单数据,是通过自己建业务表写代码存储的,但是每个流程节点的表单关键信息通过 taskService.setVariable() 方法进行存储。