例:関数/テーブルベース BOD 生成

このトピックでは、BOD 生成トリガを設定する方法を説明します。これは、以下のより大規模な手順の一部となるタスクです。

レプリケーションカテゴリとレプリケーション文書アウトバウンド相互参照を使用して BOD の生成をトリガするには、次の 2 つの方法があります。

  • テーブル:BOD の [レプリケーション文書アウトバウンド相互参照] フォームでテーブルを指定し、以下にテーブル名をレプリケーションカテゴリに追加する、最も単純な方法。そのテーブルのレコードに変更が行われると、BOD の生成がトリガされます。

    テーブル内で変更が行われるたびに BOD が生成されないようにするには、 [レプリケーションカテゴリ] フォームのフィールドを使用して BOD 生成を制限できます。

    • [フィルタ属性] を使用して、テーブルに対する変更が BOD 生成をトリガするかどうかを決めるフィルタを定義します。フィルタと一致するレコードのみが BOD に取り込まれます。
    • テーブルに対する変更の区分に基づいて BOD 生成を制限するチェックボックスを使用します。[挿入を無視]、[更新を無視]、および [削除を無視]。
  • 関数簡単なテーブル更新ベースのトリガでは不十分な場合は、このテクニックを使用します。たとえば、新しいオーダが作成されたら BOD をトリガするとします。オーダは階層データであり、行数もリリース数も任意なので、BOD 生成をトリガする単一のテーブルを特定することは不可能です。つまり、いつ最後の行やリリースが挿入されたかを知る方法はありません。あるいは、テーブル更新と全く関係のない他のアプリケーションイベントが発生したときに BOD 生成をトリガする必要がある場合もあります。それらに対する解決策は、「関数」トリガを使用して BOD 更新をプログラムでトリガすることです。

    [レプリケーションカテゴリ] フォームと [レプリケーション文書アウトバウンド相互参照] フォームで、「関数」名を指定します。この名前は、必ずしも実際のストアドプロシージャと一致しておらず、今後もおそらく一致することはありません。実際のところ、この名前は、最終的に BOD 生成をトリガするレプリケーションストアドプロシージャに渡されるパラメタであるにすぎません。(この機能の詳細は、「舞台裏:システムによって BOD が生成される方法」を参照してください。)

    このストアドプロシージャは、トリガ、別のストアドプロシージャ、または IDO 拡張クラスからも(そして、おそらく必要に応じて他のコンテキストからも)呼び出すことができます。

様々なターゲットサイトに関して異なる XML 文書を生成したい場合は、レプリケーション文書相互参照レコードに該当するターゲットサイトの「イントラネット名」を含めることができます。

関数トリガの設定例

何らかのシステム処理によって関数 TriggerSalesOrderSyncSp が呼び出されるたびに、BOD を生成する必要があるとします。

[レプリケーション文書アウトバウンド相互参照] フォームで、 以下のトリガ情報を指定します。

  • [IDO に適用]:[SP!]
  • [IDO 処理に適用]:[Invoke]
  • [メソッドに適用]:[TriggerSalesOrderSyncSp]

[レプリケーションカテゴリ] フォームで、以下のトリガ情報を指定します。

  • [テーブルまたは関数]:[TriggerSalesOrderSyncSp]
  • [オブジェクト区分]:[SP]
  • [フィルタ]:このフィールドは未入力のままにします。

上記の手順トピックで指定されているように BOD とレプリケーションの残りの設定を定義します。

テーブルトリガの設定例

[レプリケーションカテゴリ] フォームで指定するフィルタとチェックボックスに応じて、employee_mst (従業員マスタ)テーブルへの変更によって BOD をトリガする必要があるとします。

[レプリケーション文書アウトバウンド相互参照] フォームで、 以下のトリガ情報を指定します。

  • [IDO に適用]:[TABLE!employee]
  • [IDO 処理に適用]:[UpdateCollection]
  • [メソッドに適用]:N/A

[レプリケーションカテゴリ] フォームで、以下のトリガ情報を指定します。

  • [テーブルまたは関数]:[従業員]
  • [オブジェクト区分]:[テーブル]
  • [フィルタ]:適切なフィルタを指定します。

必要に応じて残りのカラムを設定します。

注:  テーブルトリガの場合、[削除を無視]チェックボックスを選択する必要があります。オンにしていない場合、削除時に NULL 値を含む BOD が作成されます。

上記の手順トピックで指定されているように BOD とレプリケーションの残りの設定を定義します。プロパティとして UpdateCollection からの非主要キーフィールド(カラム名)を使用する場合は、[レプリケーションルール] フォームに [全カラムの更新] チェックボックスを設定する必要があります。テーブルのレプリケーションルールを追加する際には、レプリケーショントリガを再生成する必要があります。