需要建立2条流程,分别是sh2bj和sz2bj
1、流程sh2bj
1)总体流程如下:从SH_Person表(位于sh_ds数据源中)中获取数据(只有sh_id,sh_name,sh_sex三个字段)。其中需要进行字段映射,将sh_idbj_id,sh_namebj_name,sh_sexbj_sex。此时不再存在sh_sex字段,已经改名成bj_sex,进行值映射,将bj_sex字段的值“male”和“female”分别转换成1和0。
2)其中“开始”“结束”节点基本上不用配置,“合并”“分支”节点需要配置路由类型:“xor”。
3)“连接”配置:在图33标识的“连接1”和“连接2”中需要配置“条件脚本” 。
“连接1” :
“连接2”:
4)“表输入”配置:选择sh_ds数据源,点击“获取SQL查询语句”,选中SH_Person表。在select语句中去掉不需要的字段(sh_phone、sh_address)。
5)“字段映射”配置:由于北京的字段名和上海的字段名不一样,故需要转换。从sh_idbj_id,sh_namebj_name,sh_sexbj_sex。其中目标数据源、Schema、目标表只是作为一种辅助手段帮助用户获取正确的目标字段,可以不填。当目标字段类型不指定的时候表示:目标字段的类型和源字段类型一致。
6)“值映射”配置:由于字段映射已经将sh_sex改名成为bj_sex。由于需要将bj_sex里面的male1,female0,即StringInt。因字段名相同,故目标字段留空,若目标字段类型留空,表示源字段与目标字段的类型是一致的。
7)“表输出”配置:上海的数据同步到北京的BJ_Person,故源表选择SH_Person;目标数据源为bj_ds的dbo.BJ_Person。冲突策略存在于插入、更新、删除三种操作中:(注:冲突情况可能发生在以下场景:若BJ_Person表已经存在一条记录A,设主键为id=idA,现在SH_Person经过转换后有条记录B,其主键id=idA需要插入或更新到BJ_Person表中,此时主键相同的记录A和记录B就存在这冲突)。
“插入” :“覆盖”将B记录覆盖A记录;“非空值合并”将A记录中字段为NULL的用B记录相应的值替代;“忽略”丢弃B记录。
“更新” :“覆盖”将B记录覆盖A记录;“合并”将A记录中字段为NULL的用B记录相应的值替代;“忽略”丢弃B记录。
“删除” :“直接删除” ,“主键外字段置空” ,“忽略”。
通常情况下,到了表输出组件,SH_Person的字段已经变成与BJ_Person一样了。
8)生成组件实例:参考后面的生成实例并发布
首先,通过集中生成方式生成实例,sh_input表输入组件生成实例sh_input_sh2bj,并发布到SH_Client下的“服务”下的“demo” ,其他表输出、字段映射、值映射组件生成的实例如下。
然后,提交生成的实例。完成之后查看ESB网络管理,会在相应的“demo”目录下找到生成的实例,与提交数据源类似地,将生成的实例提交到服务器上。
2、流程sz2bj
1)从SZ_Person表(位于sz_ds数据源中)中获取数据(只有sz_id, sz_address, sz_phone三个字段)。其中需要进行字段映射,将sz_idbj_id,sz_addressbj_address,sz_phonebj_phone。同时需要将深圳的数据与上海的数据进行合并存放在北京数据库中。总体流程如下图:
2)其中“开始”、“结束”、“分支”、“合并”、“连接1”、“连接2”的配置类似于sh2bj流程的配置。
3)“表输入”配置:选择sz_ds数据源,点击“获取SQL查询语句” ,选中SZ_Person表。在select语句中去掉不需要的字段(sz_sex、sz_name)。
4)“字段映射”配置:由于北京的字段名和深圳的字段名不一样,故需要转换。从sz_idbj_id,sh_phonebj_phone,sz_addressbj_address。
5)“表输出”配置:这里采取合并策略,将深圳的数据合并到北京数据库中。
6)生成组件实例:参考后面的生成实例并发布及sh2bj流程中实例的生成。将sz_input组件发布到SZ_Client下的“服务”下的“demo”目录,其它组件发布到BJ_Server下的“服务”下的“demo”目录。生成实例之后将其提交到服务器上。