@Test
public void doTask() {
RuntimeService runtimeService = this.processEngine.getRuntimeService();
String processDefinitionKey = "myProcess";
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(processDefinitionKey);
System.out.println("流程啓動成功:" + processInstance.getId());
/** 使用流程變量設置當日銷售額,用來傳遞業務參數 */
int value = 0;// 應該是去查詢數據庫,進行彙總 ---耗時操做
int tryNum=0;//嘗試彙總次數
while (true) {
tryNum++;
try {
value = this.hzxx();
break;
} catch (Exception e) {
e.printStackTrace();
if(tryNum==10) {
System.out.println("嘗試10次彙總。所有失敗,已終止彙總");
break;
}
}
}
runtimeService.setVariable(processInstance.getId(), "當前的銷售額", value);
/** 向後執行一步,若是流程處於等待狀態,使得流程繼續執行 */
runtimeService.signal(processInstance.getId());
/** 從流程變量中獲取彙總當日銷售額的值 */
Integer saleMoney = (Integer) runtimeService//
.getVariable(processInstance.getId(), "當前的銷售額");
System.out.println(saleMoney);
System.out.println("發送短信");
Boolean flag = false;
int num = 0;
do {
flag = send();
num++;
if (num == 10) {
System.out.println("嘗試10次發送。所有失敗,已終止發送");
break;
}
} while (!flag);
/** 向後執行一步,若是流程處於等待狀態,使得流程繼續執行 */
runtimeService.signal(processInstance.getId());
System.out.println("流程執行完成");
}
//彙總信息
public Integer hzxx() {
// 查詢數據庫
System.out.println("數據彙總中....");
try {
Thread.sleep(2000);
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("數據彙總完成");
return 10000;
}
//發送短信
private Boolean send() {
System.out.println("發送成功");
return true;
}