流程自定义接口发起
启动是流程走到第一个节点,发起是流程跳过第一个申请节点,走到第二个节点
通过接口发起流程
工作流发起代码
/** * 发起 * userId 用户id * id 业务bean主键id */ @RequestMapping(value = "sponsorProcess", method = RequestMethod.POST, produces = "application/json; charset=utf-8") public BaseRespResult sponsorProcess(String userId, String id) { //查找表单数据 DynaBean bean = metaService.selectOneByPk(TABLE_CODE, id); if (bean == null) { return BaseRespResult.errorResult("未找到记录!"); } if (!"NOSTATUS".equals(bean.getStr("SY_AUDFLAG"))) { return BaseRespResult.errorResult("流程已发起!"); } //封装流程发起对象 TaskSubmitInfo taskInfo = new TaskSubmitInfo(); //设置主键 taskInfo.setBeanId(id); //提交动作,默认 to_submit taskInfo.setSubmitType("to_submit"); //提交意见 taskInfo.setSubmitComments("提交工单"); //默认为[] taskInfo.setCommentDetails("[]"); //发起的节点名称,也就是第二个节点 taskInfo.setTargerTaskName("客服人员"); //根据工作流引擎中,流程key,查询当前流程版本pdid taskInfo.setPdid("kehugongdan_20112516-1"); List<Map<String, Object>> maps = metaService.selectSql("SELECT STRINGVAL_ from jbpm4_deployprop where OBJNAME_='kehugongdan_20112516' and key_ = 'pdid'"); Object stringval; if (maps == null || maps.isEmpty() || (stringval = maps.get(0).get("STRINGVAL_")) == null) { return BaseRespResult.errorResult("流程版本信息查找失败!"); } taskInfo.setPdid(String.valueOf(stringval)); //流程下一步的人信息 StringBuilder assigeeId = new StringBuilder(); StringBuilder assigeeCode = new StringBuilder(); StringBuilder assigeeName = new StringBuilder(); // 查询角色下所有人 List<DynaBean> users = buildRoleUser(); if (users.isEmpty()) { return BaseRespResult.errorResult("未找到客服人员!"); } for (DynaBean user : users) { assigeeId.append(user.getStr("USERID")).append(","); assigeeCode.append(user.getStr("USERCODE")).append(","); assigeeName.append(user.getStr("USERCODE")).append(","); } assigeeId.setLength(assigeeId.length() - 1); assigeeCode.setLength(assigeeCode.length() - 1); assigeeName.setLength(assigeeName.length() - 1); taskInfo.setAssigeeId(assigeeId.toString()); taskInfo.setAssigeeCode(assigeeCode.toString()); taskInfo.setAssigeeName(assigeeName.toString()); //模拟流程发起,调用doSponsor方法发起流程 JSONObject returnObj = new JSONObject(); wfProcessManager.doSponsor(taskInfo, taskInfo.getBeanId(), SecurityUserHolder.getCurrentUser(), returnObj, true); if (returnObj.containsKey("error")) { return BaseRespResult.errorResult(returnObj.getString("error")); } return BaseRespResult.successResult("发起成功"); } /** * 查找客户角色人 * 这里是写死的一个角色code去获取角色中的人员,如果想动态获取需要手动解析流程示例, * 根据流程key查询JE_CORE_PROCESSINFO这张表中的PROCESSINFO_TASKJSON字段信息,该字段信息是json字符串,里 * 面的assgineConfig字段是处理人信息 */ private List<DynaBean> buildRoleUser() { //TODO 查询角色下所有人 return metaService.select("JE_CORE_ENDUSER", ConditionsWrapper.builder() .like("ROLECODES", "ROLE_2020110518") .eq("VALID", "1") .eq("ZHID", ZH_ID) ); }
最后编辑: 呼丽华 文档更新时间: 2024-08-21 10:58 作者:呼丽华