下面主要介绍本地的消息接口
注入消息接口
-
userMessageManager
例如:
<bean class="com.seeyon.apps.collaboration.manager.impl.ColManagerImpl"> <property name="userMessageManager" ref="userMessageManager" /> </bean>
private UserMessageManager userMessageManager; public UserMessageManager getUserMessageManager(){ return this.userMessageManager; } public void setUserMessageManager(UserMessageManager userMessageManager){ this.userMessageManager = userMessageManager; } private void sendMessage(){ userMessageManager.sendSystemMessage(msgContent, ApplicationCategoryEnum.taskManage, userId.longValue(), msgReceivers, new Object[] {1}); }
接口说明
几种接口形式: /** * 发送系统消息,发送给单个接收者 * @param content 消息体 * @param messageCategroy 消息所属应用分类 在com.seeyon.ctp.common.constants.ApplicationCategoryEnum中定义 * @param senderId 发送者ID * @param receiver 接收者 * @param messageFilterArgs 消息转移的参数,与对应的UserMessageFilter对应 * @see com.seeyon.ctp.common.constants.ApplicationCategoryEnum * @throws MessageException */ void sendSystemMessage(MessageContent content, ApplicationCategoryEnum messageCategroy, long senderId, MessageReceiver receiver, Object... messageFilterArgs) throws MessageException; /** * 发送系统消息,发送给多个接收者 * @param content 消息体 * @param messageCategroy * 消息所属应用分类 * 在com.seeyon.ctp.common.constants.ApplicationCategoryEnum中定义 * @param senderId 发送者ID * @param receivers 接收者 * @param messageFilterArgs 消息转移的参数,与对应的UserMessageFilter对应 * @see com.seeyon.ctp.common.constants.ApplicationCategoryEnum * @throws MessageException */ void sendSystemMessage(MessageContent content, ApplicationCategoryEnum messageCategroy, long senderId, Collection<MessageReceiver> receivers, Object... messageFilterArgs) throws MessageException; /** * 发送系统消息,使用指定的时间发送给多个接收者 * @param content 消息体 * @param messageCategroy * 消息所属应用分类 * 在com.seeyon.ctp.common.constants.ApplicationCategoryEnum中定义 * 如果是插件,需要在插件定义文件中配置applicationCategory属性 * @param senderId 发送者ID * @param creationDate 发送时间 * @param receivers 接收者 * @param messageFilterArgs 消息转移的参数,与对应的UserMessageFilter对应 * @see com.seeyon.ctp.common.constants.ApplicationCategoryEnum * @throws MessageException */ void sendSystemMessage(MessageContent content, int messageCategroy, long senderId, Date creationDate, Collection<MessageReceiver> receivers, Object... messageFilterArgs) throws MessageException;
接口使用注意事项
-
如果MessageContent相同,接收者为多人的情况下,禁止通过for-each 方式调用sendSystemMessage方法发送消息 ;而应该使用多接收者的接口。
-
如果MessageContent的Subject是动态的,比如:处理协同的状态,通过消息定义来解决。
接口参数说明:
MessageContent 构造消息体
MessageContent 消息体,主要封装国际化key以及参数。国际化内容放在各插件的中的国际化文件中,不需要在消息组件中的国际化文件中增加。
几种构造方法说明:
-
方式一: new MessageContent(String key, Object... param)
-
方式二:MessageContent.get(String key, Object... param)
-
方式三:new MessageContent() .add(String key, Object... params)……
例如: MessageContent messageContent = new MessageContent() .add("col.send", subject, sender.getName()) .add("col.agent") .setBody(bodyContent, bodyType, bodyCreateDate);
设置正文,主要用于email的正文
-
MessageContent.setBody(String bodyContent, String bodyType, Date bodyCreateDate)
设置重要程度:1普通,2重要,3非常重 要
-
MessageContent.setImportantLevel(Integer)
MessageReceiver 消息接收者
MessageReceiver 消息接收者,主要封装关联主体对象id、接收人Id、链接类型及链接参数
几种构造方法说明:
-
每个接收者的链接地址都不一样,通过for-each单个构造
MessageReceiver MessageReceiver.get(Long referenceId, long receiverId, String linkType, String... linkParam)
-
一个接收者,但没有连接
MessageReceiver MessageReceiver.get(Long referenceId, long receiverId)
-
多个接收者,一样的链接
List<MessageReceiver> get(Long referenceId, List<Long> receiverIds, String linkType, String... linkParam)
-
多个接收者,都没有链接
List<MessageReceiver> get(Long referenceId, List<Long> receiverIds)