1. 概述

流程的通知主要是指待办事项产生时的信息提醒,任务过期催办、任务转办、任务完成提醒、任务沟通与抄送等需要及时通知相关用户的信息。

2. 通知类型扩展

在平台中,当任务产生时是会产生通知的,具体的流程是:

1.产生通知消息。
2.发送到消息队列。
3.流程消费处理器,会根据消息的类型(比如email,短信等)调用相应的处理器进行通知。

平台默认支持的消息通知类型有:

  • 内部消息
  • 企业微信
  • 钉钉
  • 个推
  • 邮件
  • 短信

使用效果:

已有实现:

2.1 消息接口定义如下

  1. package com.redxun.bpm.core.ext.messagehandler;
  2. import com.redxun.mq.MessageModel;
  3. public interface IMessageHandler {
  4. /**
  5. * 消息类型。
  6. * @return
  7. */
  8. MessageType getType();
  9. /**
  10. * 处理消息数据。
  11. */
  12. void handMessage(MessageModel messageModel);
  13. }

2.2 平台实现案例

说明:
若需要实现一个新的消息通知,只需要参考MailHandler的代码实现,如下所示:

  1. package com.redxun.bpm.core.ext.messagehandler.impl;
  2. import com.redxun.bpm.core.ext.messagehandler.IMessageHandler;
  3. import com.redxun.bpm.core.ext.messagehandler.MessageType;
  4. import com.redxun.bpm.core.ext.messagehandler.MessageUtil;
  5. import com.redxun.bpm.util.InformUtil;
  6. import com.redxun.common.base.entity.IUser;
  7. import com.redxun.common.mail.MailUtil;
  8. import com.redxun.common.tool.StringUtils;
  9. import com.redxun.common.utils.ExceptionUtil;
  10. import com.redxun.mq.MessageModel;
  11. import lombok.extern.slf4j.Slf4j;
  12. import org.springframework.stereotype.Component;
  13. import javax.annotation.Resource;
  14. /**
  15. * 处理邮件消息。
  16. * @author ray
  17. */
  18. @Component
  19. @Slf4j
  20. public class MailHandler implements IMessageHandler {
  21. @Resource
  22. private MailUtil mailUtil;
  23. @Override
  24. public MessageType getType() {
  25. return new MessageType( "mail","邮件");
  26. }
  27. @Override
  28. public void handMessage(MessageModel messageModel) {
  29. //javax.mail.Address
  30. String fromMail= messageModel.getSender().getEmail();
  31. if(StringUtils.isEmpty(fromMail)){
  32. return;
  33. }
  34. for(IUser receiver:messageModel.getReceivers()){
  35. if(receiver==null || StringUtils.isEmpty(receiver.getEmail())){
  36. continue;
  37. }
  38. try{
  39. String subject=InformUtil.getInformSubject(messageModel);
  40. if(StringUtils.isNotEmpty(subject)){
  41. messageModel.setSubject(subject);
  42. }
  43. String content = InformUtil.getInformContent(messageModel);
  44. if(StringUtils.isEmpty(content)) {
  45. content = MessageUtil.getContent(messageModel, receiver, getType().getType());
  46. }
  47. mailUtil.sendMail(fromMail,receiver.getEmail(),messageModel.getSubject(),content);
  48. }
  49. catch (Exception ex){
  50. String message= ExceptionUtil.getExceptionMessage(ex);
  51. log.error(message);
  52. }
  53. }
  54. }
  55. }
文档更新时间: 2020-10-12 09:25   作者:csx