最近在整理之前的同步的kettle代码,现把之前的kettle同步的思路记录在此。
1.同步流程图,下图是同步的整个流程图

2.外部的数据表,根据业务逻辑更新到服务器端的业务表,下图是其中的一个示例图:

这个的思路是:获取最新需同步的数据、分别查出药品分类ID、药品分类与分类关联ID以及药品ID(不存在,则生成新的UUID)、查询数据库中药品分类ID的记录数是否存在(即是否不为0)、首先插入或更新药品分类表
如果药品分类表中无该条记录,则通过同步标识字段查询出新插入的药品分类ID、插入药品分类关联表、插入药品表;
如果药品分类表中有改条记录,则更新药品分类关联表、更新药品表、更新药品批号表、更新处方表;
下面是这个同步的全部xml:
updateHisDrugData Normal 0 /updateServerData/commonData
ID_BATCH Y ID_BATCH CHANNEL_ID Y CHANNEL_ID TRANSNAME Y TRANSNAME STATUS Y STATUS LINES_READ Y LINES_READ LINES_WRITTEN Y LINES_WRITTEN LINES_UPDATED Y LINES_UPDATED LINES_INPUT Y LINES_INPUT LINES_OUTPUT Y LINES_OUTPUT LINES_REJECTED Y LINES_REJECTED ERRORS Y ERRORS STARTDATE Y STARTDATE ENDDATE Y ENDDATE LOGDATE Y LOGDATE DEPDATE Y DEPDATE REPLAYDATE Y REPLAYDATE LOG_FIELD Y LOG_FIELD
ID_BATCH Y ID_BATCH SEQ_NR Y SEQ_NR LOGDATE Y LOGDATE TRANSNAME Y TRANSNAME STEPNAME Y STEPNAME STEP_COPY Y STEP_COPY LINES_READ Y LINES_READ LINES_WRITTEN Y LINES_WRITTEN LINES_UPDATED Y LINES_UPDATED LINES_INPUT Y LINES_INPUT LINES_OUTPUT Y LINES_OUTPUT LINES_REJECTED Y LINES_REJECTED ERRORS Y ERRORS INPUT_BUFFER_ROWS Y INPUT_BUFFER_ROWS OUTPUT_BUFFER_ROWS Y OUTPUT_BUFFER_ROWS
ID_BATCH Y ID_BATCH CHANNEL_ID Y CHANNEL_ID LOG_DATE Y LOG_DATE LOGGING_OBJECT_TYPE Y LOGGING_OBJECT_TYPE OBJECT_NAME Y OBJECT_NAME OBJECT_COPY Y OBJECT_COPY REPOSITORY_DIRECTORY Y REPOSITORY_DIRECTORY FILENAME Y FILENAME OBJECT_ID Y OBJECT_ID OBJECT_REVISION Y OBJECT_REVISION PARENT_CHANNEL_ID Y PARENT_CHANNEL_ID ROOT_CHANNEL_ID Y ROOT_CHANNEL_ID
ID_BATCH Y ID_BATCH CHANNEL_ID Y CHANNEL_ID LOG_DATE Y LOG_DATE TRANSNAME Y TRANSNAME STEPNAME Y STEPNAME STEP_COPY Y STEP_COPY LINES_READ Y LINES_READ LINES_WRITTEN Y LINES_WRITTEN LINES_UPDATED Y LINES_UPDATED LINES_INPUT Y LINES_INPUT LINES_OUTPUT Y LINES_OUTPUT LINES_REJECTED Y LINES_REJECTED ERRORS Y ERRORS LOG_FIELD N LOG_FIELD
0.0 0.0 10000 50 50 N Y 50000 Y N 1000 100 - 2012/11/15 14:27:53.963 - 2013/02/05 09:53:33.010 backupConn localhost ORACLE Native orcl 1521 backup Encrypted 2be98afc86aa7f2e4cb79ac71dd99baca FORCE_IDENTIFIERS_TO_LOWERCASEN FORCE_IDENTIFIERS_TO_UPPERCASEN IS_CLUSTEREDN PORT_NUMBER1521 QUOTE_ALL_FIELDSN SUPPORTS_BOOLEAN_DATA_TYPEN USE_POOLINGN hisConn his.com ORACLE Native orcl 1521 his Encrypted 2be98afc86aa7f2e4cb79ce10be9aa6c9 FORCE_IDENTIFIERS_TO_LOWERCASEN FORCE_IDENTIFIERS_TO_UPPERCASEN IS_CLUSTEREDN PORT_NUMBER1521 QUOTE_ALL_FIELDSN SUPPORTS_BOOLEAN_DATA_TYPEN USE_POOLINGN serverConn server.iwmds.rdh.com ORACLE Native orcl 1521 qdias Encrypted 2be98afc86aa7f2e4cb79ce61da9baec9 FORCE_IDENTIFIERS_TO_LOWERCASEN FORCE_IDENTIFIERS_TO_UPPERCASEN IS_CLUSTEREDN PORT_NUMBER1521 QUOTE_ALL_FIELDSN SUPPORTS_BOOLEAN_DATA_TYPEN USE_POOLINGN wardConn ward.iwmds.rdh.com ORACLE Native xe 1521 ward Encrypted 2be98afc86aa7f2e4cb79ce10c993bdde FORCE_IDENTIFIERS_TO_LOWERCASEN FORCE_IDENTIFIERS_TO_UPPERCASEN INITIAL_POOL_SIZE50 IS_CLUSTEREDN MAXIMUM_POOL_SIZE500 PORT_NUMBER1521 QUOTE_ALL_FIELDSN SUPPORTS_BOOLEAN_DATA_TYPEN USE_POOLINGY 值映射 数据库查询V_DRUG_CLASS_STRUCT_ID Y 增加常量 调用DB存储过程V_DRUG_CLASS_ID Y 插入 / 更新IWMDS_DRUG_CLASS 过滤记录 Y 插入 / 更新IWMDS_DRUG_DETAIL 更新 IWMDS_DRUG_BATCH Y