本文概述
本文提到了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转换前后的效果。
官网中,对这个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中类的作用介绍
类名 | 作用 |
---|---|
DemoStepDialog | kettle插件UI开发的类,kettle插件运行需要一些输入参数,可以在这个类中搭建一个页面,来接收这些参数。 |
DemoStepMeta | kettle从Dialog类中接收的输入参数的保存到内存中,保存到数据库(资源库)中,这种保存逻辑,在这个类中实现。 |
DemoStepData | DemoStep中实例化的资源,赋值给本类的属性。 |
DemoStep | 处理rows。这里面主要由processRow()方法来处理。主要的插件处理逻辑在这个类中编写实现。 |
messages_en_US.propertie | 英文化的文件,即把kettle插件界面上的单词显示为英文,可以以key=value形式指定。 |
demo.png/demo.svg | 插件显示的图标。 |
具体的开发过程的细节,接口含义,大家可以参考这两篇文章85,讲解的很详细。
参考文献
- https://github.com/chuzhixing... ↩
- https://sourceforge.net/proje... (Pentaho from Hitachi Vantara - Browse /Pentaho 9.1/plugins at SourceForge.net) ↩
- https://help.pentaho.com/Docu... (Sample Step Plugin) ↩
- https://github.com/chuzhixing... (ketlle软件中新建的转换) ↩
- https://blog.csdn.net/u013468... (Kettle — 自定义插件) ↩
- https://www.cnblogs.com/Dream... (关于SWT中的Label类和Text类) ↩
- https://www.cnblogs.com/Dream... (SWT中的布局之-----FormLayout(表格式布局)) ↩
- https://blog.csdn.net/ejunnet... (Kettle插件开发(转换步骤)) ↩
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。