0

複数のデータベース インバウンド エンドポイントが存在する可能性がある 1 つのフローを作成しようとしています。流れは次のようになります。

  1. X.status (テーブル X 列のステータス) = 'new' の行について、テーブル X データベース A から行を取得します。
  2. Y.some_id = X.another_id であるテーブル Y データベース B から行を取得します。X は、ステップ (1) から取得されたデータの行です。
    1. テーブル Z データベース B に新しい行を挿入します。

データベースのインバウンド エンドポイントが 1 つである可能性があることに気付きました。Mule でこれを達成する方法はありますか?

環境: Mule 3.4

4

2 に答える 2

1

最初の DB 呼び出しはインバウンドになり、2 番目の呼び出しはアウトバウンドになります。最初の DB 呼び出しはデータベースから読み取りを行っているため、2 番目の DB 呼び出しがデータを受信して​​いる間は着信になります。これは、それが発信呼び出しになることを意味します。

ステップ 1) インバウンド データベース呼び出し - データベース A (テーブル X、列ステータス) から読み取ります。

ステップ 2) 結果 (ペイロード) は、ほとんどの場合、リストまたはマップのリストになります。Groovy スクリプトを使用して個々のフィールドをクエリし、フロー変数を設定できます。例えば

複数の行が入ってくるため、コレクション スプリッターを使用してレコードのすべての行を分割することが重要です。

ステータス変数をクエリするには: #[flowVars['Var']['status']]. 同様に、残りのフィールドを照会できます。

データベース A からデータセットの準備ができたので、データベース B のクエリを作成し、フロー変数 (上記で説明) を使用して Y.some_id をクエリします。例: "where Y.some_id=#[flowVars['Var']['another_id']]"

ステップ 3) 同じアウトバウンド接続で、データベース B (テーブル Z) に挿入できます。これらすべてが可能になるのは、特定のデータベース コネクタを使用しているからです。

いくつかのアドバイス: 1) データベース コネクタとクエリをグローバルにします (フローの前に) 2) HTTP アウトバウンド エンドポイントを使用して、フローの実行をブラウザーから制御できるようにします。

お役に立てれば。

于 2013-09-06T15:28:46.653 に答える