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

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

相关文章

找完工作该补充的东西

首先: 锻炼身体,包括乒乓球,羽毛球,都必须练习,学习,锻炼身体等是一个很重要的与人交际沟通的方式; 打牌,娱乐:会玩是一个人很重要的交际沟通的法宝; 摄影:这个是一个兴趣爱好,也是提高自己的审美,生活品质,当然也是与人沟通的重要途径; 做饭:这个的话就是对自己,对朋友非常有益的一件事情;

工作流Activiti初体验—流程撤回【二】

已经玩工作流了,打算还是研究一下撤回的功能。但是流程图里面并不带撤回的组件,所以需要自己动态改造一下,还是延续上一个流程继续试验撤回功能。《工作流Activiti初体验【一】》 完整流程图 我们研究一下分发任务撤回到发起任务,其他环节的撤回类似 撤回的原理大概如下: 将分发任务后面的方向清空,把发起任务拼接到原来的判断网关,然后结束分发任务,这样流程就到发起任务了 此时的流程如上图,

工作流Activiti初体验【一】

在这里记录一下我的Activiti历程:(以下示例不涉及真实业务,所有逻辑均建立在学习的基础上) bpmn图 发起任务我设置了一个权限组user1,只要是这个权限的用户都可以发起任务 分发任务我设置了一个用户组,用户组中每个用户都可以处理这步流程,只要有一个人处理这步任务,分发的流程就算结束了 分发任务这一环节还有个判断,允许任务下发和不允许任务下发 任务分发完成则来到子流程,每个被分

Steam邮件推送内容有哪些?配置教程详解!

Steam邮件推送功能是否安全?如何个性化邮件推送内容? Steam作为全球最大的数字游戏分发平台之一,不仅提供了海量的游戏资源,还通过邮件推送为用户提供最新的游戏信息、促销活动和个性化推荐。AokSend将详细介绍Steam邮件推送的主要内容。 Steam邮件推送:促销优惠 每当平台举办大型促销活动,如夏季促销、冬季促销、黑色星期五等,用户都会收到邮件通知。这些邮件详细列出了打折游戏、

邮件群发推送的方法技巧?有哪些注意事项?

邮件群发推送的策略如何实现?邮件推送怎么评估效果? 电子邮件营销是现代企业进行推广和沟通的重要工具。有效的邮件群发推送不仅能提高客户参与度,还能促进销售增长。AokSend将探讨一些关键的邮件群发推送方法和技巧,以帮助企业优化其邮件营销策略。 邮件群发推送:目标受众 了解他们的需求、兴趣和行为习惯有助于你设计出更具吸引力和相关性的邮件内容。通过收集和分析数据,创建详细的客户画像,可以更精

Python利用qq邮箱发送通知邮件(已封装成model)

因为经常喜欢写一些脚本、爬虫之类的东西,有需要通知的时候,总是苦于没有太好的通知方式,虽然邮件相对于微信、短信来说,接收性差了一些,但毕竟免费,而且支持html直接渲染,所以,折腾了一个可以直接使用的sendemail模块。这里主要应用的是QQ发邮件,微信关注QQ邮箱后,也可以实时的接收到消息,肾好! 好了,废话不多说,直接上代码。 # encoding: utf-8import lo

通知中心设置一个键盘的捕捉事件

//通知中心监听键盘的frame发生改变

HashMap 的工作原理及其在 Java 中的应用?

在Java的数据结构中,HashMap是最常见且最重要的一个数据结构之一。HashMap是Java集合框架中的一部分,它存储的是键值对(Key-value)映射,也就是说,你可以通过键(Key)找到对应的值(Value)。让我们来详细地看一下HashMap的工作原理。 HashMap的工作原理 HashMap内部有一个数组,数组中的每个元素又是一个链表。当我们将一个键值对存入HashM

Ajax及其工作原理

Ajax及其工作原理 AJAX 是一种与服务器交换数据无需刷新网页的技术,最早由Google公司在谷歌地图里使用,并迅速风靡。 AJAX是不能跨域的,如需跨域,可以使用document.domain='a.com';或者使用服务器代理,代理XMLHttpRequest文件 AJAX是基于现有的Internet标准,并且联合使用它们: XMLHttpRequest 对象 (异步的与服

TCP 可靠传输的工作原理

转载地址:https://my.oschina.net/xinxingegeya/blog/485233 感谢原作者 TCP 可靠传输的工作原理 ARQ(Automatic Repeat-reQuest)(自动重传请求) 停止等待ARQ协议 连续ARQ协议   停止等待ARQ协议 全双工通信的双发既是发送方也是接收方。下面为了讨论问题的方便,我们仅考虑A发送数据而B接受数据