1. 程式人生 > >Activiti進階(九)——開始活動節點

Activiti進階(九)——開始活動節點

一、流程圖


二、部署流程定義+啟動流程例項+查詢流程例項+查詢歷史流程例項

        @Test
	public void deployementAndStartProcess(){
		
		String resourceNamebpmn = "start.bpmn";
		String resourceNamepng  = "start.png";
		InputStream inputStreamBpmn = this.getClass().getResourceAsStream("start.bpmn");
		InputStream inputStreamPng  = this.getClass().getResourceAsStream("start.png");
		  /**1、部署流程定義*/
		  Deployment deployment = processEngine.getRepositoryService()
		                  .createDeployment()//建立部署物件  
		                  .name("開始流程")
		                  .addInputStream(resourceNamebpmn, inputStreamBpmn)//部署載入資原始檔 
		                  .addInputStream(resourceNamepng, inputStreamPng)
		                  .deploy();
		  System.out.println("部署ID:"+deployment.getId());  
		  
		  /**2、啟動流程例項*/
		  String processDefinitionKey ="start";
		  ProcessInstance pi = processEngine.getRuntimeService()//獲取執行時服務物件
		                                    .startProcessInstanceByKey(processDefinitionKey);//使用流程定義的key的最新版本啟動流程
		  System.out.println("流程例項ID:"+pi.getId());  
		  System.out.println("流程定義的ID:"+pi.getProcessDefinitionId()); 
		  
		  //當流程結束後,流程例項被刪除,執行時服務物件不能查詢
		  /**3、判斷流程是否結束,查詢正在執行的執行物件表(act_ru_execution)或者流程例項表()*/
		  ProcessInstance rpi =  processEngine.getRuntimeService()
		                                      .createProcessInstanceQuery()
		                                      .processInstanceId(pi.getId())
		                                      .singleResult();
		  /**4、如果rpi==null則流程結束*/
		  if(rpi == null){
			  /**查詢歷史獲取流程相關資訊*/
			HistoricProcessInstance hpi =  processEngine.getHistoryService()
					                          //.createHistoricActivityInstanceQuery()
			                                            .createHistoricProcessInstanceQuery()
			                                            .processInstanceId(pi.getId())//使用流程例項ID查詢
			                                            .singleResult();
			System.out.println(hpi.getId()+"  "+hpi.getStartTime()+"  "+hpi.getEndTime());
		  }
		    
	}

三、總結

      1、結束節點是沒有出口的

      2、其它節點有一個或者多個出口

           如果有一個出口則代表是單線流程

           如果有多個出口則代表開啟併發流程