1. 程式人生 > >Activiti流程向後執行一步方法runtimeService().signal(executionId);

Activiti流程向後執行一步方法runtimeService().signal(executionId);

例子:

	@Test
	public void startProcessInstance(){
		//流程定義的key
		String processDefinitionKey = "receiveTask";
		ProcessInstance pi = processEngine.getRuntimeService()//與正在執行的流程例項和執行物件相關的Service
						.startProcessInstanceByKey(processDefinitionKey);//使用流程定義的key啟動流程例項,key對應helloworld.bpmn檔案中id的屬性值,使用key值啟動,預設是按照最新版本的流程定義啟動
		System.out.println("流程例項ID:"+pi.getId());//流程例項ID    101
		System.out.println("流程定義ID:"+pi.getProcessDefinitionId());//流程定義ID   helloworld:1:4
		
		/**查詢執行物件ID*/
		Execution execution1 = processEngine.getRuntimeService()
					.createExecutionQuery()//建立執行物件查詢
					.processInstanceId(pi.getId())//使用流程例項ID查詢
					.activityId("receivetask1")//當前活動的id,對應receiveTask.bpmn檔案中的活動節點的id的屬性值
					.singleResult();
		
		/**使用流程變數設定當日銷售額,用來傳遞業務引數*/
		processEngine.getRuntimeService()
					.setVariable(execution1.getId(), "彙總當日銷售額", 21000);
		/**向後執行一步,如果流程處於等待狀態,使得流程繼續執行*/
		processEngine.getRuntimeService()
					.signal(execution1.getId());
		/**查詢執行物件ID*/
		Execution execution2 = processEngine.getRuntimeService()
					.createExecutionQuery()//建立執行物件查詢
					.processInstanceId(pi.getId())//使用流程例項ID查詢
					.activityId("receivetask2")//當前活動的id,對應receiveTask.bpmn檔案中的活動節點的id的屬性值
					.singleResult();
		
		
		/**從流程變數中獲取彙總當日銷售額的值*/
		Integer value = (Integer) processEngine.getRuntimeService()
											.getVariable(execution2.getId(), "彙總當日銷售額");
		System.out.println("給老闆發簡訊:金額時:"+value);
		
		/**向後執行一步,如果流程處於等待狀態,使得流程繼續執行*/
		processEngine.getRuntimeService()
					.signal(execution2.getId());
		
		
	}

測試程式碼來源於尚學堂教學視訊runtimeService().signal(executionId)方法可以將流程繼續往下執行一步