版本验证
系统启动时加载spring-version-validate.xml中的配置,入口方法为versionValidata,完成注入后,进行版本验证,验证不通过则终止程序。
程序主入口:
根据web.xml中的配置,系统成功启动后运行的servlet的init方法。
Init方法中:
设置系统启动时间
注册JDBC
读取数据集配置文件:
根据spring-dataset-build-ucr.xml中的配置,配置文件从本地路径下获取,或者从UCR中获取。在application.properties属性文件中可手动配置。解析XML文件,每个XML文件对应封装为一个ProcessInstance对象,缓存所有的配置文件信息到
ApplicationUtils的List<ProcessInstance>属性中
4.初始化线程池
pool-bean.xml,根据属性文件中的配置,注入线程初始化的基本参数。
加载库表结构
加载字典
开启Scheduler定时任务,进行业务处理。
根据entity-bean.xml , spring-quartz.xml中的配置
JOB开启时,执行inspectionThread的protal()方法。
根据属性文件中的 进行调度表达式配置。在JOB中另配有定时清理日志的任务功能
线程处理数据集:
1).定时任务的protal()方法中,循环所有ProcessInstance,即数据集对象,每个数据集开启一个线程,JobThread中多个run()同时执行,多线程同步数据。每个数据集的
作为成员变量绑定到线程中。
2).根据数据集配置中的dczSQL提取待同步的数据,装载insertList(待同步到运行库的数据行),deleteList(准备去带删除的数据行)。
3).根据数据集配置文件中配置的处理器,按顺序进行数据行的处理。(按需配置)
3.1)DisponseRepeatHandler (重复数据处理,分割insertlist,updatelist)
清除insertlist中的重复数据,按主键去重。
根据insertlist 数据行的主键查询对应运行库的数据
处理运行库重复数据,处理完成后,insertlist是待插入ehr的数据,updatelist是 待更新的ehr的数据
3.2)CleanHandler(清洗准备区中不规则的数据)
循环insertlist和updatelist中的每条数据行,判断是否匹配数据规则,
不匹配存入errorlist中,并把不匹配的数据从insertlist何updatelist中移除
3.3)ConverterHandler (转换ZXID,空串和空日期)
序列生成HER库对应数据集的ZXID,替换准备区insertlist的ZXID
转换新增 和更新数据中的空串
加载运行库表结构,若列是字符型或日期型且列不是主键,复合字段,不是 伪列,且列值为空时,进行列值的转换
3.4)CompoundFieldHandler (复合字段拆分处理器)
根据数据集配置文件封装的对象
instance.getProcessEntity().getSplits()获取处理拆分字段封装的基本参数
处理新增记录的拆分字段
处理更新记录的拆分字段
3.5)EHRDBHandler(与运行库交互,执行插入,更新动作)
3.6)DCZYCHandler(与异常库交互,执行插入动作)
3.7)DeleteDCZHandler(删除准备区数据)