本文概述

本文提到了kettle 9 插件开发的过程,遇到的问题与相应的解决方法。
对于一个完善的kettle 9 插件开发过程,需要相关的技术点与对应的优秀的参考资料,进行了整理、记录,试图节约大家开发kettle 9 插件过程查询各种相关资料的宝贵时间。

开发环境说明

kettle版本:9.1
jdk版本:jdk1.8

IDE的选择

建议选择idea,打包、运行比较方便一些。

下载kettle 9 插件demo

下载路径在参考文献的链接12
建议大家使用链接1对应的demo,它是我修改后的,且加了SWT测试相关的POM,在这个demo 工程中,方便大家,对SWT相关的各种类展开测试。

kettle插件demo说明

示例Step插件旨在显示Step插件的最小功能实现,您可以使用它作为开发自定义转换步骤的基础。
示例步骤插件功能向行流添加一个字符串字段,并用helloworld!填充它!。下面的截图展示了经过demo转换前后的效果。
image

官网中,对这个demo的描述,可以参考这里3
运行这个插件的所需要的kettle转换文件,在这里4。大家可以通过kettle加载这个转换,进行测试。
备注:做这个插件demo的测试,建议大家阅读完本文与链接35,否则,有一些背景知识不知道,测试起来,感觉不知道如何下手。

kettle插件UI的开发

大家对SWT技术开发java界面比较熟悉的话,可以跳过本小节内容。
不熟悉的话,可以参考下这两个文献67
我在kettle-sdk-step-plugin/src/test/java/org/example/my/ui/SWTDemo.java中把链接中的例子,复制了一遍,大家可以对照着,过一遍。方便大家快速上手。
大家在DemoStepDialog.open()中编写的UI代码,可以复制到kettle-sdk-step-plugin/src/test/java/org/example/my/ui/DemoStepDialogTest.java中,运行一遍,观察下运行效果,避免重复打开kettle、加载插件来调试kettle插件。

关于SWT的API,只提一点,kettle对SWT进行了封装,有一个类为LabelText,这是原生的SWT API中没有的。它相当于原生的Label Text整合来的一个类。

// lt在界面上展示效果, label的名称 ______________
LabelText lt = new LabelText(shell, "label的名称",null);

kettle插件接口讲解

demo中类的作用介绍

类名作用
DemoStepDialogkettle插件UI开发的类,kettle插件运行需要一些输入参数,可以在这个类中搭建一个页面,来接收这些参数。
DemoStepMetakettle从Dialog类中接收的输入参数的保存到内存中,保存到数据库(资源库)中,这种保存逻辑,在这个类中实现。
DemoStepDataDemoStep中实例化的资源,赋值给本类的属性。
DemoStep处理rows。这里面主要由processRow()方法来处理。主要的插件处理逻辑在这个类中编写实现。
messages_en_US.propertie英文化的文件,即把kettle插件界面上的单词显示为英文,可以以key=value形式指定。
demo.png/demo.svg插件显示的图标。

具体的开发过程的细节,接口含义,大家可以参考这两篇文章85,讲解的很详细。

参考文献


  1. https://github.com/chuzhixing...
  2. https://sourceforge.net/proje... (Pentaho from Hitachi Vantara - Browse /Pentaho 9.1/plugins at SourceForge.net)
  3. https://help.pentaho.com/Docu... (Sample Step Plugin)
  4. https://github.com/chuzhixing... (ketlle软件中新建的转换)
  5. https://blog.csdn.net/u013468... (Kettle — 自定义插件)
  6. https://www.cnblogs.com/Dream... (关于SWT中的Label类和Text类)
  7. https://www.cnblogs.com/Dream... (SWT中的布局之-----FormLayout(表格式布局))
  8. https://blog.csdn.net/ejunnet... (Kettle插件开发(转换步骤))

楚知行
18 声望4 粉丝