従来型トリガーとインプロセス (BSF) トリガーとの比較

このトピックでは、従来型トリガーとインプロセス (BSF) トリガーとの差異について説明します。

従来型トリガーは独自のプロセスで実行されます。例えば、Perl トリガーは Perl インタープリターを開始します。このインタープリターがスクリプトを実行し、その後インタープリターは終了します。 これに対し、インプロセス・トリガー (Bean Scripting Framework を使用するため BSF トリガーとも呼ばれる) は、Web サーバーのプロセス内で実行されます。 この利点として、オーバーヘッドが低減され、パフォーマンスが向上する可能性があります。 また、BSF トリガーは、Perl API ではなくトリガー API にアクセスできます。

従来型トリガーの詳細

従来型トリガーを開始するには、実行可能プログラムを呼び出してスクリプト・ファイルを実行します。

次に例を示します。

perl my_trigger.js arg1 arg2

スクリプトを実行するために必要な実行可能プログラムが使用可能でなければなりません。 Perl はデフォルトで使用可能ですが、他のコマンドがパスに含まれているか、トリガーのディレクトリーにインストールされている必要があります。 成功したコマンドは「0」(ゼロ) を返す必要があります。

ほとんどのトリガーは Perl API にアクセスします。詳しくは、Perl API ヘルプを参照してください。

BSF トリガーの詳細

インプロセス・トリガーは、実行可能プログラム名ではなく bsf を使用することで宣言されます。

次に例を示します。

bsf my_trigger.js arg1 arg2

BSF スクリプトのファイル拡張子 (JavaScript の場合は .js、Python の場合は .py) によって、スクリプトの実行に使用されるスクリプト言語が決定されます。

スクリプトは、bsf.lookupBean (object name) を呼び出すことで、bsf グローバル・オブジェクトからオブジェクトを取得できます。 構文は、使用されるスクリプト言語によって異なります。

表 1. 名前別の使用可能オブジェクト
オブジェクト 詳細
イベント 起動している特定のトリガー・イベントの詳細が含まれます。 特に、現行ユーザーおよび Admin ユーザーのトークンが含まれます。 このトークンを使用して、API、および変更対象の CR またはタスク ID と対話できます。 すべてのトリガーで共有されるプロパティーもありますが、ほとんどのトリガー・タイプには、独自のイベント・オブジェクト (それぞれに少なくともいくつかの固有のプロパティーを持つ) があります。 詳しくは、トリガー API の資料を参照してください。
args スクリプトに渡される引数 (例えば、ライフサイクルで定義される引数) の配列。 ただし、一部のスクリプト言語にはコマンド行引数を取得するための独自のメソッドが用意されていますが、トリガーで使用してはなりません。
log メッセージを event.log ファイルに書き込む手段。 詳しくは、トリガー API の資料を参照してください。
api トリガーが Rational® Change と相互作用するための API。 例えば、CR 属性を検索したり、関連タスクを作成したりします。 詳しくは、トリガー API の資料を参照してください。
BSF トリガーからの操作をキャンセルするには、以下のルールを考慮してください。
  • トリガーを終了させる明示的な手段はありません。スクリプトは、現在の操作をキャンセルしたり、エラーを示したりする場合でも、完了するまで実行する必要があります。 一部のスクリプト言語では、スクリプトが任意の時点で終了できますが、JavaScript などではできません。
  • 同期事前遷移トリガーは、以下のように、遷移イベントが続行しないようにすることができます。

    event.stopTransition(msg) を呼び出します。これにより、遷移が進行中の場合に続行できなくなり、必要に応じて所定のメッセージがユーザーに表示されます。

  • スクリプトは、以下のように、例外的エラーが発生したことを示すことができます。

    event.fail(errorMsg)。これにより、可能な場合はエラー・メッセージがユーザーに表示され、または非同期トリガー中などには event.log に書き込まれます。 事前遷移中に呼び出すと、fail は遷移リンクを非表示にするか、遷移が続行できないようにします (event.stopTransition を呼び出した場合と同様)。


フィードバック