2017-06-08 1 views
1

Ich bin mit einem Problem in den Geschäftsregeln von servicenow konfrontiert. Ich habe 2 Geschäftsregeln, die ausgelöst hat, wenn2 Geschäftsregeln, die gleichzeitig anrufen, wenn der Vorfall erstellt wurde

  • Wenn ein Vorfall
  • erstellt Wenn bestimmte Felder eines Vorfalls
  • aktualisiert

Während einen Vorfall zu schaffen Ich habe einige Standardwerte einstellen Staat sagen - geschlossen, Dringlichkeit - Niedrig. Ich erwarte, dass es nur auslösen sollte Vorfall Geschäftsregel erstellen, aber es löst Update Vorfall Geschäftsregel sowie Dringlichkeit und State-Werte festlegen.

Antwort

1

Verwenden Sie current.update() in Ihrer Geschäftsregel, die unter ausgeführt wird, einfügen? Wenn dies der Fall ist, wird wahrscheinlich die zweite Geschäftsregel ausgelöst.

Auch, stellen Sie sicher, dass Ihre Business Rule als Regel vor Gesetzte anstelle eines nach den Fluss, wenn überhaupt möglich zu helfen.

Es ist im Allgemeinen nicht notwendig current.update() für einen vor Business Rule zu nennen, da diese vor dem eigentlichen Einsatz liefen passiert.

Werfen Sie einen Blick auf die besten Praktiken für die Business Rules, wenn Sie https://hi.service-now.com/kb_view.do?sysparm_article=KB0540192

Insbesondere haben einige Zeit in diesem einen das Verhalten beschreiben kann Ihr sehen.

Best Practice # 2: Vermeiden Sie current.update mit() vor oder nach Geschäftsregeln. Vermeiden Sie die Verwendung von current.update(), um Rekursionen zu verhindern, die die Systemleistung beeinträchtigen. Die Funktion current.update() löst Geschäftsregeln aus, die in der gleichen Tabelle für Einfüge- und Aktualisierungsvorgänge ausgeführt werden. In einer vor oder nach Geschäftsregel kann dies dazu führen, dass sich die Regel immer wieder selbst aufruft.

Es ist nicht notwendig, current.update() in einer vor Geschäftsregel zu verwenden, da diese automatisch gespeichert werden, wenn die Datenbank aktualisiert wird. Nachdem Geschäftsregeln keine aktuellen Objekte aktualisieren sollen, wird dies auch nicht benötigt. Wenn es keinen speziellen Fall gibt, vermeiden Sie die Verwendung von current.update(), da nicht nur Geschäftsregeln stoppt, sondern auch verhindert, dass der Workflow Engine auf dem Datensatz ausgeführt wird.

Verwandte Themen