インシデント管理:追加コメントが登録された日時の取得

Shibayama
Tera Contributor

インシデント管理についてです。
アサイン先を設定後、最初に追加コメントが登録された日時を取得したいです。


ServiceNowのサポートから以下のアドバイスをいただきました。

しかし、JavaScriptの経験がありません。スクリプトの内容についてアドバイスをいただけないでしょうか。


サポートからのアドバイス
コンセプトとしては以下のような流れになると思います。
1. インシデントに「一時応答日時」という新しい日時フィールドを作成する。
2. 追加コメントがsys_journal_fieldに保存されるため、テーブルのビジネスルールを作成する。

ビジネスルールの内容は以下のとおりである:
1. 挿入時に実行される
2. インシデントとコメントがある場合、sys_journal_fieldに同じ要素IDを持つ別のコメントがあるかどうかをチェックし、ない場合はインシデントに「一時応答日時」を設定する。

1件の返信1

iwai
Giga Sage

サポートの内容を元に、BusinessRuleを作成してみました。参考にしてみてください。一時応答日時の項目は「u_initial_response_time」としました、状況に応じて変更してください。

(function executeRule(current, previous /*null when async*/ ) {

    // コメントが投稿された際の処理
    if (current.comments) {
        // Journal(コメント)フィールドの内部データを検索する
        var gr = new GlideRecord('sys_journal_field');
        gr.addQuery('name', current.getTableName()); // 現在のテーブル名を指定
        gr.addQuery('element', 'comments'); // コメントフィールドを指定
        gr.addQuery('element_id', current.getValue('sys_id')); // インシデントレコードのSYS IDを指定
        gr.setLimit(1); // 結果を1件に限定
        gr.query(); // 検索を実行

        if (!gr.hasNext()) { // もしレコードが存在しない場合(まだコメントが投稿されていない場合)
            // 初回応答日時フィールドに現在の日時を設定
            current.setValue('u_initial_response_time', new GlideDateTime());
        }
    }

})(current, previous);

iwai_0-1705834850386.png