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


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

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

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

    ===================
    通用的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.java


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

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

    有人说可以每次直接开发新插件,虽然说java的插件机制还是很不错的,但开发一个插件还是没那么容易的,需要设计元数据,插件件功能实现,插件操作界面设计等,其中操作界面的调整是我最不愿意花时间的,慢慢调我也能调出常见控件的配置界面,但我觉得没必要,所以要实现一个完善的插件需要做的事情还是很多的。

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

    ===================
    环境搭建
    ===================
    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类,按后面的步骤进行插件开发了。


    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

  • 相关阅读:
    mysql性能优化
    jdbc connectoin timeout
    java thread dump
    sso实现原理
    api的防重放机制
    java各版本新特性总结
    sql区分大小写的查询
    按分数排名
    MySql常用语句
    mysql之explain用法
  • 原文地址:https://www.cnblogs.com/harrychinese/p/KettleEasyExpand.html
Copyright © 2020-2023  润新知