我应该如何在 WSO2 BPS 中实现动态合作伙伴 link 端点?
How should I implement a dynamic partner link endpoint in WSO2 BPS?
我正在尝试在 WSO2 BPS BPEL 流程中实现一个具有动态确定端点地址的合作伙伴 link。这个想法是发送到进程的请求包含一个端点 URL 并且这个 URL 用作某个伙伴 link 的地址。我之前已经成功使用存储在注册表中的端点引用,但我不能在这里使用这种方法,因为每次调用进程时地址都可能不同。
我尝试了多种不同的方法(使用 WSO2 BPS 3.5.1 和 WS02 Developer Studio 3.8.0):
中引用的 DynPartner 示例中使用的方法。这使我在 Developer Studio 中出现以下验证错误:The from-spec of "<xs:simpleType "string">" is not compatible with to-spec of "<wsdl:portType
"DynResponderPortType">"
。此外,当我部署和调用流程时,我收到一条错误消息,指出无法创建端点 (Couldnt create any endpoint for element ...
)
为合作伙伴分配固定值link,例如像这样:
<wsa:EndpointReference xmlns:wsa="http://www.w3.org/2005/08/addressing" xmlns:wsdl11="http://schemas.xmlsoap.org/wsdl/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3schools.com uep_schema.xsd">
<wsa:Address>http://localhost:8281/services/serviceaddress</wsa:Address>
</wsa:EndpointReference>
这有效并且不会给出验证错误,但我还没有找到一种方法来根据调用我的进程时使用的输入动态更改此处使用的地址。
使用定义端点引用内容的类型创建一个保存端点引用的变量。我已经尝试了几个 XSDs(http://docs.oasis-open.org/wsbpel/2.0/OS/serviceref/ws-bpel_serviceref.xsd, http://svn.wso2.org/repos/wso2/carbon/platform/branches/turing/components/unified-endpoint/org.wso2.carbon.unifiedendpoint.core/4.2.0/src/main/resources/schema/uep_schema.xsd(没有错误就无法验证),ws-addr.xsd 来自 w3c,我自己的非常简单 XSD)。我在 Developer Studio 处理它们的能力方面取得了不同程度的成功,例如生成初始化,但它们都有一个共同的问题,即我收到一个验证错误,说明类似 The from-spec of "<element "EndpointReference">" is not compatible with to-spec of "<wsdl:portType
"ThisIsThePartnerLinkPortType">" -
.
此时,我正在使用最后一种方法和我自己的简单 XSD。该过程实际上按照我预期的方式工作,但我仍然想在 Developer Studio 中收到验证错误,我想将其消除。有没有其他更好的方法来解决这个问题?
在此先感谢您的帮助。
对于遇到相同问题的任何人:现在使用的方法是 BPS 调用 ESB 中的特定代理(在固定位置)并向该代理提供端点 URL。然后代理执行对端点的实际调用。
这对我有很多好处:
- 我摆脱了 BPEL 设计器中的验证错误
- 通过 ESB,我可以对从位于动态 URL 的服务收到的消息执行验证。请注意,目前在 BPS 中这是不可能的,因为验证尚未正确实施。另见 https://docs.wso2.com/display/BPS351/WS-BPEL+2.0+Specification+Compliance
我正在尝试在 WSO2 BPS BPEL 流程中实现一个具有动态确定端点地址的合作伙伴 link。这个想法是发送到进程的请求包含一个端点 URL 并且这个 URL 用作某个伙伴 link 的地址。我之前已经成功使用存储在注册表中的端点引用,但我不能在这里使用这种方法,因为每次调用进程时地址都可能不同。
我尝试了多种不同的方法(使用 WSO2 BPS 3.5.1 和 WS02 Developer Studio 3.8.0):
中引用的 DynPartner 示例中使用的方法。这使我在 Developer Studio 中出现以下验证错误:
The from-spec of "<xs:simpleType "string">" is not compatible with to-spec of "<wsdl:portType "DynResponderPortType">"
。此外,当我部署和调用流程时,我收到一条错误消息,指出无法创建端点 (Couldnt create any endpoint for element ...
)为合作伙伴分配固定值link,例如像这样:
<wsa:EndpointReference xmlns:wsa="http://www.w3.org/2005/08/addressing" xmlns:wsdl11="http://schemas.xmlsoap.org/wsdl/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3schools.com uep_schema.xsd"> <wsa:Address>http://localhost:8281/services/serviceaddress</wsa:Address> </wsa:EndpointReference>
这有效并且不会给出验证错误,但我还没有找到一种方法来根据调用我的进程时使用的输入动态更改此处使用的地址。
使用定义端点引用内容的类型创建一个保存端点引用的变量。我已经尝试了几个 XSDs(http://docs.oasis-open.org/wsbpel/2.0/OS/serviceref/ws-bpel_serviceref.xsd, http://svn.wso2.org/repos/wso2/carbon/platform/branches/turing/components/unified-endpoint/org.wso2.carbon.unifiedendpoint.core/4.2.0/src/main/resources/schema/uep_schema.xsd(没有错误就无法验证),ws-addr.xsd 来自 w3c,我自己的非常简单 XSD)。我在 Developer Studio 处理它们的能力方面取得了不同程度的成功,例如生成初始化,但它们都有一个共同的问题,即我收到一个验证错误,说明类似
The from-spec of "<element "EndpointReference">" is not compatible with to-spec of "<wsdl:portType "ThisIsThePartnerLinkPortType">" -
.
此时,我正在使用最后一种方法和我自己的简单 XSD。该过程实际上按照我预期的方式工作,但我仍然想在 Developer Studio 中收到验证错误,我想将其消除。有没有其他更好的方法来解决这个问题?
在此先感谢您的帮助。
对于遇到相同问题的任何人:现在使用的方法是 BPS 调用 ESB 中的特定代理(在固定位置)并向该代理提供端点 URL。然后代理执行对端点的实际调用。
这对我有很多好处:
- 我摆脱了 BPEL 设计器中的验证错误
- 通过 ESB,我可以对从位于动态 URL 的服务收到的消息执行验证。请注意,目前在 BPS 中这是不可能的,因为验证尚未正确实施。另见 https://docs.wso2.com/display/BPS351/WS-BPEL+2.0+Specification+Compliance