1.一种基于双轨保证生产机制的自动网络激活系统,其特征在于,包括:
工单接收模块,用于进行报文接收、报文持久化、报文解析、节点验证、定单对象生成工作;
工单分解模块,用于进行定单对象获取、规则解析、工单生成、数据持久化工作;
工单调度模块,用于进行工单调度、子单调度工作;
网元施工模块,用于进行指令构造、网元交互、结果解析工作;
工单报竣模块,用于进行回复器生成、回单唯一性控制、回单报文构造工作;
内存数据库通道,用于通过内存数据库优先支撑工单流转;
传统数据库通道,用于在所述内存数据库出现异常时,通过传统数据库支撑工单继续流转;
工单清除模块,用于处理工单完成后或者工单异常转入传统数据库通道之后,将内存数据库中的工单缓存数据清除;
在所述内存数据库通道中,所述工单接收模块通过内存数据库定单队列与所述工单分解模块进行交互,所述工单分解模块通过内存数据库工单施工队列与所述工单调度模块进行交互,所述工单调度模块分别通过内存数据库网元施工队列、内存数据库网元施工完成队列与所述网元施工模块进行交互,所述工单调度模块通过内存数据库工单完成队列与所述工单报竣模块进行交互;
在所述传统数据库通道中,所述工单接收模块通过传统数据库中间表与所述工单分解模块进行交互,所述工单分解模块通过传统数据库中间表与所述工单调度模块进行交互,所述工单调度模块通过传统数据库中间表分别与所述网元施工模块、所述工单报竣模块进行交互。
2.根据权利要求1所述的一种基于双轨保证生产机制的自动网络激活系统,其特征在于,所述工单接收模块的工作流程包括以下步骤:
s11:接收上游系统报文请求;
s12:校验报文关键节点信息;
s13:持久化消息;
s14:构造定单对象放入定单队列。
3.根据权利要求2所述的一种基于双轨保证生产机制的自动网络激活系统,其特征在于:在所述工单接收模块的工作流程中,若传统数据库异常,不影响工单执行,工单照常在内存数据库中执行,并将该模块内涉及到操作传统数据库的sql语句即持久化消息sql语句保存到hbase中,并标记为消息表备份sql,等传统数据库恢复正常再从hbase中获取对应sql语句进行消息表数据恢复;若内存数据库出现异常,即表现为入定单队列异常,此时向传统数据库sws_redis_error表记录一条数据,后续工单分解模块在传统数据库通道中取单线程轮询扫描sws_redis_error表中记录为入定单队列异常未处理的数据,此异常数据中记录的内存数据库通道中的异常工单后续进入所述工单分解模块传统数据库通道中,此后该工单全部在传统数据库通道中完成整个工单的流转;sws_redis_error表为传统数据库的表,其中记录的全部是入定单队列异常的定单。
4.根据权利要求3所述的一种基于双轨保证生产机制的自动网络激活系统,其特征在于:所述工单分解模块包括内存数据库工单分解单元、传统数据库工单分解单元、工单分解数据同步单元;
所述内存数据库工单分解单元的工作流程包括以下步骤:
s21:从定单队列中取定单对象;
s22:规则分解生成工单对象、子单对象、工单参数对象;
s23:将工单对象、子单对象、工单参数对象存放在内存数据库缓存区;
s24:将工单对象、子单对象、工单参数对象同时放入工单分解模块传统数据库数据同步队列,后续由工单分解数据同步单元从该队列获取到工单对象、子单对象、工单参数对象,并在传统数据库持久化工单对象、子单对象、工单参数对象;
s25:判断工单是否为失败单,失败单不再继续处理;
s26:将非失败单工单号放入工单施工队列;
所述传统数据库工单分解单元用于扫描读取sws_redis_error表中入定单队列异常的数据并生成定单对象,生成的定单对象进入传统数据库通道流转;
所述工单分解数据同步单元用于从工单分解模块传统数据库数据同步队列中获取工单对象、子单对象、工单参数对象,并在传统数据库持久化工单对象、子单对象、工单参数对象。
5.根据权利要求4所述的一种基于双轨保证生产机制的自动网络激活系统,其特征在于:在所述内存数据库工单分解单元的工作流程中,若与内存数据库缓存交互异常,则记录到传统数据库缓存清除中间表中,通知所述工单清除模块清除工单相关缓存,并将数据同步至传统数据库,同时记录到sws_redis_error表中;若传统数据库中插入数据异常,此时内存数据库缓存已经生成,将产生的sql语句拼接完成放入指定的传统数据库异常恢复队列,待传统数据库恢复后,将异常恢复队列中的数据重新导入到传统数据库中。
6.根据权利要求1所述的一种基于双轨保证生产机制的自动网络激活系统,其特征在于:所述工单调度模块包括内存数据库工单调度单元、传统数据库工单调度单元、工单调度数据同步单元;
所述内存数据库工单调度单元的工作线程分为两类,分别为工单调度线程与子单调度线程;
所述工单调度线程包括以下步骤:
s31:从工单施工队列中取工单号;
s32:根据工单号从内存数据库缓存中获取工单详细信息;
s33:判断该工单下未完成子单数量,如果未完成子单数量为0,则丢入工单完成队列,由工单报竣模块进行后续处理;如果未完成子单数量不为0,则将未完成子单加入子单对应的网元施工队列;
s34:将工单调度过程中产生的sql语句丢入工单调度模块传统数据库数据同步队列,由工单调度数据同步单元后续从该队列获取sql语句同步到传统数据库中;
所述子单调度线程包括以下步骤:
s41:从网元施工完成队列取出子单号;
s42:将该子单号从内存数据库缓存中的执行子单集合中删除;
s43:根据当前子单状态处理后置子单,当前子单执行成功,更新后置子单列表,并判断该子单对应的工单下是否仍有未完成子单,若无未完成子单,将该子单号对应的工单号丢入工单完成队列,后续由工单报竣模块继续处理该工单,若存在未完成子单,继续调度未完成子单,将未完成的子单丢入对应网元施工队列;当前子单执行失败,将当前子单和后置子单状态修改为待人工;
s44:将子单调度过程中产生的sql语句丢入工单调度模块传统数据库数据同步队列,由工单调度数据同步单元后续从该队列获取sql语句同步到传统数据库中;
所述传统数据库工单调度单元的工单业务操作逻辑与所述内存数据库工单调度单元相同,区别在于步骤s31的起始取单操作改为从传统数据库wo_redis_error表取单,传统数据库工单调度单元完成工单处理后,该工单的后续流程全部进入各模块的传统数据库通道执行;此处的wo_redis_error表中记录包含了放入工单施工队列异常的工单号、放入网元施工完成队列异常的子单号、内存数据库工单调度单元操作过程中异常的工单号或子单号;
所述工单调度数据同步单元用于从工单调度模块传统数据库数据同步队列获取sql语句同步到传统数据库中。
7.根据权利要求6所述的一种基于双轨保证生产机制的自动网络激活系统,其特征在于:在所述内存数据库工单调度单元的两类工作线程中,若执行过程中任一步骤时与内存数据库交互异常,则将该工单记录到wo_redis_error表中,标记为内存数据库工单调度环节异常单或内存数据库子单调度环节异常单,此后该工单后续流程由传统数据库工单调度单元处理。
8.根据权利要求6所述的一种基于双轨保证生产机制的自动网络激活系统,其特征在于,所述网元施工模块包括内存数据库网元施工单元、传统数据库网元施工单元、网元施工数据同步单元;
所述内存数据库网元施工单元的工作流程包括以下步骤:
s51:从网元施工队列获取子单号;
s52:根据子单号去内存数据库缓存中查询获取对应子单相关信息;
s53:根据子单信息、提前加载的指令模板转换为实时指令报文;
s54:通过网元交互,执行指令,对结果进行解析;
s55:记录指令执行成功或失败的相关信息,将子单号丢入网元施工完成队列,由工单调度模块子单调度线程继续处理;
s56:将网元施工过程中产生的sql语句丢入网元施工模块传统数据库数据同步队列,由网元施工数据同步单元后续从该队列获取sql语句同步到传统数据库中;
所述传统数据库网元施工单元的工单业务操作逻辑与所述内存数据库网元施工单元相同,区别在于步骤s51的起始取单操作改为从传统数据库wo_redis_error表取单,网元施工模块完成此工单的处理后,该工单的后续流程全部走各模块的传统数据库通道执行;此处的wo_redis_error表中记录包含了丢入网元施工队列异常的子单号、内存数据库工单调度单元工单调度线程处理异常的子单号;
所述网元施工数据同步单元用于从网元施工模块传统数据库数据同步队列获取sql语句并同步到传统数据库中。
9.根据权利要求8所述的一种基于双轨保证生产机制的自动网络激活系统,其特征在于:在所述内存数据库网元施工单元的工作流程中,若执行过程中任一步骤时与内存数据库交互异常,则将该工单记录到wo_redis_error表中,标记为内存数据库网元施工环节异常单,此后该工单后续流程由传统数据库网元施工单元处理。
10.根据权利要求9所述的一种基于双轨保证生产机制的自动网络激活系统,其特征在于:所述工单报竣模块包括内存数据库工单报竣单元、传统数据库工单报竣单元、工单报竣数据同步单元;
所述内存数据库工单报竣单元的工作流程包括以下步骤:
s61:从工单完成队列中取出工单号;
s62:判断内存数据库缓存中工单对象是否存在,如果不存在,将工单号插入传统数据库中间表中,记录为内存数据库工单报竣环节异常单,后续该工单处理流程切换至传统数据库通道,如果存在,继续进行;
s63:根据工单来源创建不同的回复器;
s64:如果回复成功,判断传统数据库中工单信息是否存在,以工单分解拆分工单后插入的最后一张工单参数表是否有数据为依据,如果有数据则说明传统数据库中数据已插入,只进行修改,如果传统数据库中不存在数据,则将内存数据库缓存中所有工单数据获取到进行传统数据库同步操作;
s65:将工单报竣过程中产生的sql语句丢入工单报竣模块传统数据库数据同步队列,由工单报竣数据同步单元后续从该队列获取sql语句同步到传统数据库中;
所述传统数据库工单报竣单元的工单业务操作逻辑与所述内存数据库工单报竣单元相同,区别在于步骤s61的起始取单操作改为从传统数据库中间表取标记为内存数据库工单报竣环节异常单的记录;
所述工单报竣数据同步单元用于从工单报竣模块传统数据库数据同步队列获取sql语句,并同步到传统数据库中。
在所述内存数据库工单报竣单元的工作流程中,若执行过程中任一步骤时与内存数据库交互异常,则将该工单记录到传统数据库wo_redis_error表中,并标记为内存数据库工单报竣环节异常单,此后该工单后续流程由传统数据库工单报竣单元处理。