UMX消息和待办事宜类型之间的转换方式

本文介绍UMX消息系统如何通过不同消息类型和ID实现多种功能,并重点讲解了待办事宜功能的实现机制及其与UMX消息之间的转换过程。

 

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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值