概述
消息是指流程任务或其他业务在办理时,需要通知相关人员时使用的一种消息通知的方式,目前市场主流消息通知方式,平台均作了集成,包括有:
- 内部消息
- 企业微信
- 钉钉
- 邮件
- 短信
- 个推
未来需要在上面扩展的,可以基于以上方式进行参考集成。
集成方式
平台的消息是采用异步的方式进行消息通知的,其原理如下所示:
内部消息实现参考
消息对象模型
com.redxun.mq.MessageModel
该对象定义在jpaas-share 模块中,可以在平台中引用使用。
消息处理器接口定义
package com.redxun.bpm.core.ext.messagehandler;
import com.redxun.mq.MessageModel;
public interface IMessageHandler {
/**
* 消息类型。
* @return
*/
MessageType getType();
/**
* 处理消息数据。
*/
void handMessage(MessageModel messageModel);
}
我们需要实现这个接口对消息进行发送。
内部消息发送实现案例
package com.redxun.bpm.core.ext.messagehandler.impl;
@Component
@Slf4j
public class InfInnerMsgHandler implements IMessageHandler {
@Override
public MessageType getType() {
return new MessageType( "inner","内部消息");
}
@Override
public void handMessage(MessageModel messageModel) {
//发送人Id
String fromUserId= messageModel.getSender().getUserId();
if(StringUtils.isEmpty(fromUserId)){
return;
}
//发送内容
String content="";
//接收人
for(IUser receiver:messageModel.getReceivers()){
if(receiver==null || StringUtils.isEmpty(receiver.getUserId())){
continue;
}
try{
String subject=InformUtil.getInformSubject(messageModel);
if(StringUtils.isNotEmpty(subject)){
messageModel.setSubject(subject);
}
content = MessageUtil.getContent(messageModel, receiver, getType().getType());
InfInnerMsgUtil.sendSystemMsg(receiver,content,messageModel.getSender().getFullName()+"抄送给你一条流程实例信息");
}
catch (Exception ex){
String message= ExceptionUtil.getExceptionMessage(ex);
log.error(message);
}
}
}
}
这里需要注意的是需要增加 @Component 注解。用户可以根据自己的实际情况,实现自己的发送消息的实现。
文档更新时间: 2021-03-29 11:53 作者:zyg