問題タブ [mediator]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
3606 参照

wso2 - wso2 ESB : 分割/収集パターン - 単一応答

これは質問ではなく、答えです。私は wso2 ESB にまったく慣れていないので、POC の一部としてスプリット/ギャザー EIP を実装してテストを実行したいと考えていました。見つけた例に従い、すぐに単一の応答を返す有効な構成を取得しました。ただし、すべての応答を取得するには、理解するのにかなりの時間がかかりました。与えられたほとんどのサンプルは、同じ予期しない結果を生み出すように見えました。同じ種類の問題に遭遇した場合、これらの行が役立つことを願っています.

設定

サービスバックエンドとしてsoapUIのサンプルサービス(検索操作)を利用しました。2 つのアイテムを検索する結合メッセージをプロキシ サーバーに送信しました (以下のアーティファクトを参照)。反復メディエーターはメッセージを分割し、soapUI モックアップを呼び出しているエンドポイントに転送します。集約メディエーターはすべての応答を待ち、それを 1 つの結果メッセージに入れようとします。

問題

スプリッターは正しく機能していましたが、アグリゲーターは、期待どおりの要素のリストではなく、1 つの結果要素のみを返しました。すべてのログは、すべてが正常であることを示しており、いくつかのリクエストが対応するエンドポイントに送信されましたが、返された最初のレスポンスのみが最終レスポンスに表示されました。

解決

プロキシのログ レベルを TRACE に設定した後、アグリゲータが正常に機能していることに気付きましたが、実際には SOAP に準拠していないメッセージを作成しただけでした。すべての集合要素は、石鹸本体の直下に追加されました。そこで問題は、body タグと result タグの間にルート要素を 1 つ追加する方法でした。最初に XSLT を試してみましたが、本体の最初の子要素しか読み取れませんでした。最後に、enrich メディエーター(または一連のメディエーター) を使用するための深く埋もれたヒントを見つけ、それでうまくいきました。次のリストは、ほとんどの例で見つからない構成 (以下に示すコード) の部分を説明しています。

  1. 最初の強化を使用して、関連するすべてのアイテムをプロパティに取り込みます
  2. 現在のメッセージを忘れる - 新しいペイロード ルート要素のみを含む本文で完全なエンベロープを書き換えます
  3. プロパティに格納されている要素を新しいペイロード ルートにアタッチします。
  4. 必要に応じて、soap ヘッダーをプロパティにキャプチャし、新しいメッセージに添付します (以下の構成にはありません)。

アーティファクト

デモリクエスト

設定

最後に質問です

誰かが私にいくつかのドキュメントを教えてくれたり、集計メディエーターのcorrelateOn属性の動作する設定を教えてくれたりしたら、本当に感謝しています。

0 投票する
2 に答える
893 参照

groovy - WS02 ESB - クラスパスでカスタム Java クラス プロパティ ファイルを取得する方法

カスタム jar ファイルを /repository/components/lib ディレクトリに配置して WSO2 にロードし、再起動を実行しました。次に、インライン groovy を使用して、スクリプト メディエーターからそのクラスを呼び出します。Groovy スクリプトはクラスを認識しますが、カスタム クラスは、クラスパス上にある必要があるプロパティ ファイルをロードしようとしています。そのプロパティ ファイルをほぼすべての場所に配置しましたが、クラスパスにファイルが見つからないというエラーが発生し続けます。

スタンドアロンの WSO2 ESB 4.7.0 を実行しています。ファイルを jar の一部として配置し、WSO2 ファイル構造内のいくつかのディレクトリにも配置しようとしました。すべてが役に立ちます。

0 投票する
1 に答える
1016 参照

design-patterns - モデル-GUI-メディエーター パターンでのイベントの委任 (おそらく MVP も?)

フォーカスされたコントロール (イベントを発生させたコントロールではなく) に作用するイベントが発生した場合、Model-GUI-Mediator (MGM) パターンでこれをどのように処理しますか? 複数のモデルがある場合、この質問は密接に関連するMVP パターンにも当てはまると思います。

この「イベントの委任」というタイトルを付けたのは、イベントを発生させたコントロールのメディエーターが、選択されたコントロール (またはそのモデル) のメディエーターにイベントを委任する必要があると思うからです。

バックグラウンド

MGM パターンはMVP Passive Viewに少し似ていますが、フォームごとに 1 つのプレゼンターではなく、コントロールごとに個別の「メディエーター」がある点が異なります。コントロールのイベントはすべてそのメディエーターによって処理され、メディエーターは応答として特定のモデルのメソッドを呼び出します。メディエーターはモデルのオブザーバーであり、モデルが変更されるとその制御を更新します。これは、コントロールにデータ バインディングがなく、コントロールをサブクラス化したくない RAD 環境に特に適しています。また、パッシブ ビューとは異なり、イベントを接続する定型コードがほとんどないという利点もあります。以下に、2 つの詳細な説明を示します。

問題の例

  1. フォームには、多数のモデル オブジェクトのビューを提供する多数のコントロールが含まれています。一度に選択できるビューは 1 つだけです。(具体的なものが必要な場合は、マルチドキュメント エディターを想像してください。)

  2. ユーザーがメニューからコマンドを呼び出します。これにより、特定のメニュー項目のメディエーター オブジェクトで Execute メソッドが呼び出されます。(メニュー項目はコントロールなので、対応するメディエーターがあります。)

  3. このコマンドは、現在選択されているコントロールに対してアクションを実行することになっています。

  4. したがって、メニュー項目のメディエーターは、選択されたコントロールに属するメディエーターを見つけてそこにアクションを委譲するか、選択されたコントロールのメディエーターに関連付けられたモデルを見つけて直接呼び出す必要があります。

しかし、メニュー項目のメディエーターは、選択されたコントロールのメディエーターをどのように見つけるのでしょうか?

MGM では、メディエーター オブジェクトは自己完結型であると想定されているため、他のメディエーター オブジェクトについてはわかりません。コントロールは、モデルについて何も知ることができません (関心の明確な分離を維持するため)。コントロールがメディエーターについて知っているのは、イベント ハンドラーだけです。

ハッキーな回避策

これまでのところ、選択したコントロールのイベント フィールドを調べるのが最善の方法です。これは、そのコントロールのメディエーターへのオブジェクト メソッド ポインターになります。Delphi では、これを TMethod にキャストできるため、コントロールのメディエータのオブジェクト ポインタを抽出できます。次に、これをメディエーターの型にキャストして、必要なメソッドを呼び出すことができます。

しかし、これは言語機能 (TMethod) に大きく依存しているようで、メディエーター クラス間の依存関係も作成します。

おそらく、私は完全に間違った方向に進んでいるのでしょう…</p>

(PS 私よりも多くの担当者がいる人は、「model-gui-mediator」タグを作成してもらえますか? ありがとう。)

0 投票する
1 に答える
1088 参照

json - wso2esb payloadfactory ビルド JSON メッセージ

wso2esb 4.7.0 REST API を使用して、次のユース ケースを実装しようとしています。

GET 要求を実行すると、JSON メッセージを作成し、バックエンド サービスに POST 要求を行い、クライアントに返される JSON 応答を受け取る REST リソースを公開します。

JSON メッセージの作成に問題があります。Payloadfactory メディエータを使用して JSON リクエストを作成していますが、バックエンド サービスで空の SOAP メッセージしか取得できません。

私が使用しているREST APIソース構成は次のとおりです。

0 投票する
1 に答える
803 参照

python - WSO2 Python スクリプト メディエーター

次の定義を持つ WSO2 でスクリプト メディエーターを使用しようとしています。

WSO2 ScriptMediator のドキュメントには Python がサポートされていると記載されていますが、Javascript、Ruby、および Groovy が言語ドロップダウン リストで使用できる唯一のオプションだったため、「py」を言語としてハードコーディングする必要がありました。

プロキシの変更を保存しようとすると、「ERROR - ScriptMediator No script engine found for language: py」というエラーが表示されます。

Python は、実際、ScriptMediator の WSO2 ではサポートされていませんか? または、Python スクリプトの処理を有効にするためにどこかを変更する必要がありますか?

ありがとうございました。

0 投票する
1 に答える
391 参照

rest - WSO2 構成パススルー プロキシ

こんにちは、次のユース ケースでプロキシ定義を作成したいと考えています。

1) 私にはクライアントがいます

2) WSO2 ESB 4.7.0

3) 2 つの REST サービス: R1 と R2

私はこれが起こることを望みます:

1) クライアントがリクエストを ESB プロキシに送信する

2) プロキシはリクエストを R1 に転送します

3) R1 の応答にエラーがなければ、同じ応答をクライアントと R2 に送信する必要があります。それ以外の場合は、障害メッセージをクライアントに送り返す必要があります。

この条件を書くのを手伝ってくれる人はいますか?どうもありがとう

0 投票する
1 に答える
110 参照

php - オブジェクトはどのようにイベントをサブスクライブできますか?

EventSubscriberInterfaceを実装するサブスクライバーがあります。ただし、イベント ディスパッチャー コンポーネントのドキュメントでは、イベントをサブスクライブするには、 を呼び出す必要があると記載されています$dispatcher->addSubscriber()

さて、私の例として、Mailerいくつかのイベントをサブスクライブして電子メールを送信するクラスがあるとします。私の基本的な質問は、このオブジェクトがアプリケーション全体のリスナーとして追加されるように、これをアプリケーションのどこに追加できるかということです。$dispatcher->addSubscriber()つまり、イベントが発生する前に実行するようにバインドされている呼び出しはどこで行うべきでしょうか?