本文以学生请假讲解
再Eclipse上画一个图,如果工具上没装画图插件请点击点击打开链接
首先创建流程部署
/**
* 部署流程定义
*/
@Test
public void deploy(){
// 获取部署对象
Deployment deployment=processEngine.getRepositoryService() // 部署Service
.createDeployment() // 创建部署
.addClasspathResource("diagrams/StudentReason.bpmn") // 加载资源文件
.addClasspathResource("diagrams/StudentReason.png") // 加载资源文件
.name("学生请假流程") // 流程名称
.deploy(); // 部署
System.out.println("流程部署ID:"+deployment.getId());
System.out.println("流程部署Name:"+deployment.getName());
}
启动流程实例
/**
* 启动流程实例
*/
@Test
public void start(){
// 启动并获取流程实例
ProcessInstance processInstance=processEngine.getRuntimeService() // 运行时流程实例Service
.startProcessInstanceByKey("myProcess"); // 流程定义表的KEY字段值
System.out.println("流程实例ID:"+processInstance.getId());
System.out.println("流程定义ID:"+processInstance.getProcessDefinitionId());
}
此时流程已经到达 请假审批
分配任务
/**
* 查看任务
*/
@Test
public void findTask() {
List<Task> list = processEngine.getTaskService()
.createTaskQuery().taskAssignee("gcx").list();
for(Task task:list) {
System.out.println("任务id:"+task.getId());
System.out.println("任务名称:"+task.getName());
System.out.println("任务创建时间:"+task.getCreateTime());
System.out.println("任务未派人:"+task.getAssignee());
System.out.println("流程实例id:"+task.getProcessInstanceId());
}
}
设置流程局部变量
/**
* 设置流程变量以及值
*/
@Test
public void setVariablesValues(){
TaskService taskService=processEngine.getTaskService(); // 任务Service
String taskId="35004"; // 任务id
taskService.setVariableLocal(taskId, "days", 2); // 存Integer类型
taskService.setVariable(taskId, "date", new Date()); // 存日期类型
taskService.setVariable(taskId, "reason", "发烧"); // 存字符串
Student student=new Student();
student.setId(1);
student.setName("gcx");
taskService.setVariable(taskId, "student", student); // 存序列化对象
}
完成任务
/**
* 完成任务
*/
@Test
public void completeTask(){
processEngine.getTaskService() // 任务相关Service
.complete("35004"); // 指定要完成的任务ID
}
此时流程到达 领导审批
再次执行查看任务
/**
* 查看任务
*/
@Test
public void findTask() {
List<Task> list = processEngine.getTaskService()
.createTaskQuery().taskAssignee("zhangsan").list();
for(Task task:list) {
System.out.println("任务id:"+task.getId());
System.out.println("任务名称:"+task.getName());
System.out.println("任务创建时间:"+task.getCreateTime());
System.out.println("任务未派人:"+task.getAssignee());
System.out.println("流程实例id:"+task.getProcessInstanceId());
}
}
查看流程变量
/**
* 获取流程变量以及值
*/
@Test
public void getVariablesValue(){
TaskService taskService=processEngine.getTaskService(); // 任务Service
String taskId="35004"; // 任务id
Integer days=(Integer) taskService.getVariable(taskId, "days");
Date date=(Date) taskService.getVariable(taskId, "date");
String reason=(String) taskService.getVariable(taskId, "reason");
Student student=(Student) taskService.getVariable(taskId, "student");
System.out.println("请假天数:"+days);
System.out.println("请假日期:"+date);
System.out.println("请假原因:"+reason);
System.out.println("请假对象:"+student.getId()+","+student.getName());
}
在完成任务一个完整的流程执行完毕
/**
* 完成任务
*/
@Test
public void completeTask(){
processEngine.getTaskService() // 任务相关Service
.complete("40002"); // 指定要完成的任务ID
}
最终历史记录表有对应的记录完成