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