數(shù)據批處理(lǐ)
介紹
此功能更新于4.1.0版本,如果之前部署過4.0.x版本需要根據4.0.xto4.1升級說明(míng)操作(zuò)。
數(shù)據批處理(lǐ)主要滿足從數(shù)據源中直接拉取業務數(shù)據,調用知識包進行(xíng)規則計(jì)算(suàn),最終将知識包輸出的數(shù)據再輸出到配置的數(shù)據表中。
數(shù)據批處理(lǐ)-基本配置
在【設計(jì)規則】頁面的菜單中選擇【批處理(lǐ)】,打開(kāi)數(shù)據批處理(lǐ)管理(lǐ)頁面。
在數(shù)據批處理(lǐ)管理(lǐ)頁面,點擊【添加批處理(lǐ)】打開(kāi)新建數(shù)據批處理(lǐ)配置頁面。
勾選顯示其他設置,可(kě)修改默認配置
- 異常數(shù)限制(zhì): 默認值是0,處理(lǐ)數(shù)據時(shí)遇發生(shēng)異常的數(shù)量達到設置的值時(shí),整個(gè)數(shù)據批處理(lǐ)任務停止,并設置執行(xíng)失敗。
- 異步:默認是異步,可(kě)以設置回調URL,即數(shù)據批處理(lǐ)任務執行(xíng)完時(shí)會(huì)調用回調URL,不設置不調用。如果将異步勾選去掉,數(shù)據批處理(lǐ)任務将以同步狀态執行(xíng),即請(qǐng)求觸發任務後,等處理(lǐ)完返回結果。
- 是否啓用多(duō)線程處理(lǐ): 默認啓用,默認開(kāi)啓10線程,單個(gè)線程每次獲取數(shù)據1000條。不啓用将以單線程執行(xíng)任務。
- 啓用REST: 默認不啓用,是否開(kāi)放HTTP Restful接口方式觸發數(shù)據批處理(lǐ)任務。
數(shù)據批處理(lǐ)-批處理(lǐ)參數(shù)配置
批處理(lǐ)參數(shù)是在觸發批處理(lǐ)任務時(shí),動态傳入的參數(shù)。可(kě)用于加載數(shù)據拼接SQL時(shí)使用,或者作(zuò)為(wèi)知識包參數(shù)入參使用。
數(shù)據批處理(lǐ)-知識包配置
點擊知識包ID的【...】或者雙擊文本框,選取知識包
選取好知識包後,知識包有(yǒu)參數(shù)需要綁定批處理(lǐ)參數(shù)可(kě)以通(tōng)過【添加參數(shù)】手動添加,或者通(tōng)過【批量添加參數(shù)】選取知識包中參數(shù)進行(xíng)添加。
數(shù)據批處理(lǐ)-數(shù)據加載配置
基本配置讀取數(shù)據信息
- 數(shù)據源: 選取數(shù)據源管理(lǐ)中配置的數(shù)據源,作(zuò)為(wèi)加載數(shù)據的數(shù)據庫
- 分頁SQL: 加載數(shù)據用的SQL語句,SQL語句可(kě)拼如動态參數(shù),格式為(wèi)
:parameter
。 - 總記錄數(shù):提供查詢加載總記錄數(shù)的SQL
數(shù)據加載參數(shù)
配置好SQL後,如果SQL中有(yǒu)動态參數(shù),可(kě)以通(tōng)過【添加參數(shù)】手動添加,或者通(tōng)過【批量添加參數(shù)】解析SQL中參數(shù)進行(xíng)添加。
添加參數(shù)後,需要設置與批處理(lǐ)參數(shù)的綁定關系,這樣在觸發數(shù)據批處理(lǐ)任務是傳入的批處理(lǐ)參數(shù),就可(kě)以動态拼入SQL
變量映射
加載的數(shù)據要與知識包當中的變量進行(xíng)映射配置:
- 選擇知識包中需要映射的變量,因為(wèi)一條數(shù)據将作(zuò)為(wèi)調用知識包的入參進行(xíng)知識包調用。
- 選擇知識包中的變量後,可(kě)以通(tōng)過【添加變量映射】手動添加變量屬性和(hé)SQL字段的映射,或者通(tōng)過【批量添加變量映射】批量選取變量屬性,如果SQL字段的類型名稱和(hé)類型與變量屬性一緻,會(huì)自動進行(xíng)綁定,如不一緻需要通(tōng)過字段下拉框選擇。
數(shù)據批處理(lǐ)-數(shù)據保存配置
- 數(shù)據源: 選取數(shù)據源管理(lǐ)中配置的數(shù)據源,作(zuò)為(wèi)輸出保存數(shù)據的數(shù)據源
- 事務範圍:保存數(shù)據時(shí),使用的事務類型,默認是Page。
- Batch:是整個(gè)數(shù)據批處理(lǐ)任務作(zuò)為(wèi)一個(gè)事務提交保存,如果遇到錯誤,将整體(tǐ)回滾保存數(shù)據。
- Page:是以分頁批次的數(shù)據作(zuò)為(wèi)一個(gè)事務提交保存,如果遇到錯誤,将此頁批次數(shù)據回滾保存數(shù)據。
- Record:是以單條數(shù)據作(zuò)為(wèi)一個(gè)事務提交保存,如果遇到錯誤,不會(huì)對其他已提交數(shù)據産生(shēng)影(yǐng)響。
數(shù)據量大(dà)的批處理(lǐ)任務,從持久化數(shù)據層面,效率 Page > Batch >Record
添加保存項
保存數(shù)據配置中,可(kě)以針對一次知識包計(jì)算(suàn)的輸出配置多(duō)個(gè)保存項,用于将輸出數(shù)據保存到多(duō)個(gè)表中。
點擊【添加保存項】按鈕,新增保存項的目标表與保存類型信息。
配置保存項添加知識包輸出數(shù)據與表字段映射,可(kě)以通(tōng)過【添加變量映射】手動添加,或者通(tōng)過【批量添加變量映射】選取知識包中變量或者參數(shù)。
如果保存項的更新類型是update、delete,變量映射的屬性中需要設置主鍵key。
設置保存項的數(shù)據過濾
知識包輸出數(shù)據不一定所有(yǒu)的數(shù)據都需要保存到數(shù)據庫 ,可(kě)以設置數(shù)據過濾,符合條件的才執行(xíng)保存數(shù)據的操作(zuò)。
在保存項上(shàng)右鍵菜單中選擇【設置數(shù)據過濾】
知識包輸出數(shù)據如不符合設置條件的記錄将不會(huì)提交保存
數(shù)據批處理(lǐ)-觸發調用
配置完成的批處理(lǐ)需要右鍵【啓用】,才能外部觸發執行(xíng)。調用方式有(yǒu)兩種:Java SDK調用和(hé)REST調用
Java SDK調用
通(tōng)過 BatchServiceManager.execute(Long batchId, Map<String, Object> params)
調用。
REST調用
在當前批處理(lǐ)右鍵點擊【Rest服務配置】
勾選【啓用REST】将允許當前數(shù)據批處理(lǐ)允許觸發調用。
Rest接口如果需要安全驗證,可(kě)勾選【安全驗證】,填寫驗證用的用戶名和(hé)密碼,調用方需在HTTP Head中添加username和(hé)password
啓用REST後,可(kě)通(tōng)過【查看Rest服務描述】查看Rest接口的輸入、輸出和(hé)調用接口Url等信息。
{
"output": {
"fields": [
{
"dataType": "Long",
"name": "batchId",
"label": "批處理(lǐ)ID"
},
{
"dataType": "String",
"name": "batchName",
"label": "批處理(lǐ)名稱"
},
{
"dataType": "DateTime",
"name": "startTime",
"label": "開(kāi)始時(shí)間(jiān)"
},
{
"dataType": "DateTime",
"name": "endTime",
"label": "結束時(shí)間(jiān)"
},
{
"dataType": "String",
"name": "ip",
"label": "IP"
},
{
"dataType": "Integer",
"name": "readCount",
"label": "讀取的記錄總數(shù)"
},
{
"dataType": "Integer",
"name": "filterCount",
"label": "過濾記錄數(shù)"
},
{
"dataType": "String",
"name": "status",
"label": "狀态"
},
{
"dataType": "String",
"name": "msg",
"label": "信息"
},
{
"dataType": "String",
"name": "itemResults",
"label": "保存項明(míng)細",
"fields": [
{
"dataType": "String",
"name": "name",
"label": "保存項名稱"
},
{
"dataType": "Integer",
"name": "readCount",
"label": "讀取的記錄總數(shù)"
},
{
"dataType": "Integer",
"name": "filterCount",
"label": "過濾記錄數(shù)"
},
{
"dataType": "Integer",
"name": "writeCount",
"label": "寫入記錄總數(shù)"
},
{
"dataType": "String",
"name": "tableName",
"label": "物理(lǐ)表"
},
{
"dataType": "String",
"name": "updateMode",
"label": "更新類型"
}
]
}
],
"clazz": "com.bstek.urule.console.batch.BatchResult"
},
"input": [
{
"name": "code",
"label": "編号",
"dataType": "String"
}
],
"url": "http://localhost:8181/urulepro4/urule/batch/1501",
"authentication": false
}
在上(shàng)面的JSON格式調用描述數(shù)據當中,“input”和(hé)“output”屬性值分别表示輸入和(hé)輸出數(shù)據,“url”表示的是調用的當前數(shù)據批處理(lǐ)URL;“authentication”屬性值表示的是當前Restful服務調用是否需要用戶名密碼驗證,如果值是false,表示不需要驗證。
- input:代表當前數(shù)據批處理(lǐ)配置了批處理(lǐ)參數(shù),調用接口時(shí)需要傳入。
- output:是調用後返回的數(shù)據,其中包含讀取數(shù)據源讀取數(shù)據總數(shù)、保存數(shù)據總數(shù)、過濾提交保存數(shù)、執行(xíng)時(shí)間(jiān)等信息。
可(kě)通(tōng)過【REST調用】功能,進行(xíng)快速觸發當前數(shù)據批處理(lǐ),如果設置的是同步執行(xíng),提交觸發後将處理(lǐ)結果返回,返回信息包含執行(xíng)狀态等信息。
如果設置的是異步執行(xíng),觸發後直接返回已開(kāi)始執行(xíng)時(shí)間(jiān),無執行(xíng)結果信息。
執行(xíng)結果可(kě)在團隊主頁面-日志(zhì)管理(lǐ)-批處理(lǐ)執行(xíng)日志(zhì)中查看
可(kě)右鍵查看明(míng)細。