|
启动是流程走到第一个节点,发起是流程跳过第一个申请节点,走到第二个节点
通过接口发起流程
- /**
- * 发起
- * 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)
- );
- }
复制代码 |
|