芋道----工作流中添加邮件通知

2024-05-11 06:04

本文主要是介绍芋道----工作流中添加邮件通知,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、配置邮件发送的账号

2、编辑邮件的内容模板

如何新建邮箱,直接查看芋道官网即可,已经讲解的很详细了,可以直接点击下方链接

邮件配置 | ruoyi-vue-pro 开发指南 (iocoder.cn)icon-default.png?t=N7T8https://doc.iocoder.cn/mail/#_3-1-%E6%96%B0%E5%BB%BA%E9%82%AE%E7%AE%B1%E8%B4%A6%E5%8F%B7

这里我们讲一下如何结合在工作流当中 。

1、引入依赖

我们编辑好邮箱模板后,即可以使用MailSendApi进行邮件的发送了,首先我们在yudao-module-bpm模块的pom.xml中引入yudao-module-system-api依赖,如图:

<dependency><groupId>cn.iocoder.boot</groupId><artifactId>yudao-module-system-api</artifactId><version>${revision}</version>
</dependency>

2、新建BpmEmailEnum枚举类,用于引入邮箱模板

package cn.iocoder.yudao.module.bpm.enums.mail;import lombok.AllArgsConstructor;
import lombok.Getter;/*** Bpm 消息的枚举** @author 芋道源码*/
@AllArgsConstructor
@Getter
public enum BpmEmailEnum {PROCESS_INSTANCE_APPROVE("bpm_process_instance_approve"), // 流程任务被审批通过时,发送给申请人PROCESS_INSTANCE_REJECT("bpm_process_instance_reject"), // 流程任务被审批不通过时,发送给申请人TASK_ASSIGNED("test01"); // 任务被分配时,发送给审批人/*** 邮箱模板的标识** 关联 EmailTemplateDO 的 code 属性*/private final String emailTemplateCode;}

 2、新建BpmEmailConvert 转换器

由于前台传过来的类型并不完全我们的需求,因此需要进行转换。

package cn.iocoder.yudao.module.bpm.convert.mail;import cn.iocoder.yudao.module.system.api.mail.dto.MailSendSingleToUserReqDTO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.factory.Mappers;import java.util.Map;@Mapper
public interface BpmEmailConvert {BpmEmailConvert INSTANCE = Mappers.getMapper(BpmEmailConvert.class);@Mapping(target = "mail", ignore = true)@Mapping(source = "userId", target = "userId")@Mapping(source = "templateCode", target = "templateCode")@Mapping(source = "templateParams", target = "templateParams")MailSendSingleToUserReqDTO convert(Long userId, String templateCode, Map<String, Object> templateParams);}

 3、新建dto实体类

   这里以任务被签收为例,实体类按照模板中需要哪些变量来设计如:

package cn.iocoder.yudao.module.bpm.service.email.dto;import lombok.Data;import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;/*** BPM 发送任务被分配 Request DTO*/
@Data
public class BpmEmailSendWhenTaskCreatedReqDTO {/*** 流程实例的编号*/@NotEmpty(message = "流程实例的编号不能为空")private String processInstanceId;/*** 流程实例的名字*/@NotEmpty(message = "流程实例的名字不能为空")private String processInstanceName;@NotNull(message = "发起人的用户编号")private Long startUserId;@NotEmpty(message = "发起人的昵称")private String startUserNickname;/*** 流程任务的编号*/@NotEmpty(message = "流程任务的编号不能为空")private String taskId;/*** 流程任务的名字*/@NotEmpty(message = "流程任务的名字不能为空")private String taskName;/*** 审批人的用户编号*/@NotNull(message = "审批人的用户编号不能为空")private Long assigneeUserId;}

4、Service类:

package cn.iocoder.yudao.module.bpm.service.email;import cn.iocoder.yudao.module.bpm.service.email.dto.BpmEmailSendWhenProcessInstanceApproveReqDTO;
import cn.iocoder.yudao.module.bpm.service.email.dto.BpmEmailSendWhenProcessInstanceRejectReqDTO;
import cn.iocoder.yudao.module.bpm.service.email.dto.BpmEmailSendWhenTaskCreatedReqDTO;import javax.validation.Valid;/*** BPM 消息 Service 接口** TODO 芋艿:未来支持消息的可配置;不同的流程,在什么场景下,需要发送什么消息,消息的内容是什么;** @author 芋道源码*/
public interface BpmEmailService {/*** 发送任务被分配的消息** @param reqDTO 发送信息*/void sendEmailWhenTaskAssigned(@Valid BpmEmailSendWhenTaskCreatedReqDTO reqDTO);}

5、实现类:

package cn.iocoder.yudao.module.bpm.service.email;import cn.iocoder.yudao.framework.web.config.WebProperties;
import cn.iocoder.yudao.module.bpm.convert.mail.BpmEmailConvert;
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.email.dto.BpmEmailSendWhenProcessInstanceApproveReqDTO;
import cn.iocoder.yudao.module.bpm.service.email.dto.BpmEmailSendWhenProcessInstanceRejectReqDTO;
import cn.iocoder.yudao.module.bpm.service.email.dto.BpmEmailSendWhenTaskCreatedReqDTO;
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.mail.MailSendApi;
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 BpmEmailServiceImpl implements BpmEmailService {@Resourceprivate MailSendApi mailSendApi;@Resourceprivate WebProperties webProperties;@Overridepublic void sendEmailWhenTaskAssigned(BpmEmailSendWhenTaskCreatedReqDTO 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()));mailSendApi.sendSingleMailToAdmin(BpmEmailConvert.INSTANCE.convert(reqDTO.getAssigneeUserId(),BpmMessageEnum.TASK_ASSIGNED.getSmsTemplateCode(), templateParams));}private String getProcessInstanceDetailUrl(String taskId) {return webProperties.getAdminUi().getUrl() + "/bpm/process-instance/detail?id=" + taskId;}}

6、调用:

这篇关于芋道----工作流中添加邮件通知的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/978708

相关文章

kotlin中的模块化结构组件及工作原理

《kotlin中的模块化结构组件及工作原理》本文介绍了Kotlin中模块化结构组件,包括ViewModel、LiveData、Room和Navigation的工作原理和基础使用,本文通过实例代码给大家... 目录ViewModel 工作原理LiveData 工作原理Room 工作原理Navigation 工

Java使用Mail构建邮件功能的完整指南

《Java使用Mail构建邮件功能的完整指南》JavaMailAPI是一个功能强大的工具,它可以帮助开发者轻松实现邮件的发送与接收功能,本文将介绍如何使用JavaMail发送和接收邮件,希望对大家有所... 目录1、简述2、主要特点3、发送样例3.1 发送纯文本邮件3.2 发送 html 邮件3.3 发送带

Windows server服务器使用blat命令行发送邮件

《Windowsserver服务器使用blat命令行发送邮件》在linux平台的命令行下可以使用mail命令来发送邮件,windows平台没有内置的命令,但可以使用开源的blat,其官方主页为ht... 目录下载blatBAT命令行示例备注总结在linux平台的命令行下可以使用mail命令来发送邮件,Win

使用Java发送邮件到QQ邮箱的完整指南

《使用Java发送邮件到QQ邮箱的完整指南》在现代软件开发中,邮件发送功能是一个常见的需求,无论是用户注册验证、密码重置,还是系统通知,邮件都是一种重要的通信方式,本文将详细介绍如何使用Java编写程... 目录引言1. 准备工作1.1 获取QQ邮箱的SMTP授权码1.2 添加JavaMail依赖2. 实现

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

一文详解Java Condition的await和signal等待通知机制

《一文详解JavaCondition的await和signal等待通知机制》这篇文章主要为大家详细介绍了JavaCondition的await和signal等待通知机制的相关知识,文中的示例代码讲... 目录1. Condition的核心方法2. 使用场景与优势3. 使用流程与规范基本模板生产者-消费者示例

Java中使用Java Mail实现邮件服务功能示例

《Java中使用JavaMail实现邮件服务功能示例》:本文主要介绍Java中使用JavaMail实现邮件服务功能的相关资料,文章还提供了一个发送邮件的示例代码,包括创建参数类、邮件类和执行结... 目录前言一、历史背景二编程、pom依赖三、API说明(一)Session (会话)(二)Message编程客

Python手搓邮件发送客户端

《Python手搓邮件发送客户端》这篇文章主要为大家详细介绍了如何使用Python手搓邮件发送客户端,支持发送邮件,附件,定时发送以及个性化邮件正文,感兴趣的可以了解下... 目录1. 简介2.主要功能2.1.邮件发送功能2.2.个性签名功能2.3.定时发送功能2. 4.附件管理2.5.配置加载功能2.6.

解决Cron定时任务中Pytest脚本无法发送邮件的问题

《解决Cron定时任务中Pytest脚本无法发送邮件的问题》文章探讨解决在Cron定时任务中运行Pytest脚本时邮件发送失败的问题,先优化环境变量,再检查Pytest邮件配置,接着配置文件确保SMT... 目录引言1. 环境变量优化:确保Cron任务可以正确执行解决方案:1.1. 创建一个脚本1.2. 修

SSID究竟是什么? WiFi网络名称及工作方式解析

《SSID究竟是什么?WiFi网络名称及工作方式解析》SID可以看作是无线网络的名称,类似于有线网络中的网络名称或者路由器的名称,在无线网络中,设备通过SSID来识别和连接到特定的无线网络... 当提到 Wi-Fi 网络时,就避不开「SSID」这个术语。简单来说,SSID 就是 Wi-Fi 网络的名称。比如