Activiti 完成的第一个请假审批流程

这段时间研究了好长时间Activiti终于写出来了第一个简单的DEMO


注意bpmn文件和配置文件XML一定要放到resource中不然会报空指针错误

源码 :



import org.h2.util.Utils;
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.repository.Deployment;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import org.junit.Test;


import com.sun.xml.internal.bind.v2.schemagen.xmlschema.List;


public class HelloWord {
static ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();

@Test
public void deploymentProcessDefinition(){
// 部署流程定义  
//  这一段代码的目的是为了操作数据库
Deployment deployment =  processEngine.getRepositoryService() //与流程定义和部署相关的service
.createDeployment() //创建一个部署对象
.name("hello activiti")
.addClasspathResource("HelloWorld.bpmn") //从classpath文件中加载且一次只能加载一个文件
.deploy(); //完成部署
System.out.println("部署ID:"+ deployment.getId());
System.out.println("部署名称:"+deployment.getName());
}
@Test
// 启动流程实例
public void startProcessInstance(){
String ProcessDefinitionKey = "hellowordid";
ProcessInstance pl = processEngine.getRuntimeService()//与正在执行的流程实例和部署对象相关的Service
.startProcessInstanceByKey(ProcessDefinitionKey);//使用流程定义的KEY运行流程实例 key对应 HelloWord中的id的属性值
System.out.println("流程实例ID:"+pl.getId());               //使用KEY启动  默认 的是最新版本的流程定义
System.out.println("流程定义ID:"+pl.getProcessDefinitionId());
}
@Test
// 查询当前的个人任务
public void FindPersonTask(){
String assignee = "王五";
java.util.List<Task> list = processEngine.getTaskService()//与正在执行的任务相关的Service
.createTaskQuery()// 创建查询任务对象
.taskAssignee(assignee)// 制定个人任务查询 制定查询个人
.list();
if(list!=null && list.size()>0 ){
for(Task task :list){
System.out.println("任务ID:"+task.getId());
System.out.println("任务名称:"+task.getName());
System.out.println("任务的办理人:"+task.getAssignee());
System.out.println("任务的创建时间:"+task.getCreateTime());
System.out.println("流程实例ID:"+task.getProcessDefinitionId());
System.out.println("执行对象ID:"+task.getExecutionId());
System.out.println("流程定义ID:"+task.getProcessDefinitionId());
System.out.println("##########################################################");
}
}
}
@Test
// 完成当前任务
public void CompletePersonTask(){
String taskId = "706";
processEngine.getTaskService()
.complete(taskId);
System.out.println("完成任务ID:"+taskId);
}
/*张三的流程执行完毕 再次执行张三流程就执行不出来  接下来就到了李四执行任务了 。
* 将前面张三执行当前任务的名称改成李四  用李四的任务ID完成任务, 李四的任务结束 接下来流程就到了 王五
* 王五和李四一样操作 李四的任务通过任务ID完成后 整个流程结束*/

}

猜你喜欢

转载自blog.csdn.net/qq_40068214/article/details/79977492