非グローバルドメインまたはスコープ内の特定のイベントでトリガーされるメール通知でメールレコードが作成されないIssue 特定のイベントでトリガーされるメール通知が作成されました。 通知は、非グローバル ドメインまたは非グローバル スコープで作成されます。 イベントが作成され、通知条件がすべて満たされ、メールを受信するはずの 1 人以上の受信者が正しく定義および構成されているにも関わらず、メールレコードが作成されません。 イベントログを確認すると、通知をトリガーする作成したイベントが確認できます ([Table] フィールドが空です)。同時に、通知のsys_idと等しい Parm1 sys_idを持つ notification_engine.process イベントがあります。 notification_engine.process イベントが存在するということは、通知の条件が満たされていることを意味します。 notification_engine.process イベントが処理されると、次のような同様のログがノードログに記録されます。 2020-04-13 10:40:04 (290) worker.5 worker.5 txid=6030b957db84 *** Start Background transaction - system, user: system2020-04-13 10:40:04 (296) worker.5 worker.5 txid=6030b957db84 Starting: events process 1.999460131b0100103fc78596dc4bcb41, Trigger Type: Interval, Priority: 25, Upgrade Safe: true, Repeat: 10 Seconds2020-04-13 10:40:04 (296) worker.5 worker.5 txid=6030b957db84 Name: events process 12020-04-13 10:40:04 (427) worker.5 worker.5 txid=6030b957db84 EMAIL.e030f957db8450106f1e74dfaa961965: Notification 'Test Notification' (6b1295dbdb0450106f1e74dfaa9619d0) included recipients via the notification's "Users" field: 'John Doe' (16139f900a0a3ce00120d33ac8629853)2020-04-13 10:40:04 (439) worker.5 worker.5 txid=6030b957db84 Completed: events process 1 in 0:00:00.139, next occurrence is 04-13-2020 13:40:06 ログ記録によりメールが作成されているように見えるかもしれませんが、sys_emailレコードは作成されません。 たとえば、通知のイベントは次のように作成されています。 gs.eventQueue("my_event", current, 'Text for Parm1' , 'Text for Parm2'); この場合、「current」変数はどのレコードオブジェクトも指していません。これが、「my_event」イベントが空のテーブルフィールドで作成された理由です。Releaseすべてのリリースに適用されます。Causeイベントによってトリガーされた非グローバルドメインまたは非グローバルスコープで作成されたメール通知は、イベントの作成時に関連付けられたレコードオブジェクトが指定されていない限り、メールレコードを作成しません。 レコードオブジェクトがないため、システムはグローバルドメイン/スコープで実行されています。通知がグローバルドメインまたはスコープにない場合、通知はトリガーされません。 上から、イベントは次のように作成されます。 gs.eventQueue("my_event", current, 'Text for Parm1' , 'Text for Parm2'); ここでも、「Current」はどのレコードオブジェクトも指していません。 一方、通知がグローバルドメインとグローバルスコープにある場合は、システムがグローバルドメイン/スコープで実行されているため、レコードオブジェクトを指定する必要はありません。Resolutionこの問題には、次の 2 つの異なる解決策があります。 イベントの作成によってドメインまたはスコープ内のレコードを通知に渡すか、通知をグローバルドメインとスコープに配置する必要があります。 解決策#1: 通知が非グローバルドメイン/スコープに残っている場合は、eventQueue の 2 番目のパラメーターで定義されたレコードオブジェクトを使用してイベントを作成する必要があります。これにより、システムが通知のドメイン/スコープ内に配置されます。 イベントの作成方法を次から変更します。 gs.eventQueue("my_event", current, 'Text for Parm1' , 'Text for Parm2'); これに: var myGlideRecord = new GlideRecord('sys_user');myGlideRecord.addQuery('sys_id','16139f900a0a3ce00120d33ac8629853');myGlideRecord.query();if(myGlideRecord.next()){gs.eventQueue("my_event",myGlideRecord, 'Text for Parm1' , 'Text for Parm2');}これは、イベントをsys_userテーブルのレコードに関連付けているだけです。使用されるレコードは重要ではありません。 イベントログでイベントを表示すると、[Table] フィールドに値が入力されていることがわかります。 解決策#2: 通知をグローバルドメインとグローバルスコープに移動します。この構成では、通知のドメイン/スコープと一致するグローバルドメイン/スコープでシステムが実行されるため、イベント作成でレコードオブジェクトを指す必要はありません。