Business rules

Business rules execute on the server, so the usual server-side APIs are available to any scripts that might need to be run. Also available in business rules, is the current and previous objects, though previous isn't available when the business rule runs asynchronously.

Business rules have an added level of granularity as to when they can be run. An administrator can choose to have a business rule run either before, or after a record or update has been saved to the database.

Let's say for example, that I'm looking at an incident ticket, and I change the State field to Closed. That record update is then sent on its' way to the database, but if we have a business rule with the When field set to before, then any scripts or changes to that record will be executed prior to the record being saved to the database. This is important to note, because it gives you another means by which to reject an update before it hits the database using the setAbortAction() method of the current object:

current.setAbortAction(true); 

Aborting an update in a "before" business rule also prevents other business rules from running against the record, since no database action is performed (no record is updated). The When field determines at what stage a Business Rule runs, but within that stage, the Order field determines the order in which they run. It's important to remember that fact when potentially aborting a database action. For example, if another business rule runs first and updates another record, aborting the database action in a business rule that runs later won't undo the changes made by the previous business rule.

There is however, another way to prevent other business rules from running when a record is updated. There is a method of the GlideRecord API called setWorkflow(), which takes a boolean value as an argument. When the subsequent database action is performed, no business rules will run. Here's a usage example:

var gr = new GlideRecord('incident'); 
gr.get('176baa97c0a80169011360192b738ebf');
gr.setValue('active', 'true');
gr.setWorkflow(false);
gr.update();

You can also call this method on the current GlideRecord object in a business rule, using current.setAbortAction(). This will prevent any further business rules from running, whether it's used in a before or after business rule.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.135.214.6