計算を使用して検索一致から 1 つのフィールドを作成する

計算エディタを使用して、Service Desk または資産マネージャ データを操作できます。このセクションでは、計算を作成して、検索一致コレクションの処理を繰り返し、該当するユーザに表示または電子メール送信される 1 つのフィールドを作成する方法について説明します。

計算の詳細については、『デザイナー ガイド』をご参照ください。

通常、自動検索動作によって生成された検索一致コレクションには、インシデントや記事などのさまざまなタイプのオブジェクトが含まれます。これらのオブジェクトにはさまざまな属性があるため、検索対象の属性を特定できず、このコレクションからレコードを返す計算を作成するのは困難です。たとえば、インシデントには提出日属性がありますが、記事にはありません。逆に、記事には効果属性がありますが、インシデントにはありません。計算エディタの GetReferencedObject("") 関数では、検索一致コレクションを繰り返し、各レコードが参照するオブジェクトを特定して、計算の次の部分でそのレコードの適切な属性を要求できます。

次の計算例は、検索一致コレクションの行を繰り返し、行が記事またはインシデントのどちらに対応するのかを特定します。行が記事の場合、文字列 Article Title=title が生成されます。title記事のタイトルです。行がインシデントの場合、文字列 Incident Id=Id が生成されます。Idインシデントの参照番号です。

コピー
import System
static def GetAttributeValue(Incident):
    Value = ""
    for item in Incident.SearchMatches:
        Value += item.SerialNumber + "="
        obj = item.GetReferencedObject("MatchingObject")

        if obj.ClassType.FullName == "ナレッジ記事":
            Value += "Article Title=" + obj.Title
        if obj.ClassType.FullName == "インシデント管理.インシデント":
            Value += "Incident Id=" + obj.Id
    Value += " / "
return Value

まず、Value 変数が空に設定されます。次に、for で始まる行によって、インシデント オブジェクトの検索一致コレクションの各itemを繰り返すように命令されます。

計算が Value += を通過するたびに、その行の残りの部分で生成された文字が、Value 変数に格納された現在の文字列の最後に連結されます。このため、最初に計算が行 Value += item.SerialNumber + "=" を通過するときには、最初の項目の SerialNumber (1) が読み取られ、= を追加して文字列 1= を生成します。

obj = item.GetReferencedObject("MatchingObject")GetReferencedObject("") 関数を使用して、変数 obj がコレクションの現在の行の項目のオブジェクトと一致するように設定します。これは、計算の後半で出てくる if 文で使用されます。

if obj.ClassType.FullName == "Knowledge.Article": は、前の行で返されたオブジェクトが Knowledge.Article かどうかを評価します。返されたオブジェクトが Knowledge.Article ではない場合、計算は行 if obj.ClassType.FullName == "IncidentManagement.Incident":に進み、返されたオブジェクトが IncidentManagement.Incident かどうかを評価します。

返されたオブジェクトが Knowledge.Article の場合、行 Value += "記事タイトル=" + obj.Title が実行され、テキスト Article.Title=<article title>Value 変数に追加されます (<article title> は対応する記事のタイトルです)。返されたオブジェクトが IncidentManagement.Incident の場合、行 Value += "インシデントId=" + obj.Id が実行され、テキスト Incident Id=<incident id>Value 変数に追加されます (<incident.id> は対応するインシデントの参照番号です)。

次に、行 Value += " / " によって Value 変数の最後に / が追加されます。計算のループはコレクションの次の項目に戻り、次のレコードを追加します。このように、コレクションの最後まで処理が続きます。

計算が完了すると、次の形式の文字列が生成されます。

1=Article Title=Title of first item in the collection / 2=Incident.Id=12033 / ...

この例では、検索一致コレクションの最初の項目が記事で、タイトルが Title of first item in the collection です。次の項目は Incident 12033 です。

計算例では、検索一致コレクションに記事またはインシデント以外の項目が含まれる場合、if 文は一致を検索せず、対応する行は行の先頭の項目シリアル番号以外は空白です。次のオブジェクトで別の if を追加すると、これを修正できます。