UMX消息是供应宝系统通信单元,每种消息由(消息域,消息类型,消息ID)识别。
功能通过UMX消息交互序列实现。
一种UMX消息可用来实现不同的功能。UMX消息和功能没有一一对应关系。
待办事宜是一种应用功能,支持分类。
待办事宜可以是:
.一个转发的消息
.一个关联记录(如一张待处理单据,一份待阅读公告).
使用说明:
.一种消息只会生成一种待办事宜
.应用插件可以根据消息的内容决定生成的待办事宜类型和提示信息
///< 待办事宜转换器接口
class ITodoCvt{
public:
virtual int Add(CQQ_MSGTYPE msgtype,CQQ_MSGID msgid,TodoCvtFunc fp,CQQ_DOMAIN domain=0) = 0; ///< 增加一种消息映射
virtual int Remove(CQQ_MSGTYPE msgtype,CQQ_MSGID msgid,CQQ_DOMAIN domain=0) = 0; ///< 删除一种消息映射
};
应用示例
int TodoCvt(CMsg *msg,CSEMQTodoItem *tdi) {
::MSGTYPE msgtype = msg->GetMsgType();
::MSGID msgid = msg->GetMsgID();
CQQ_DOMAIN domain = msg->GetDomain();
if (msgtype==MT_INDICATION&&msgid==1103&&domain==0) { ///< 离线消息
tdi->todo_rootclass_ = WP_TODOTYPE_OFFMSG;
}
else if (msgtype==MT_INDICATION&&msgid==1231&&domain==0) { ///< 公告
const char *szTitle = msg->GetParam("Notice_title"); ///< 公告只能以机构名义发布
const char *szOrgID = msg->GetParam("Pub_orgid");
const char *szOrgName = msg->GetParam("Pub_OrgName");
tdi->todo_title_ = LogMsg("您接收到了一条来自%s(%s)的公告,%s",szOrgName,szOrgID,szTitle);
tdi->todo_rootclass_ = WP_TODOTYPE_NOTICE;
}
return 0;
}
int CBBoxPlugin::Prepare() {
parent::Prepare();
...
///< 为需要生成待办事宜的消息指定转换函数
TODO_CVT::instance()->Add(MT_INDICATION,1103,TodoCvt); ///< 离线消息转待办事宜
TODO_CVT::instance()->Add(MT_INDICATION,1231,TodoCvt); ///< 公告通知转待办事宜
...
return 0;
}