科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件在 Lotus Notes 8 中开发复合应用(4)

在 Lotus Notes 8 中开发复合应用(4)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

很多情况下,只依靠 NSF 组件构建 Notes 8 复合应用是不够的。与 NSF 组件一样,Eclipse 组件的开发同样遵循着 定义属性和操作,属性的发布,操作的实现 三个步骤。 

作者:陈 原 来源:论坛整理 2008年1月10日

关键字: Lotus Notes lotus

  • 评论
  • 分享微博
  • 分享邮件

  Eclipse 组件的开发

  当然很多情况下,只依靠 NSF 组件构建 Notes 8 复合应用是不够的。在做报表展现,图形处理,以及一些其他业务应用的时候,传统 Notes 开发会遇到一些瓶颈。在 Notes 8 中,我们可以通过 Eclipse 组件来弥补 NSF 组件功能上的不足。

  开发复合应用的 Eclipse 组件需要具有 Eclipse 的插件(plug in)开发技能。关于 Eclipse 插件开发细则以及 Eclipse 组件开发环境的配置,请参考 http://www.eclipse.org 上的相关文档,此处不再赘述。

  与 NSF 组件一样,Eclipse 组件的开发同样遵循着 定义属性和操作,属性的发布,操作的实现 三个步骤。

  定义属性和操作

  以 ImageView 组件为例,该组件接收 NewsIDChanged 属性(该属性值为新闻号),执行 ShowImage 操作:显示该新闻号对应的新闻的图片。要在 Eclipse 组件中定义该属性和操作,需要执行下列步骤。

  图 13. Eclipse 组件——ImageView

  

  

  

  首先,创建 WSDL。Eclipse 组件中同样使用 WSDL 来描述组件的属性和操作,并且其格式与 NSF 组件的完全一致。这意味着我们同样可以用前面提到的 Property Broker Editor 这个可视化工具来编写 Eclipse 组件的 WSDL(当你已经熟悉了 Eclipse 中复合应用组件的开发之后,你会更愿意使用文本编辑工具来编辑)。调用 Property Broker Editor 的方法是 \framework\rcp\rcplauncher.exe -config wsdledit。

  图 14. 利用 Property Broker Editor 定义 Eclipse 组件的属性

  

  

  

  利用上图的 Property Broker Editor 工具我们得到了一个描述文件 actions.wsdl。接下来,需要把得到的 action.wsdl 导入到 Eclipse 组件中。在 Eclipse 的项目中,新建一个名为 wsdl(该名称不做限定)的文件夹,把 WSDL 文件导入到该文件夹中。下面这步非常关键:在该 Eclipse 插件的扩展中加入 com.ibm.rcp.propertybroker.PropertyBrokerDefinitions,并在该扩展下新建一个 handler。

  图 15. 扩展 PropertyBrokerDefinitions

  

  

  

  在这里,此扩展将会把描述文件 WSDL 与具体实现类相结合。如下图所示。File 属性指定为我们刚刚生成的 actions.WSDL 文件,Type 处选择 SWT_ACTION,Class 属性则选定将会具体实现 Eclipse 组件的操作的类 com.ibm.xna.actions.ImageViewAction。

  图 16. 扩展详细信息

  

  保存后在 Eclipse 插件的 plugin.xml 中会多出如下代码:

  清单 5. Eclipse 组件的 Plug.xml 片断

  <extension

  id= "com.ibm.xna.properties"

  name= "xnapbdefs"

  point= "com.ibm.rcp.propertybroker.PropertyBrokerDefinitions" >

  ……

  <handler

  class= "com.ibm.xna.actions.ImageViewAction"

  file= "wsdl/actions.wsdl"

  type= "SWT_ACTION" />

  ……

  </extension>

  至此,我们就完成了 Eclipse 组件属性和操作的定义工作。需要强调的是,对某些之前没有接触过 Eclipse 插件开发的 Notes 开发者而言,上述内容也许比较陌生,因为要掌握 Eclipse 中的扩展,扩展点等概念通常需要一些时间。但从长远来看,考虑到这门技术在未来给他们带来的价值,这种技术上的投入毫无疑问是值得的。

  属性的发布

  在 Eclipse 组件中,属性的发布同样也非常简单。这里我们以另一个 Eclipse 组件 SnapshotView 为例,该组件用于展示若干篇新闻的图片缩略图。一方面,它可以接受 ImageNewsList 传递给它的属性,执行缩略图展现的操作;另一方面,当用户点击某篇新闻的缩略图时,它会把该新闻的 NewsID 作为属性发布出去。在这里我们只介绍 SnapshotView 组件中属性发布的实现。

  图 17. 扩展详细信息

  

  

  

  在双击某张缩略图时,我们会执行如下的代码:

  PropertyBrokerUtil.publishProperty("com.ibm.xna",viewID, "NewsIDChanged", id);

  其中 PropertyBrokerUtil.publishProperty 方法是我们自定义的一个函数,通过该函数,SnapshortView(视图号为viewID)将发送名称空间为 com.ibm.xna,名称为 NewsIDChanged 的属性,值为某篇新闻的编号 id。

  该方法的实现代码如下:

  清单 6. 发布属性的 Eclipse 代码

  public void publishProperty(String namespace,String viewID,

  String property, String value) {

  PropertyBroker pb = PropertyBrokerFactory. getBroker ();

  // 获取 PropertyBroker 实例

  PropertyValue[] values = new PropertyValue[1];

  try {

  Property prop = pb.getProperty(namespace, property);

  // 根据名称空间和属性名获取属性

  if (prop != null ) {

  values[0] = PropertyFactory. createPropertyValue (prop, value);

  // 生成属性值

  pb.changedProperties(values, viewID);// 发布属性

  }

  } catch (PropertyBrokerException e) {

  e.printStackTrace();

  }

  }

  在上面这个函数中,我们首先获取一个 Property Broker 的实例,再通过名称空间和属性名获取 Property 实例。实际用来发布属性的方法是 PropertyBroker 的 changedProperties 函数,此函数有两个参数,一个是 PropertyValue 数组,用于存放多个要发布的属性值对;另一个是字符串,用于标志属性变化时的上下文,应该与连接(Wiring)源组件的 EntityID 匹配。本例中,该 viewID 是通过 snapShotView.getViewSite().getId() + ":" + snapShotView.getViewSite().getSecondaryId() 拼接而成的。

  如果觉得拼接这个 viewID 麻烦,还有一种做法更加简单。可以使用 SWTHelper (com.ibm.rcp.propertybroker.swt.api.SWTHelper) 类的 changedProperties 函数发布属性。该函数的函数头为:SWTHelper.changedProperties(PropertyValue[] arg0, IViewPart arg1),与 PropertyBroker 的同名函数的不同之处在于,该函数的第二个参数是指向 ViewPart 的指针。如果是在 ViewPart 类内部调用该方法的话,那么很多情况下你只需要简单写一个 this 即可。

  共5页。 912345:

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章