DPS流程说明

  1.        版本验证

系统启动时加载spring-version-validate.xml中的配置,入口方法为versionValidata,完成注入后,进行版本验证,验证不通过则终止程序。

 

  1.        程序主入口:

根据web.xml中的配置,系统成功启动后运行的servletinit方法。

 

 

Init方法中:

  1.        设置系统启动时间

  2.        注册JDBC

  3.        读取数据集配置文件:

根据spring-dataset-build-ucr.xml中的配置,配置文件从本地路径下获取,或者从UCR中获取。在application.properties属性文件中可手动配置。解析XML文件,每个XML文件对应封装为一个ProcessInstance对象,缓存所有的配置文件信息到

ApplicationUtilsList<ProcessInstance>属性中

 

4.初始化线程池

         pool-bean.xml,根据属性文件中的配置,注入线程初始化的基本参数。

        

  1. 加载库表结构

  2. 加载字典

  3. 开启Scheduler定时任务,进行业务处理。

    根据entity-bean.xml   spring-quartz.xml中的配置

JOB开启时,执行inspectionThreadprotal()方法。

根据属性文件中的 进行调度表达式配置。在JOB中另配有定时清理日志的任务功能

 

 

  1.        线程处理数据集:

1.定时任务的protal()方法中,循环所有ProcessInstance,即数据集对象,每个数据集开启一个线程,JobThread中多个run()同时执行,多线程同步数据。每个数据集的

作为成员变量绑定到线程中。

 

2.根据数据集配置中的dczSQL提取待同步的数据,装载insertList(待同步到运行库的数据行)deleteList(准备去带删除的数据行)

3.根据数据集配置文件中配置的处理器,按顺序进行数据行的处理。(按需配置)

         3.1DisponseRepeatHandler (重复数据处理,分割insertlistupdatelist

             清除insertlist中的重复数据,按主键去重。

             根据insertlist 数据行的主键查询对应运行库的数据

             处理运行库重复数据,处理完成后,insertlist是待插入ehr的数据,updatelist                                  待更新的ehr的数据

         3.2CleanHandler(清洗准备区中不规则的数据)

                       循环insertlistupdatelist中的每条数据行,判断是否匹配数据规则,

                       不匹配存入errorlist中,并把不匹配的数据从insertlistupdatelist中移除

         3.3ConverterHandler (转换ZXID,空串和空日期)

             序列生成HER库对应数据集的ZXID,替换准备区insertlistZXID

             转换新增 和更新数据中的空串

                       加载运行库表结构,若列是字符型或日期型且列不是主键,复合字段,不是                      伪列,且列值为空时,进行列值的转换

         3.4CompoundFieldHandler (复合字段拆分处理器)

                   根据数据集配置文件封装的对象

                   instance.getProcessEntity().getSplits()获取处理拆分字段封装的基本参数

                   处理新增记录的拆分字段

                   处理更新记录的拆分字段

                  

    3.5EHRDBHandler(与运行库交互,执行插入,更新动作)

    3.6DCZYCHandler(与异常库交互,执行插入动作)

    3.7DeleteDCZHandler(删除准备区数据)