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

 

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