发明内容
本发明所要解决的技术问题在于克服现有技术的缺陷,提供一种能在存储前对不同来源的原始数据对象实施数据间的横向、数据内的纵向、数据外的外部交叉策略,对数据进行充分的关联加工后入库存储,实现数据最大程度的多维检查、合并操作的基于插件处理的数据装配方法。
本发明的基本构思为:基于插件处理的数据装配办法,面向的是不同来源的相关业务原始数据对象,设计渠道多步骤加工和阶段稽核的统一过程,抛弃以往传统数据无序加工的方式(依靠程序或存储过程专项进行),通过定义和梳理出业务数据间横向维、业务数据内纵向维、跨多业务数据联动其它斜向维的数据特征,从多个角度观察,依靠业务人员定义策略和加工规则,形成对数据的360°全方位稽核,从而建立一种360°稽核的思想,简单来说,这种思想主要是利用不同维度观察数据内涵,落实到对应不同类型插件上承载不同类型的稽核操作。具体做法为,对单一业务数据文件对象与标准待装配数据的关系进行深入递进分析,即与当前其他业务同质数据的横向关系,与同类文件历史数据的纵向关系,与其他业务间接的引申关系(通过多个交叉数据提取结果),对数据加工关系进行充分定义,在此基础上运用“插件化”的技术进行流水加工,汇总、更新相关数据,通过“渠道表动态自定义”的手段,即每个业务渠道套表不需事前规划限定,当前渠道表名称和字段的名称、类型、大小、个数等定义,只在业务接口开通前按需通过页面动态建立,最终外部数据将持久化存储在对应的业务渠道各表中,解决了不同来源业务数据入库前的前置清洗(过程统一和策略自定义)和业务数据独立通道化加工存储之问题,可持续叠加出一份数据标准集。
为了解决上述技术问题,本发明提供的基于插件处理的数据装配方法,包括以下步骤:
1)、搭建功能插件,所述功能插件包括数据装载器、业务过滤器插件、横向规则比较器和纵向规则对比器,所述数据装载器,用于完成配置文件所指定的数据字段读取工作,并根据业务定义进行文件检查;所述业务过滤器,用于按通用或专用规则对业务进行特征鉴别,并依业务特征进行过滤;所述横向规则比较器,用于对同质字段的当前不同业务渠道数据比较;所述纵向规则对比器,用于对同业务渠道数据与历史数据对比;
2)、建立各业务渠道;
3)、导入数据进行清洗处理后存储:
31)、初始化工作线程与功能插件,读取业务渠道中的配置文件和规则表,获得功能插件及规则集合;
32)、启动数据提取线程获取原始数据文件,所述原始数据文件包括业务文件和交易数据文件;
33)、启动数据分拣线程加载数据装载器,获取文件并验证后根据文件的业务定义导入内存;
34)、启动业务归整线程加载业务过滤器,根据业务特征分别对数据进行格式过滤;
35)、启动稽核线程进入对数据进行稽核;
36)、启动入库线程将稽核后的数据持久化存储。
本发明中,所述功能插件还包括引申规则定义器,所述引申规则定义器用于对多个相关数据进行复杂推导加工。
本发明中,所述步骤2)中各业务渠道的建立过程为:
21)、获得业务文件的格式样本,分析文件类型、各业务字段内含和特征;
22)、增加新的渠道,定义对应的渠道业务表、工作表字段名、类型,调用脚本创建各表;
23)、定义需要的稽核器及其所运行的业务规则集合,描述各业务子规则工作对象字段和策略方法;
24)、配置渠道控制参数和数据装配的参数文件;
25)、启用渠道,开放接口,导入业务数据文件。
本发明中,所述步骤35)的数据稽核具体过程为:
所述步骤35)的具体过程为:
351)、稽核第一阶段:加载横向规则比较器插件,依次取出规则对象,稽核与其他业务的同质字段一致性,进行算术或逻辑运算;
352)、稽核第二阶段:完成步骤351)后,加载纵向规则对比器插件,检查各原始表的数据和同一业务渠道历史表的数据,确定所述数据的有效状态,并进行相互关系判断。
本发明中,所述步骤35)的数据稽核具体过程还包括:
353)、稽核第三阶段:完成步骤352)后,根据定义,选择加载引申规则定义器插件,检查指定关联业务表、关联字段、转化规则关系,执行高阶加工的指定逻辑动作。
本发明的有益效果在于:(1)、本发明数据清洗过程使用插件化,采用灵活的规则和业务关系自定义方式,使每个业务数据文件在本通道内得到全面的入库前稽核,多个业务并行,最终形成单一指定业务目标的唯一准确基础表,也可以根据数据追踪用户不同业务历史变更轨迹,其不需要对数据进行复杂的后期加工和整理,不断推进数据的准确性,扩展了数据的渠道信息量;(2)、本发明中各线程和功能插件间配合运行,系统中插件的实际存在方式是动态库组件,由不同的工作线程启动后调用,工作线程只独立运行于一个渠道系统之中,串行处理,以防止数据交叉和不一致,但不同渠道系统之间并行运行,线程无关,不发生直接约束,提升了数据的准确率和可信度;(3)、本发明方法有利于随时不断增加新业务渠道,在不必变更数据和程序的情况下,方便且灵活的扩大样本范围,推动数据结果的准确性。
具体实施方式
下面以市民卡业务为例结合附图对本发明作进一步详细说明。
为了实施本发明的数据装配方法,需要进行“插件化”和渠道参数设置(包含“渠道表动态自定义”创建过程)两项准备过程,最终通过程序自动对数据进行5步骤3阶段的清洗和稽核动作。
第一项准备工作:“插件化”。需要组织开发功能插件,以完成对数据的“360°稽核”,其中功能插件分5个,对应功能为:
①数据装载器,完成配置文件所指定的数据字段读取工作,并根据业务定义进行文件检查,数据装载器的工作流程如图2所示。主要内容为通过线程控制数据装载器的启停,同一渠道内部只能串行运行,防止数据交叉,数据装载器CLoadData类实例对象作为工作区域,每次数据装载前会清空,subBussinessFormMap容器负责从参数配置文件对应的CChannelCfg类对象实例中提取待加工数据文件特征,区分普通数据文件或汇总记录文件(可以有多种类型文件共同组成),将文件的内容映射至容器中,同时检查文件的相关合法性和业务完整性,若有错误触发告警,当文件特征或内容格式发生变化时,可以通过强制刷新重启数据装载器,从而重新构建CLoadData和subBussinessFormMap对象。
②业务过滤器,完成通用和专用规则鉴别,并依业务特征进行粗过滤,此步骤主要为了后期不同数据类型的同质数据处理,其工作流程如图3所示。主要内容同上为串行运行,即与同一业务渠道内其他线程形成上下约束关系,当本线程运行时相关联的上下线程必须处于停止状态,防止数据干扰,但不同渠道间线程无关,通过线程控制业务过滤器的启停,首次运行将新建业务过滤器CBussinessFilter类实例对象,每次插件工作前会清空该对象,保障工作区域的有效性,然后从数据库中业务过滤器内容表TD_RULECHANGE取出外部、内部字段值及业务对象号ID、业务对象号类型等配置内容,根据业务对象号类型来区分出通用型(如第三方交易数据)和市民卡专项型,对应构建通用业务对象集或市民卡专项业务对象集,在完成以上初始化环境步骤后,开始接受业务过滤请求,根据业务对象加工数据,主要是对数据大小、长度、范围、类型、格式,进行常规处理,为下一阶段的数据加工,提供规范数据,同时若接收到业务过滤器内容表变更消息或其他重要变化,触发强制刷新重启业务过滤器,重新构建插件工作环境。
③横向规则比较器,对固定字段进行算术比较、逻辑比较,其工作流程如图4所示;主要内容为同上为串行运行,通过线程控制横向规则比较器的启停,首次运行将新建横向规则比较器CFixedRuleFilter类实例对象,每次插件工作前会清空该对象,保障工作区域的有效性,然后从固定值定义表TD_V ALUECOMPARE取出当前渠道所有算术比较、逻辑比较横向规则对象号RID、值域范围、比较方式,置入fixedValueRuleMap容器中,从固定字段定义表TD_RULECOMPARE,取出当前渠道所属对比表、字段、比较方式,置入fixedFieldRuleMap容器中,检查横向规则比较器中各规则对象关系是否有效,无效告警休眠,错误记入CLKLog类对象,若有效则完成横向规则比较器的初始化环境搭建,开始接受业务稽核请求(第1阶段),根据横向规则对象稽核数据,主要是对不同业务渠道的同质数据进行数据大小、逻辑与或非操作,根据结果更新数据库内相关表信息,同时若接收到相关规则参数表变更消息或其他重要变化,触发强制刷新重启业务过滤器,重新构建插件工作环境。
④纵向规则对比器,对比当前子业务的当前快照表、历史表,进行业务前置、互斥关系、时间关系等判断,其工作流程如图5所示;主要内容为同上为串行运行,通过线程控制纵向规则对比器启停,首次运行将新建纵向规则对比器CDynamicRuleFilter类实例对象,每次插件工作前会清空该对象,保障工作区域的有效性,然后从CChannelFiles实例对象中获取当前渠道操作对象表,从TD_RULERELATION得到当前渠道所属业务前置、互斥关系,时间关系,置入dynamicRuleMap容器中,检查纵向规则对比器中各规则对象关系是否有效,无效告警休眠,错误记入CLKLog类对象,若有效则完成纵向规则对比器的初始化环境搭建,开始接受业务稽核请求(第2阶段),根据纵向规则对象稽核数据,主要是对当前数据和同一业务渠道的历史数据进行前置、互斥关系、时间关系等判断,根据结果更新数据库内相关表信息,同时若接收到相关规则参数表变更消息或其他重要变化,触发强制刷新重启业务过滤器,重新构建插件工作环境。
⑤引申规则定义器,取出源、目标对象之间的规则定义,进行取字符串方式、组合方式、算术方式、推演方式等复杂的附加特定业务加工,根据需要进行选择,其工作流程如图6所示;主要内容为同上为串行运行,通过线程控制引申规则定义器的启停,首次运行将新建引申规则定义器CExtendRuleFilter类实例对象,每次插件工作前会清空该对象,保障工作区域的有效性,然后从CChannelFiles实例对象中获取当前渠道操作对象表,从引申规则定义表TD_RULEEXTEND,取出源、目标对象之间引申关系所属表、字段及数据定义方式,置入extendValueRuleMap容器中,按对象的不同类型分别构建字符串、组合、算术、推演等方式,并检查对象之间的有效性,无效告警休眠,错误记入CLKLog类对象,若有效则完成引申规则定义器的初始化环境搭建,开始接受业务稽核请求(第3阶段),根据引申规则定义器稽核数据,主要是根据业务要求对多个不同业务渠道关联数据进行相关性分析,根据结果更新数据库内相关表信息,同时若接收到相关规则参数表变更消息或其他重要变化,触发强制刷新重启业务过滤器,重新构建插件工作环境。
以上5个插件,由渠道提供独立工作的线程管理各插件,在不同工作步骤和阶段环节中加载,共同形成“5步骤,3阶段”数据装配总体流程,如图1所示;5步骤对应5个控制线程:提取、分拣(内调数据装载器)、归整(内调业务过滤器)、稽核(分三个阶段,按需调用前文针对数据稽核的另三个插件)、入库线程;5个线程中同一时刻一个线程运行时,上下相关线程必须处于停止状态;其中3阶段由稽核线程按照“360°稽核”的思想,按需加载和执行三个插件:横向规则比较器、纵向规则对比器、引申规则定义器,依次串行处理,也就是说,对于业务数据相互间的各种关联关系,可以根据当前待加入的业务渠道抽象出自定义参数配置文件,通过参数和插件配合的方式灵活调整,驱动一个或多个插件共同完成对业务数据的梳理工作,最终搭建出城市信息人口库的标准集合,持续动态更新。
第二项准备工作:渠道参数设置。是指在完成插件开发后,根据某个业务渠道的加入申请,实时建立各业务渠道,即为接口数据文件提供加工处理的通道,并且为保障该通道能准确进行数据清洗处理,需要定义配置文件和规则表(通过页面进行渠道增加、表和字段定义、规则定义,同时利用脚本动态创建本渠道各表,而渠道运行控制可在主机不同目录下复制并修改配置文件channel.cfg),以便为插件工作提供参数,为数据存储提供动态业务表。上述规则表结构因业务文件未知,而设定为不区别字段名的脚本动态创建,本发明采用“渠道表动态自定义”的手段,实现了操作员自定义配置完成,动态创建渠道表,这样可以实现插件过滤器与具体业务无关,插件过滤器调用的规则由业务人员(维护人员配合录入)预设和增加,摆脱程序的定制开发,有利用系统的后期扩展和业务增长的自适应,最终保证市民信息人口库的持续准确。其参数配置文件和业务规则表的工作流程具体如下:
①获得业务文件的格式样本,分析文件类型、各业务字段内含和特征;
②从页面增加渠道,定义对应的渠道业务表、工作表字段名、类型,利用脚本创建各表,根据业务文件数据内容修改参数配置文件(确定数据装载器和业务过滤器的工作内容);
③定义3阶段对应各稽核器所包含的规则,描述规则处理内容和策略,若加载横向规则比较器,可定义当前某业务字段与其它渠道同质字段的操作关系,进行加减、大小、时间、逻辑与、逻辑或、逻辑非等策略,确定对主基础表的更改结果;若加载纵向规则比较器,可定义当前某业务字段与历史业务字段的操作关系,可进行加减、大小、时间关系等策略,确定对当前渠道主表和历史表的更新方式;若加载引申规则定义器,可定义当前业务字段与主基础表、其它渠道主表的一个或多个字段的关联关系,进行区间判断、条件前置推导等操作,确定对主基础表和当前渠道主表的结果更新路径;
④配置渠道控制参数和数据装配的参数文件channel.cfg,按照业务文件的实际内容进行每个字段的类型、大小定义,并对各数据字段的格式检查、转换方式进行参数说明,以保障后期数据装载器从文件中正确提取数据,业务过滤器对数据进行通用格式预处理;
⑤启用渠道,开放接口,导入业务数据文件,将经过数据装配各环节的清洗后,向本渠道各表(主要为渠道业务主表、渠道交易主表、渠道业务历史表、渠道交易历史表)注入有效数据,同时更新主基础表。
最后,在上述两项准备工作完成的基础上,实施数据装配过程。在完成插件和渠道的准备工作后,可以按预定(由参数配置文件和业务规则表具体定义和描述决定)的数据装配办法,进行清洗处理。基于插件处理的数据装配办法核心是插件及其参数配置外置化,即插件只负责对指定规则定义表和参数配置文件的读取、更新、完整性和一致性检查,实际执行内容由参数配置(参数配置文件和业务规则定义表共同组成)控制;插件静态表现形式为动态库或服务(实际运行时其拥有自身的管理线程,可方便消息同步和协调一致),参数配置文件描述出当前渠道的业务字段组成和对象来源,规则定义表对每一个字段对象定义了加工策略和方法;插件需按照不同的类型进行归类,对应步骤的工作线程决定是否加载插件进入工作状态,而它的实际行为过程由对应的参数配置文件和规则定义表具体内容决定;插件在开发阶段完成事前编码,而参数配置文件和规则定义表在系统运行中根据业务发展需要适时增加。由此形成插件的统一开发与参数配置的外置化(由维护人员根据系统运行和接入需要增加),这种数据装配办法通过加载插件分别执行不同类型的清洗,这一数据装配办法的数据清洗工作流程如下:
①初始化工作线程与插件环境,读取通道配置文件channel.cfg和规则表,获得插件及规则集合,主要包含启动程序实例,根据参数配置动态构建工作环境,扫描数据源中单元文件准备开展工作;
②开展“5步3阶段”的数据清洗流程,即总体分为5个串行加工步骤,其中第4步骤稽核操作又细分为3个阶段的自定义数据清洗方式,首先进行步骤1提取操作,数据提取线程collectFile获取原始数据文件,包含业务文件和交易数据文件;
③步骤2分拣操作,数据分拣线程separationData加载数据装载器CLoadData插件,获取文件大小、创建时间、行数等属性信息,验证是否符合业务定义(即参数配置文件指定的业务字段格式、大小),正确后将指定文件按业务定义导入内存;
④步骤3归整操作,业务归整线程standardData加载业务过滤器CBussinessFilter插件,根据通用业务或专用业务对象,分别对数据进行常规格式过滤;
⑤当进入步骤4稽核操作时,稽核又被细分为3个阶段的数据清洗方式,首先启动稽核线程auditData进入稽核1阶段,加载横向规则比较器CfixedRuleFilter插件,依次取出规则对象,稽核与其他业务的同质字段一致性,进行算术或逻辑运算;
⑥上节处理结束后,进入稽核2阶段,加载纵向规则对比器CdynamicRuleFilter插件,检查各原始表、历史表的数据,确定有效状态,进行业务前置、互斥关系、时间关系等判断;
⑦完成上述两阶段的清洗后,根据稽核的阶段定义选择(是否进行其它方向附加复杂稽核),若不需要则跳过至第⑧步,若选择需要则进入稽核3阶段,加载引申规则定义器CextendRuleFilter插件,检查指定关联业务表、关联字段、转化规则关系,执行指定字符串方式、组合方式、算术方式、推演方式等深入加工的逻辑动作;
⑧最后进行步骤5入库操作,启动入库线程downStation将精细化加工后的数据持久化存储,操作业务对应的动态表,更新主基础表、渠道业务表、交易数据工作表,备份原始数据区。
通过以上的插件开发,渠道定义和配置,业务动态表创建,启动渠道开展数据清洗,即可对某类业务数据文件,进行统一数据装配办法下的加工处理,形成市民信息人口库,并且,可以在未来,通过配置,完成对新业务数据文件的处理工作,以渠道的方式加入,不需要进行反复开发工作,而其中插件化处理的数据装配办法,是保证系统实现的核心环节。
本发明涉及线程和插件配合运行,系统中插件的工作方式是拥有自身的管理线程,加载动态库组件,由不同步骤的工作线程启动后调用,工作线程只独立运行于一个渠道系统之中,串行处理,以防止数据交叉和不一致,但不同渠道系统之间并行运行,线程无关,因为不同渠道之间业务是相互区别的子类,不发生直接约束。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下还可以做出若干改进,这些改进也应视为本发明的保护范围。