アフタービジネスルールで current.update() を使用すると sys_amb_message レコードが2件作成され count: +1 となるため、1行追加時にダッシュボードのリアルタイム単一スコアレポートが2増加する説明 アフターの insert/update ビジネスルールで current.update() を使用すると、sys_amb_message レコードが2件作成されます。その結果、ダッシュボード上の単一スコアレポート(「リアルタイム更新を表示」オプションが有効な場合)において、レポートの条件に合致する新規行を1件作成した際に、カウンターが1ではなく2増加します。 再現手順 1. [incident] テーブルを対象に、新しいビジネスルール(after insert/update)を作成します。次のスクリプトを使用します。 (function executeRule(current, previous /*null when async*/) {current.short_description = 'xx - ' + current.short_description;current.update();})(current, previous); 2. [incident] テーブルを対象に、タイプが「単一スコア」の新しいレポートを作成します。フィルターの追加は不要です。集計は「件数」を選択します。 3. Performance Analytics ダッシュボードに、作成した単一スコアレポートを追加します。 4. ダッシュボードに、アサイングループ [sys_user_group] を基準とし [task.assignment_group] にマップされたインタラクティブフィルターを追加します。 5. ダッシュボードが編集モードの状態で、レポートの歯車アイコンをクリックし、「リアルタイム更新を表示」および「インタラクティブフィルターに従う」オプションを選択します。 6. レポートがインタラクティブフィルターで選択したアサイングループに連動することを確認します。インタラクティブフィルターでは、例として「ACME Refrigerator Support」を選択した状態にします。 7. ダッシュボードとレポートを開いたまま(変化を確認できる状態で)、別のブラウザーまたはタブから新しいインシデントを作成し、アサイングループに「ACME Refrigerator Support」を割り当てます。 期待される動作: レポートのカウンターが1だけ増加する。 実際の動作: レポートのカウンターが1ずつ2回増加する(速いインスタンスでは最初の更新が視認できない場合もあるが、結果として1ではなく2増加する)。[sys_amb_message] テーブルには、同一のタイムスタンプと "count":"+1" というシリアライズされた cometd メッセージ値を持つレコードが2件存在しており、これが2増加の原因です。 8. 手順1で作成したビジネスルールを無効化し、事象が再現しないことを確認します。 ワークアラウンド ビジネスルールが insert 時に実行されないよう変更します(current.setWorkflow を false に設定しない限り、ビジネスルールで current.update() を使用しないでください)。またはビジネスルールが insert/update の前(BEFORE)に実行されるよう変更し、current.update() を使用しないようにスクリプトを修正します。current.update() を使用すると、同じビジネスルールが再度トリガーされます。 関連する問題:PRB1294298