1流程定义图和流程定义表 act_re_procdef
2流程定义列表查询
/**
* 查询所有的流程定义
*/
@RequestMapping(value = "/definition",method = RequestMethod.GET)
public Result definitionList() throws IOException {
//调用service查询
List list = processService.getProcessDefinitionList(companyId);
return new Result(ResultCode.SUCCESS,list);
}
//根据企业id查询所有的流程定义对象
public List getProcessDefinitionList(String companyId) {
List<ProcessDefinition> list = repositoryService.createProcessDefinitionQuery().processDefinitionTenantId(companyId)
.latestVersion().list();
return list;
}
3流程定义的挂起与激活
/**
* 设置流程的挂起与激活状态
*/
@RequestMapping(value = "/suspend/{processKey}",method = RequestMethod.GET)
public Result suspendProcess(@PathVariable String processKey) throws IOException {
processService.suspendProcess(processKey,companyId);
return new Result(ResultCode.SUCCESS);
}
//挂起或者激活流程
public void suspendProcess(String processKey,String companyId) {
//1.根据processKey查询流程定义
ProcessDefinition definition = repositoryService.createProcessDefinitionQuery().processDefinitionKey(processKey)
.processDefinitionTenantId(companyId).latestVersion().singleResult();
//2.判断是否为挂起状态
if(definition.isSuspended()) {
//2.1 如果是挂起状态:设置为激活
repositoryService.activateProcessDefinitionById(definition.getId());
}else {
//2.2 如果不是激活状态: 设置为挂起
repositoryService.suspendProcessDefinitionById(definition.getId());
}
}
4业务流程概述
总所周知在activiti中具有自己的用户,用户组等概念。但是在实际的项目中很少用到,并且流程实例的发起,审核往往会和具体的业务挂钩。为了更好的进行流程控制并逐步审核,所以我们需要自己定义一些列表,结合已有的用户数据进行操作
流程业务表
CREATE TABLE `proc_instance` (
`process_id` varchar(45) NOT NULL COMMENT '流程实例ID',
`process_key` varchar(45) DEFAULT NULL COMMENT '流程标识',
`process_name` varchar(45) DEFAULT NULL COMMENT '流程名称',
`process_definition_id` varchar(100) DEFAULT NULL COMMENT '流程定义ID',
`process_state` varchar(3) DEFAULT NULL COMMENT '流程状态(0已提交;1审批中;2审批
通过;3审批不通过;4撤销)',
`user_id` varchar(45) DEFAULT NULL COMMENT '申请人ID',
`username` varchar(50) DEFAULT NULL COMMENT '申请人',
`proc_apply_time` datetime DEFAULT NULL COMMENT '申请时间',
`proc_curr_node_user_id` varchar(45) DEFAULT NULL COMMENT '当前节点审批人ID',
`proc_curr_node_user_name` varchar(45) DEFAULT NULL COMMENT '当前节点审批人',
`proc_end_time` datetime DEFAULT NULL COMMENT '结束流程时间',
`proc_data` longtext,
`department_id` varchar(40) DEFAULT NULL,
`department_name` varchar(40) DEFAULT NULL,
`time_of_entry` datetime DEFAULT NULL,
PRIMARY KEY (`process_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
流程审批历史表
CREATE TABLE `proc_task_instance` (
`process_id` varchar(45) DEFAULT NULL COMMENT '流程实例ID',
`task_id` varchar(45) NOT NULL