一、基本操作
1.发布流程
repositoryService.createDeployment()
.name("请假流程")
.addClasspathResource("processes/task.bpmn")
.deploy();
影响表ACT_RE_PROCDEF、ACT_RE_DEPLOYMENT、ACT_GE_BYTEARRAY
2.启动流程实例
// xml中定义的ID
String instanceKey = "task";
logger.info("开启请假流程...");
// 设置流程参数,开启流程
Map<String,Object> map = new HashMap<String,Object>();
map.put("jobNumber","A1001");
map.put("busData","bus data");
//使用流程定义的key启动流程实例,key对应helloworld.bpmn文件中id的属性值,使用key值启动,默认是按照最新版本的流程定义启动
ProcessInstance instance = runtimeService.startProcessInstanceByKey(instanceKey, map);
logger.info("启动流程实例成功:{}", instance);
logger.info("流程实例ID:{}", instance.getId());
logger.info("流程定义ID:{}", instance.getProcessDefinitionId());
//验证是否启动成功
//通过查询正在运行的流程实例来判断
ProcessInstanceQuery processInstanceQuery = runtimeService.createProcessInstanceQuery();
//根据流程实例ID来查询
List<ProcessInstance> runningList = processInstanceQuery.processInstanceId(instance.getProcessInstanceId()).list();
logger.info("根据流程ID查询条数:{}", runningList.size());
影响表ACT_HI_VARINST、ACT_HI_TASKINST、ACT_HI_PROCINST、ACT_HI_ACTINST、ACT_HI_IDENTITYLINK、ACT_RU_EXECUTION、ACT_RU_TASK、ACT_RU_IDENTITYLINK、ACT_RU_VARIABLE
3.拾取任务
/**拾取任务,将组任务分给个人任务,指定任务的办理人字段*/
@Test
public void claim(){
//将组任务分配给个人任务
//任务ID
String taskId = "5007";
//分配的个人任务(可以是组任务中的成员,也可以是非组任务的成员)
String userId = "郭靖";
taskService.claim(taskId, userId);
}
影响表ACT_HI_IDENTITYLINK、ACT_RU_IDENTITYLINK
4.完成任务
//完成任务
@Test
public void complete()
{
String taskId = "5007";
Map<String, Object> variables=new HashMap<String,Object>();
variables.put("days", 2);
variables.put("date", new Date());
variables.put("reason", "发烧");
//完成任务
taskService.complete(taskId,variables);
}
影响表ACT_HI_VARINST、ACT_HI_ACTINST