Rhapsody集成引擎之RDK篇(二)
声明:转至Rhapsody集成引擎之RDK篇(二)
上篇介绍如何安装、配置RDK开发环境,本篇着重介绍使用RDK开发自定义过滤器,内容涉及:
1)如何引用外部jar包
2)如何捕获并处理异常
3)如何自定义过滤器图标
4)如何发布自定义过滤器至Rhapsody正式环境
如何创建Rhapsody Project
1、以管理员身份打开Eclipse,选择File->New->Plug-inProject,填写项目名称,如下图所示:
Plug-in Project
2、选择“Next”打开“Content”窗口,请注意不要勾选“Generatean Activator”复选框,如下图所示:
Content设置
3、选择“Next”打开“Templates”窗口,选择使用“Rhapsody Project”,如下图所示:
RhapsodyProject
4、选择“Next”打开“Package Name”包名设置窗口,如下图所示:
Package Name
5、包名设置完毕后,点击“Finish”完成Rhapsody Project的创建,如下图所示:
Rhapsody Project
如何创建自定义Filter
如上图所示,Rhapsody Project自带了3个过滤器代码示例,分别是IDFilter、MessageParsingFilter和RelaceBody,我们可以直接使用进行编码修改即可,我们以修改IDFilter为例,步骤如下:
1、对IDFilter重命名,在Eclipse的Project Explorer中右击IDFilter->Refactor->Rename,将其更名为UpperCase
2、修改doConfigure()方法和doProcessMessage()方法
-
doConfigure:过滤器配置相关
-
doProcessMessage():过滤器功能相关
详细说明将留至下篇文章,敬请期待。
3、修改Activator代码,将IDFilter更改为UpperCase,如下图所示:
如何引用外部jar包
作为开发人员,我们在实现部分自定义过滤器功能时不可避免的需要引用外部jar包,传统方式是将jar包拷贝到工程lib文件夹,因此导出项目时会包含引用jar包。
Rhapsody IDE在开发过程中每使用一次过滤器都会包含若干外部jar包,这就导致保存*.rlc工程文件时体量激增,这里给大家推荐第二种方法,具体步骤如下:
1、将引用到的外部jar包拷贝到Rhapsody Engine/plugins中
2、同时拷贝jar包到Rhapsody Engine6\rhapsody\data\modules中
3、打开META-INF/MANIFEST.MF,选择“Dependencies”选项卡,将外部jar包添加进去
4、此时,开发者可以在代码中对jar包进行引用了
如何捕获并处理异常
在RDK开发过程中,对异常的捕获处理是必要的,其中抛出异常的方式有两种,一种是常规的ThrowException,一种是message.addError()方法,二者皆可将异常抛出到Rhapsody的ErrorQueue中,且都可以被路由上的Route Error Handler
主动捕获到,示例代码如下:
public Message[] doProcessMessage(final Message[] messages)throws MessageException, FilterProcessingException,InterruptedException {
for (inti = 0; i < messages.length; i++) {
try {
final String body = Messages.asString(messages[i]);
Messages.setBody(messages[i], body.toUpperCase());
} catch (UnsupportedEncodingException e) {
messages[i].addError("Message encoding type '" + messages[i].getBodyEncoding() + "' not supported.");
} catch (Exception e) {
thrownew MessageException("Error while reading message", e);
}
}
returnmessages;
}
如何自定义过滤器图标
过滤器图标分为两个规格,一个是32*32像素大小的24位bmp图片,用于在路由中显示过滤器,另一个是16*16像素大小,用于在Filter ToolBox中显示,开发者可自行设置图标。详细分为两个步骤:
1、将图标图片放至Rhapsody Project/src下,如下图所示:
2、修改Activator代码,如下表所示:
this.registrations.add(context.registerService(fr, new FilterRegistration("com.lyniate.rhapsody.module.cryptos.AES", "AES","Crypto", AES.class, "/AES-32.bmp", "/AES-16.bmp"), null));
实际效果如下:
路由中过滤器图标
Filter Toolbox过滤器图标
如何自定义过滤器至Rhapsody正式环境
发布自定义过滤器步骤如下:
1、右击项目->Export->Plug-inDevelopment->Deployable plug-ins and fragments
2、选择保存路径后,点击“Finish”完成项目导出
3、复制导出的jar包,拷贝至Rhapsody Engine 6\rhapsody\data\modules下。请注意:需同时将jar包引用到的外部jar包一并拷贝进来。
4、启动Rhapsody引擎,使用Rhapsody IDE进行校验;如果IDE中没有发现自定义过滤器,则打开logs/log.txt,搜索自己开发的过滤器关键字,看看是否有其他异常。