webSpoon 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
webSpoon 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
webSpoon 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」 !
webSpoon 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」「最积极运营项目」 !
webSpoon 获得 2020 年度 OSC 中国开源项目评选「最积极运营项目」 !
授权协议 GPL
开发语言 Java
操作系统 跨平台
软件类型 开源软件
所属分类 Web应用开发Web框架
开源组织
地区 国产
提 交 者 Gavin91
适用人群 未知
收录时间 2020-02-01

软件简介

webSpoon是一个基于kettle的web图形设计器,用于Pentaho数据集成,外观和操作与Kettle相同。

特性

  • 数据安全
  • 远程使用
  • 易于管理

如何使用

请参考 wiki and issues.

如何配置(可选)

Carte

如果 $CATALINA_HOME/system/kettle/slave-server-config.xml 存在,嵌入式CARTE servlet可以相应地配置。 参考 here 文件配置格式。 配置xml示例如下:

<slave_config>
  <max_log_lines>10000</max_log_lines>
  <max_log_timeout_minutes>2880</max_log_timeout_minutes>
  <object_timeout_minutes>240</object_timeout_minutes>
  <repository>
    <name>test</name>
    <username>username</username>
    <password>password</password>
  </repository>
</slave_config>

注意,只能使用$HOME/.kettle/repositories.xml中定义的存储库。

第三方插件和JDBC驱动程序

将第三方插件放入$CATALINA_HOME/plugins,将JDBC驱动程序放入$CATALINA_HOME/lib,如下所示:

$CATALINA_HOME
├── system
├── plugins
│   ├── YourPlugin
│   │   └── YourPlugin.jar
│   ├── ...
├── lib
│   ├── YourJDBC.jar
│   ├── ...
├── webapps
│   ├── spoon
│   ├── ...

禁用UI组件

Spoon使用XUL(XML用户界面语言)定义其用户界面的某些功能(请参见此处了解详细信息)。

<menu id="file" label="${Spoon.Menu.File}" accesskey="alt-f">
  <menuitem id="file-open" label="${Spoon.Menu.File.Open}" />
  <menuitem id="file-save-as" label="${Spoon.Menu.File.SaveAs}" />
</menu>

为了限制用户的能力,可能需要禁用一些UI组件。 为此,将disable="true"添加到要禁用的组件中,如下所示。

<menu id="file" label="${Spoon.Menu.File}" accesskey="alt-f">
  <menuitem id="file-open" label="${Spoon.Menu.File.Open}" />
  <menuitem id="file-save-as" label="${Spoon.Menu.File.SaveAs}" disabled="true" />
</menu>

没有disabled属性的效果与disabled="false"相同。

如何发展

Spoon依赖SWT来实现UI小部件,这对于操作系统不可知非常好,但它只作为桌面应用程序运行。 RAP/RWT为web用户界面提供了SWT API,因此用RAP/RWT替换SWT允许Spoon作为一个web应用程序运行,只需稍作代码更改。 尽管如此,一些api并没有实现;因此,需要比听起来更多的代码更改。

设计理念

  1. 尽量减少与原来kettle spoon的差异。
  2. 将webSpoon优化为web应用程序。

分支和版本控制

我从webspoon分支开始这个项目,从6.1.0.5-R到6.1.0.6-R之间的分支6.1分支。 很快我意识到我应该从一个发布的版本中分离出来。 所以我决定做两个分支:webspoon-6.1和webspoon-7.0,每一个分支分别被重新定位到6.1.0.1-R和7.0.0.0-R。

webSpoon使用4位数字版本控制,规则如下:

-第1位数字始终为0(绝不作为单独的软件发布)。 -第2位和第3位代表基本水壶版本,例如6.1、7.0。 -最后一个数字表示修补程序版本。

因此,下一个(预)版本将是0.6.1.4,这意味着它是基于Kettle版本6.1的第4个补丁。 可能有一个0.7.0.4版本,它基于Kettle 7.0版本,有(基本上)相同的补丁。

构建和本地发布依赖库

请生成并本地发布以下依赖库。

  • pentaho-xul-swt
  • org.eclipse.rap.rwt
  • org.eclipse.rap.jface
  • org.eclipse.rap.fileupload
  • org.eclipse.rap.filedialog
  • org.eclipse.rap.rwt.testfixture
  • pentaho-vfs-browser

pentaho-xul-swt

$ git clone -b webspoon-8.3 https://github.com/zhangrenhua/pentaho-commons-xul.git
$ cd pentaho-commons-xul
$ mvn clean install -pl swt -Dmaven.test.skip=true

rap

$ git clone -b webspoon-3.7.0 https://github.com/zhangrenhua/rap.git
$ cd rap
$ mvn clean install

pentaho-vfs-browser

$ git clone -b webspoon-8.3 https://github.com/zhangrenhua/apache-vfs-browser.git
$ cd apache-vfs-browser
$ mvn clean install

编译 webSpoon

确保上面修补的依赖库已在本地发布

$ git clone -b webspoon-8.3 https://github.com/zhangrenhua/pentaho-kettle.git
$ cd pentaho-kettle
$ mvn clean install -Dmaven.test.skip=true

解压命令:

cd assemblies/pdi-server/target/
# 解压
tar zxvf pdi-server-8.3.0.0-371.tar.gz
cd webspoon/

启动命令:

  • linux/unix OS:sh start-pentaho.sh
  • Windows OS:start-pentaho.bat

启动之后浏览器访问:http://localhost:8080/spoon/spoon

使用Selenium进行UI测试

目前,只有Google Chrome浏览器在运行UI测试用例时经过了测试。 除非通过参数-Dheadless.unittest=false,否则测试以无头模式运行。 要在non-headless模式下运行测试,Chrome的版本应该高于59。

默认访问地址 http://localhost:8080/spoon. 如果webSpoon部署到不同的url,则传递如下参数。

以下命令以non-headless模式运行所有单元测试用例,包括UI。

$ cd integration
$ mvn clean test -Dtest.baseurl=http://localhost:8080/spoon/spoon -Dheadless.unittest=false

截图演示

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (15)

加载中
我编译成功运行了,但是运行时资源库报错 org.eclipse.swt.SWTException: Failed to execute runnable (java.lang.NoSuchMethodError: org.eclipse.swt.graphics.GC.copyArea(Lorg/eclipse/swt/graphics/Image;II)V)
01/26 15:16
回复
举报
2020/11/06 09:34
回复
举报
在win10环境下,mvn编译rap 项目模块的时候(mvn clean verify),始终提示[package javax.servlet [2.3.0,5.0.0)' but it could not be found],放到eclipse 里,进行mvn命令打包也是一会儿事情, 最后切换到linux系统上,运行mvn clean verfy 下载RAP 依赖环境包 正常,最终顺利将rap相关依赖包install 本地仓库中
2020/11/04 13:37
回复
举报
大神,这个rap是不是只能在ECLIPSE中进行打包?
2020/05/20 14:30
回复
举报
'package javax.servlet [2.3.0,5.0.0)' but it could not be found 在编译Rap时出现如下 错误
2020/05/20 10:01
回复
举报
Gavin91软件作者
标准maven项目,使用mvn即可打包,本人使用idea开发的。 请参考readme.md里详细说明哦,适当时候加上-Dmaven.test.skip=true 跳过测试用例
2020/05/21 12:17
回复
举报
RAP项目打包报的这个错,我把这个项目用Eclipse打开后,可以正常install,奇怪
2020/05/21 15:01
回复
举报
请问怎么搭建集群版
2020/05/07 10:58
回复
举报
Gavin91软件作者
可以尝试部署两套webspoon,通过nginx做负载均衡即可。
2020/05/14 21:36
回复
举报
rap编译时报错,Caused by: org.eclipse.equinox.p2.core.ProvisionException: No repository found at https://download.eclipse.org/eclipse/updates/4.15milestones/S-4.15M1-202001100905. 路径无效,如何解决吖? pentaho-kettle编译也报错 [ERROR] Failed to execute goal org.hitachivantara.karaf.tooling:karaf-maven-plugin:4.2.6-R2:features-generate-descriptor (default-features-generate-descriptor) on project file-open-save-plugin: Unable to create features.xml file: org.apache.maven.plugin.MojoExecutionException: java.util.NoSuchElementException [ERROR] role: org.eclipse.aether.RepositorySystem
2020/04/30 18:07
回复
举报
Gavin91软件作者
可以fanqiang去国外下载
2020/05/14 21:38
回复
举报
[INFO] Adding repository https://download.eclipse.org/eclipse/updates/4.15milestones/S-4.15M1-202001100905 [ERROR] Internal error: java.lang.RuntimeException: Failed to load p2 repository with ID 'platform-repo' from location https://download.eclipse.org/eclipse/updates/4.15milestones/S-4.15M1-202001100905/: No repository found at https://download.eclipse.org/eclipse/updates/4.15milestones/S-4.15M1-202001100905. -> [Help 1] org.apache.maven.InternalErrorException: Internal error: java.lang.RuntimeException: Failed to load p2 repository with ID 'platform-repo' from location https://download.eclipse.org/eclipse/updates/4.15milestones/S-4.15M1-202001100905/ at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:168) at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537) at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196) at org.apache.maven.cli.MavenCli.main(MavenCli.java:141) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodA
2020/04/30 18:00
回复
举报
能给个截图吗?
2020/02/21 21:43
回复
举报
Gavin91软件作者
已添加演示图片,等待审核中
2020/03/02 14:55
回复
举报
太棒了!
2020/03/03 09:58
回复
举报
更多评论
暂无内容
暂无内容
暂无内容
15 评论
18 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部