1

我目前正在为 Oracle SOA Suite 11g R1 开发一个组合。简而言之,我有以下 BPEL 流程(一些活动未提及):

  1. 文件适配器等待 XML 文件(在 中定义的格式input.xsd)启动实例。例如,输入文件包含一个简单的购物订单列表(XSD 类型为Order_Type)。
  2. 变换(格式定义在 中output.xsd
  3. 文件适配器写入输出。

两个 XSD 都使用第三种common.xsd来表示常见类型。

我想在阅读我的输入文件后立即插入一条规则。从 JDeveloper (11g R1 PS2) BPEL 编辑器中,我将一个业务规则活动拖到我的接收活动下方,并使用向导创建一个新字典:

  • 我让 JDeveloper 从我的input.xsd. 使用选择器Order_Type编组到班级mypackage.OrderType//xs:complexType[@name='Order_Type']
  • 我创建了一个新规则集,以及一个将订单作为输入的新规则。
  • 我创建了一个决策函数来调用该规则。该函数有一个类型的输入参数OrderType

如果我现在关闭函数对话框,我没有错误但无法在我的 BPEL 流程中选择规则。

另一方面,如果我选择Will Be Invoked As A Webservice然后关闭,我会收到以下错误消息:

在 XML 架构文件中找不到元素。在 XML Schema 文件文件中找不到事实类型 mypackage.OrderType 的元素:/C:/Jdeveloper/[...]/xsd/input.xsd [...]

又名BPM-36355错误,尽管没有明确提及该错误代码。

当然,文件中存在类型(正如我所说,我让 JDev 为我生成 JAXB 类),所以我不知道为什么会发生这个错误,或者如何纠正它。

我尝试了各种组合来生成 XML 事实和决策函数,然后我重新启动了 JDev(别笑,这实际上解决了昨天的一个奇怪问题),但无济于事。选择类型的 XPath 表达式是正确的。

任何建议将不胜感激。当然,除了放弃 Oracle 或降级到 11g 之前。谢谢

4

1 回答 1

1

我的根元素Order是一个 序列Order_TypeOrder我通过使用而不是Order_Type我的决策函数参数解决了上述问题。成功生成了 WSDL,并调用了我的规则。

我不知道这是一个错误还是一个功能,所以如果有人有更多信息,请随时发布。

于 2011-01-21T07:06:42.967 回答