// 以下是发送一个消息的核心片断,如果针对的是某组织批量发送,
//自己的需要取得组织的用户ID集合,然后构造receiver
//SenderAgent senderAgent = SenderAgent.getSenderAgent();
Sender senderAgent = MessageSender.getInstance();
Message message;
// Locale[] lcla = getContextLocales(ctx);//获取ctx的语言信息列表
// getContextLocales方法找不到
Locale locale = ctx.getLocale();
message = MessageFactory.newMessage("kingdee.workflow");// 生成一个消息对象
// for (int j = 0, m = lcla.length; j < m; j++) {
// //此处循环进行多语言消息的设置
// locale = lcla[j];
message.setLocaleStringHeader("title", title, locale);// 设置消息标题
message.setLocaleStringHeader("sender", sender, locale);// 设置发送人,属于文本,不是ID
message.setLocaleStringHeader("body", body, locale);// 设置消息体内容,根据具体业务自己设定
// }
message.setIntHeader("type", MsgType.NOTICE_VALUE);// 设置消息类型为通知
message.setIntHeader("bizType", MsgBizType.OFFICE_VALUE);// 业务类型设置为工作流
// 设置任务状态,此处是通知消息,所以设置空
message.setIntHeader("sourceStatus", MsgSourceStatus.EMPTY_VALUE);
// 设置消息优先级,自己根据需要设定相应的级别
message.setIntHeader("priority", MsgPriority.MIDDLE_VALUE);
message.setStringHeader("databaseCenter", ctx.getAIS());// 得到数据中心
message.setStringHeader("solution", ctx.getSolution());// 设置解决方案
// 设置接收者,后面那参数是用户ID,多个ID可用分号";"分割
message.setStringHeader("receiver", receiver);
senderAgent.sendMessage(message); // 发送消息
调用例子:
String title="";
String body = "";
if(flag)
title= vslnm+", "+voyno+", "+cntt+"已经通过经营核算,生成运费通知单";
else{
title= vslnm+", "+voyno+", "+cntt+"未通过核算,并且退回给操作";
body ="回退原因:"+ reason;
}
UserInfo currentUser = (UserInfo) ctx.get(SysContextConstant.USERINFO);
String sender = currentUser.getName();
String receiver = info.getCreator().getId().toString();
try {
if(!CheckUtil.empty(receiver)&&!CheckUtil.empty(title))
//调用发送消息方法
_sendNotice(ctx,title,sender,body,receiver);
} catch (Exception e) {
throw e;
}
}
第二种方式:
public static void sendWorkFlowMessage(Context ctx,String Receiver,String Body,String title,String sender)
{
SenderAgent senderAgent = SenderAgent.getSenderAgent();
senderAgent.start();
Message message=null;
java.util.Locale[] lcla = getContextLocales(ctx);//获取ctx的语言信息列表
java.util.Locale locale = null;
message = MessageFactory.newMessage("kingdee.workflow");//生成一个消息对象
for (int j = 0, m = lcla.length; j < m; j++) {
//此处循环进行多语言消息的设置
locale = lcla[j];
message.setLocaleStringHeader("title",title, locale);//设置消息标题
message.setLocaleStringHeader("sender",sender , locale);//设置发送人,属于文本,不是ID
message.setLocaleStringHeader("body", Body,locale);//设置消息体内容,根据具体业务自己设定
}
message.setIntHeader("type", MsgType.NOTICE_VALUE);//设置消息类型为通知
message.setIntHeader("bizType", MsgBizType.WORKFLOW_VALUE);//业务类型设置为工作流
message.setIntHeader("sourceStatus", MsgSourceStatus.EMPTY_VALUE);//设置任务状态,此处是通知消息,所以设置空
message.setIntHeader("priority", MsgPriority.MIDDLE_VALUE);//设置消息优先级,自己根据需要设定相应的级别
message.setStringHeader("databaseCenter", ctx.getAIS());//得到数据中心
message.setStringHeader("solution", ctx.getSolution());//设置解决方案
message.setStringHeader("receiver",Receiver); //设置接收者,后面那参数是用户ID,多个ID可用分号";"分割
senderAgent.sendMessage(message); //发送消息
// senderAgent.stop();
}
第三种方式:
String title = "xx单:" + editData.getNumber() + "申请包材编码";
String body = title + ",详细信息请查看 包材编码维护。";
BMCMessageInfo messageInfo = new BMCMessageInfo();
messageInfo.setTitle(title);
messageInfo.setBody(body);
messageInfo.setReceiver(editData.getCreator().getString("id"));// TODO
messageInfo.setType(MsgType.NOTICE); // 通知消息
messageInfo.setBizType(MsgBizType.URGENT); // 消息类型 - 催办
messageInfo.setSender("系统");
messageInfo.setPriority(MsgPriority.MIDDLE);// 消息级别
messageInfo.setSendTime(new Timestamp(new Date().getTime()));
messageInfo.setOrgType(OrgType.NONE);
messageInfo.setOrgID("11111111-1111-1111-1111-111111111111CCE7AED4");
IObjectPK messageId = BMCMessageFactory.getRemoteInstance().save(messageInfo);