“事件发射器”调解原语

使用“事件发射器”调解原语,从调解流中发出重要业务事件。

简介

您可使用“事件发射器”调解原语在调解流期间发出事件。由于生成的事件需符合公共基本事件规范,因此这些事件具有基于 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 格式

“事件发射器”原语生成的 6.1 格式事件可包含下表中描述的元素。
表 1. 6.1 格式事件元素
元素 子元素 描述
event eventPointData ModuleName 模块实例的名称
MediationName “事件发射器”实例的名称
EventEmitterLabel 标签属性值
Root Root 属性值
applicationData content value 应用程序数据
注:
  • 如果生成的事件不包含要处理的消息,那么缺少 event 元素的 applicationData 子元素。
  • 如果“事件发射器”原语的 Root 属性指定单个叶元素,那么 applicationData 元素包含叶元素的值。在运行时,这将生成以下事件元素:event/applicationData/content/value
  • 如果“事件发射器”原语的 Root 属性指定业务对象,那么 applicationData 元素存储指定的业务对象。例如,如果业务对象包含 accountIDcreditLimit,那么在运行时这将生成事件元素:event/applicationData/content/value/accountIDevent/applicationData/content/value/creditLimit

用法

“事件发射器”调解原语通过允许您从调解流组件发送业务事件,增强监视能力。您之后可使用事件浏览器,在应用程序服务器或其他事件使用者应用程序上查看“事件发射器”事件。

使用“事件发射器”调解原语指示异常事件。例如,有关流中发生失败的通知或有关流中异常路径的通知。将事件发射器放置在流中时,应考虑可生成事件的可能数目以及将存储在事件中的消息大小。相比将事件发射器放置在异常事件或失败路径中,将事件发射器放置在普通流路径中会生成很多事件。此外,考虑配置发射器以仅存储重要消息数据,而不是完整消息,以减小事件的整体大小。

您可使用“事件发射器”调解原语,记录其他调解原语中的失败,然后继续处理。要执行此操作,将先前调解原语的失败终端连线到“事件发射器”调解原语的输入终端,并将“事件发射器”调解原语的输出终端连线到流中的下一个步骤。

您还可组合使用“事件发射器”调解原语和“消息过滤器”调解原语,以根据消息内容生成业务事件。要执行此操作,请将“消息过滤器”调解原语的输出终端连线到“事件发射器”调解原语的输入终端,并将“事件发射器”调解原语的输出终端连线到流中的下一个步骤。

详细事件内容

“事件发射器”调解原语发出的事件符合公共基本事件规范 1.0.1 结构。事件规范属于 IBM® Autonomic Computing Toolkit。

以下是所有“事件发射器”事件的常规元素:

extensionName
此字段的值与“事件发射器”调解原语标签属性的值对应。
sourceComponentID
此字段的子元素会使用特定于运行调解原语的环境的信息自动填写,例如,组件和主机名。
situation
情况类型为 ReportSituation
以下信息仅出现在 6.1 格式事件中:
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 类型定义所定义的消息:
<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>
could produce the following example Message element:
<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>