数据批处理

介绍

此功能更新于4.1.0版本,如果之前部署过4.0.x版本需要根据4.0.xto4.1升级说明操作。

数据批处理主要满足从数据源中直接拉取业务数据,调用知识包进行规则计算,最终将知识包输出的数据再输出到配置的数据表中。

undefined

undefined

数据批处理-基本配置

在【设计规则】页面的菜单中选择【批处理】,打开数据批处理管理页面。

undefined

在数据批处理管理页面,点击【添加批处理】打开新建数据批处理配置页面。

undefined

勾选显示其他设置,可修改默认配置

undefined

  • 异常数限制: 默认值是0,处理数据时遇发生异常的数量达到设置的值时,整个数据批处理任务停止,并设置执行失败。
  • 异步:默认是异步,可以设置回调URL,即数据批处理任务执行完时会调用回调URL,不设置不调用。如果将异步勾选去掉,数据批处理任务将以同步状态执行,即请求触发任务后,等处理完返回结果。
  • 是否启用多线程处理: 默认启用,默认开启10线程,单个线程每次获取数据1000条。不启用将以单线程执行任务。
  • 启用REST: 默认不启用,是否开放HTTP Restful接口方式触发数据批处理任务。

数据批处理-批处理参数配置

批处理参数是在触发批处理任务时,动态传入的参数。可用于加载数据拼接SQL时使用,或者作为知识包参数入参使用。

undefined

数据批处理-知识包配置

点击知识包ID的【...】或者双击文本框,选取知识包

undefined

undefined

选取好知识包后,知识包有参数需要绑定批处理参数可以通过【添加参数】手动添加,或者通过【批量添加参数】选取知识包中参数进行添加。

undefined

undefined

数据批处理-数据加载配置

基本配置读取数据信息

  • 数据源: 选取数据源管理中配置的数据源,作为加载数据的数据库
  • 分页SQL: 加载数据用的SQL语句,SQL语句可拼如动态参数,格式为 :parameter
  • 总记录数:提供查询加载总记录数的SQL

undefined

数据加载参数

配置好SQL后,如果SQL中有动态参数,可以通过【添加参数】手动添加,或者通过【批量添加参数】解析SQL中参数进行添加。

undefined

添加参数后,需要设置与批处理参数的绑定关系,这样在触发数据批处理任务是传入的批处理参数,就可以动态拼入SQL

undefined

变量映射

加载的数据要与知识包当中的变量进行映射配置:

  • 选择知识包中需要映射的变量,因为一条数据将作为调用知识包的入参进行知识包调用。

undefined

  • 选择知识包中的变量后,可以通过【添加变量映射】手动添加变量属性和SQL字段的映射,或者通过【批量添加变量映射】批量选取变量属性,如果SQL字段的类型名称和类型与变量属性一致,会自动进行绑定,如不一致需要通过字段下拉框选择。

undefined

undefined

数据批处理-数据保存配置

  • 数据源: 选取数据源管理中配置的数据源,作为输出保存数据的数据源
  • 事务范围:保存数据时,使用的事务类型,默认是Page。
    • Batch:是整个数据批处理任务作为一个事务提交保存,如果遇到错误,将整体回滚保存数据。
    • Page:是以分页批次的数据作为一个事务提交保存,如果遇到错误,将此页批次数据回滚保存数据。
    • Record:是以单条数据作为一个事务提交保存,如果遇到错误,不会对其他已提交数据产生影响。

数据量大的批处理任务,从持久化数据层面,效率 Page > Batch >Record

添加保存项

保存数据配置中,可以针对一次知识包计算的输出配置多个保存项,用于将输出数据保存到多个表中。

点击【添加保存项】按钮,新增保存项的目标表与保存类型信息。

undefined

配置保存项添加知识包输出数据与表字段映射,可以通过【添加变量映射】手动添加,或者通过【批量添加变量映射】选取知识包中变量或者参数。

undefined

undefined

如果保存项的更新类型是update、delete,变量映射的属性中需要设置主键key。

设置保存项的数据过滤

知识包输出数据不一定所有的数据都需要保存到数据库 ,可以设置数据过滤,符合条件的才执行保存数据的操作。

在保存项上右键菜单中选择【设置数据过滤】

undefined

知识包输出数据如不符合设置条件的记录将不会提交保存

undefined

数据批处理-触发调用

配置完成的批处理需要右键【启用】,才能外部触发执行。调用方式有两种:Java SDK调用和REST调用

Java SDK调用

通过 BatchServiceManager.execute(Long batchId, Map<String, Object> params) 调用。

REST调用

在当前批处理右键点击【Rest服务配置】

undefined

undefined

勾选【启用REST】将允许当前数据批处理允许触发调用。

Rest接口如果需要安全验证,可勾选【安全验证】,填写验证用的用户名和密码,调用方需在HTTP Head中添加username和password

启用REST后,可通过【查看Rest服务描述】查看Rest接口的输入、输出和调用接口Url等信息。

{
    "output": {
        "fields": [
            {
                "dataType": "Long",
                "name": "batchId",
                "label": "批处理ID"
            },
            {
                "dataType": "String",
                "name": "batchName",
                "label": "批处理名称"
            },
            {
                "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": "保存项名称"
                    },
                    {
                        "dataType": "Integer",
                        "name": "readCount",
                        "label": "读取的记录总数"
                    },
                    {
                        "dataType": "Integer",
                        "name": "filterCount",
                        "label": "过滤记录数"
                    },
                    {
                        "dataType": "Integer",
                        "name": "writeCount",
                        "label": "写入记录总数"
                    },
                    {
                        "dataType": "String",
                        "name": "tableName",
                        "label": "物理表"
                    },
                    {
                        "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
}

在上面的JSON格式调用描述数据当中,“input”和“output”属性值分别表示输入和输出数据,“url”表示的是调用的当前数据批处理URL;“authentication”属性值表示的是当前Restful服务调用是否需要用户名密码验证,如果值是false,表示不需要验证。

  • input:代表当前数据批处理配置了批处理参数,调用接口时需要传入。
  • output:是调用后返回的数据,其中包含读取数据源读取数据总数、保存数据总数、过滤提交保存数、执行时间等信息。

可通过【REST调用】功能,进行快速触发当前数据批处理,如果设置的是同步执行,提交触发后将处理结果返回,返回信息包含执行状态等信息。

undefined

如果设置的是异步执行,触发后直接返回已开始执行时间,无执行结果信息。

undefined

执行结果可在团队主页面-日志管理-批处理执行日志中查看

undefined

可右键查看明细。

undefined

results matching ""

    No results matching ""