1. 概述
流程的通知主要是指待办事项产生时的信息提醒,任务过期催办、任务转办、任务完成提醒、任务沟通与抄送等需要及时通知相关用户的信息。
2. 通知类型扩展
在平台中,当任务产生时是会产生通知的,具体的流程是:
1.产生通知消息。
2.发送到消息队列。
3.流程消费处理器,会根据消息的类型(比如email,短信等)调用相应的处理器进行通知。
平台默认支持的消息通知类型有:
- 内部消息(inner)
- 企业微信(weixin)
- 钉钉(ding)
- 个推(getui)
- 邮件(mail)
- 短信(sms)
- 飞书(feishu)
使用效果:
已有实现:
2.1 消息接口定义如下
package com.redxun.bpm.core.ext.messagehandler;
import com.redxun.mq.MessageModel;
public interface IMessageHandler {
/**
* 消息类型。
* @return
*/
MessageType getType();
/**
* 处理消息数据。
*/
void handMessage(MessageModel messageModel);
}
2.2 平台实现案例
说明:
若需要实现一个新的消息通知,只需要参考MailHandler的代码实现,如下所示:
package com.redxun.bpm.core.ext.messagehandler.impl;
import com.redxun.bpm.core.ext.messagehandler.IMessageHandler;
import com.redxun.bpm.core.ext.messagehandler.MessageType;
import com.redxun.bpm.core.ext.messagehandler.MessageUtil;
import com.redxun.bpm.util.InformUtil;
import com.redxun.common.base.entity.IUser;
import com.redxun.common.mail.MailUtil;
import com.redxun.common.tool.StringUtils;
import com.redxun.common.utils.ExceptionUtil;
import com.redxun.mq.MessageModel;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
/**
* 处理邮件消息。
* @author ray
*/
@Component
@Slf4j
public class MailHandler implements IMessageHandler {
@Resource
private MailUtil mailUtil;
@Override
public MessageType getType() {
return new MessageType( "mail","邮件");
}
@Override
public void handMessage(MessageModel messageModel) {
//javax.mail.Address
String fromMail= messageModel.getSender().getEmail();
if(StringUtils.isEmpty(fromMail)){
return;
}
for(IUser receiver:messageModel.getReceivers()){
if(receiver==null || StringUtils.isEmpty(receiver.getEmail())){
continue;
}
try{
String subject=InformUtil.getInformSubject(messageModel);
if(StringUtils.isNotEmpty(subject)){
messageModel.setSubject(subject);
}
String content = InformUtil.getInformContent(messageModel);
if(StringUtils.isEmpty(content)) {
content = MessageUtil.getContent(messageModel, receiver, getType().getType());
}
mailUtil.sendMail(fromMail,receiver.getEmail(),messageModel.getSubject(),content);
}
catch (Exception ex){
String message= ExceptionUtil.getExceptionMessage(ex);
log.error(message);
}
}
}
}
文档更新时间: 2022-06-30 16:07 作者:csx