要理解 Property Broker 的体系结构,您必须理解什么是操作处理程序。存在操作处理程序扩展点的根本目的在于:允许现有基于事件或消息的系统将操作用于声明式代理模型。如上所述,Lotus Expeditor 附带三个操作处理程序。应根据操作处理程序的要求来使用恰当的操作实现。最终由其中一个处理程序来调用操作。代理将属性更改传递给适用于您操作对象类型的已注册处理程序。表 1 展示了这三个可用的处理程序。
表 1. 可用操作处理程序
| 插件名称 | 描述 | 依赖项 |
| com.ibm.rcp.propertybroker | 核心代理、核心处理程序 处理程序类型:COMMAND 操作接口:org.eclipse.core.commands.IHandler |
org.eclipse.core.commands org.eclipse.core.runtime |
| com.ibm.rcp.propertybroker.swt | SWT 处理程序: 处理程序类型:SWT_ACTION 操作接口:org.eclipse.core.commands.IHandler |
org.eclipse.core.runtime org.eclipse.ui com.ibm.rcp.propertybroker |
| com.ibm.rcp.propertybroker.portlet | JSR 168 Portlet 处理程序 处理程序类型:PORTLET 操作接口:JSR 168 Portlet |
org.eclipse.core.runtime org.eclipse.ui com.ibm.rcp.propertybroker com.ibm.rcp.portletcontainer |
| com.ibm.rcp.propertybroker.awt | AWT Action 处理程序 处理程序类型:AWT_ACTION 操作接口:java.awt.Component |
org.eclipse.core.runtime com.ibm.rcp.propertybroker |
需要理解的最关键部分是上表中的依赖项列。如果编写了没有头部的操作(即不能有 UI 依赖项的插件或代码),那么在实现操作时应该使用 org.eclipse.core.commands.IHandler 接口。如果组件是基于图形化的组件,例如 SWT 视图,那么应实现 org.eclipse.core.commands.IHandler 接口,但应在创建操作时指定 SWT_ACTION 类型。SWT 操作处理程序消除了启用和禁用页面级连接时的烦恼。显示或隐藏透视图时,将分别适当地启用或禁用在复合应用程序 XML 中定义的任何连接。
如前所述,操作处理程序负责实现与可调用操作兼容的对象,并提供 PropertyChangeEvent 接口,这样属性和连接信息就可为操作所用(参见图 3)。在大多数情况下,仅创建了操作,并没有创建操作处理程序。
