Kettle插件开发(Job)

来源:互联网 发布:我要开淘宝网店 编辑:程序博客网 时间:2024/05/18 02:28

一个Kettlejob插件主要包括两个类,和转换步骤插件一样,一个是用于客户端定义参数配置的UI Dialog类,一个是Job  entry类,主要是跟踪保存客户的配置信息和执行job具体的功能(在 execute() 方法中执行)。

1UI Dialog类。

UI Dailog类和转换步骤中的Dailog一样,在open方法中进行配置界面的UI绘制,然后能过构造参数中的JobEntryInterface类加载历史配置信息到各种UI控件上。和转换步骤一样,注意的配置信息变更状态的更新。Job DialogStep Dialog的不同之处包括以下几点:

1job Dialogopen方法返回的是一个更改后的job entry,而StepDialog返回的是Step的名字。

2job Dialog必须保证用户输入一个正确的job entry名字,不能接受一个空的名字,如果名字为空,不能让用户保存配置信息。

 

2、国际化。

job插件的国际化与转换步骤的国际化相同,这里不再阐述。

 

3job entry类。

这个类有以下三个主要的职责:

1)跟踪处理用户的配置信息(包括序列化到XML或资源库)。

job entry类通过一些私有变量来跟踪用户的配置信息,提供一些get\set方法使其能够方便的访问。同时也实现一些方法来将配置信息保存(读取)到XML或资源库,也提供一个clone方法来处理用户复制job的一些初始化工作。

2)向Kettle引擎报告各种处理状态(下一步的跳转方式)。

Kettle客户端Spoonjob entry预设了三种不同的处理状态:成功success(绿色),失败failure(红色),无条件的unconditional(黑色)。每一个job entry都要提供关于它所支持的处理状态信息。Kettle会调用evaluates()方法来确定job entry是否支持成功和失败,调用isUnconditional()来确定是否支持无条件跳转。除非你不想支持这个job之后执行别的后续任务,否则必须有一个能返回true。如果你想给客户更多的选择,那么两个方法都返回true即可。如下所示:

publicbooleanevaluates() {

        returntrue;

    }

 

    publicbooleanisUnconditional() {

        returntrue;

    }

3)执行这个任务需要执行的相关操作。

当一个控制流程到达job entry时,Kettle将会执行它的execute()方法,这里才执行真正的一个任务的具体操作。这个方法有两个参数,第一个是一个结果对象(result object),第二个是当前任务是第几个任务的数值(这个参数很少会被用到)。结果对象里有上一个任务的job entry。很少情况下当前任务会关心上一个任务的执行状态,所以基本上都是在这个结果对象里标识当前任务是否执行成功,如果你想跳转到无条件跳转路径上,那么你直接返回未更改的结果对象就可以。

 

4、插件定义(配置)。

<?xmlversion="1.0"encoding="UTF-8"?>

<pluginid="TriggerReportOnJasperServer"

 

    iconfile="jaspersoft.png"

    description="Trigger Report on JasperServer"

    tooltip="Trigger Report on JasperServer"

    category="Experimental"

    classname="plugin.kettle.jasperserver.trigger.JobEntryJasperServerReport">

 

    <libraries>

        <libraryname="js-trigger-report.jar"/>

        <libraryname="lib/jasper.jar"/>

        <libraryname="lib/jasper-ws.jar"/>

    </libraries>

 

</plugin>

需要在配置文件中配置图标,分类,job Entry类及引用的jar包。


原文:http://type-exit.org/adventures-with-open-source-bi/2010/07/developing-a-custom-kettle-plugin-triggering-a-report-on-jasperserver/

原创粉丝点击