“事件发射器”调解原语
使用“事件发射器”调解原语,从调解流中发出重要业务事件。
简介
您可使用“事件发射器”调解原语在调解流期间发出事件。由于生成的事件需符合公共基本事件规范,因此这些事件具有基于 XML 的标准格式。事件将发送到公共事件基础结构 (CEI) 服务器。有关 CEI 资源和服务的信息,请参阅运行时产品文档和运行时联机帮助。
您可以决定生成的事件是否包含要处理的消息。
- 如果设置 Root 属性,那么可生成包含要处理的全部或部分消息的事件。Root 属性为 XPath 表达式,此表达式指定事件中包含的服务消息对象 (SMO) 部分。Root 属性可指定完整 SMO、子树或叶元素。注: 在运行时,如果 Root 值不匹配 SMO 中的任一元素,那么不会在生成的事件中包含要处理的消息。
- 如果未设置 Root 属性,那么任何生成的事件不包含要处理的消息。
“事件发射器”调解原语具有一个输入终端 (in)、一个输出终端 (out) 和一个失败终端 (fail)。对 in 终端进行连接以接受消息,并对其他终端进行连线以传播消息。输出终端传播原始消息。如果处理输入消息期间发生异常,那么失败终端会传播原始消息,以及 failInfo 元素中包含的任何异常信息。
详细信息
如果生成的事件包含要处理的消息,那么事件格式可能是 V6.1 或更高版本。缺省情况下,“事件发射器”调解原语采用 V6.1 格式发出事件(在 V6.1 系统上运行)。
V6.1 格式将消息作为 XML 元素存储在事件的 xsd:any 槽中。由于消息存储在 xsd:any 槽中,因此可将其作为 XML 实例检索,并使用现有 XML 技术对其进行有效处理。
6.1 格式
| 元素 | 子元素 | 描述 | ||
|---|---|---|---|---|
| event | eventPointData | ModuleName | 模块实例的名称 | |
| MediationName | “事件发射器”实例的名称 | |||
| EventEmitterLabel | 标签属性值 | |||
| Root | Root 属性值 | |||
| applicationData | content | value | 应用程序数据 | |
- 如果生成的事件不包含要处理的消息,那么缺少 event 元素的 applicationData 子元素。
- 如果“事件发射器”原语的 Root 属性指定单个叶元素,那么 applicationData 元素包含叶元素的值。在运行时,这将生成以下事件元素:event/applicationData/content/value。
- 如果“事件发射器”原语的 Root 属性指定业务对象,那么 applicationData 元素存储指定的业务对象。例如,如果业务对象包含 accountID 和 creditLimit,那么在运行时这将生成事件元素:event/applicationData/content/value/accountID 和 event/applicationData/content/value/creditLimit。
用法
“事件发射器”调解原语通过允许您从调解流组件发送业务事件,增强监视能力。您之后可使用事件浏览器,在应用程序服务器或其他事件使用者应用程序上查看“事件发射器”事件。
使用“事件发射器”调解原语指示异常事件。例如,有关流中发生失败的通知或有关流中异常路径的通知。将事件发射器放置在流中时,应考虑可生成事件的可能数目以及将存储在事件中的消息大小。相比将事件发射器放置在异常事件或失败路径中,将事件发射器放置在普通流路径中会生成很多事件。此外,考虑配置发射器以仅存储重要消息数据,而不是完整消息,以减小事件的整体大小。
您可使用“事件发射器”调解原语,记录其他调解原语中的失败,然后继续处理。要执行此操作,将先前调解原语的失败终端连线到“事件发射器”调解原语的输入终端,并将“事件发射器”调解原语的输出终端连线到流中的下一个步骤。
您还可组合使用“事件发射器”调解原语和“消息过滤器”调解原语,以根据消息内容生成业务事件。要执行此操作,请将“消息过滤器”调解原语的输出终端连线到“事件发射器”调解原语的输入终端,并将“事件发射器”调解原语的输出终端连线到流中的下一个步骤。
详细事件内容
“事件发射器”调解原语发出的事件符合公共基本事件规范 1.0.1 结构。事件规范属于 IBM® Autonomic Computing Toolkit。
以下是所有“事件发射器”事件的常规元素:
- extensionName
- 此字段的值与“事件发射器”调解原语标签属性的值对应。
- sourceComponentID
- 此字段的子元素会使用特定于运行调解原语的环境的信息自动填写,例如,组件和主机名。
- situation
- 情况类型为 ReportSituation。
- event
- 在事件模式中,有一个类型为 xsd:any 的部分。
如果发出 6.1 格式事件,那么此部分包含 event 数据。
- eventPointData
- 包含有关生成此事件的“事件发射器”原语的信息。它包含以下子元素:
- ModuleName
- 包含与调解模块名称对应的字符串值。以下为 XML 格式的示例元素:
<esb:ModuleName>Test2</esb:ModuleName> - MediationName
- 包含与“事件发射器”原语的名称对应的字符串值。以下为 XML 格式的示例元素:
<esb:MediationName>EventEmitter1</esb:MediationName> - EventEmitterLabel
- 包含与“事件发射器”原语的标签属性对应的字符串值。
以下为 XML 格式的示例元素:
<esb:EventEmitterLabel>Test2_EventEmitter1_Req</esb:EventEmitterLabel> - Root
- 包含与“事件发射器”原语的 Root 属性对应的字符串值。
如果未指定 Root 属性,那么不会包含 Root 元素。以下为 XML 格式的示例元素:
<esb:Root>/body/operation1/input1/field1</esb:Root>
- applicationData
- 如果指定了“事件发射器”原语的 Root 属性,那么 applicationData 元素会保存
content 元素,其名称属性设置为 Message。如果 Root 属性评估为消息中的单个叶元素,那么将在相应类型的单个值元素中包含叶元素值。 以下为 XML 格式的示例 content 元素:
<wbi:content wbi:name="Message"> <wbi:value xsi:type="xsd:string">hello</wbi:value> </wbi:content>如果 Root 属性评估为消息中的子树,那么 content 元素包含与消息树结构对应的子元素。 例如,以下 XSD 类型定义所定义的消息:
could produce the following example Message element:<xsd:complexType name="MyBO"> <xsd:sequence> <xsd:element name="value1" type="xsd:string"/> <xsd:element name="value2" type="bons0:MySubBO"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="MySubBO"> <xsd:sequence> <xsd:element name="value1" type="xsd:string"/> <xsd:element name="value2" type="xsd:int"/> </xsd:sequence> </xsd:complexType><wbi:content wbi:name="Message" wbi:businessObjectName="MyBO" wbi:targetNamespace="http://Test" > <wbi:value xsi:type="p:MyBO" > <value1>hello</value1> <value2> <value1>world</value1> <value2>1234</value2> </value2> </wbi:value> </wbi:content>