JEPaaS 社区

 找回密码
 立即注册
JEPaaS低代码平台-官网
查看: 3317|回复: 0

流程自定义接口发起

[复制链接]

3

主题

7

帖子

88

积分

凯特员工

积分
88
发表于 2021-6-30 19:28:23 | 显示全部楼层 |阅读模式


自定义按钮启动





1. 流程自定义接口发起

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




2. 工作流发起代码


/**
     * 发起
     * 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)
        );
    }


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|JEPaaS 低代码平台社区 ( 京ICP备18023569号 )

GMT+8, 2024-4-28 02:24 , Processed in 0.056541 second(s), 20 queries .

Powered by 北京凯特伟业科技有限公司

Copyright © 2001-2021, JEPaaS.COM

快速回复 返回顶部 返回列表