文档中心 > API文档

1.7.1.2. 开发规范

下面主要介绍本地的消息接口

注入消息接口

  • 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)