关于tagview
关于tagview
1. 初始化
对于 modeltype 为 tagview 类型的积分域,在初始化时,会创建一个 CTKTagViewDefine 类型的对象,记录该积分域的所有信息。
首先遍历该积分域下的所有积分,将所有积分分为两类:
- 当积分为
normal或者cycle,并且查询方式为normal或者TTL,且hasindex == 0时,该积分为 批量获取类型(NOS_EQ_BATCH); - 其他情况,该积分为 单独查询类型(NOS_EQ_SINGLE)。
2. 接口调用
代理层接收到TK_MSG_OTHER2NOS_QUERY_TAG 、 TK_MSG_OTHER2NOS_QUERY_TAG_EX 和 TK_MSG_OTHER2NOS_QUERY_TAG_64 这 3 种消息头会对积分域进行查询。
TK_MSG_OTHER2NOS_QUERY_TAG、TK_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项的查询。 - 对于视图积分域(tagview)中的积分:
-
其它情况,通过
virtual CStorageBaseModel :: Query ()对积分进行查询。
-
2.2 QueryAllEvt64()
当该积分域为tagview 类型时,对该积分域下的所有积分调用Query64 ()进行查询,没有其他限制。
本文由作者按照
CC BY 4.0
进行授权