activiti 工作流学习 5

  在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);
	}
	
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章