免费一级A片不卡视频_欧美日本综合视频一区_五月天黄色网_在线日韩乱人伦_国产精品动漫久久www_人妻三级日本香港三级极99_自拍偷拍亚洲熟女精品视频_西西大胆高清人体在线

# 8.數據同步

TIP

在單據模型中的業務邏輯-數據同步模塊,可以實現將單據數據同步到數據庫表中,也可以同步到ES中

# 同步到自定義數據表:NkDocSQLDataSync

# 目標

TIP

目標 為寫入目標數據庫表

目標數據庫表必須在主數據源下,如MySQL為同一個數據庫,Oracle為同一個用戶下的可寫視圖;

# 條件

TIP

配置SpEL表達式,當結果為true時才進行數據同步

# 重建

TIP

默認情況下,數據同步配置僅在單據保存時觸發;

重建開關打開后,在每次手動觸發同步功能時均會執行數據映射的操作;

# 數據源

TIP

數據源是一個EL表達式,它的結果將作為主鍵配置字段映射模板的EL上下文

以下例子展示將卡片NkCardGrid作為數據同步的數據源

data.NkCardGrid
1

# 主鍵規則模板

TIP

數據同步功能根據數據表主鍵的值來判斷數據的插入或更新操作;

以下例子展示數據表的主鍵為KEY1,主鍵的數據獲取數據源行項目中的KEY1字段

{
  "KEY1": "${#row.KEY1}"
}
1
2
3

# 字段映射模板

TIP

數據同步功能根據數據表主鍵的值來判斷數據的插入或更新映射模板中的字段;

不在映射模板中的字段,不會被修改;

{
  "KEY2": "${#row.KEY2}",
  "KEY3": "${#row.KEY3}"
}
1
2
3
4

# 同步到搜索引擎:NkDocESDataSync

TIP

同步到搜索引擎與數據庫很相似,本章節主要介紹不同的部分;

NkDocESDataSync 服務默認將數據同步到搜索引擎的doc-ext索引中;

如需要將數據同步到其他索引,需要自定義同步服務;

# 目標

TIP

指doc-ext索引的customType字段的值;

通過customType的值可以區分不同的數據類型;

# 主鍵配置

TIP

與同步到數據庫不同的是,ElasticSearch不支持聯合主鍵,因此這里主鍵配置將返回一個字符串類型的值

#row.KEY1
1

# 自定義同步

# 系統提供了3中適配器來快速開發一個數據同步服務
  • NkAbstractDocDataDiffedSyncAdapter 需實現插入、修改、刪除3種方法
  • NkAbstractDocDataGeneralSyncAdapter 需實現單條數據與多條數據兩個方法
  • NkAbstractDocDataAsyncAdapter 異步適配器
@Component("YouDataSyncImpl")
public class YouDataSyncImpl extends NkAbstractDocDataGeneralSyncAdapter<KeyType> {

    /**
     * 單條數據寫入方法
     */
    protected void doSyncSingle(Map<String,Object> singleData, DocDefDataSync def){
        // 將數據寫入到目標
    }
    /**
     * 多條數據寫入方法
     */
    protected void doSyncMultiple(List<Map<String,Object>> multipleData, DocDefDataSync def){
        // 將數據寫入到目標
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@Component("YouDataSyncImpl")
public class YouDataSyncImpl extends NkAbstractDocDataDiffedSyncAdapter<KeyType> {

    @Override
    public void onInsert(Map<String,Map<String,Object>> list, DocDefDataSync def) {
    }

    @Override
    public void onModify(Map<String,Map<String,Object>> list, DocDefDataSync def) {
    }

    @Override
    public void onRemove(Map<String,Map<String,Object>> list, DocDefDataSync def) {
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@Component("YouDataSyncImpl")
public class YouDataSyncImpl extends NkAbstractDocDataAsyncAdapter {

    @Override
    protected void schedule(DocAsyncQueueWithBLOBs asyncQueue) {
        log.info(asyncQueue.getAsyncJson());
    }
}
1
2
3
4
5
6
7
8