技术开发 频道

基于Lotus Expeditor6.1的复合应用开发


Eclipse 组件样例

    本节我们给出一个由纯粹 Eclipse 组件构成的复合应用,其功能是将当前北京时间换算为世界其它时间,通过此样例,可以详细了解基于 Lotus Expeditor 客户端的复合应用的构建过程。

    此样例由两个组件组成,com.ibm.rcp.samples.cityselection 是用户选取世界城市,并显示当前的北京时间(当前系统时间),另外一个组件 com.ibm.rcp.samples.citytime 是显示选中城市的当前当地时间。如图 3:


图 3. 实例界面:世界城市时间与北京时间换算

    消息的触发是由 com.ibm.rcp.samples.cityselection 中,用户点击 Send 后,组件 com.ibm.rcp.samples.cityselection 通过 Property Broker 向组件 com.ibm.rcp.samples.citytime 广播所选择的城市名字,组件 com.ibm.rcp.samples.citytime 收到消息事件后,启动一个动作,以计算并显示当前该城市的当地时间。

消息动作及属性的定义

    通过 Property Broker,我们可以声明组件的属性(property)、动作(action)以及线接(wire),以便当松散耦合的某个组件的数据发生变化时,与之线接的组件获得变化的数据并触发相应的动作。 Expeditor 的 Property Broker 提供了一套机制,仅仅通过配置即可将消息动作及属性进行定义,并自动注册到 Property Broker。这种做法的好处是,开发人员可以不必了解 Property Broker 的 API,甚至不必需要 Property Broker 的知识。

    Expeditor 客户端 Property Broker 允许有不同类型的组件与之协同工作,当前 Expeditor 有三类动作处理程序:SWT_ACTION,PORTLET 和 AWT_ACTION,开发人员可以根据需求实现这三种动作的一种,Broker 通过动作类型将变化了的数据传递给相应的动作处理程序。

    如果一个组件没有 UI 界面,可以通过 org.eclipse.core.commands.IHandler 接口来实现自己的动作,这时动作类型为 COMMAND。如果组件依赖于 Eclipse 的界面,如 SWT 视图,可以用 org.eclipse.core.commands.IHandler 接口来实现动作,并且是 SWT_ACTION 类型,也可以继承 org.eclipse.jface.action.Action 来实现动作。用 SWT_ACTION 类型的好处是当组件所在的透视图隐藏时,复合应用 XML 定义的线接(wire)就会失效。

    下面我们讨论如何在组件 com.ibm.rcp.samples.cityselection 中创建一个动作。首先将插件依赖于com.ibm.rcp.propertybroker 和 com.ibm.rcp.propertybroker.swt, 然后创建一个 com.ibm.rcp.propertybroker.PropertyBrokerDefinitions 的扩展,这一扩展可自动注册动作以及对应的输入输出数据。Lotus Expeditor Toolkit 提供了一个工具为 Property Broker 定义模板,利用这一导航式工具,可定义出扩展、WSDL 文件及动作的 Java 类文件。在 Property Broker 定义的模板中,可选取模板 SWT Handler,如图 4: 


图 4. 扩展点的选取

    在模板的导航页面中,可输入动作的包名,动作的处理 Java 类以及类型的命名空间(如图 5),并按 Finish 按钮。


图 5.模板中的数据项

    生成器会自动生成类的代码和 WSDL 文件 wsdl\Sample.wsdl。我们需要将自动生成的 WSDL 文件进行重新命名以满足我们的命名规则,我们将文件名命名为 CityName.wsdl,与之关联的扩展点的细节也需相应的改变,如图 6:


图 6. PropertyBrokerDefinition 扩展点中 wsdl 文件的指定

0
相关文章