機械翻訳について

付加フレックスフィールドとスクリプトの処理

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属性を使用して、変更オーダーの「優先度」フィールドを「高」に設定します。
setAttribute("PriorityCode", "HIGH") 
優先度値のコード名を検索するには、設定およびメンテナンス作業領域で次の場所に移動します:
  • オファリング: 製品管理
  • 機能領域: 変更オーダー
  • タスク: 変更優先度の管理

割り当てる値の参照コードを取得します。

属性値の取得

属性の値を取得するには、getAttribute()関数を使用するか、属性のAPI名のみを使用します。

これらの各スクリプトは同じ処理を行い、変更オーダーの優先度フィールドの値がランタイム・メッセージに返されます:
def getPriority = getAttribute("Priority") println(getPriority)
def priority = Priority println(priority)
println(Priority)

コマンドprintln()は、「共通設定」ペインのアプリケーション・コンポーザの「ランタイム・メッセージ」ログに、カッコ内の値を出力します。 スクリプトをトラブルシューティングするには、アプリケーション・コンポーザで「ランタイム・メッセージ」を有効にすることが非常に重要です。

ランタイム・メッセージを有効にする方法を見てみましょう:
  1. 「共通設定」ペインで、「ランタイム・メッセージ」を選択します。
  2. 「アプリケーション・スクリプト・ログ」ページで、チェック・ボックス「マイ・アプリケーション・スクリプト・ロギングの有効化」を選択します。