关闭

dxi_hrwj配置

188人阅读 评论(0) 收藏 举报
<?xml version="1.0" encoding="gb2312" standalone="yes"?>
<config>
 <!--本地数据库连接名-->
 <dbc>laton</dbc>
 
 <!-- VSS源数据库,支持多个数据源--> 
 <vss_db>
  <item>
   <!--数据源名称 -->
   <name>vss_db</name>
   <!--BU ID-->
   <buid>13</buid>
  </item>
 </vss_db>
 
 <!-- 中间临时库 --> 
 <tmp_vss_db>tmp_vss_db</tmp_vss_db>
 <!-- 数据库schema名称 -->
 <schema_name></schema_name>
 <!-- 任务记录表扫描间隔(单位:秒) 默认:30-->
 <task_scan_interval>3</task_scan_interval>
 
 <!--公告抽取规则-->
 <noteboard_rule_id>49</noteboard_rule_id>
 
 <!--是否启动后台同步任务,0-否,1-是.默认:1-->
 <deamon_active>1</deamon_active>
 
 <!-- 任务分派方式 -->
 <task_schedule>
  <!--任务分派模式 1-每任务一个线程 2-指定 默认:1-->
  <mode>2</mode>
  <!-- 任务处理者,一个任务处理者可以处理多种类型的任务. 如未指定则由默认处理者处理-->
  <task_handler> 
   <!--thread_num:任务处理线程数-->
   <item thread_num="10">11,12</item>
   <item>31,32,33,34</item>
   <item>21,22</item>
  </task_handler>
 </task_schedule>
 
 <!-- 任务类型和单据类型映射配置-->
 <task_data_map>
  <!--任务项 -->
  <item>
   <!--任务类型-->
   <taskid>51</taskid>
   <!-- 单据类型-->
   <data_type>1050</data_type>   
   <!--是否同步,不同步则直接抽取导入,默认:true -->
   <do_sync>true</do_sync>
   <!--键模式 1-任务键值表决定(默认) 2-根据任务键值查找业务对象,逐一删除 3-指定列直接删除 -->
      <key_mode>3</key_mode>
      <!--键字段,多个字段用","分隔-->
   <key_field>shopid</key_field>
   
    <!-- 每个任务的定义-->
   <task_define>  
    <!--任务相关表-->
    <tables>
     <table>
      <!--表名称 -->
      <name>PURCHASE0</name>
      <!--select字段列表 *表示全部 -->
      <field>*</field> 
     </table>
     <table>
      <name>PURCHASE</name>
      <field>*</field> 
     </table>
     <table>
      <name>PURCHASEITEM</name>
      <field>*</field> 
     </table>            
    </tables>
    <!-- 关系描述-->
    <relations>   
     <relation>purchase0.SHEETID=purchase.REFSHEETID</relation>
     <relation>purchase.SHEETID=purchaseitem.SHEETID</relation>
    </relations>
   </task_define>
  </item>     
 </task_data_map> 
</config>

同步过程对已存在数据的更新时,需要删除原来的数据然后插入。

删除原数据的条件有3种情况:

1.用MSCMTASKLIST任务对应的MSCMTASKKEY的字段
如订单,任务指明了是哪张订单
2.使用配置文件的<key_field>
如商品资料,任务表的键值列为touchtime,表示源表此列等于给定值的记录需要更新(新增或修改),但具体哪些商品资料变化,则在从源表查询时才能确定。
而中间库的记录的touchtime是上次记录的值,无法用来定位当前需要更新的记录。
而只能采用表示业务对象(如商品)的键值列(如goodsid).
此情况在从源表根据touchtime查出商品列表后,再根据这些商品的编码(goodsid)逐一删除。

3.指定删除键值列
如日库存,任务键值列为shopid,releasedate.但删除时可以按shopid删除(实际删除的是历史数据,只保留每个门店的最新数据)。


<key_mode>3</key_mode> <!--键模式 1-任务键值表决定(默认) 2-根据任务键值查找业务对象,逐一删除 3-指定列直接删除 -->
<key_field>shopid</key_field>

。对于已经配置了<key_field>的任务(基础资料),增加<key_mode>2</key_mode>.
对于日库存,按上述方式配置。

 


 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:155962次
    • 积分:3516
    • 等级:
    • 排名:第7959名
    • 原创:194篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类
    最新评论