インシデント管理:追加コメントが登録された日時の取得
オプション
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
12-11-2023 11:50 PM
インシデント管理についてです。
アサイン先を設定後、最初に追加コメントが登録された日時を取得したいです。
ServiceNowのサポートから以下のアドバイスをいただきました。
しかし、JavaScriptの経験がありません。スクリプトの内容についてアドバイスをいただけないでしょうか。
サポートからのアドバイス
コンセプトとしては以下のような流れになると思います。
1. インシデントに「一時応答日時」という新しい日時フィールドを作成する。
2. 追加コメントがsys_journal_fieldに保存されるため、テーブルのビジネスルールを作成する。
ビジネスルールの内容は以下のとおりである:
1. 挿入時に実行される
2. インシデントとコメントがある場合、sys_journal_fieldに同じ要素IDを持つ別のコメントがあるかどうかをチェックし、ない場合はインシデントに「一時応答日時」を設定する。
1件の返信1
オプション
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
01-21-2024 03:06 AM
サポートの内容を元に、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);