2

エンティティに対して基本的な CRUD 操作を提供する一連の Web サービス エンドポイントがあります。たとえば、次の WS メソッドを使用します: userService?wsdl --getUser(id) --getUsers --addUser(User) --removeUser(id)

OpenESB で CA を作成して、これらすべての操作に単一のプロキシ エンドポイントを提供したいと考えています。

そこで、NetBeans で新しい BPEL モジュールを作成し、記述子となる新しい WSDL ドキュメントを追加します。次に、この WSDL に複数の操作を追加します。

次に、バックエンド WS に実装された操作ごとに BPEL を作成します。

これにより、複数の操作を含む出力 WSDL が効果的に得られます。

問題は、この BPEL モジュールを CA に追加するときに発生します。ポートを PartnerLink にリンクする場合、ポートごとに 1 回しか実行できません。このスクリーン キャプチャでより明確に見ることができます。

ここに画像の説明を入力

aulaServicesPort から 1 つの PartnerLink まで 1 つの「矢印」しかトレースできませんが、スクリーンショットに示されている両方の操作にリンクする必要があります。

これにより、操作ごとに 1 つの複数の WSDL が生成されますが、関連するすべての操作を含む一種の「ハブ」WSDL を作成したいと考えています (前の例では、指定されたすべての操作を含むユーザー CA になります)。

4

1 に答える 1

2

CA で解決できるとは思いませんが、BPEL プロセスを変更することで解決できる可能性があります。

現在の構造でこれを実現する最善の方法は、アプリケーションを単一のプロセスに減らし、myRole partnerLink. これは、受信/応答のペアを持つ複数のプロセスを持つ代わりに、最初pickの分岐と複数の並列分岐を持つ 1 つのプロセスを構築する必要があることを意味します。大まかな構造は次のようになります。

<pick name="ServiceSelector" createInstance="yes">

     <!-- Each onMessage replaces one of your original processes -->
     <onMessage partnerLink="aulaLink" operation="getAula" portType="aulaServicesPortType">
         <sequence name="Sequence">
              <!-- call the actual service for getAula-->
              <reply name="ReplyToGetAula" partnerLink="aulaLink" operation="getAula" portType="aulaServicesPortType"/>
         </sequence>
    </onMessage>

     <onMessage partnerLink="aulaLink" operation="getAulas" portType="aulaServicesPortType">
         <sequence name="Sequence">
              <!-- call the actual service for getAulas-->
              <reply name="ReplyToGetAula" partnerLink="aulaLink" operation="getAulas" portType="aulaServicesPortType"/>
         </sequence>
    </onMessage>

</pick>
于 2014-11-27T10:14:29.777 に答える