流程自定义接口发起

启动是流程走到第一个节点,发起是流程跳过第一个申请节点,走到第二个节点

通过接口发起流程

  • 工作流发起代码

      /**
       * 发起
       * 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   作者:呼丽华