在EAS中使用代码发送消息

  1. // 以下是发送一个消息的核心片断,如果针对的是某组织批量发送,  
  1. //自己的需要取得组织的用户ID集合,然后构造receiver  

 

  1. //SenderAgent senderAgent = SenderAgent.getSenderAgent();  
  2. Sender senderAgent = MessageSender.getInstance();  
  3. Message message;  
  4. // Locale[] lcla = getContextLocales(ctx);//获取ctx的语言信息列表  
  5. // getContextLocales方法找不到  
  6. Locale locale = ctx.getLocale();  
  7. message = MessageFactory.newMessage("kingdee.workflow");// 生成一个消息对象  
  8. // for (int j = 0, m = lcla.length; j < m; j++) {  
  9. // //此处循环进行多语言消息的设置  
  10. // locale = lcla[j];  
  11. message.setLocaleStringHeader("title", title, locale);// 设置消息标题  
  12. message.setLocaleStringHeader("sender", sender, locale);// 设置发送人,属于文本,不是ID  
  13. message.setLocaleStringHeader("body", body, locale);// 设置消息体内容,根据具体业务自己设定  
  14. // }  
  15. message.setIntHeader("type", MsgType.NOTICE_VALUE);// 设置消息类型为通知  
  16. message.setIntHeader("bizType", MsgBizType.OFFICE_VALUE);// 业务类型设置为工作流  
  17. // 设置任务状态,此处是通知消息,所以设置空  
  18. message.setIntHeader("sourceStatus", MsgSourceStatus.EMPTY_VALUE);  
  19. // 设置消息优先级,自己根据需要设定相应的级别  
  20. message.setIntHeader("priority", MsgPriority.MIDDLE_VALUE);  
  21. message.setStringHeader("databaseCenter", ctx.getAIS());// 得到数据中心  
  22. message.setStringHeader("solution", ctx.getSolution());// 设置解决方案  
  23.     // 设置接收者,后面那参数是用户ID,多个ID可用分号";"分割  
  24. message.setStringHeader("receiver", receiver);  
  25. senderAgent.sendMessage(message); // 发送消息  
  1. <pre name="code" class="java">调用例子:  
  2.         String title="";  
  3.             String body = "";  
  4.             if(flag)  
  5.                 title= vslnm+", "+voyno+", "+cntt+"已经通过经营核算,生成运费通知单";  
  6.             else{  
  7.                 title= vslnm+", "+voyno+", "+cntt+"未通过核算,并且退回给操作";  
  8.                 body ="回退原因:"+ reason;  
  9.             }  
  10.             UserInfo currentUser = (UserInfo) ctx.get(SysContextConstant.USERINFO);  
  11.             String sender = currentUser.getName();  
  12.             String receiver = info.getCreator().getId().toString();  
  13.             try {  
  14.                 if(!CheckUtil.empty(receiver)&&!CheckUtil.empty(title))  
  15.                 //调用发送消息方法  
  16.                 _sendNotice(ctx,title,sender,body,receiver);  
  17.                   
  18.         } catch (Exception e) {  
  19.             throw e;  
  20.         }  
  21.         }  
  22. </pre><br>  
  23. <br>  
  24. <br>  
  25. 第二种方式:  
  26. <pre></pre>  
  27. <pre name="code" class="java"><pre name="code" class="java">public  static void sendWorkFlowMessage(Context ctx,String Receiver,String Body,String title,String sender)  
  28.   
  29.          {  
  30.   
  31.                    SenderAgent senderAgent = SenderAgent.getSenderAgent();  
  32.   
  33.                    senderAgent.start();  
  34.   
  35.                    Message message=null;  
  36.   
  37.                    java.util.Locale[] lcla = getContextLocales(ctx);//获取ctx的语言信息列表  
  38.   
  39.                    java.util.Locale locale = null;  
  40.   
  41.                    message = MessageFactory.newMessage("kingdee.workflow");//生成一个消息对象  
  42.   
  43.                      
  44.   
  45.                    for (int j = 0, m = lcla.length; j < m; j++) {  
  46.   
  47.                             //此处循环进行多语言消息的设置  
  48.   
  49.                             locale = lcla[j];  
  50.   
  51.                             message.setLocaleStringHeader("title",title, locale);//设置消息标题  
  52.   
  53.                             message.setLocaleStringHeader("sender",sender , locale);//设置发送人,属于文本,不是ID  
  54.   
  55.                             message.setLocaleStringHeader("body", Body,locale);//设置消息体内容,根据具体业务自己设定  
  56.   
  57.                    }  
  58.   
  59.                      
  60.   
  61.                    message.setIntHeader("type", MsgType.NOTICE_VALUE);//设置消息类型为通知  
  62.   
  63.                    message.setIntHeader("bizType", MsgBizType.WORKFLOW_VALUE);//业务类型设置为工作流  
  64.   
  65.                    message.setIntHeader("sourceStatus", MsgSourceStatus.EMPTY_VALUE);//设置任务状态,此处是通知消息,所以设置空  
  66.   
  67.                    message.setIntHeader("priority", MsgPriority.MIDDLE_VALUE);//设置消息优先级,自己根据需要设定相应的级别  
  68.   
  69.                    message.setStringHeader("databaseCenter", ctx.getAIS());//得到数据中心  
  70.   
  71.                    message.setStringHeader("solution", ctx.getSolution());//设置解决方案  
  72.   
  73.    
  74.   
  75.                    message.setStringHeader("receiver",Receiver); //设置接收者,后面那参数是用户ID,多个ID可用分号";"分割  
  76.   
  77.                    senderAgent.sendMessage(message); //发送消息  
  78.   
  79. //              senderAgent.stop();  
  80.   
  81.            
  82.   
  83.          }</pre><br>  
  84. 第三种方式:  
  85. <pre></pre>  
  86. <pre name="code" class="java"><p style="color: rgb(105, 105, 105); font-family: Arial; "></p><pre name="code" class="csharp">String title = "xx单:" + editData.getNumber() + "申请包材编码";  
  87.   
  88. String body = title + ",详细信息请查看 包材编码维护。";  
  89.   
  90. BMCMessageInfo messageInfo = new BMCMessageInfo();  
  91.   
  92. messageInfo.setTitle(title);  
  93.   
  94. messageInfo.setBody(body);  
  95.   
  96. messageInfo.setReceiver(editData.getCreator().getString("id"));// TODO  
  97.   
  98. messageInfo.setType(MsgType.NOTICE); // 通知消息  
  99.   
  100. messageInfo.setBizType(MsgBizType.URGENT); // 消息类型 - 催办  
  101.   
  102. messageInfo.setSender("系统");  
  103.   
  104. messageInfo.setPriority(MsgPriority.MIDDLE);// 消息级别  
  105.   
  106. messageInfo.setSendTime(new Timestamp(new Date().getTime()));  
  107.   
  108. messageInfo.setOrgType(OrgType.NONE);  
  109.   
  110. messageInfo.setOrgID("11111111-1111-1111-1111-111111111111CCE7AED4");  
  111.   
  112. IObjectPK messageId = BMCMessageFactory.getRemoteInstance().save(messageInfo);</pre><br>  
posted @ 2015-01-07 11:49  wangleixf  阅读(457)  评论(0)    收藏  举报