为您的扩展创建自定义模板
这篇文章将指导你:
- 设计一个新的模板流程
- 将模板与扩展绑定
设计模板
模板是自包含的文件,可以通过扩展分布或从本地文件系统加载。虽然文件格式很简单,但重要的是要符合下面描述的结构。
文件格式
模板是使用.template
文件扩展名,至少包含三个文件:
my_template。模板├── icon.png ├── My Template.rmp └── template.properties
的template.properties
Files定义模板的名称,并包含简短的描述。它必须被编码为iso - 8859 - 1
-特别是,unicode编码将很可能无法工作。对于上面的例子,文件的内容可以是这样的:
Template .name=我的模板。short_description=这是我的定制模板。
模板必须包含一个RapidMiner进程(* .rmp
).如果用户选择了模板,它将被加载。
模板中应该使用的图标,例如新流程菜单,必须提供便携式网络图形(* . png
),名叫程序
,大小应为64×64。
除了这些文件之外,您还可以捆绑任意存储库条目。例如,如果希望在模板中包含某个数据集,可以通过从本地存储库中添加相应的文件来实现。下面一节将介绍一个示例。
最后,请注意模板机制不支持子目录。RapidMiner Studio将拒绝加载包含文件夹的模板存档。
开发模板
您可以在本地加载模板流程,而无需将它们与扩展绑定。只有当您想要分发模板时,才需要绑定。
您所需要做的就是将模板存档移动到您的.RapidMiner \模板
目录中。请注意,存储在该目录中的模板会覆盖绑定的模板:如果您将模板与扩展绑定在一起,并安装了模板的本地副本,则只会加载本地副本。
最小模板
让我们从一个简单的开始“你好,世界!”模板,该模板显示单个流程注释。要创建进程文件,请在RapidMiner Studio中打开一个新进程,并添加带有您喜欢的消息的注释:
方法导出过程文件菜单(选择导出过程……),另存为你好World.rmp
。
接下来,我们需要一个格式正确的模板图标。如果你喜欢,你可以下载这个:
作为最后一个文件,我们需要创建template.properties
文件,其中包含模板的名称和描述。
template.name=Hello World模板。short_description=一个最小模板。
最后,我们需要创建模板存档。为此,使用您选择的存档程序创建一个包含这三个文件的新的ZIP存档。然后将文件扩展名为* . zip
来* .template
例如,重命名hello_world.zip
来hello_world.template
。最终的文件结构应该是这样的:
hello_world.template├── Hello World.rmp ├── icon.png └── template.properties
若要加载新创建的模板,请将模板文件复制到.RapidMiner /模板
并重新启动RapidMiner Studio。在新流程菜单,您现在应该能够选择您的新模板:
选择新条目将打开我们在第一步中创建的流程。
包括存储库条目
现在让我们向模板添加一个自定义数据集。原则上,您可以将任何存储库条目与模板捆绑在一起。但是请记住,模板机制并不是为处理大型数据集而设计的。
在开始之前,让我们回顾一下RapidMiner如何处理引用存储库条目。这可以通过绝对路径完成,例如,/ /本地存储库/数据/例子
或者通过相对路径,例如,. . /数据/例子
。
对于模板,我们两者都不能使用:虽然绝对路径在用于开发模板的机器上可以工作,但路径在其他机器上很可能无效。相对路径根本不起作用,因为模板机制总是创建一个没有存储库位置的新进程。
但是,RapidMiner Studio将为每个模板创建一个隐藏的示例存储库。例如,我们的内容“你好,世界!”模板可以通过绝对路径获得/ /样本/模板/ Hello World
。因此,我们必须相应地调整模板流程中的存储库引用。
首先,在本地存储库中创建一个新文件夹,例如://本地存储库/Hello World
。然后创建一个新进程并将根据用户规格生成数据运算符,并指定一个小数据集:
添加一个商店操作符来保存指定的数据集。将其配置为将数据集存储在上面创建的目录中,例如,as//本地存储库/Hello World/Hello World数据
:
运行该流程一次以创建存储器条目。
创建一个新进程,并将其存储在与数据集相同的目录中,例如as//本地存储库/Hello World/Hello World
。将数据集拖到空白进程中,并连接检索结果端口的操作符:
保存流程后,存储库条目将通过相对路径引用:
将其更改为//样本/模板/Hello World/Hello World数据
(这里假设我们继续使用模板名你好世界):
由于模板尚未加载,RapidMiner Studio可能会警告您路径无效。忽略警告并保存进程。
你的本地存储库现在应该有一个类似这样的结构:
Local Repository├─data├──processes├──…├──Hello World│├──Hello World data│├──Hello World├─…
如果您使用操作系统的文件浏览器浏览存储库,您将看到稍微不同的画面。为此,单击存储库并进行选择在文件中打开浏览器:
. rapidminer /repositories/Local Repository├──…ioo│├──Hello World Data。md│├──Hello World Data。│├──Hello World。│├──Hello World。RMP├──…
如您所见,生成的数据集被分割为三个文件。重要的是,我们把两者结合起来* .ioo
(实际数据)和*。海事
(元数据)与模板。然而,我们可以忽略* . properties
文件。
更新前一节中创建的模板存档,并添加生成的数据集。存档现在应该是这样的:
hello_world.template├── Hello World Data.ioo ├── Hello World Data.md ├── Hello World.rmp (updated process) ├── icon.png └── template.properties
重新启动RapidMiner Studio以加载更新后的模板。您应该能够在不修改流程的情况下运行模板。
捆绑的模板
将模板与扩展绑定是一个简单的过程。您所要做的就是将模板存档作为资源添加,并在扩展的初始化代码中注册它们。乐鱼体育安装
如果你还没有编写扩展的经验,请参考我们的指南创建自己的扩展。第1-3节涵盖了构建用于分发模板的扩展所需的所有知识。
添加模板作为资源乐鱼体育安装
按照惯例,构建工具(如Maven和Gradle)会在乐鱼体育安装src / mai乐鱼体育安装n /资源
目录中。我们建议在RapidMiner扩展中也使用这种结构。
让我们假设你选择了org.myorg.myextension
作为组id。那么你的资源应该在乐鱼体育安装src / mai乐鱼体育安装n /资源/ org/myorg/myextension
。注意,RapidMiner将添加模板
目录自动转换到路径。因此,您可以将上面创建的模板捆绑为…/ org/myorg/myextension/template/hello_world.template
:
my_extension├──README。Md├──build。gradle├──…├──src│└──主要│├──java││└──…│└──资源│├──org││└──myorg乐鱼体育安装││└──myextension││└──模板││└──hello_world。│├──……
但是,RapidMiner将不会搜索该目录中的资源,除非您将该位置注册为资源源。乐鱼体育安装这可以在扩展的初始化代码中轻松完成。所需要做的就是将下面的行添加到initPlugin ()
方法:
/** *该方法将在扩展初始化后直接调用。这是启动过程中的第一个钩子。调用* this时,操作符或呈现器没有初始化。*/ public static void initPlugin(){//注册扩展资源工具。乐鱼体育安装add乐鱼体育安装ResourceSource(new ResourceSource(PluginInitMyExtension.class.getClassLoader(), "org/myorg/myextension/"));}
现在您可以通过所谓的模板管理器注册扩展。要注册上面设计的模板,你可以在插件初始化代码中添加另一行:
public static void initPlugin(){//注册扩展资源工具。乐鱼体育安装add乐鱼体育安装ResourceSource(new ResourceSource(PluginInitMyExtension.class.getClassLoader(), "org/myorg/myextension/"));//注册hello world模板TemplateManager.INSTANCE.registerTemplate("hello_world");}
测试模板
在测试捆绑的模板时,没有进一步的特殊步骤。所有你需要做的是建立一个新的扩展版本,例如,通过命令gradle清洁安装扩展
。
但请记住,模板存储在您的.RapidMiner
目录覆盖同名绑定模板。因此,请确保在启动RapidMiner Studio之前删除模板的所有工作副本。