WSO2 BPS BPEL プロセスで動的に決定されるエンドポイント アドレスを使用してパートナー リンクを実装しようとしています。プロセスに送信されるリクエストにエンドポイント URL が含まれ、この URL が特定のパートナー リンクのアドレスとして使用されるという考え方です。以前にレジストリに保存されたエンドポイント参照をうまく使用したことがありますが、プロセスが呼び出されるたびにアドレスが異なる可能性があるため、ここではそのアプローチを使用できません。
さまざまなアプローチを試しました (WSO2 BPS 3.5.1 および WS02 Developer Studio 3.8.0 を使用):
https://stackoverflow.com/questions/11092515/dynamic-partner-links-and-dynamic-addressing-with-ode-bpelで参照されている 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 ...
)パートナー リンクに固定値を割り当てます。たとえば、次のようになります。
<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>
これは機能し、検証エラーは発生しませんが、プロセスが呼び出された入力に基づいて、ここで使用されるアドレスを動的に変更する方法が見つかりませんでした。
エンドポイント参照の内容を定義する型を使用して、エンドポイント参照を保持する変数を作成します。いくつかの XSD を試しました ( 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- w3c の addr.xsd、私自身の非常に単純な XSD)。Developer Studio がそれらをどれだけ適切に処理し、たとえば初期化を生成できるかについて、私はさまざまな成功を収めてきましたが、
The from-spec of "<element "EndpointReference">" is not compatible with to-spec of "<wsdl:portType "ThisIsThePartnerLinkPortType">" -
.
この時点で、私は独自の単純な XSD で最後のアプローチを使用しています。プロセスは実際には意図したとおりに機能していますが、Developer Studio でまだ検証エラーが発生しており、これを取り除きたいと考えています。これにアプローチする別のより良い方法はありますか?
よろしくお願いします。