Business rules and script includes
Summarize
Summary of Business rules and script includes
Business Rules in ServiceNow are server-side scripts that execute during CRUD (Create, Read, Update, Delete) operations on records. They automate processes by running synchronously or asynchronously before or after database actions, or when forms are displayed. Script Includes are reusable JavaScript objects or functions stored server-side, enabling modular and maintainable scripting across Business Rules, UI Actions, workflows, and APIs.
Show less
Best Practices for Business Rules
- Keep Business Rules small, specific, and condition-driven to improve efficiency and debugging.
- Avoid modifying base system Business Rules to maintain system integrity.
- Use Script Includes to store reusable logic instead of making Business Rules global.
- Minimize scripting and client-callable Business Rules to optimize performance.
- Use queries within Business Rules to limit processed records and prevent unnecessary operations.
- Never use
current.update()inside a Business Rule to avoid recursion and duplicate database operations.
Business Rule Execution Types and When to Use Them
- Before: Runs synchronously before the database operation. Use it to set or validate field values on the current record during save.
- After: Runs synchronously after the database operation. Suitable for triggering events or updating related records in sequence.
- Async: Runs asynchronously after the database operation completes. Best for long-running processes or bulk updates that do not require immediate output.
- Display: Runs when a form is displayed. Use this to expose server-side data to client-side scripts, for example, via the
gscratchpadobject.
Using Script Includes
Script Includes are ideal for organizing reusable server-side JavaScript functions or classes. They enable code sharing and easier testing across different parts of the platform such as Business Rules, UI Actions, workflows, and Scripted REST APIs. Instead of duplicating code or invoking Business Rules directly from UI Actions or APIs, placing logic in Script Includes helps maintain cleaner, more efficient, and more manageable code.
Practical Impact for ServiceNow Customers
Understanding and applying these best practices allows customers to create efficient, maintainable, and scalable server-side automation. Proper use of Business Rules and Script Includes helps avoid performance issues, reduces debugging complexity, and promotes code reuse across the ServiceNow platform, enhancing overall application reliability and user experience.
Business rules are server-side actions that can be run during CRUD (Create, Read, Update, Delete) operations on instance records.
Some good practices when using Business Rules are:
- Keep Business Rules small and specific.
- Avoid modifying base system Business Rules.
- Use Script Includes instead of global Business Rules.
- Use scripting only when necessary.
- Store reusable script logic in a script include.
- Use queries to limit records processed within a Business rule.
- Avoid client-callable Business Rules to improve efficiency when running client scripts.
- Always use a condition with Business Rules to control when the Business Rule runs. Running Business Rules with conditions can also aid in debugging. Business Rules rarely run with no conditions.
Business Rules can be configured to run before or after a database operation. They can also be configured to run asynchronously and also before displaying a form or executing a query.
| Value | Runs | When to Use | Example |
|---|---|---|---|
| Before | Synchronously before the database operation | Set or update values on the current object as part of the save operation. Validate and abort execution if required. | A developer wants to set the state of the current record based on another input in that record. |
| After | Synchronously after the database operation | Trigger events and notifications after the database update to access the previous object or to make something occur in sequence. Update related records other than the base table being updated to access the previous object or to make something occur in sequence. | A developer wants to cascade values from the current record down to child records. |
| Async | Asynchronously executed as a separate process after the database operation is completed | The process triggered by the rule may take a while to run. When the user who triggered the operation does not need the output right away. Trigger events, notifications, or related record updates when access to the previous values of the record or a specific sequence of actions is not required. | A developer needs to trigger an external process that may take a while or update a large number of records. |
| Display | Executed every time the corresponding form is displayed | Used to make server-side objects available to client-side scripts. | A developer wants to write information about a user associated with the current record to the g_scratchpad object to use in a client-side script. |
Use Script Includes to store JavaScript functions and classes for use by server scripts. Each Script Include defines either an object class or a function that can be reused among any server-side scripts. For more information, see Script includes.
Store any code that might need to be used elsewhere in a Script Include. Call the Script Include from a Business Rule, UI Action, workflow script, Scripted REST API, etc. Instead of calling a Business Rule from a UI Action or a UI Action from a Scripted REST API, put the code in a Script Include and call the Script Include from both places.
Keeping functions in a Script Include allows testing of the function before deploying the function in other scripted areas, thus reducing overall development and testing time.
For more information, see Classic Business rules.