流程审批存在问题

image.png

1. 流程审批存在问题,发起流程后,还未审批,数据已经存储到对应表单中。

是否可以当审批完成后,数据才会执行存储操作。


2. 当对应用户点击审批——通过按钮,系统会报错。

3.对于流程审批,不能使用子菜单的方式动态配置,只能在这个工作流程菜单中使用。


评论区

超级管理员 2025-01-16 17:05

这个可以看一下芋道那边有没有解决方案,或者调试一下看哪里报错,我们这边对原芋道的流程模块没有太大改动,如果时间不急的话,可以等我们低代码自己的流程模块

liux 2025-01-16 17:14

@超级管理员 是的,很期待你们的新功能

dongzhecao 2025-04-17 18:15

@liux

看了一下错误日志是因为没配短信通道,可以在流程审批的时候,将sendSingleSmsToAdmin注释掉的


package cn.iocoder.yudao.module.bpm.service.message;


import cn.iocoder.yudao.framework.web.config.WebProperties;

import cn.iocoder.yudao.module.bpm.convert.message.BpmMessageConvert;

import cn.iocoder.yudao.module.bpm.enums.message.BpmMessageEnum;

import cn.iocoder.yudao.module.bpm.service.message.dto.BpmMessageSendWhenProcessInstanceApproveReqDTO;

import cn.iocoder.yudao.module.bpm.service.message.dto.BpmMessageSendWhenProcessInstanceRejectReqDTO;

import cn.iocoder.yudao.module.bpm.service.message.dto.BpmMessageSendWhenTaskCreatedReqDTO;

import cn.iocoder.yudao.module.system.api.sms.SmsSendApi;

import lombok.extern.slf4j.Slf4j;

import org.springframework.stereotype.Service;

import org.springframework.validation.annotation.Validated;


import javax.annotation.Resource;

import java.util.HashMap;

import java.util.Map;


/**

 * BPM 消息 Service 实现类

 *

 * @author 芋道源码

 */

@Service

@Validated

@Slf4j

public class BpmMessageServiceImpl implements BpmMessageService {


    @Resource

    private SmsSendApi smsSendApi;


    @Resource

    private WebProperties webProperties;


    @Override

    public void sendMessageWhenProcessInstanceApprove(BpmMessageSendWhenProcessInstanceApproveReqDTO reqDTO) {

        Map<String, Object> templateParams = new HashMap<>();

        templateParams.put("processInstanceName", reqDTO.getProcessInstanceName());

        templateParams.put("detailUrl", getProcessInstanceDetailUrl(reqDTO.getProcessInstanceId()));

        smsSendApi.sendSingleSmsToAdmin(BpmMessageConvert.INSTANCE.convert(reqDTO.getStartUserId(),

                BpmMessageEnum.PROCESS_INSTANCE_APPROVE.getSmsTemplateCode(), templateParams));

    }


    @Override

    public void sendMessageWhenProcessInstanceReject(BpmMessageSendWhenProcessInstanceRejectReqDTO reqDTO) {

        Map<String, Object> templateParams = new HashMap<>();

        templateParams.put("processInstanceName", reqDTO.getProcessInstanceName());

        templateParams.put("reason", reqDTO.getReason());

        templateParams.put("detailUrl", getProcessInstanceDetailUrl(reqDTO.getProcessInstanceId()));

        smsSendApi.sendSingleSmsToAdmin(BpmMessageConvert.INSTANCE.convert(reqDTO.getStartUserId(),

                BpmMessageEnum.PROCESS_INSTANCE_REJECT.getSmsTemplateCode(), templateParams));

    }


    @Override

    public void sendMessageWhenTaskAssigned(BpmMessageSendWhenTaskCreatedReqDTO reqDTO) {

        Map<String, Object> templateParams = new HashMap<>();

        templateParams.put("processInstanceName", reqDTO.getProcessInstanceName());

        templateParams.put("taskName", reqDTO.getTaskName());

        templateParams.put("startUserNickname", reqDTO.getStartUserNickname());

        templateParams.put("detailUrl", getProcessInstanceDetailUrl(reqDTO.getProcessInstanceId()));

        smsSendApi.sendSingleSmsToAdmin(BpmMessageConvert.INSTANCE.convert(reqDTO.getAssigneeUserId(),

                BpmMessageEnum.TASK_ASSIGNED.getSmsTemplateCode(), templateParams));

    }


    private String getProcessInstanceDetailUrl(String taskId) {

        return webProperties.getAdminUi().getUrl() + "/bpm/process-instance/detail?id=" + taskId;

    }


回复