kettle b/s 版 自己写组件基于(webkettle 精卫)

本文介绍了如何在Kettle的B/S版本中创建自定义组件,具体步骤包括理解组件的查找机制,通过EXT和mxgraph2编码实现调用存储过程的组件,并展示了初步完成的组件效果。
摘要由CSDN通过智能技术生成

一. kettle的组件是如何查出来的,如下图。

查出组件的代码如下。

二。下面看一下,如何实现一个组件。(比如要实现一个 调用一个存储过程的组件)

package org.flhy.ext.trans.steps;

import com.mxgraph.model.mxCell;
import com.mxgraph.util.mxUtils;
import org.flhy.ext.core.PropsUI;
import org.flhy.ext.trans.step.AbstractStep;
import org.flhy.ext.utils.JSONArray;
import org.flhy.ext.utils.JSONObject;
import org.flhy.ext.utils.StringEscapeHelper;
import org.pentaho.di.core.Const;
import org.pentaho.di.core.database.DatabaseMeta;
import org.pentaho.di.core.row.ValueMeta;
import org.pentaho.di.core.row.ValueMetaInterface;
import org.pentaho.di.core.row.value.ValueMetaFactory;
import org.pentaho.di.trans.step.StepMetaInterface;
import org.pentaho.di.trans.steps.dbproc.DBProcMeta;
import org.pentaho.di.trans.steps.selectvalues.SelectMetadataChange;
import org.pentaho.di.trans.steps.selectvalues.SelectValuesMeta;
import org.pentaho.di.trans.steps.sql.ExecSQLMeta;
import org.pentaho.metastore.api.IMetaStore;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
import org.w3c.dom.Document;
import org.w3c.dom.Element;

import java.util.List;

// author sf 2019-08-06
@Component("DBProc")
@Scope("prototype")
public class DBProc extends AbstractStep {

   @Override
   public void decode(StepMetaInterface stepMetaInterface, mxCell cell, List<DatabaseMeta> databases, IMetaStore metaStore) throws Exception {
      DBProcMeta DBProcsMeta = (DBProcMeta) stepMetaInterface;


      String con = cell.getAttribute("connection");
      DBProcsMeta.setDatabase(DatabaseMeta.findDatabase(databases, con));
      DBProcsMeta.setProcedure(cell.getAttribute("procedure"));
      DBProcsMeta.setResultName(cell.getAttribute("resultName"));
      DBProcsMeta.setAutoCommit("Y".equalsIgnoreCase(cell.getAttribute("autoCommit")));
      DBProcsMeta.setResultType(ValueMetaFactory.getIdForValueMeta(cell.getAttribute("resultType")));


//    JSONArray jsonArray = JSONArray.fromObject(cell.getAttribute( "argument" ));
//    DBProcsMeta.allocate( jsonArray.size() );
//    for(int i=0; i<jsonArray.size(); i++) {
//       JSONObject jsonObject = jsonArray.getJSONObject(i);
//       DBProcsMeta.getArgument()[i] = jsonObject.optString("name");
//    }
//
//    JSONArray jsonDirectionArray = JSONArray.fromObject(cell.getAttribute( "argumentDirection" ));
//    DBProcsMeta.allocate( jsonDirectionArray.size() );
//    for(int i=0; i<jsonDirectionArray.size(); i++) {
//       JSONObject jsonObject = jsonDirectionArray.getJSONObject(i);
//       DBProcsMeta.getArgumentDirection()[i] = jsonObject.optString("directionname");
//    }
//
//  
kettle管理工具专门为kettle这款优秀的ETL工具开发的web端管理工具。项目简介kettle作为非常优秀的开源ETL工具得到了非常广泛的使用,一般的使用的都是使用客户端操作管理,但问题是当投入生产环境使用时,动辄上百或几百个job需要管理,这时在使用客户端管理已经很难完成了。我所知道的解决方案有用命令行的调用的,操作麻烦,总之还是很难用啦,还有就是开发web端管理工具,kettle自带了一个web端管理工具,界面极其简陋不说,还很难用,基本无法投入生产环境使用,其他没留意到还有没有较好对众多job进行管理的工具。基于以上情况,和我近两年的kettle定制开发与使用经验。我设计并开发了这款kettle web端管理工具。本系统当前支持oracle和mysql项目功能job运行参数设置,可以在页面上设置作业运行参数,每次运行作业时会用设置的参数覆盖默认值,这个很多人用不上。定时设置,操作界面与kettle中的开始控件界面一致,这个可能是最优用的功能之一。作业的运行与停止,核心功能就不说了。实时查看作业运行日志,最大显示行数可以配置,这个功能看起来不起眼,实际应该是很有用的。后台有一个作业专门完成将运行的作业日志入日志文件,文件按天分文件夹存放,日志文件大小可以配置,若觉得占用空间,可以设计一个作业进行定时清理以前的日志文件,后续会提供该作业。也可以配置为不日志文件。作业的运行状态会定时反映到管理界面,我们可以通过多种条件筛选我们需要的作业进行批量运行或停止。本系统是基于数据库资源库设计的,暂时不考虑支持文件资源库。本系统还附带了一个kettle插件,类似kettle已有的自定义类控件(可以在转换中java代码)。该控件的设计时为了避免每一个需求都去开发一个kettle控件,从后台元数据管理到操作界面设计。该控件采用灵活的JSON传递参数,然后继承一个基类就可以完成一个任务了,就是说基于该控件,只需要开发一个具体的操作类就可以了。有兴趣可以看一下,详细介绍参看:http://www.cnblogs.com/majinju/p/5767046.html。界面截图主界面定时设置界面参数设置界面运行日志查看界面平台级日志,支持查询下载项目介绍主页:kettle-manager主页 标签:Kettle&nbsp; ETL工具框架
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值