ウィンドウ計算の設定

動的ウィンドウの設定には、2 つの段階があります。

  • オブジェクト デザイナーで、属性に対するウィンドウ関数を返す計算を作成します。
  • ウィンドウ マネージャを使用して、計算を実行するウィンドウを設計します。

次の 2 つの手順では、[緊急] フィールドが入力されたときに、[インシデント] ウィンドウの [影響] フィールドを必須にする方法を示します。他のウィンドウ関数でも、同様の方法を使用します。詳細な計算例については、以下で説明します。

計算を作成するには:
  1. オブジェクト デザイナーを起動し、ウィンドウのオブジェクトを開きます。
    この例では、インシデント管理\インシデントです。
  2. 最大長さ-1 に設定された新しい文字列属性を作成し、計算を保存します。

計算属性の名前の先頭を「DynamicWindow」とし、デザイナーで簡単に検索できるようにすることをお勧めします。

  1. 新しい属性の [計算タイプ] を [ウィンドウ計算] に設定します。
    [式を編集] ダイアログが表示されます。
  2. [依存関係を自動検出] チェック ボックスをオフにします。
    ここでは、依存関係を設定します。
  3. [] を ":SetMandatory(attribute, True)" に設定する計算を作成します。
    この例では、[影響] 属性を必須にするため、次の計算を入力します。
コピー
import System
static def GetAttributeValue(Incident):
    Value = ":SetMandatory(_Impact, True);"
    return Value

この計算例は、本番システムでは使用しないでください。[緊急] フィールドが入力されたときに、[影響] フィールドを必須にしますが、[緊急] フィールドが後からもう一度変更された場合、フィールドのリセット処理は行われません。この例の目的は、動的ウィンドウを設定する手順を示すことです。より詳細な計算については、以降のセクションで説明します。

この例の Value および return で開始する行には、インデントが 1 つあります。この例をコピーする場合、計算エディタに貼り付けるときには、必ず正しいインデントを保持してください。

:SetMandatory は属性の名前のみを使用します。オブジェクト名を含めないでください (たとえば、Incident._Impact を使用しないでください)。属性がシステム属性ではない場合、先頭文字がアンダースコアです (_Impact など)。

複数のターゲット属性を更新するには、セミコロンで区切ります。例:
Value = “:SetMandatory(attribute1,True);:SetMandatory(attribute2,False);”

  1. [属性] ツリーから [依存関係] ウィンドウへ、計算を実行する属性をドラッグします。
    たとえば、[インシデント緊急度] をドラッグします。[依存関係] ウィンドウには、属性の内部データベース名 (_IncidentUrgency) が表示されます。
  2. [OK] をクリックします。
    [式を編集] ダイアログが閉じます。
  3. をクリックします。
    オブジェクトへの変更が保存されます。

フィールドを必須にする計算を作成したため、計算を使用するウィンドウを設定できます。

ウィンドウを設定するには:
  1. ウィンドウ マネージャで、目的のウィンドウを開きます。
    この例では、[インシデント] ウィンドウです。
  2. 作成済みの計算された属性をウィンドウに追加します。

属性をウィンドウに追加する必要がありますが、[ウィンドウに表示] プロパティを False に設定することで非表示にできます。計算の設計およびテストを実施するときには、[ウィンドウに表示] プロパティを True に設定することをお勧めします。

  1. 計算を実行するために使用するコントロールを選択します。
    これは、計算の [依存関係] ウィンドウに追加した属性です。この例では、緊急度です。
  2. コントロールの [プロパティ] グリッドで、[変更時に計算] を True に設定します。
  3. 変更内容をウィンドウに保存します。

ユーザが [インシデント] ウィンドウで [緊急度] を選択すると、計算が実行され、計算された属性の値が :SetMandatory(_Impact, True); に設定されます。これにより、[影響] フィールドが必須になります。