Kettle系列: 马进举开源的Kettle通用插件 KettleEasyExpand

扩展Kettle功能, 常常使用 user defined java class 组件, 或者本身开发Java插件. 两种方式都有各自的痛点:javascript

1. 在user defined java class 组件中写java代码, 该环境没有代码自动提示, 没有语法检查, 基本上需不断试错才能完成开发, 效率很低.
2. 开发 Kettle 插件, 难度较大, 须要很了解 kettle meta基础类, 另外UI开发也很难.
下面这个插件给出了很好的解决方法.

KettleEasyExpand 插件简介
一个简化kettle插件开发的通用插件,采用JSON做为参数配置,省去ui调试设计步骤,只需一个类就能够开发一个插件。基于本插件开发的插件将很容易集成到kettle管理平台中去。html

===================
通用的Kettle插件, KettleEasyExpand
===================
项目文档: https://github.com/majinju/KettleEasyExpand/blob/master/doc/KettleEasyExpand.md
项目地址: https://github.com/majinju/KettleEasyExpand
https://github.com/majinju/KettleUtil/blob/master/src/main/java/cn/benma666/kettleutil/utilrun/KurDemo.javajava


===================
设计初衷
===================
该kettle插件功能相似kettle现有的定义java类插件,自定java类插件主要是支持在kettle中直接编写java代码实现自定特殊功能,而本控件主要是将自定义代码转移到jar包,就是说自定义功能的实现改成在eclipse等ide中开发。git

设计本插件的缘由是直接在kettle中写user defined java class 代码是很不容易的事,开发体验与eclipse差得远,java语法还要受到限制,调试麻烦。实现点简单的逻辑还行,稍微复杂一点就比较麻烦,须要对java和kettle相关接口很熟悉。而简单的功能能够采用javascript脚本实现,复杂的功能通常人很难直接在自定义java类控件中编写java实现。github

有人说能够每次直接开发新插件,虽说java的插件机制仍是很不错的,但开发一个插件仍是没那么容易的,须要设计元数据,插件件功能实现,插件操做界面设计等,其中操做界面的调整是我最不肯意花时间的,慢慢调我也能调出常见控件的配置界面,但我以为不必,因此要实现一个完善的插件须要作的事情仍是不少的。eclipse

而本插件综合了以上两种机制,既有自定义java类的简单性,直接编写核心业务代码,操做界面统一使用一个JSON对象做为参数设置途径,因此基于此开发功能,只需继承一个基类而编写一个功能实现类就能够了;又有直接开发插件的便捷性,只需将相关的jar包做为用户类库导入项目,建立一个类,继承基类,就能够在eclipse中尽情的编写你的业务代码了。ide

===================
环境搭建
===================
1. 在eclipse中建立用户类库ku,到kettle管理平台项目(https://github.com/majinju/kettle-manager)介绍的博文中下载0.2.0版部署包,而后将部署包的lib目录中的jar所有加入。
2. 在eclipse中建立用户类库kettleLib,将你的kettle的目录下的lib所有加入。
3. 在eclipse中建立一个java项目,添加前面建立的两个用户类库到构建路径。
4. 而后就能够新建一个java类,按后面的步骤进行插件开发了。ui


Step 插件示例
https://github.com/majinju/KettleEasyExpand/blob/master/src/main/java/cn/benma666/kettle/easyexpand/EasyExpandDemo.java
Job Entry 插件示例
https://github.com/majinju/KettleEasyExpand/blob/master/src/main/java/cn/benma666/kettle/easyexpand/JobEntryEasyExpandDemo.java


===================
Ketlt-1.kettle源码获取与运行
===================
http://www.cnblogs.com/majinju/p/4455107.html插件