EAS消息中心

本文档展示了在BOS开发中如何发送消息,包括通知消息和即时消息的实现细节。通过示例代码,详细解释了如何设置消息的各种属性,如标题、内容、接收者、消息类型等,以实现预警功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在BOS开发中如果需要往消息中心发送消息(例如预警功能),代码案例如下:

可参考EvalWorkFlowFacadeControllerBean中_sendMessage(方法)

主要有两种:通知消息 和即时消息

1.通知消息的实现

 private static void sendMessage(Context ctx, String remindPersonId, String title, String sendMessage){
    try{
    SolutionInfo solution = MetaDataLoaderFactory.getLocalMetaDataLoader(ctx).getSolution();
    SenderAgent sender = SenderAgent.getSenderAgent();
    LanguageCollection language = null;
            if(solution != null){
            language = solution.getLanguages();
            }
            Message message = MessageFactory.newMessage("kingdee.workflow");
            if(language.size()>0){
            for(int i=0; i<language.size(); i++){
          message.setLocaleStringHeader("title", title, language.get(i).getLocale());
          message.setLocaleStringHeader("sender", ContextHelperFactory.getLocalInstance(ctx).getCurrentUser().getName(), language.get(i).getLocale());
          message.setLocaleStringHeader("body", sendMessage, language.get(i).getLocale());
          }
          message.setIntHeader("type", MsgType.NOTICE_VALUE);//设置消息类型为通知
          message.setIntHeader("bizType", MsgBizType.FORWARN_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",remindPersonId);//设置接收用户ID
          sender.sendMessage(message);//发送消息
            }
    }catch(Exception e){
    e.printStackTrace();
    }
}

2.即时消息的实现(可实习消息框提示起到即时预警作用)

BMCMessageInfo   msgInfo=new BMCMessageInfo();
BasReleaseInfo receiverInfo=new BasReleaseInfo();
java.util.Locale local=ctx.getLocale();
String title1="测试title";
String sendContext1="测试内容";
msgInfo.setTitle(title1, local);
msgInfo.setBody(sendContext1,local);
IUser iUser;
try {
iUser = UserFactory.getLocalInstance(ctx);
UserInfo userInfo = iUser.getUserInfo(new ObjectUuidPK(ctx.getCaller().toString()));
msgInfo.setId(BOSUuid.create(msgInfo.getBOSType()));//id
msgInfo.setSender(userInfo.getName(local), local);
msgInfo.setPriority(MsgPriority.LOW);
msgInfo.setNreceivers("[预设用户.user]");
msgInfo.setType(MsgType.ONLINE);
msgInfo.setStatus(MsgStatus.UNREADED);

BasReceiverCollection basCol=new BasReceiverCollection();
BasReceiverInfo item=new BasReceiverInfo();
item.setIsShow(true);
item.setDesc("预设用户");
item.setType("3");
item.setValue("256c221a-0106-1000-e000-10d7c0a813f413B7DE7F");//user id
basCol.add(item);
IBMCMessage iBMCMessage = BMCMessageFactory.getLocalInstance(ctx);
iBMCMessage.addHandMsg(msgInfo,basCol);
} catch (BOSException e) {
e.printStackTrace();
} catch (EASBizException e) {
e.printStackTrace();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值