1. 流程图中UserTask的assignee设置#{USERNAME}
image.png
2.将参数USERNAME作为变量启动流程
startAndEndProcessInstance(PageData dkBaseData){
try {
/** 工作流的操作 **/
Map<String,Object> map = new LinkedHashMap<String, Object>();
map.put("上报区县", dkBaseData.getString("xzqmc"));
map.put("上报区县行政区代码", dkBaseData.getString("xzqdm"));
//参数USERNAME传入流程中
map.put("USERNAME", Jurisdiction.getUsername()); //指派代理人为当前用户
String procdef ="key_ssnyd";
String procInstId = startProcessInstanceByKeyHasVariables(procdef, map);//启动流程实例(请假单流程)通过KEY
} catch (Exception e) {
//result = "error";
logger.error(e.toString(), e);
e.printStackTrace();
}
}
3. 通过KEY启动流程实例(带变量)
/**
* 通过KEY启动流程实例(带变量)
*
* @param processInstanceKey //流程定义的KEY
* @return 返回流程实例ID
*/
protected String startProcessInstanceByKeyHasVariables(String processInstanceKey, Map<String, Object> map) {
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(processInstanceKey, map); //map存储变量 用流程定义的KEY启动,会自动选择KEY相同的流程定义中最新版本的那个(KEY为模型中的流程唯一标识)
return processInstance.getId(); //返回流程实例ID
}
网友评论