一种基于异构数据源数据核对的方法和系统 技术领域 本发明涉及通信技术领域, 更具体地说, 涉及一种基于异构数据源数据核对的方 法和系统。
背景技术 当前电信行业有以下几点特点 :
1. 网络庞大, 网络设备种类众多, 管理系统繁多, 多个管理系统之间存在数据同步 的问题。
2. 每个管理系统的数据模型都有所不同, 根据各自的系统需求, 相同资源所包含 的属性差别比较大。给多个系统之间进行数据同步增加了复杂度。
3. 电信行业的资源数据不单纯是以某个系统为准的数据同步过程, 而是相对两个 或多个系统的数据比对过程, 比对结束后, 将比对结果呈现给用户, 由用户人为确定哪些数 据需要同步, 哪些数据不需要同步。
4. 数据核对的过程不是简单的数据比较的过程, 其中包含一定的运算及格式转 换、 命名规则转换等过程。
5. 数据接口不同, 有的系统对外提供数据库接口、 有的系统对外提供 CORBA 接口、 或者 TL1、 SNMP 接口, 系统接口不同, 则数据来源也不同。不能通过简单的一种方式实现数 据核对过程。
基于上述五点, 有必要研究出一种基于异构数据源的数据核对的方法, 该方法可 以广泛应用在电信管理软件中, 实现本系统与其他系统的数据核对过程。
对于电信行业, 多个管理系统之间所进行的数据核对过程, 是一个非常频繁的过 程。如资源系统与专业网管系统之间, 专业网管与被管网元之间。其生产厂家不同, 管理对 象不同, 应用需求不同, 造成相同资源对象的对象名称、 对象的属性及属性的类型都有可能 不同。在对这样的资源对象进行两个不同系统间核对时, 就存在对象名称及对象属性的转 换过程。
现在普遍存在的方法是将外系统的数据先按本系统的数据结构转换并导入, 再将 两个系统的数据进行核对。但这种核对方法存在的问题是 : 程序员需要事先要对外系统的 数据结构进行研究, 而且需要编写相应的代码, 通过所编写的代码将外系统数据按本系统 的数据需求转换成本系统的数据, 然后再进行一一对比。因此, 这种核对方法复杂, 且需要 程序员的参与, 普通工程实施人员无法完成数据的核对。
发明内容
本发明要解决的技术问题在于, 针对现有技术的上述异构数据源的数据核对方法 复杂的缺陷, 提供一种简单的基于异构数据源数据核对的方法。
本发明解决其技术问题所采用的技术方案是 : 构造一种基于异构数据源数据核对 的方法, 接收用户通过人机交互界面设定的配置规则, 根据所述配置规则对本系统数据和外系统数据进行核对, 所述本系统和所述外系统为异构数据源。
本发明还构造一种基于异构数据源数据核对的系统, 包括 :
接口模块, 用于接收用户通过人机交互界面制定的配置规则 ;
核对模块, 用于根据所述配置规则对本系统数据和外系统数据进行核对, 所述本 系统和所述外系统为异构数据源。
实施本发明的基于异构数据源数据核对的方法和系统, 使得数据核对更加简单, 且不需要程序员的参与, 普通工程实施人员就可以完成核对过程。 附图说明
下面将结合附图及实施例对本发明作进一步说明, 附图中 : 图 1A 是本发明基于异构数据源数据核对的方法实施例一的流程图 ; 图 1B 是本发明基于异构数据源数据核对的系统实施例一的逻辑图 ; 图 2A 是本发明基于异构数据源数据核对的方法实施例二的流程图 ; 图 2B 是本发明基于异构数据源数据核对的系统实施例二的逻辑图 ; 图 3 是本发明基于异构数据源数据核对的方法实施例三的时序图 ; 图 4A 是自动核对的方法实施例一的流程图 ; 图 4B 是手工核对的方法实施例一的流程图。具体实施方式
如图 1A 所示, 在本发明基于异构数据源数据核对的方法实施例一的流程图中, 该 核对方法包括以下步骤 :
S100. 接收用户通过人机交互界面制定的配置规则 ;
S200. 根据所述配置规则对本系统数据和外系统数据进行核对, 所述本系统和所 述外系统为异构数据源。
在图 1B 示出的本发明基于异构数据源数据核对的系统实施例一的逻辑图中, 该 系统为后台服务 CheckServ, 在该实施例中, 核对系统包括接口模块 100 和核对模块 200, 其 中,
接口模块 100 为系统与其他服务的接口, 用于实现与人机界面的交互, 以及对采 集器的调用等, 人机界面的交互包括接收用户制定的配置规则, 将核对结果呈现给用户等 ; 对采集器的调用如通过采集器采集外系统数据。接口模块 100 可为 CORBA 命名服务接口或 JMS 接口, 一般在大型分布式系统中选用付费的 CORBA 命名服务接口以保障系统的通信交 互, 小系统中则选用 JMS 接口 ;
核对模块 200, 用于根据所述配置规则对本系统数据和外系统数据进行核对。
优选地, 该核对的系统还可包括定时任务触发模块, 定时任务触发模块为系统自 动核对时的事件触发源, 通常为系统自定义的计时器。
优选地, 所制定的配置规则包括 :
确定需要进行核对的数据, 并在本系统内建立信息表, 所述信息表的内容为待核 对的本系统资源对象 ;
配置数据核对任务, 并配置核对任务的触发类型和处理类型, 如, 核对任务的触发类型包括手工核对和自动核对 ; 核对任务的处理类型包括核对结果进行手动确认和核对结 果自动确认 ;
配置设备指令集和对应的采集器 ;
为所述数据核对任务配置子任务, 并将所述子任务与由至少一条设备指令组成的 一组设备指令集做关联, 优选地, 每组指令集中的指令间具备关联关系, 如第二条指令中的 某参数需从第一条指令的设备回复报告中获取 ;
配置设备指令的回复数据报文的适配规则, 根据所述适配规则从外系统动态提取 数据, 并将所提取的数据与所述信息表的信息内容做映射。 如适配规则为 : 对所述回复数据 报文的至少两个选定数据进行下面至少一种基本运算 : 加、 减、 乘、 除; 和 / 或, 对所述回复 数据报文的至少两个选定数据进行下面至少一种处理 : 过滤、 匹配、 去空格、 拼接 ;
配置核对规则, 所述核对规则确定核对数据项。
图 2A 本发明基于异构数据源数据核对的方法实施例二的流程图, 该核对方法首 先要接收用户通过人机交互界面设定的配置规则, 该配置规则如上所述, 然后开始进行下 面的步骤 :
S201. 将数据核对任务分解成至少一个子任务, 每一个子任务都与至少由一条设 备指令组成的设备指令集相关联, 优选每组指令集中的指令间具备关联关系, 如第二条指 令中的参数需从第一条指令的设备回复报告中获取 ; S202. 分别根据每组设备指令集, 通过调用相应的采集器从外系统采集原始数据, 并将所采集的原始数据转换成文本数据, 所述文本数据为相应的设备指令对应的回复数据 报文 ;
S203. 根据所述适配规则对所述文本数据进行动态适配处理, 以生成本系统可识 别的资源对象, 所述本系统可识别的资源对象对应所述本系统的信息表的一部分, 所述本 系统的信息表的内容为待核对的本系统资源对象 ;
S204. 将每个子任务所对应生成的本系统可识别的资源对象进行组装, 以生成待 核对的外系统资源对象, 所述待核对的外系统资源对象对应所述本系统的信息表 ;
S205. 根据所确定的核对数据项, 将待核对的外系统资源对象与本系统的信息表 进行比对, 并标注比对结果, 如, 标注哪些对象是外系统有而本系统没有的 ( 即新增的资源 对象 ), 哪些对象是外系统没有而本系统有的 ( 即需要清除的资源对象 ), 哪些对象唯一标 识相同, 但某些属性值不同 ( 即需要更新的资源对象 )。
在图 2B 示出的本发明基于异构数据源数据核对的系统实施例二的逻辑图中, 该 核对系统包括接口模块 100 和核对模块 200, 其中, 接口模块 100 与核对系统实施例一的接 口模块相同, 在此不做赘述, 以下仅说明核对模块 200, 该核对模块 200 包括以下几个部分 :
任务分解单元 201, 用于将数据核对任务分解成至少一个子任务, 每一个子任务都 与由至少一条设备指令组成的设备指令集相关联 ;
操作单元 202, 用于分别根据每组设备指令集, 通过调用相应的采集器从外系统采 集原始数据, 并将所采集的原始数据转换成文本数据, 所述文本数据为相应的设备指令对 应的回复数据报文 ;
报告分析单元 203, 用于根据所述适配规则对所述文本数据进行动态适配处理, 以 生成本系统可识别的资源对象, 所述本系统可识别的资源对象对应所述本系统的信息表的
一部分 ;
数据组装单元 204, 用于将每个子任务所对应生成的本系统可识别的资源对象进 行组装, 以生成待核对的外系统资源对象, 所述待核对的外系统资源对象对应所述本系统 的信息表 ;
核对单元 205, 用于根据所确定的核对数据项, 将待核对的外系统资源对象与本系 统的信息表进行比对, 并标注比对结果, 然后根据核对规则进行数据同步处理。
下面以一个例子来具体说明如何进行异构数据源的数据核对 : 比如, 目前需要进 行自动核对移动基站数据, 那么首先, 确定需要进行核对的数据为移动基站数据, 在本系统 内建立基站信息表, 其中基站信息表假定包括 6 项信息 ; 然后通过人机界面配置基站数据 核对任务, 每天由系统凌晨 2 点开始自动进行基站数据核对, 不需要用户对核对结果进行 手工确认, 所以, 核对任务的触发类型为自动触发, 核对任务的处理类型为自动确认。假定 到设备上提取基站数据需要 3 条设备指令, 那么将基站数据核对任务进行任务分解, 配置 3 个子任务, 每个子任务对应 1 条设备指令, 将这 3 条设备指令通过人机界面与基站数据核对 任务的子任务进行关联, 其中, 配置设备指令 2 的基站编号参数在设备指令 1 的回复报告中 可获取。接着, 根据设备指令 1 调用采集器从移动基站采集原始数据, 并将所采集的原始数 据转换成文本数据, 该文本数据为 1 设备指令 1 所对应的回复数据报文, 同样地, 根据设备 指令 2 得到设备指令 2 所对应的文本数据, 根据设备指令 3 得到设备指令 3 所对应的文本 数据。 然后, 根据所制定的适配规则将每条设备指令所对应的文本数据进行动态适配处理, 以生成本系统可识别的资源对象, 且每条设备指令所对应的本系统可识别的资源对象都对 应基站信息表内容做映射。例如, 在该实施例中, 根据所制定的适配规则对设备指令 1 所对 应的文本数据进行以下处理 : 将该文本数据中数据行的第 3 行的第 3、 4、 5 列的数据相加, 以 生成设备指令 1 对应的本系统可识别的资源对象, 且该本系统可识别的资源对象对应系统 内基站信息表的第一个字段的信息内容 ; 同样地, 根据所制定的适配规则对设备指令 2 所 对应的文本数据进行以下处理 : 将该文本数据中的第 7 行的 2、 5、 7 列的数据进行对 “*” 字 符的过滤后再进行字符串拼接, 以生成设备指令 2 对应的本系统可识别的资源对象, 且该 本系统可识别的资源对象对应系统内基站信息表的第 2 个字段的信息内容 ; 同样地, 对设 备指令 3 所对应的文本数据进行处理以生成设备指令 3 对应的本系统可识别的资源对象, 且该本系统可识别的资源对象对应系统内基站信息表的第 3 个字段的信息内容, 然后将 3 条设备指令对应的本系统可识别的资源对象进行组装, 以生成待核对的外系统资源对象, 该待核对的外系统资源对象与系统内的基站信息表有映射关系。最后, 配置需要核对的数 据项, 比如, 以基站信息表中的基站编号为关键字, 核对基站信息表中的数据项 3、 4、 5、 6的 数据内容。
图 3 是本发明基于异构数据源数据核对的方法实施例三的时序图, 在该核对方法 中, 为更简单地说明核对方法, 假设该数据核对任务仅有一个子任务, 且该子任务仅与一条 设备指令相关。首先, 触发该核对任务, 进入核对过程, 根据该设备指令, , 调用与外系统的 接口协议相对应的采集器, 从外系统接口采集外系统的原始数据, 然后接收该设备指令的 回复数据报文, 所接收的回复数据报文为由所采集的原始数据所转换成的文本数据, 并根 据适配规则对该文本数据进行对象转换, 以生成系统可识别的资源对象, 并在采集完毕后 通知核对。同样地, 将本系统的资源对象根据适配规则也进行对象转换, 以生成转换后的系统资源对象, 即本系统待核对的资源对象, 也即本系统信息表, 并在转换完成后通知核 对。应当说明的是, 本系统信息表其实也为在之前核对时根据外系统数据所更新或新增的 数据。最后, 将上述本系统可识别的资源对象与本系统信息表进行比对, 并标注比对结果, 应当说明的是, 所生成的本系统可识别的资源对象由于只与一个子任务相对应, 且该本系 统可识别的资源对象与系统信息表有映射关系, 所以该本系统可识别的资源对象仅对应本 系统信息表的一项信息。标注比对结果可以是, 标注哪些对象是外系统有而本系统没有的 ( 即新增的资源对象 ), 哪些对象是外系统没有而本系统有的 ( 即需要清除的资源对象 ), 哪 些对象唯一标识相同, 但某些属性值不同 ( 即需要更新的资源对象 )。
下面以 3G 网管为例, 分别介绍数据核对的两种方式 : 一种是自动核对, 另一种是 手工核对。图 4A 和图 4B 分别是本发明自动核对和手工核对方法实施例一的流程图。在图 4A 和图 4B 的方法中, 还分别介绍了配置数据自动核对和配置数据手工核对的处理流程及 与周围其它服务之间的交互。其中, NotifyServ 为人机交互界面与 CheckServ 间的消息分 发服务 ; 文本适配器为通用报告适配器 ; Agent 为数据入库及采集器调度的代理服务 ; 采集 器为针对不同协议的指令交互及数据采集的服务。
在图 4A 中, 由于自动核对触发是由系统内的计时器触发, 所以当定时时间到达, 开始进行自动数据核对。首先获取定时任务, CheckServ 将配置采集连接建立请求通过 Agent 发送至采集器, 若连接成功, CheckServ 则将该数据核对任务分解成若干子任务, 每一个子任务对应由至少一条设备指令组成的设备指令集, 然后, 根据第一条设备指令, 将采集指令下发请求通过 Agent 发送至采集器, 采集器采集外系统的数据并形成文本, 接着调用文本适配器将所采集到的数据文本进行动态适配处理, Agent 将数据入库并通 知 CheckServ( 包括入库通知、 任务 ID、 命令 ID)。同样地, 根据第二条设备指令、 第三条 设备指令……采集外系统的数据并将其转换成待核对的外系统资源对象, 直到 CheckServ 将采集连接断开请求通过 Agent 发送至采集器, 且从返回值判断断开成功, 则根据核对规 则进行数据合并和数据比对, 如果核对处理类型为自动, 则 CheckServ 自动修改配置库数 据, 并将核对结果通过 NotifyServ 显示到人机交互界面 ; 如果核对处理类型为手动, 则由 NotifyServ 将上层应用层 ( 人机交互界面 ) 发来的经用户确认过的核对结果数据转发给 CheckServ, 由 CheckServ 将核对数据进行入库处理。
在图 4B 中, 由于手工核对触发是由用户通过人机界面触发, 所以当用户通过人机 交互界面下发了手工配置核对请求时, NotifyServ 将该请求发送至 CheckServ, 以下的各 个步骤与自动核对的相应步骤相同, 在此不做赘述。
下面具体说明 CheckServ 的各个部分的数据模型 :
接口模块在用于接收用户通过人机交互界面制定的配置规则、 对采集器的调用、 将核对结果呈现给用户时所使用的数据模型为 :
a)CorbaServiceThread 属性 :名称 orb root 代码 orb root
方法 : 名称 CorbaServiceThread run 代码 CorbaServiceThread run 说明 初始化 运行线程
b)BaseCheckIterator_IImpl : 属性 :
方法 :代码 BaseCheckIterator_IImpl CreateMission RedoMission UndoMission 说明 初始化 创建新任务接口 任务重做接口 任务撤销接口名称 BaseCheckIterator_IImpl CreateMission RedoMission UndoMission
任务分解单元在用于将数据核对任务分解成至少一个子任务时所使用的数据模型为 :
名称 MissionHandle代码 MissionHandle说明 任务处理类所属模块 任务分解9CN 101968793 A说CommandClass明书任务分解7/23 页CommandClass
任务指令类a)MissionHandle : 属性 : 名称 iMissionId logger 代码 iMissionId logger 说明 任务 ID 日志
方法 :
b)CommandClass : 属性 : 名称 iCmdNum strCmdName iCollState iDiState ifMultiCommand iNeedCmdNum 代码 iCmdNum strCmdName iCollState iDiState ifMultiCommand iNeedCmdNum10说明CN 101968793 A说iCmdId iProcessType CONFIGFLAG log vcWhereCon iCmdId明书8/23 页iProcessType CONFIGFLAG log vcWhereCon
方法 : 代码 CommandClass GetFlag SetFlag GetNeedCmdNum SetNeedCmdNum GetCmdNum SetCollState GetCollState SetDiState GetDiState GetCmdName 说明 初始化 获取指令是否含有多条指令标识 设置指令是否含有多条指令标识 获取当前指令需要哪个指令结果作为参数 设置当前指令需要哪个指令结果作为参数 获得指令序号 设置指令采集状态 获取指令采集状态 设置指令报告分析状态 获取指令报告分析状态 获取指令名称名称 CommandClass GetFlag SetFlag GetNeedCmdNum SetNeedCmdNum GetCmdNum SetCollState GetCollState SetDiState GetDiState GetCmdName
说明 : 采集服务指令配置说明如下 : “‖” 使用说明 联合指令 : 包括 S1240 的 MM 和 DMS 的 DIS ALL 等 例如 : MM‖5794 : 1 = ALL, DETAIL = 0 ; 两条指令组合在一起才能完成指令“% $#” 使用说明 :
以% $# 开始并以% $# 结束, 中间格式为 : 库表名 . 字段名
例如 : FSCIN : ‖NFSC =% $#trunk_new.trk_name% $# ;
以中继表的中继群名为循环条件生成指令
操作单元在用于分别根据每组设备指令集通过调用相应的采集器从外系统采集 原始数据并将所采集的原始数据转换成文本数据时所使用的数据模型为 :
名称 MissionClass CollectThread
代码 MissionClass CollectThread说明 采集任务类 采集处理线程所属模块 操作 操作a)MissionClass : 属性 :
方法 : 名称 SetPeriod GetPeriod MissionClass SetMissionId 代码 SetPeriod GetPeriod MissionClass SetMissionId 说明 周期设置 获得周期 初始化 设置任务 ID12CN 101968793 A说GetMissionId SetNeId GetNeId明书获得任务 ID 设置网元 ID 获得网元 ID10/23 页GetMissionId SetNeId GetNeId
b)CollectThread : 属性 : 名称 iNeId iMissionId iCurCmdId theCommandVector theMissionHandle theXmlMessage SpecialDeal 代码 iNeId iMissionId iCurCmdId theCommandVector theMissionHandle theXmlMessage SpecialDeal 返回消息 特殊处理类 说明 网元 ID 任务 ID 当前命令 ID 命令数组
方法 : 名称 CollectThread run ExecCommandVec NeDell 代码 CollectThread run ExecCommandVec NeDell 说明 初始化 运行线程 执行子指令链表 特殊处理报告分析单元在用于根据所述适配规则对所述文本数据进行动态适配处理以生 成本系统可识别的资源对象时所使用的数据模型为 :
a)SpecialDeal : 属性 : 名称 iMissionId iMissionType iNeId iCommandId 代码 iMissionId iMissionType iNeId iCommandId 说明 任务 ID 任务类型 网元 ID 命令 ID
方法 :名称 deal 代码 deal 说明 处理
b)SpecialDeal_xxx_yyy : 属性 : 名称 iMissionId iMissionType iNeId iCommandId 代码 iMissionId iMissionType iNeId iCommandId 说明 任务 ID 任务类型 网元 ID 命令 ID
方法 :名称 代码 说明14CN 101968793 A说dealCc明书12/23 页deal_cc
报告处理, cc 为命令缩写数据组装单元在用于将每个子任务所对应生成的本系统可识别的资源对象进行 组装以生成待核对的外系统资源对象时所使用的数据模型 :
类描述 :
名称 ConfigCombine
代码 ConfigCombine说明 数据组装类所属模块 数据组装a)ConfigCombine : 属性 名称 CombineSql CombineRules CombineContent 代码 CombineSql CombineRules CombineContent 说明 组合 SQL 组合规则 组合的内容
方法 : 名称 ConfigCombine CombineByRules GetCombineSql 代码 ConfigCombine 说明 初始化CombineByRules 按规则合并 GetCombineSql 获得合并 SQL核对单元在用于根据所确定的核对数据项, 将待核对的外系统资源对象与本系统 的信息表进行比对时所使用的数据模型为 :
a)CheckService :属性代码 MissionVector CurHandleNeVector CommandVector spmap theTimeCheckThread theMissionHandle theCorbaServiceThread theCommandClass log strCurtime 说明 任务数组 处理网元数组 命令数组 HASH 表 自动核对任务 任务处理 CORBA 服务对象 命令 日志 计时器名称 MissionVector CurHandleNrVector CommandVector spmap theTimeCheckThread theMissionHandle theCorbaServiceThread theCommandClass log strCurtime
方法
流程说明 :
核对任务进程是 CheckServ 的主类, 在 CheckService 类中首先启动定时周期任务 处理线程, 再启动 socket 接收线程, 接着启动 Corba 服务线程, 然后循环检查任务链表中的 任务状态, 并根据任务状态进行相应的处理。
b)ConfigHandleThread
属性
方法流程说明 :
ConfigHandleThread 类主要是实现分析从 XML 文件中读取的数据, 把数据转换 成记录列表保存在 RecordList 中, 然后对记录列表中的记录进行分析处理。根据记录的 iModType( 修改类型 ) 对记录进行分类处理 :
1. 增加 : 执行插入记录操作的实现函数是 :
exeInsertRecordFromData(iOperid, record, conn, Jdbc)
执行完该函数后 :
正确返回主键值 reArr[0] = 0, reArr[1] =返回主键值
错误 reArr[0] = 1, reArr[1] =错误信息
1.1iIdTypeFlag = 1 执行 getIdentitySql 来得到插入 SQL 语句 :
1.1.1cMoiName 值存在的话, 执行 getMoiRecordInsertSql 得到含有 cMoiName, 不 含 IdField 字段的插入 SQL 语句。
1.1.2 如果 cMoiName 不存在的话, 则直接返回由 record 记录中的字段列表组成不 含有 cMoiName 字段的插入 SQL。
1.2iIdTypeFlag != 1 :
1.2.1cMoiName 值存在的话 :
1.2.1.1 如果 IdField 存在的话, 得到含有 cMoiName, IdField 的插入语句 .
1.2.1.2 如果 IdField 不存在的话, 得到含有 cMoiName 但是不含 IdFieldName 的 插入语句
1.2.2cMoiName 值不存在的话 :
如果 IdField 存在的话, 得到不含 cMoiName, 但含有 IdField 的插入语句。
否则, 得到不含 cMoiName 和 IdField 的插入语句。 1.3 如果存在子记录的话 : 执行 getSubRecordInsertSql 函数, 得到子记录的插入 SQL 语句 : 1.3.1 如果存在 IdField 字段的话 : 如果存在着关联字段 RelateId, 则得到含有 IdField, RelateId 的插入 SQL 语句 . 否则, 得到含有 IdField, 但不含 RelateId 的插入 SQL 语句 1.3.2 如果不存在 IdField 字段的话 : 如果存在着关联字段 RelateId, 则得到不含 IdField, 但含有 RelateId 的插入 SQL语句 . 否则, 得到不含 IdField 和 RelateId 的插入 SQL 语句
2. 删 除, 修 改 : 执 行 删 除 修 改 记 录 的 实 现 函 数 是 : exeDelUpRecordFromData(iOperid, record, conn, Jdbc)
2.1 如果是删除的话, 先把删除操作插入历史表, 然后执行删除操作 :
2.1.1 执行 analyHisOperateDel :
首先从 tResTable( 资源表 ) 中得到 iTableType( 表类型 ), iSynFlag( 是否同步 标志 ), isInsertMOI( 是否给 tObjectInstan 表中插入记录 ), vcPKey( 主键列表 ) 信息如 果表类型不为 3( 不是核对中间表 ), 并且是删除执行下列操作 :
得到要删除记录的条数
从 tResTable( 资源表 ) 得到主键名的列表信息, 进而在 record 所记录的资源表 中取出要删除记录的主键信息列表
如果 sSynFlag( 同步控制标志 ) 为 1, 则设置删除记录的 IdField( 自动增量 ) 为从 tResTable 中得到的主键名, 设置 IdFieldValue 为从 record 所记录的资源表中得到 的主键值信息。
如果 sSynFlag( 同步控制标志 ) 不为 1, 则执行 executeInsertHis, 把得到的主 键列表信息插入到历史表中
如果 sSynFlag( 同步控制标志 ) 为 1, 执行 addPushRecordList :
调用 AddFieldList_delete 函数 :
从 tResTable 中查询 sTableType 的值,
如果 sTableType = 5( 表示是大表 ), 直接返回 .
如果 sTableType = 0 或者是 1( 表示只普通表或者说是中间关联表 ), 通过 getColTypeSql 得到从 tResColumn 取得 vcColumn( 字段名 ) 和 vcTypeFlag( 字段类型描 述 ) 的查询 SQL 语句 .
以 执 行 SQL 语 句 后 的 结 果 做 为 参 数,执 行 TopoUpdateOneNode 类 的 getAllFieldListType 方法得到字段列表。 把 record 的 strColFieldList 字段设为刚得到 的字段列表, 然后执行插入历史表。
如果 sIsInsertMOI 值为 1 : 则给 tObjectInstant 表插入删除记录。
2.1.2. 执 行 完 analyHisOperateDel 后, 从 record 所 记 录 的 表 中 删 除 掉 满 足 record 记录的条件的记录。
2.2 如果是修改的话, 先把修改操作插入历史表, 然后执行删除操作
2.2.1 执行 analyHisOperateUpdate :
首先从 tResTable( 资源表 ) 中得到 iTableType( 表类型 ), iSynFlag( 是否同步 标志 ), isInsertMOI( 是否给 tObjectInstan 表中插入记录 ), vcPKey( 主键列表 ) 信息如 果表类型不为 3( 不是核对中间表 ), 并且是更新执行下列操作 :
得到要更新记录的条数。
从 tResTable( 资源表 ) 得到主键名的列表信息, 进而在 record 所记录的资源表 中取出要更新记录的主键信息列表
如果 sSynFlag( 同步控制标志 ) 为 1, 则设置更新记录的 IdField( 自动增量 ) 为从 tResTable 中得到的主键名, 设置 IdFieldValue 为从 record 所记录的资源表中得到 的主键值信息。
如 果 要 更 新 记 录 的 cMoiName 不 为 空, 则 在 更 新 字 段 列 表 中 加 入 cMoiName, nMoiId, nMocId 字段。
如果 IsInsertMOI 字段为 1, 则表示要向 tObjectInstant 表中插入更新记录, 执 行 execInsObject, 进行插入操作。
2.2.2 执行完 analyHisOperateUpdate 后, 执行下面的操作 :
判断 cMoiName 字段是否为空, 如果不为空的话, 则在更新语句的修改字段中加 入 nMoild, cMoiName, nMocId 字段, 否则的话, 就不需要加入这些字段。
执行更新操作。
从 tResTable( 资源表 ) 中得到 iSynFlag( 同步标志 ).
如果临时记录列表 (tempRecordList) 不为空 :
1) 置临时记录列表中的每一个记录
2) 如果 iSynFlag 值为 1, 则执行 addPushRecordList, 调用 AddFieldList_update 得到更新记录列表 : 如果是更新大表, 如果只更新 vcRole, 不处理过滤掉如果更新其他, 判 断 vcRole, 各位值处理, 如果更新小表, 将大表对应的字段加到小表中
3) 如果 iSynFlag 值不为 1, 则执行插入历史表操作。
c)TimeCheckThread
属性
名称 iMaxSetMissionId strCurrentTime TimeMissionVector PeriodMissionVector log代码 iMaxSetMissionId strCurrentTime TimeMissionVector PeriodMissionVector log说明 最大任务 ID 当前时间 计时器数组 周期任务数组 日志方法
流程说明 :
TimeCheckThread 类用于处理定时周期任务, 它首先从数据库中查询定时任务和 周期任务, 来初始化定时任务和周期任务链表, 然后不挺地检查链表, 检查链表, 如果存在 符合时间条件的定制则生成立即任务。
d)ConfigCheckThread :
属性 :
名称 CheckRules CheckSql CheckSql1 iMissionId iMissionType iNeId UpdateSql InsertSql
代码 CheckRules CheckSql CheckSql1 iMissionId iMissionType iNeId UpdateSql InsertSql说明 核对规则 核对 SQL1 核对 SQL2 任务 ID 任务类型 网元 ID 修改 SQL 增加 SQL20CN 101968793 A说DeleteSql明书删除 SQL18/23 页DeleteSql
方法 :
下面来说明 CheckServ 同其它服务的交互的接口, 接口通过 XML 格式的数据传递 消息。消息的总体结构框架定义如下 :
// 任务类型 // 任务 ID // 命令 ID // 命令信息 // 核对结果数据处理方式 : 0: 用户确认 ; 1: 自动进行数据库修改 // 报告处理类型 : 0: 文本适配处理 ;; 1: 特殊处理 ;
其中 : MessageType 为消息类型, 取值范围如下 ;
1: 通知消息
2: 请求消息
3: 反馈消息
MessagesubType 为消息子类型, 取值按照业务区间来区分, 配置数据核对功能相 关的消息子类型有 :
101 : 配置数据入库通知 (MessageType = 1)
102 : 配置数据变化通知 (MessageType = 1)
101 : 手工配置核对请求 (MessageType = 2)
102 : 配置采集连接建立请求 (MessageType = 2)
103 : 配置采集命令下发请求 (MessageType = 2)
104 : 配置采集连接断开请求 (MessageType = 2)
105 : 配置自动发现请求 (MessageType = 2)
Jobid 指的是某个请求反馈的 id。因为只与请求反馈有关, 与订阅发布无关, 因此 由通信应用自行定义。
在反馈多个数据包的时候, PackId 标识了某个 jobid 当前反馈包得内容在整个返 回内容的位置。
NeId 标识了当前消息涉及的网元的 id, 如果涉及到多个网元或者不涉及任何网 元, 则此值取 0。
Body 是消息的主体部分, 其内容随着头部内容的变化而变化, 具体含义情参照下 面的内容。
下面再来说明 CheckServ 中配置表的数据模型, 跟数据核对相关的配置数据结构 以配置表的形式存放。配置表清单如下表所示 : a) 命令的定义表 (tCommad_Def), 采集器数据库说明中描述 ( 需要改造, 规范字段 及表的命名, 增加任务类型 ID 作为主健 ), 定义命令集, 其中包括配置采集指令集、 性能采 集指令集、 告警同步指令集。一个指令集代表一个采集任务所需的全部指令 ;
b) 任务状态表 (tMissionState), 在 Agent 数据库说明中描述 ( 增加 tCommand_ Def 的主健 ), 定义具体的任务 ;
c) 任务类型配置表 (tMissionConfig), 配置任务类型消息 ;
d) 指令状态表 (tCommandState), 记录的是某种设备完成特定任务的批指令的状 态信息 ;
e) 报告分析配置表 (tAnalyseConfig), 存放指令报告分析处理方法的配置信息 ;
f) 数据组装配置表 (tCombineConfig), 存放由原子指令信息到目标任务信息的 组装规则的配置信息 ;
g) 数据核对配置表 (tCheckConfig), 存放由目标任务信息到静态配置信息的核 对规则的配置信息 ;
h) 定时周期任务表 (tInitMissin)。
下面具体说明每个配置表 :
a) 命令定义表 (tCommad_Def)
表结构描述
b) 任务状态表 (tMissionState) 表结构描述
c) 任务类型配置表 tMissionConfig 表结构描述
d) 任务状态表 (tCommandState) 表结构描述
e) 报告分析配置表 (tAnalyseConfig) 表结构描述
f) 数据组装配置表 (tCombineConfig) 表结构描述 代码 iMissionTypeId strCombineSql 说明 FK- > tMissionConfig字段名 任务 ID 组装的 SQL 语句
其它规则描述strOtherRules24CN 101968793 A说组装规则说明明书22/23 页strCombineContent
g) 数据核对配置表 (tCheckConfig) 表结构描述字段名 任务 ID 核对规则描述 存放查询的 SQL 语句 存放查询的 SQL 语句 存放查询的 SQL 语句 存放查询的 SQL 语句 存放查询的 SQL 语句 存放查询的 SQL 语句 存放查询的 SQL 语句 存放查询的 SQL 语句 存放查询的 SQL 语句 存放查询的 SQL 语句 存放更新的 SQL 语句 存放插入的 SQL 语句 存放删除的 SQL 语句 代码 iMissionTypeId vcRules vcSelectSql1 vcSelectSql2 vcSelectSql3 vcSelectSql4 vcSelectSql5 vcSelectSql6 vcSelectSql7 vcSelectSql8 vcSelectSql9 vcSelectSql10 vcUpdatesql vcInsertSql vcDelelteSql 说明 FK- > tMissionConfig
h) 定时周期任务表 (tInitMissin) 表结构描述
以上所述仅为本发明的优选实施例而已, 并不用于限制本发明, 对于本领域的技 术人员来说, 本发明可以有各种更改和变化。 凡在本发明的精神和原则之内, 所作的任何修 改、 等同替换、 改进等, 均应包含在本发明的权利要求范围之内。