Activity 工作流引擎
阿新 • • 發佈:2019-01-27
自己的小例子
結合業務開啟流程:
@Transactional(readOnly = false)
public void save(OaInstallTask oaInstallTask) {
//生成(儲存)安裝單
super.save(oaInstallTask);
//#################這裡開始寫activity開啟流程####################
//設定流程變數
Map<String, Object> variables = Maps.newHashMap ();
variables.put("pass", "0");//控制流程線的走向(流程方向線中的屬性:流條件->${pass==0})
variables.put("oaInstallTaskId", oaInstallTask.getId());
variables.put("oaInstallTask.CreateBy", oaInstallTask.getCreateBy().getName());
variables.put("oaInstallTask.CreateDate", oaInstallTask.getCreateDate ());
//記錄流程發起人
identityService.setAuthenticatedUserId(UserUtils.getUser().getLoginName());
//開啟流程
String processDefinitionKey = ActUtils.PD_INSTALL_TASK[0];
String businessKey = ActUtils.PD_INSTALL_TASK[1]+":"+oaInstallTask.getId();
ProcessInstance procIns = runtimeService.startProcessInstanceByKey (processDefinitionKey, businessKey, variables);
//#################這裡寫完寫activity開啟流程####################
//儲存到安裝單裡
oaInstallTask.setProcInsId(procIns.getProcessInstanceId());
//更新(儲存)安裝單
super.save(oaInstallTask);
}
使用者任務中的執行監聽器
package com.thinkgem.jeesite.modules.oainstalltask.service;
import org.activiti.engine.delegate.DelegateExecution;
import org.activiti.engine.delegate.ExecutionListener;
public class AssingeeGroup implements ExecutionListener {
private static final long serialVersionUID = 1L;
@Override
public void notify(DelegateExecution execution) throws Exception {
System.out.println("getCurrentActivityId:"+execution.getCurrentActivityId());
execution.setVariable("userGroup", "repair");//角色英文名,分配使用者裡的候選使用者組(${userGroup})
}
}
流程圖
箭頭方向位置是一個執行監聽器,在這裡配置使用者任務中的執行監聽器