产品文档

Java脚本

1.在数据转换页面点击创建Java脚本菜单,系统进入Java脚本页面。Java脚本主要实现对BI系统中已有数据,通过Java定义的实现类,调用指定方法生成新的目标表,Java脚本类采用java语法。

2.创建Java脚本对话框主要包括Java脚本,目标表两个选项卡,如下图:

3.录入步骤名称,选择数据,设置转换过程的原表,录入Java处理类名称及路径。Java处理类是一个实现com.ruisitech.bi.service.etl.DataProcessInterface 接口的Java类,主要包括两个方法:

public void init(DaoHelper daoHelper) 方法

JAVA处理类初始化方法,在进行数据处理前先进行初始化工作。其中 daoHelper 用来访问数据库。

public void process(Map data) 方法

JAVA处理类数据处理方法,系统每处理一行数据就会调用一次此方法,data 参数为原表的行数据对象,数据处理完成后,系统按照data对象中的数据插入目标表中。

定义好的实现类必须编译成功后,再重启应用服务器才能生效。

java处理类接口代码如下:

package com.ruisitech.bi.service.etl;

import com.ruisi.ext.engine.dao.DaoHelper;

import java.util.Map;

/**
 * @ClassName 数据处理接口
 * @Description 在数据转换中创建JAVA脚本,其中JAVA类必须实现此接口来完成数据的处理。
 * @Author huangqin
 * @Date 2022/4/25 9:40 上午
 */
public interface DataProcessInterface {

    /**
     * 初始化方法
     * @param daoHelper
     */
    public void init(DaoHelper daoHelper);

    /**
     * 数据处理方法
     * @param data 表的一行数据
     */
    public void process(Map<String, Object> data);
}

4.如下代码演示Java处理类:

package com.ruisitech.ext.service;

import com.ruisi.ext.engine.dao.DaoHelper;
import com.ruisitech.bi.service.etl.DataProcessInterface;

import java.util.Map;

/**
 * @ClassName 测试Java脚本类
 * @Description TestJavaProcess
 * @Author zxd
 * @Date 2022/4/25 10:46 上午
 */

public class TestJavaProcess implements DataProcessInterface {

    private DaoHelper daoHelper;

    @Override
    public void init(DaoHelper daoHelper) {
        this.daoHelper = daoHelper;
    }

    @Override
    public void process(Map<String, Object> data) {
        String f_hkont = (String) data.get("f_hkont");
        if(f_hkont == null || f_hkont.length() == 0){
            data.put("f_hkont", "nocode");
        }
    }
}

通过判断f_hkont字段的值,如果值不存在设置为新的值 nocode 。

5.目标表可以是已有表,也可以基于原表字段创建新的表,如下图:

6.同步方式支持全量同步和增量同步两种方式,增量同步采用rsbi_crtdate 字段做时间戳。

7.如果需要在处理数据出现异常时,回滚已经处理的数据及时间戳,需要勾选异常处理单选框。

8.设置完成后点击确定按钮完成Java脚本的创建。请注意:Java脚本主要用来处理行数据,做不了数据聚合的操作,定义的Java类必须编译成功并且重新启动Tomcat等应用服务器。