现在我们为 ImageDescForm 来具体实现 ShowImageDesc 操作。该操作将接收到一个值为新闻编号 ImageNewsID 的属性 NewsIDChanged,然后在表单中显示新闻编号为 ImageNewsID 的新闻文档的标题,作者,正文等信息。
熟悉 Notes 的人知道,Notes 开发中本来就有操作(Action)这种设计元素,为了与之区分,我们称 NSF 组件中的复合应用操作为 WSDL 操作(WSDL Action)。在设计时为了便于 Notes 开发人员使用,创建 WSDL 操作的步骤沿袭了 Notes 操作的创建方法。
因此,为了实现这个名为 ShowImageDesc 的 WSDL 操作,我们首先要在 ImageDescForm 表单中创建一个普通 Notes 操作 ImageIDChangedAction。
图 11. 在 Domino Designer 中定义 WSDL 操作
在该操作的高级属性中,我们会发现一个新增设置:“组合设置”,在这里可以选择之前在 WSDL 中定义的操作 ShowImageDesc。通过这样一步简单的操作,一个普通的 Notes 操作 ImageIDChangedAction 就成为了一个 WSDL 操作,实现了ShowImageDesc。(一般情况下,建议将这个操作在操作条上隐藏)。
图 12. 在组合设置中选择对应的操作名

接下来我们需要在该操作的 click 事件中添加代码,实现下列内容:
由于后两步对 Lotus 开发人员并不陌生,这里就不再赘述,在此仅列出接收属性 NewsIDChanged 的 LotusScript 代码,这是整个 WSDL 操作实现过程中最核心的部分:
清单 4. 接收属性并执行操作的 Lotusscript 代码
| Sub Click(Source As Button) ... On Error 4719 Goto err4719 Dim pb As NotesPropertyBroker Set pb = session.getPropertyBroker() // 获取 PropertyBroker 对象 Dim pbInputProperty As NotesProperty Dim pbcontext As Variant pbContext = pb.InputPropertyContext Set pbInputProperty = pbContext(0) // 获取属性 Dim InputPropertyName As String InputPropertyName = pbInputProperty.Name Dim pbvalue As Variant pbValue = pb.GetPropertyValue(InputPropertyName) // 获取属性值 ... // 对该属性值进行处理,在表单中显示相应文档标题,作者和内容。 … Exit Sub err4719: Print "Error" & Str(Err) & ": " &Error$ Messagebox "error" ... End Sub |
通过 定义属性和操作,发布属性,实现操作,我们得到了两个 NSF 组件:ImageNewsList 和 ImageDescForm。对广大 Notes 用户而言,将 Notes 元素封装成组件的好处在于:用户可以充分利用现有的 Notes 数据库,以模块化,组件化的 SOA 思想对它们加以改造。