AgentSkillsCN

servicenow-manipulate-data

在 ServiceNow 数据库中执行查询、插入、更新与删除操作,同时注重性能与安全性。该技能涵盖 GlideRecord、GlideQuery、GlideAggregate 以及安全的数据访问模式。当您需要处理数据库记录、进行数据聚合,或实现数据驱动型逻辑时,可使用此技能。

SKILL.md
--- frontmatter
name: servicenow-manipulate-data
description: Query, insert, update, and delete records in the ServiceNow database with emphasis on performance and security. Covers GlideRecord, GlideQuery, GlideAggregate, and secure data access patterns. Use when working with database records, aggregating data, or implementing data-driven logic.

Manipulate ServiceNow Data

Quick start

Querying records (traditional):

javascript
var gr = new GlideRecord('incident');
gr.addQuery('state', 'Open');
gr.addQuery('priority', '<=', 2);
gr.orderBy('created_on');
gr.query();

while (gr.next()) {
    gs.info('Incident: ' + gr.getValue('number'));
}

Modern fluent queries:

javascript
var records = new global.GlideQuery('incident')
    .where('active', true)
    .where('priority', '<=', 2)
    .select();

for (var i = 0; i < records.length; i++) {
    var incident = records[i];
}

Aggregating data:

javascript
var agg = new GlideAggregate('incident');
agg.addAggregate('COUNT');
agg.addAggregate('SUM', 'time_worked');
agg.query();

while (agg.next()) {
    var count = agg.getAggregate('COUNT');
    var total = agg.getAggregate('SUM');
}

Secure access (with ACL enforcement):

javascript
var gr = new GlideRecordSecure('confidential_table');
gr.query();
// Only returns records user has permission to see

Performance patterns

PatternUse CasePerformance
setLimit(1)Existence checkFast
getValue('field')Get single valueNo dot-walk overhead
GlideAggregateCount/SumMuch faster than loop
addEncodedQuery()Complex filtersCopy from list view

Best practices

  • Use GlideQuery for new code (modern, fluent)
  • Use GlideRecord for complex queries
  • Never iterate to count; use GlideAggregate
  • Use getValue() instead of dot-walking for performance
  • Use GlideRecordSecure when ACLs matter
  • Use setLimit(1) for existence checks
  • Copy encodedQuery from list views for complex filters
  • Test queries on sub-production before production
  • Refactor repeated query logic into Script Includes

Key APIs

APIPurpose
GlideRecordCRUD operations, traditional
GlideQueryNEW - fluent, modern queries
GlideAggregateCounts, sums, aggregations
GlideRecordSecureACL-enforced queries
GlideFilterAdvanced filtering operations

Reference

For Performance optimization, decision matrices, and anti-patterns, see BEST_PRACTICES.md