1

我正在尝试使用 bpel 扩展在 soa 套件 11g ps3 下进行事件处理。我正在尝试从事件传递网络订阅事件,但出现错误。

那是代码:

<eventHandlers>
  <onEvent bpelx:eventName="ns4:discountEvent" variable="discEvent" >
    <scope name="Scope1">
      <sequence name="Sequence1">
        <exit name="Exit1"/>
      </sequence>
    </scope>
  </onEvent>
</eventHandlers>

编译器给我以下错误:

Error(52): Activity <bpel:onEvent> must have "element", "messageType" attribute present.

我找不到任何关于在“onEvent”活动中使用扩展的信息。

任何帮助表示赞赏!

谢谢,克里斯

4

1 回答 1

1

事件处理程序的工作方式与其他交互活动略有不同。当接收、调用等对先前定义的变量起作用时,事件处理程序定义了自己的变量,该变量在 onEvent 的子活动范围内可见。为了给这个变量一个类型,需要将 messageType 或元素标识为变量的声明类型。这就是需要 element 或 messageType 的原因。

请在下面找到 BPEL 2.0 规范的相关引用:

变量属性(如果存在)标识事件处理程序的本地变量,该变量将包含从伙伴接收的消息。[SA00087] messageType 属性通过使用其 QName 引用消息类型定义来指定变量的类型。变量的类型(由 messageType 属性指定)必须与 operation 属性引用的 operation 定义的输入消息的类型相同。可选地,如果要接收的消息具有单个部分并且该部分是用元素类型定义的,则可以省略 messageType 属性,而是替换元素属性。该元素类型必须与元素属性引用的元素类型完全匹配。variable 和 messageType/element 属性构成了在与事件处理程序关联的关联范围内的该名称和类型的变量的隐式声明。如果使用元素属性,则传入消息到事件处理程序中声明的变量的绑定发生如第 10.4 节中为接收活动指定的那样。提供 Web 服务操作 - 接收和回复。

于 2011-10-24T12:57:41.900 回答