ウィンドウ計算の設定
動的ウィンドウの設定には、2 つの段階があります。
- オブジェクト デザイナーで、属性に対するウィンドウ関数を返す計算を作成します。
- ウィンドウ マネージャを使用して、計算を実行するウィンドウを設計します。
次の 2 つの手順では、[緊急] フィールドが入力されたときに、[インシデント] ウィンドウの [影響] フィールドを必須にする方法を示します。他のウィンドウ関数でも、同様の方法を使用します。詳細な計算例については、以下で説明します。
計算を作成するには:
- オブジェクト デザイナーを起動し、ウィンドウのオブジェクトを開きます。
この例では、インシデント管理\インシデントです。 - 最大長さ が -1 に設定された新しい文字列属性を作成し、計算を保存します。
計算属性の名前の先頭を「DynamicWindow」とし、デザイナーで簡単に検索できるようにすることをお勧めします。
- 新しい属性の [計算タイプ] を [ウィンドウ計算] に設定します。
[式を編集] ダイアログが表示されます。 - [依存関係を自動検出] チェック ボックスをオフにします。
ここでは、依存関係を設定します。 - [値] を ":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);”
- [属性] ツリーから [依存関係] ウィンドウへ、計算を実行する属性をドラッグします。
たとえば、[インシデント緊急度] をドラッグします。[依存関係] ウィンドウには、属性の内部データベース名 (_IncidentUrgency) が表示されます。 - [OK] をクリックします。
[式を編集] ダイアログが閉じます。 -
をクリックします。
オブジェクトへの変更が保存されます。
フィールドを必須にする計算を作成したため、計算を使用するウィンドウを設定できます。
ウィンドウを設定するには:
- ウィンドウ マネージャで、目的のウィンドウを開きます。
この例では、[インシデント] ウィンドウです。 - 作成済みの計算された属性をウィンドウに追加します。
属性をウィンドウに追加する必要がありますが、[ウィンドウに表示] プロパティを False に設定することで非表示にできます。計算の設計およびテストを実施するときには、[ウィンドウに表示] プロパティを True に設定することをお勧めします。
- 計算を実行するために使用するコントロールを選択します。
これは、計算の [依存関係] ウィンドウに追加した属性です。この例では、緊急度です。 - コントロールの [プロパティ] グリッドで、[変更時に計算] を True に設定します。
- 変更内容をウィンドウに保存します。
ユーザが [インシデント] ウィンドウで [緊急度] を選択すると、計算が実行され、計算された属性の値が :SetMandatory(_Impact, True); に設定されます。これにより、[影響] フィールドが必須になります。