文章

关于tagview

关于tagview

1. 初始化

对于 modeltypetagview 类型的积分域,在初始化时,会创建一个 CTKTagViewDefine 类型的对象,记录该积分域的所有信息。

首先遍历该积分域下的所有积分,将所有积分分为两类:

  • 当积分为normal或者cycle,并且查询方式为normal或者TTL,且hasindex == 0时,该积分为 批量获取类型(NOS_EQ_BATCH);
  • 其他情况,该积分为 单独查询类型(NOS_EQ_SINGLE)。

2. 接口调用

代理层接收到TK_MSG_OTHER2NOS_QUERY_TAGTK_MSG_OTHER2NOS_QUERY_TAG_EXTK_MSG_OTHER2NOS_QUERY_TAG_64 这 3 种消息头会对积分域进行查询。

  • TK_MSG_OTHER2NOS_QUERY_TAGTK_MSG_OTHER2NOS_QUERY_TAG_EX 最后会通过CTKNOSService::QueryAllEvt() 进行查询。
  • TK_MSG_OTHER2NOS_QUERY_TAG_64 会通过CTKNOSService::QueryAllEvt64() 进行查询。

2.1 QueryAllEvt()

当该积分域为tagview 类型时:

  • 先查询 批量获取类型 的积分:CTKTagViewDefine::QueryTagView(),此处没有其他限制。

  • 再查询 单独查询类型 的积分:

    • 当积分满足条件 modeltype == NOS_MT_KEYINT && MPID == 0 时,通过 virtual CStorageBaseModel :: QueryIndexDef() 对积分进行查询。

      CKeyIntModel::QueryIndexDef() 中对积分进行了一定 限制

      • 对于视图积分域(tagview)中的积分: modeltype == NOS_MT_KEYINT && MPID == 0 && m_upperPid > 0 时:

      需满足: PID ∈ [ m_lowerPid, m_upperPid ]

      • 对于视图积分域(tagview)中的积分:

      modeltype == NOS_MT_KEYINT && MPID == 0 时:

      需满足: hasIndex == TRUE

      且仅支持 querMethod == NOS_QM_DEF 项的查询。

    • 其它情况,通过 virtual CStorageBaseModel :: Query () 对积分进行查询。

2.2 QueryAllEvt64()

当该积分域为tagview 类型时,对该积分域下的所有积分调用Query64 ()进行查询,没有其他限制。

本文由作者按照 CC BY 4.0 进行授权