Application Development Fundamentals Flashcards
What are the 5 philosophies of scoped applications?
- They should be able to be uninstalled
- Apps should not break the system
- Apps should not break other apps
- Apps should be self-contained
- Apps should have clearly defined dependencies
- Apps should only access what they need (least privilege)
True or False: Delegated development is available in the Global scope.
False. It is only available in scoped applications.
What features are available in both Scoped and Global applications?
- Source Control Integration
- Publish to App Repository
- Easy File Management
What are the elements of a namespace?
- The prefix characters “x_”
- The instance customer prefix (between 2 and 5 characters long)
- The application ID (up to 40 characters)
What happens if the namespace application ID is longer than 18 characters?
The system truncates the application name and appends it to the prefix.
What does the system use as the application ID by default?
The application name.
What are update sets used for?
- Customizing baseline applications
- Customizing applications purchased from the store
- Keeping track of why a change was made
- Associating changes with SDLC artifacts (Stories, problems, bugs, enhancements etc)
When do you use update sets vs. an application repository?
- When you’re moving individual components and code containing features/functionality/incremental parts of the application, that are not a finalized product, between instances.
- Exporting work ahead of a clone
- Deploying an application if the app repo is unavailable
Which role has the ability to install/uninstall applications?
sysadmin
Which ServiceNow IDE is targeted to low-code developers for continuing development on applications?
Application Engine Studio
Which ServiceNow IDE is targeted to pro-code developers working on custom applications in one centralized location?
ServiceNow Studio
What interface provides a step-by-step process to guide a user through the initial application development?
Guided Application Creator
What are 3 benefits App Engine Studio?
- Build apps faster: All work can be done in one place, which accelerates the process from coding to deployment.
- Manage your source: Commit, branch and merge to your Git repository with integrated source control
- Work as a team: Provide individual developer access to specific application resources for better collaboration.
Which user experience templates are available in App Engine Studio? (5)
- Standard catalog item
- Record producer
- Workspace
- Portal
- Mobile experience
What are 3 benefits of the Guided Application Creator?
- Intuitive development interface
- Guides users through the application process
- Steps through basic application contents
What are 5 benefits of Integration Hub?
- Speed time to value
- Remove integration complexity
- Reduce integration costs
- Ignite IT productivity
- Build custom integrations
True or False: Not all applications within the ServiceNow store have been certified by ServiceNow.
False
What is the minimum version are all ServiceNow store apps built on?
Fuji
What steps does the Guided Application Creator take a user through?
- Application Configurations
- User Roles
- User Experience
- Tables
- Field Inputs
- Table Configurations
- Next Steps
Within Guided Application Creator, what can you configuration for the base application properties?
- Name
- Description
- Scope
What options are available to configure for user experience within the Guided Application Creator?
- Mobile
- Classic
What options are available for configuring new tables within the Guided Application Creator?
- Upload spreadsheet
- Extend table
- Create table
What table configuration options are available within Guided Application Creator?
- Label
- Auto-numbering
- Manage access
When should you extend a table?
- A table exists with fields similar to what is needed
- The scripts and workflow for an existing table are useful for the application
- You want to use the approval workflow activities
When should you create a new table?
- No similar table exists
- Table will contain sample or seeded data that is used only for reference by the application
- You prefer to script the application behaviors yourself
What is Git?
A cloud-based source control management system that uses repositories and branching.
What information can be found in the status bar when linking to Git?
- Name of the application
- The version of the application
- The name of the branch
- Whether the application is linked to a Git repository branch
- The number of files/how many have been saved
Explain the steps involved in using source control.
- Pull a new copy of the code from the source repository
- Make your changes
- Commit changes
- Pull a fresh copy from the source repository
- Publish the application to the application repository
What is a branch?
Different versions of code within a repository at the same time.
What is the purpose of a branch?
- Allows development work to explore other options or different solutions to a problem.
How do you prevent local changes from being lost when switching branches during development?
- Commit changes before switching your branch.
- Stash changes
What is a stash?
A locally stored set of changes that are stored on the device rather than pushed to a repository. Changes made in a stash can be applied to any branch.
Which changes are captured when you create a stash?
ALL local changes that you’ve made that have not yet been committed.
What are the 4 steps involved in working with a stash?
- Create the stash
- Give it a name
- Switch to the branch you want to apply the stash to
- Select the stash to apply
What becomes of conflicts created when apply a stash?
They must be resolved before the stashed changes can be applied.
What are the steps for linking to source control using Git?
- In Git, create a project.
- Click “Clone” and select “Clone with HTTPS”
- Copy the URL
- Navigate to the developer ServiceNow instance and ensure the scope is correct.
- Open “Credentials” module located under the “Connections and Credentials” application.
- Create a new “Basic Auth Credential” with your GitLab credentials.
- In Studio, click “Link to source control” under the “Source Control” menu.
- Paste link from GitLab into the URL field.
- Select the GitLab credential you created
- Confirm branch is set to “master”
- Click “Link to Source Control”
What are the 4 sections of application studio?
- Header
- Application Explorer
- Content Frame
- Status Bar
Which of the following capabilities does Studio have? (5)
- Tabbed navigation environment
- Previous number check
- Push to update set
- Code search
- Merge branches
- Testing of application
- Quick creation of scripts and files
- Push to repository
- Script intellectual property protection
- Merge to branches
- Add data (Such as records)
- Global application files management
- Configure form layout
- Tabbed navigation environment
- Code search
- Quick creation of scripts and files
- Push to repository
- Global application files management
What happens if you attempt to work on an out-of-scope artifact?
A warning is presented
True or False: An application’s scope is unchangable.
True
What are the 6 standard default fields all tables will have?
- Created
- Created by
- Updated
- Updated by
- Updates
- Sys ID
What is captured in the “Updates” field?
The number of updates for a particular record
What do you check if you want to allow a table to be extended from?
“Extensible”
When would the “Application Access” tab be evaluated?
Runtime
What is the purpose of the caller access field?
Track cross-scope application requests.
Which plug-in provides access to the “Caller Access” field within table configuration?
Restricted Caller Access”
Which two options are available for the “Accessible from” field of table configuration?
- App application scopes
- This scope only
When creating a table, what is the default name of the application? Of the module?
- The name of the table
- The plural of the table name
What does the default module of a table direct to?
A list of records within the table.
When configuring a module, what does the “Link type” dictate?
The type of page the module holds.
- ie List of records, New record, URL etc.
What form element improves the user experience by displaying additional information/instructions or acting as a separator for visual clarity?
Annotation
When creating a new UI policy, what do you need to first do before you can add actions?
Save the new record
Why does a UI policy have better performance than a client script?
The UI policy has a condition. It only runs when that action is true. Client scripts, however, do not have trigger conditions and will always evaluate.
Build conditions with ___ rather than ___ for better performance.
- Condition Builder
- Script
What 3 behaviors can be controlled via a UI Policy?
- Mandatory
- Visible
- Read only
What additional UI policy capabilities are “unlocked” with scripting?
- Create complex conditions
- Show/hide sections
- Remove/add/change/validate data in fields
- Full use of JavaScript methods
What must you do before you can access the advanced script of a UI policy?
- Save the record, if it is new
- Click the “Advanced view” related link (NOT the context menu)
What does the “Global” checkbox on a UI policy represent?
When true, it applies to all views for that table.
What is the default value for the UI Policy “On load” field?
The course says “The onLoad checkbox deals with whether this UI policy should execute when the form is loaded. The default behavior for a UI policy is to execute when the user makes a manual change to a field on a form. If we do want this to be evaluated also when the form is loaded, we would need to check the onLoad checkbox”
This isn’t true at least from what I can tell in our instance. When I went to create a new UI policy, the onLoad field was checked. When I looked at its dictionary entry, its default value is true.
Would you need a UI policy or client script to keep track of a fields prior value?
Client script.
Which executes first: UI policies or client scripts?
Client scripts
What is the syntax for setting a display business rule scratchpad variable?
g_scratchpad.var1 = current.field1;
What is the syntax for accessing a scratchpad variable from a client-side script?
g_scratchpad.var1;
When does a display business rule execute?
When we are coming from the server back to the browser with data from the server.
When publishing an application, are you able to publish a version number that is in the past with respect to your current version?
Yes, you could go from 1.0.0 to 0.3.2
Can you publish version 1.0.0 and then later publish version 1.0.0 again?
No, version numbers must be unique.
What are the 3 categories of ACL’s?
- table.none
- table.field
- table.*
What access does table.none provide?
Access to all of the records/all of the data within the specified table.
What access does the table.* ACL provide?
Every other field on the table that does not have a field-specific rule on it already.
What is the first level of evaluation of ACL’s?
Table level (table, parent table, * - any in the inheritance chain that might apply)
What are the steps to check ACL’s?
Table-level check:
- table
- parent table
- any table in the inheritance chain (*)
Field-level check:
- table.field
- parent table.field
- table in inheritance chain.field (.field)
- table.
- parent table.*
- table in inheritance chain.* (.)
With ___ you can only watch one field, whereas with ___ you can watch multiple.
- Field watcher
- Debug security rules
How do you watch a particular field using debug security rules?
Click the blue bug icon.
What does a blue bug icon next to a field indicate vs. a black bug?
- Debug security rules
- Field watcher
Starting from left to right, what does each circle represent in the debug security rules log?
- Access Handler
- Role-based permission
- Conditional-based permission
- Script evaluation
What do blue circles indicate in the debug security rules?
The system is using a cached value.
What is recommended if you are looking to incorporate security into scripts, outside of ACL’s?
Use server-side scripts, specifically the GlideSystem and GlideRecord methods. Server side scripts are more performant and more secure.
What happens if you have a script in one application scope that deletes records but the caller application does not have delete access?
What if the script also contains an insert and the caller application DOES have access?
- It would not throw errors nor update system logs because unauthorized access is simply skipped/ignored.
- The insert would proceed still.