付加フレックスフィールドとスクリプトの処理
Groovyスクリプトは、グローバル付加フレックスフィールドおよびコンテキスト付加フレックスフィールドへのアクセスを提供します。 グローバル付加フレックスフィールドはすべての変更タイプに表示され、コンテキスト付加フレックスフィールドは割り当てられた変更タイプにのみ表示されます。
グローバル付加フレックスフィールドの使用
グローバル付加フレックスフィールドを使用するには、ChangeObjectDFFアクセサを使用して、付加フレックスフィールドのコレクションにアクセスします。 付加フレックスフィールド・コレクションで、属性の内部名を使用して取得し、設定します。
次の例では、グローバル付加フレックスフィールド「実装事由」の値がグローバル付加フレックスフィールドPCNにコピーされます。
def changeDFF = ChangeObjectDFF
def reason = changeDFF.implementationReason
changeDFF.setAttribute('pcn', reason)
def changeDFF = ChangeObjectDFF
def reason = changeDFF.implementationReason
if (reason != changeDFF.getAttribute('pcn'))
{
changeDFF.setAttribute('pcn', reason)
}
コンテキスト依存付加フレックスフィールドの使用
ChangeObjectDFFアクセサを使用して、グローバル付加フレックスフィールドなどの付加フレックスフィールド・コレクションにアクセスします。 ただし、コンテキスト依存の付加フレックスフィールドでは、API名(すべて小文字)を変数に割り当て、変数を使用して属性を取得または設定します。
次の例では、グローバル付加フレックスフィールド「実装事由」の値が、コンテキスト付加フレックスフィールド「理由」にコピーされます。
def apiName = 'justification'
def changeDFF = ChangeObjectDFF
def reason = changeDFF.implementationReason
changeDFF.setAttribute(apiName, reason)
def apiName = 'justification'
def changeDFF = ChangeObjectDFF
def reason = changeDFF.implementationReason
if(reason != changeDFF.getAttribute(apiName))
{
changeDFF.setAttribute(apiName, reason)
}
グローバル関数の操作
- 他のスクリプトで参照できる再利用可能なコードを作成します。
- InvokeGlobalFunctionを使用して、製品ルールからスクリプトを起動します。
変更オーダーはアプリケーション・コンポーザで使用できるため、ほとんどの場合、条件付きでスクリプトを起動するためのトリガーおよび検証を作成できます。 ただし、ステータス変更に基づくスクリプトの起動は、エントリまたは終了基準としてトリガーされた製品ルールによって起動されるグローバル機能を介してのみ実行できます。
アプリケーション・コンポーザで品目を使用できません。 したがって、製品ルールを介して起動されるグローバル関数としてのみ、品目にスクリプトを適用できます。
- スクリプトで操作を実行するためにGroovy関数を使用することはできません。
- グローバル関数は、REST webサービスを呼び出して、必要なことを実現します。
- 特定のオブジェクトに対して機能するグローバル関数を記述し、それらをオブジェクト関数から呼び出すには、現在のオブジェクトをグローバル関数に渡すを参照してください。
- 製品ルールからグローバル関数を呼び出すときに現在のオブジェクト・コンテキストを渡すには、ルールからオブジェクトIDを受け取るグローバル関数にパラメータを作成します。
このイメージは、アプリケーション・コンポーザのグローバル機能を示しています。
このイメージは、グローバル関数を示す検証条件を示しています
Groovyスクリプトの例
アプリケーション・コンポーザは、Javaプラットフォーム用の標準の動的スクリプト言語であるGroovyスクリプトをサポートしています。 この項では、setAttribute()関数およびgetAttribute()関数を1行以上のGroovyコードとともに使用する方法の例を示します。
属性値の設定
setAttribute("PriorityCode", "HIGH")
- オファリング: 製品管理
- 機能領域: 変更オーダー
- タスク: 変更優先度の管理
割り当てる値の参照コードを取得します。
属性値の取得
属性の値を取得するには、getAttribute()関数を使用するか、属性のAPI名のみを使用します。
def getPriority = getAttribute("Priority") println(getPriority)
def priority = Priority println(priority)
println(Priority)
コマンドprintln()は、「共通設定」ペインのアプリケーション・コンポーザの「ランタイム・メッセージ」ログに、カッコ内の値を出力します。 スクリプトをトラブルシューティングするには、アプリケーション・コンポーザで「ランタイム・メッセージ」を有効にすることが非常に重要です。
ランタイム・メッセージを有効にする方法を見てみましょう:- 「共通設定」ペインで、「ランタイム・メッセージ」を選択します。
- 「アプリケーション・スクリプト・ログ」ページで、チェック・ボックス「マイ・アプリケーション・スクリプト・ロギングの有効化」を選択します。