// 拿到流程实例ID
String processInstanceId = processInstance.getId();
// 验证是否成功启动
assertNotNull(processInstanceId);
TaskQuery taskQuery = taskService.createTaskQuery();
// 查找 1200119390 的这个流程实例的当前独占任务
List<TaskInstance> taskInstances = taskQuery.taskAssignee("1200119390").processInstanceId(processInstanceId).taskNotEnd().list();
TaskInstance taskInstance = taskInstances.get(0);
//启动子流程,并且令牌停留在UserTask_2节点
assertEquals("UserTask_2", taskInstance.getNodeId());
//创建一个处理命令
expandTaskCommand = new ExpandTaskCommand();
// 设置流程名
expandTaskCommand.setProcessDefinitionKey("SubProcessTest");
// 设置流程的业务关联键
expandTaskCommand.setBusinessKey("1234567890");
// 命令类型,通用按钮
expandTaskCommand.setCommandType("general");
// 设置命令的id,需和节点上配置的按钮编号对应,会执行按钮中的脚本。
expandTaskCommand.setUserCommandId("HandleCommand_2");
//设置任务ID
expandTaskCommand.setTaskId(taskInstance.getId());
//执行处理命令
taskService.expandTaskComplete(expandTaskCommand, null);
taskInstances = taskQuery.taskAssignee("1200119390").processInstanceId(processInstanceId).taskNotEnd().list();
taskInstance = taskInstances.get(0);
//令牌停留在UserTask_3节点
assertEquals("UserTask_3", taskInstance.getNodeId());
//创建一个处理命令
expandTaskCommand = new ExpandTaskCommand();
// 设置流程名
expandTaskCommand.setProcessDefinitionKey("SubProcessTest");
// 设置流程的业务关联键
expandTaskCommand.setBusinessKey("1234567890");
// 命令类型,通用按钮
expandTaskCommand.setCommandType("general");
// 设置命令的id,需和节点上配置的按钮编号对应,会执行按钮中的脚本。
expandTaskCommand.setUserCommandId("HandleCommand_2");
//设置任务ID
expandTaskCommand.setTaskId(taskInstance.getId());
//执行处理命令
taskService.expandTaskComplete(expandTaskCommand, null);
taskInstances = taskQuery.taskAssignee("1200119390").processInstanceId(processInstanceId).taskNotEnd().list();
taskInstance = taskInstances.get(0);
//令牌停留在UserTask_4节点
assertEquals("UserTask_4", taskInstance.getNodeId());
}