一、基本操作
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