在1、2、3、4 中学习了activiti流程的部署 查询流程定义等
下面的代码为 流程的启动、用户查询自己的任务、用户完成自己的任务
package com.activiti.hello;
import java.util.List;
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.repository.ProcessDefinition;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import org.junit.Test;
public class HelloWorld {
private ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
@Test
public void deploymentProcessDefinition() {
/**
* Deployment 部署
*/
/* Deployment deployment = //与流程定义和部署对象相关的Service,部署一个流程
* processEngine.getRepositoryService()
* //Starts creating a new deployment (开始创建一个新的部署)
.createDeployment()
.name("activiti helloworld 入门")
//流程配置文件 一次只能加载一个文件
.addClasspathResource("diagrams/helloworld.bpmn")
//流程配置文件 一次只能加载一个文件
.addClasspathResource("diagrams/helloworld.png")
// Deploys all provided sources to the Activiti engine. (完成部署)
.deploy();
System.out.println("流程部署Id"+deployment.getId());
System.out.println("流程部署名称"+deployment.getName());*/
/**
* 查询流程定义信息 (当然也可惜查询其他的信息 比如部署信息 )
*/
// 查询的时候会有使用 hibernate 的感觉 直接调用方获取信息 进行条件 查询
List<ProcessDefinition> list = processEngine.getRepositoryService() //获取流程部署服务
.createProcessDefinitionQuery() // 创建流程定义查询
.orderByProcessDefinitionVersion()
.asc().list(); //按照版本 排序 asc 升序
if(list != null && list.size()>0 ) {
for (ProcessDefinition processDefinition : list) {
System.out.println( "流程定义Id: "+processDefinition.getId()+
"\t 流程名称:"+processDefinition.getName()+
"\t流程定义Key:"+processDefinition.getKey());
}
}
}
/**
* 启动一个流程
*/
@Test
public void startProcessInstance() {
//helloworld.bpmn <process id="helloworld" name="helloworldProcess" isExecutable="true"> 的id
String processDefinitionKey = "helloworld";
ProcessInstance processInstance =processEngine.getRuntimeService() //
.startProcessInstanceByKey(processDefinitionKey);
System.out.println("流程实例ID:"+processInstance.getId());//流程实例ID
System.out.println("流程定义ID:"+processInstance.getProcessDefinitionId());//流程定义ID
}
/**查询当前人的个人任务*/
@Test
public void findMyPersonalTask(){
String assignee = "李四";
List<Task> Tasklist = processEngine.getTaskService()//与正在执行的任务管理相关的Service
.createTaskQuery()//创建任务查询对象
.taskAssignee(assignee)//指定个人任务查询,指定办理人
.list();
if(Tasklist!=null && Tasklist.size()>0){
for(Task task:Tasklist){
System.out.println("任务ID:"+task.getId()+
"\t任务名称:"+task.getName()+
"\t任务的创建时间:"+task.getCreateTime()+
"\t任务的办理人:"+task.getAssignee()+
"\t流程实例ID:"+task.getProcessInstanceId()+
"\t执行对象ID:"+task.getExecutionId()+
"\t流程定义ID:"+task.getProcessDefinitionId());
}
}
}
/**完成我的任务*/
@Test
public void completeMyPersonalTask(){
//任务ID
String taskId = "2505";
processEngine.getTaskService()//与正在执行的任务管理相关的Service
.complete(taskId);
System.out.println("完成任务:任务ID:"+taskId);
}
}