GlideRecord - 전역
GlideRecord API는 데이터베이스 작업에 사용됩니다.
GlideRecord API는 서버 측 코드에서 데이터베이스와 상호 작용하는 기본 방법입니다. GlideRecord는 단일 테이블의 기록을 포함하는 객체입니다. API를 사용하여 GlideRecord 객체를 인스턴스화하고 쿼리 매개변수, 필터, 제한 및 순서를 추가합니다.
이 API를 사용하여 동적 속성을 작성하려면 dynamic_schema_writer 역할이 있어야 합니다. 이 API를 사용하여 동적 데이터를 읽으려면 dynamic_schema_reader 역할이 있어야 합니다.
동적 속성에 대한 자세한 내용은 을 참조하십시오 Dynamic Schema.
쿼리 작성 및 실행에 대한 자세한 내용은 GlideRecord 문서를 참조하십시오.
GlideRecord와 동일한 기능을 수행하고 ACL도 적용하는 GlideRecord에서 상속된 클래스인 GlideRecordSecure에 대한 자세한 내용은 GlideServer API를 참조하십시오.
쿼리를 프로덕션 인스턴스에 배포하기 전에 항상 하위 프로덕션 인스턴스에서 테스트합니다. 잘못된 필드 이름을 포함하는 것과 같이 잘못 구성된 인코딩된 쿼리는 잘못된 쿼리를 생성합니다. 잘못된 쿼리가 실행되면 쿼리 조건의 잘못된 부분이 삭제되고 결과는 쿼리의 유효한 부분을 기반으로 하므로 테이블에서 모든 레코드를 반환할 수 있습니다. 잘못된 쿼리 결과에 insert(), update(),deleteRecord() 또는 deleteMultiple() 메서드를 사용하면 데이터가 손실될 수 있습니다.
시스템 속성을 true로 설정하면 glide.invalid_query.returns_no_rows 인코딩된 쿼리가 잘못된 쿼리가 있는 쿼리가 기록을 반환하지 않도록 할 수 있습니다. 경우에 따라 쿼리가 true로 설정된 경우에도 glide.invalid_query.returns_no_rows API 결과에 레코드를 반환할 수 있습니다. 이 문제는 잘못된 쿼리 용어가 WHERE 연산자와 함께 사용되는 쿼리에서 발생합니다. 이러한 쿼리에서 WHERE 연산자는 잘못된 용어를 무시하지만 쿼리 문의 나머지 부분을 해석하고 반환합니다. 이 시스템 속성 및 해당 기능에 대한 자세한 내용은 을 참조하십시오 Available system properties.
기록에서 값 검색
대부분의 경우 기록에서 값을 얻기 위해 닷워킹을 사용하지 마십시오. 닷워킹은 필드 값 대신 전체 객체를 검색합니다. 객체를 검색하면 더 많은 저장 공간이 사용되며 배열 또는 에서 서비스 포털사용할 때 바람직하지 않은 결과가 발생할 수 있습니다.
전체 객체를 검색하는 대신 다음 방법 중 하나를 사용하여 필드 값을 복사할 수 있습니다.
var mgr = current.caller_id.manager.toString();동적 속성
이 API에는 API의 동적 스키마 메서드와 동일한 기능을 가진 메서드가 GlideDynamicAttributeStore - 전역 있습니다. 이 API의 동적 속성 메서드를 사용하여 지정된 GlideRecord에서 작업을 수행합니다. 여러 기록에 동일한 동적 속성 그룹을 설정하려면 GlideDynamicAttributeStore API의 메서드를 사용합니다. 이 API를 사용하면 원하는 속성으로 GlideDynamicAttributeStore 객체를 스테이징한 다음 다양한 setDynamicAttributeValues() 메서드를 사용하여 해당 객체를 여러 GlideRecord에 복사할 수 있습니다.
GlideRecord - GlideRecord(문자열 tableName)
지정된 테이블에 대한 GlideRecord 클래스의 인스턴스를 만듭니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| tableName | 문자열 | 사용할 테이블입니다. |
var now_GR = new GlideRecord('incident');
GlideRecord - addActiveQuery()
활성 기록을 반환하는 필터를 추가합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 없음 |
| 유형 | 설명 |
|---|---|
| GlideQueryCondition | 활성 기록을 반환하도록 필터링합니다. |
var inc = new GlideRecord('incident');
inc.addActiveQuery();
inc.query();
범위가 지정된 등가
범위가 지정된 애플리케이션에서 addActiveQuery() 메서드를 사용하려면 해당 범위 지정 메서드인 addActiveQuery()를 사용합니다.
GlideRecord - addDomainQuery(객체 glideRecord)
쿼리에 사용되는 도메인을 사용자의 도메인에서 제공된 GlideRecord의 도메인으로 변경합니다.
쿼리를 프로덕션 인스턴스에 배포하기 전에 항상 하위 프로덕션 인스턴스에서 테스트합니다. 잘못된 필드 이름을 포함하는 것과 같이 잘못 구성된 인코딩된 쿼리는 잘못된 쿼리를 생성합니다. 잘못된 쿼리가 실행되면 쿼리 조건의 잘못된 부분이 삭제되고 결과는 쿼리의 유효한 부분을 기반으로 하므로 테이블에서 모든 레코드를 반환할 수 있습니다. 잘못된 쿼리 결과에 insert(), update(),deleteRecord() 또는 deleteMultiple() 메서드를 사용하면 데이터가 손실될 수 있습니다.
시스템 속성을 true로 설정하면 glide.invalid_query.returns_no_rows 인코딩된 쿼리가 잘못된 쿼리가 있는 쿼리가 기록을 반환하지 않도록 할 수 있습니다. 경우에 따라 쿼리가 true로 설정된 경우에도 glide.invalid_query.returns_no_rows API 결과에 레코드를 반환할 수 있습니다. 이 문제는 잘못된 쿼리 용어가 WHERE 연산자와 함께 사용되는 쿼리에서 발생합니다. 이러한 쿼리에서 WHERE 연산자는 잘못된 용어를 무시하지만 쿼리 문의 나머지 부분을 해석하고 반환합니다. 이 시스템 속성 및 해당 기능에 대한 자세한 내용은 을 참조하십시오 Available system properties.
이 기능을 사용하려면 Domain Support - Domain Extensions Installer(com.glide.domain.msp_extensions.installer) 플러그인이 필요합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| glideRecord | 객체 | 도메인을 가져올 GlideRecord입니다. |
| 유형 | 설명 |
|---|---|
| void |
//This example requires the Domain plugin be active, the Group table is the specified
//Domain table, and the ITIL user is in the Database Atlanta domain
//From any domain (using queryNoDomain()) look up the incidents that an ITIL user can only see
//who is in the Database Atlanta domain, should expect all incidents with the global or the
//Database Atlanta domain specified.
var domain = new GlideRecord('sys_user');
domain.addQuery('user_name', 'itil');
domain.queryNoDomain();
if (domain.next()) {
var domainQuery = new GlideRecord('incident');
domainQuery.addQuery('active', true);
domainQuery.addDomainQuery(domain);
domainQuery.query();
gs.print('Number of Incidents for ITIL user: ' + domainQuery.getRowCount());
while (domainQuery.next())
gs.print(domainQuery.number);
}
범위가 지정된 등가
범위가 지정된 애플리케이션에서는 이 방법을 사용할 수 없습니다.
GlideRecord - addEncodedQuery(문자열 쿼리, 부울 enforceFieldACL)
설정되었을 수 있는 다른 쿼리에 인코딩된 쿼리를 추가합니다.
쿼리를 프로덕션 인스턴스에 배포하기 전에 항상 하위 프로덕션 인스턴스에서 테스트합니다. 잘못된 필드 이름을 포함하는 것과 같이 잘못 구성된 인코딩된 쿼리는 잘못된 쿼리를 생성합니다. 잘못된 쿼리가 실행되면 쿼리 조건의 잘못된 부분이 삭제되고 결과는 쿼리의 유효한 부분을 기반으로 하므로 테이블에서 모든 레코드를 반환할 수 있습니다. 잘못된 쿼리 결과에 insert(), update(),deleteRecord() 또는 deleteMultiple() 메서드를 사용하면 데이터가 손실될 수 있습니다.
시스템 속성을 true로 설정하면 glide.invalid_query.returns_no_rows 인코딩된 쿼리가 잘못된 쿼리가 있는 쿼리가 기록을 반환하지 않도록 할 수 있습니다. 경우에 따라 쿼리가 true로 설정된 경우에도 glide.invalid_query.returns_no_rows API 결과에 레코드를 반환할 수 있습니다. 이 문제는 잘못된 쿼리 용어가 WHERE 연산자와 함께 사용되는 쿼리에서 발생합니다. 이러한 쿼리에서 WHERE 연산자는 잘못된 용어를 무시하지만 쿼리 문의 나머지 부분을 해석하고 반환합니다. 이 시스템 속성 및 해당 기능에 대한 자세한 내용은 을 참조하십시오 Available system properties.
| 이름 | 유형 | 설명 |
|---|---|---|
| 쿼리 | 문자열 | 인코딩된 쿼리 문자열입니다. |
| enforceFieldACL | 부울 | 옵션입니다. 필드 ACL(접근 제어 목록) 규칙을 적용할지 여부를 나타내는 플래그입니다. 유효한 값은 다음과 같습니다.
기본값: false |
| 유형 | 설명 |
|---|---|
| void |
var queryString = "priority=1^ORpriority=2";
var now_GR = new GlideRecord('incident');
now_GR.addEncodedQuery(queryString);
now_GR.query();
while (now_GR.next()) {
gs.addInfoMessage(now_GR.number);
}
범위가 지정된 등가
범위가 지정된 애플리케이션에서 addEncodedQuery() 메서드를 사용하려면 해당 범위 지정 메서드인 addEncodedQuery()를 사용합니다.
GlideRecord - addExtraField(문자열 dotWalkedField)
단일 요청의 양식 또는 스크립트에서 하나 이상의 닷워킹 필드를 쿼리합니다.
addExtraField() 메서드를 사용하면 양식이나 스크립트의 닷워킹 요소당 여러 쿼리를 수행하는 대신(데이터베이스에 대한 여러 왕복 필요) 단일 데이터베이스 요청에서 닷워킹 필드를 쿼리할 수 있습니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 닷워크필드(dotWalkedField) | 문자열 | 닷워킹 필드 이름입니다. 필드 이름 수준은 점(마침표)으로 구분됩니다. 예를 들어 쿼리하려면 Caller.Company 값을 입력합니다. 인시던트 [incident] 테이블의 조건의 dotWalkedField 형식은 닷워킹된 양식 또는 스크립트에서 왼쪽에서 오른쪽 순서로 필드를 따릅니다. |
| 유형 | 설명 |
|---|---|
| 없음 | 주: addExtraField() 메서드는 출력 결과에 영향을 주지 않습니다. 스크립트에서 이 메서드를 사용하는지 여부에 관계없이 출력은 항상 동일합니다. |
var gliderecord = new GlideRecord("incident");
gliderecord.addQuery("number", "INC0041457");
gliderecord.addExtraField("cmdb_ci.location.contact.name");
gliderecord.query();
gliderecord.next();
gs.print(gliderecord.cmdb_ci.location.contact.name);
출력은 addExtraField()를 사용하지 않고 gs.print(gr.cmdb_ci.location.contact.name)와 동일합니다. addExtraField() 메서드는 닷워킹 필드의 쿼리를 최적화합니다. 예제 출력 :
Abel Tuter
GlideRecord - addFunction(객체 함수)
미리 정의된 GlideDBFunctionBuilder 객체를 기록에 적용합니다.
GlideDBFunctionBuilder 범위가 지정된 클래스를 사용하여 함수를 정의합니다. 함수를 정의한 후 addFunction(Object function) 메서드를 사용하여 레코드에 함수를 적용합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 함수 | 객체 | SQL 작업을 정의하는 GlideDBFunctionBuilder 또는 GlideDBCaseStatementBuilder 객체 |
| 유형 | 설명 |
|---|---|
| void |
var functionBuilder = new GlideDBFunctionBuilder();
var myAddingFunction = functionBuilder.add();
myAddingFunction = functionBuilder.field('order');
myAddingFunction = functionBuilder.field('priority');
myAddingFunction = functionBuilder.build();
var now_GR = new GlideRecord('incident');
now_GR.addFunction(myAddingFunction);
now_GR.addQuery(myAddingFunction, '<', 5);
now_GR.query();
while(now_GR.next())
gs.log(now_GR.getValue(myAddingFunction));
출력:
*** Script: 1
*** Script: 4
*** Script: 3
*** Script: 1
*** Script: 1
*** Script: 2
*** Script: 1
*** Script: 1
GlideRecord - addInactiveQuery()
비활성 기록을 반환하는 필터를 추가합니다. 비활성 기록에는 활성 플래그가 거짓으로 설정되어 있습니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 없음 |
| 유형 | 설명 |
|---|---|
| GlideQueryCondition | 활성 플래그가 false인 기록. |
var inc = new GlideRecord('incident');
inc.addInactiveQuery();
inc.query();
범위가 지정된 등가
범위가 지정된 애플리케이션에서는 범위가 지정된 메서드 addQuery("active","false")를 사용합니다.
GlideRecord - addJoinQuery(문자열 테이블)
관련 테이블의 관계를 기반으로 기록을 반환하는 필터를 추가합니다.
예를 들어 데이터베이스 그룹(sys_user_grmember 테이블을 통한 사용자)에 있는 모든 사용자를 찾습니다. 또 다른 예로 할당된 인시던트가 있는 모든 문제(incident.problem_id 관계를 통한 문제)를 찾을 수 있습니다.
이것은 진정한 데이터베이스 조인이 아닙니다. 대신 addJoinQuery() 는 하위 쿼리를 추가합니다. 따라서 결과 집합은 조인에 따라 제한되지만 액세스할 수 있는 유일한 필드는 기본 테이블의 필드(GlideRecord가 초기화된 테이블에 있는 필드)입니다.
쿼리를 프로덕션 인스턴스에 배포하기 전에 항상 하위 프로덕션 인스턴스에서 테스트합니다. 잘못된 필드 이름을 포함하는 것과 같이 잘못 구성된 인코딩된 쿼리는 잘못된 쿼리를 생성합니다. 잘못된 쿼리가 실행되면 쿼리 조건의 잘못된 부분이 삭제되고 결과는 쿼리의 유효한 부분을 기반으로 하므로 테이블에서 모든 레코드를 반환할 수 있습니다. 잘못된 쿼리 결과에 insert(), update(),deleteRecord() 또는 deleteMultiple() 메서드를 사용하면 데이터가 손실될 수 있습니다.
시스템 속성을 true로 설정하면 glide.invalid_query.returns_no_rows 인코딩된 쿼리가 잘못된 쿼리가 있는 쿼리가 기록을 반환하지 않도록 할 수 있습니다. 경우에 따라 쿼리가 true로 설정된 경우에도 glide.invalid_query.returns_no_rows API 결과에 레코드를 반환할 수 있습니다. 이 문제는 잘못된 쿼리 용어가 WHERE 연산자와 함께 사용되는 쿼리에서 발생합니다. 이러한 쿼리에서 WHERE 연산자는 잘못된 용어를 무시하지만 쿼리 문의 나머지 부분을 해석하고 반환합니다. 이 시스템 속성 및 해당 기능에 대한 자세한 내용은 을 참조하십시오 Available system properties.
| 이름 | 유형 | 설명 |
|---|---|---|
| 테이블 | 문자열 | 테이블 이름 |
| 유형 | 설명 |
|---|---|
| GlideQueryCondition | 관계가 일치하는 기록입니다. |
인시던트가 첨부된 문제를 찾습니다. 이 예시는 연관된 인시던트가 있는 문제를 반환합니다. 그러나 쿼리의 일부로 반환되는 인시던트에서 값을 끌어오지는 않습니다.
var prob = new GlideRecord('problem');
prob.addJoinQuery('incident');
prob.query();
관련 인시던트가 있는 활성=아니오 문제를 찾습니다.
// Look for Problem records
var now_GR = new GlideRecord('problem');
// That have associated Incident records
var grSQ = now_GR.addJoinQuery('incident');
// Where the Problem records are "active=false"
now_GR.addQuery('active', 'false');
// And the Incident records are "active=true"
grSQ.addCondition('active', 'true');
// Query
now_GR.query();
// Iterate and print results
while (now_GR.next()) {
gs.print(now_GR.getValue('number'));
}
범위가 지정된 등가
범위가 지정된 애플리케이션에서 addJoinQuery() 메서드를 사용하려면 해당 범위 지정 메서드인 addJoinQuery()를 사용합니다.
GlideRecord - addJoinQuery(문자열 테이블, 문자열 primaryField)
관련 테이블의 관계를 기반으로 기록을 반환하는 필터를 추가합니다.
예를 들어 데이터베이스 그룹(sys_user_grmember 테이블을 통한 사용자)에 있는 모든 사용자를 찾습니다. 또 다른 예로 할당된 인시던트가 있는 모든 문제(incident.problem_id 관계를 통한 문제)를 찾을 수 있습니다.
이것은 진정한 데이터베이스 조인이 아닙니다. 대신 addJoinQuery() 는 하위 쿼리를 추가합니다. 따라서 결과 집합은 조인에 따라 제한되지만 액세스할 수 있는 유일한 필드는 기본 테이블의 필드(GlideRecord가 초기화된 테이블에 있는 필드)입니다.
쿼리를 프로덕션 인스턴스에 배포하기 전에 항상 하위 프로덕션 인스턴스에서 테스트합니다. 잘못된 필드 이름을 포함하는 것과 같이 잘못 구성된 인코딩된 쿼리는 잘못된 쿼리를 생성합니다. 잘못된 쿼리가 실행되면 쿼리 조건의 잘못된 부분이 삭제되고 결과는 쿼리의 유효한 부분을 기반으로 하므로 테이블에서 모든 레코드를 반환할 수 있습니다. 잘못된 쿼리 결과에 insert(), update(),deleteRecord() 또는 deleteMultiple() 메서드를 사용하면 데이터가 손실될 수 있습니다.
시스템 속성을 true로 설정하면 glide.invalid_query.returns_no_rows 인코딩된 쿼리가 잘못된 쿼리가 있는 쿼리가 기록을 반환하지 않도록 할 수 있습니다. 경우에 따라 쿼리가 true로 설정된 경우에도 glide.invalid_query.returns_no_rows API 결과에 레코드를 반환할 수 있습니다. 이 문제는 잘못된 쿼리 용어가 WHERE 연산자와 함께 사용되는 쿼리에서 발생합니다. 이러한 쿼리에서 WHERE 연산자는 잘못된 용어를 무시하지만 쿼리 문의 나머지 부분을 해석하고 반환합니다. 이 시스템 속성 및 해당 기능에 대한 자세한 내용은 을 참조하십시오 Available system properties.
| 이름 | 유형 | 설명 |
|---|---|---|
| 테이블 | 문자열 | 테이블 이름 |
| primaryField | 문자열 | sys_id 이외의 경우 기본 필드입니다. |
| 유형 | 설명 |
|---|---|
| GlideQueryCondition | 관계가 일치하는 기록입니다. |
sys_id 대신 조인 키의 open_by 필드를 사용하여 인시던트가 있는 문제를 찾습니다.
var now_GR = new GlideRecord('problem');
now_GR.addJoinQuery('incident', 'opened_by');
now_GR.query();
범위가 지정된 등가
범위가 지정된 애플리케이션에서 addJoinQuery() 메서드를 사용하려면 해당 범위 지정 메서드인 addJoinQuery()를 사용합니다.
GlideRecord - addJoinQuery(문자열 테이블, 문자열 primaryField, 문자열 joinTableField)
관련 테이블의 관계를 기반으로 기록을 반환하는 필터를 추가합니다.
예를 들어 데이터베이스 그룹(sys_user_grmember 테이블을 통한 사용자)에 있는 모든 사용자를 찾습니다. 또 다른 예로 할당된 인시던트가 있는 모든 문제(incident.problem_id 관계를 통한 문제)를 찾을 수 있습니다.
이것은 진정한 데이터베이스 조인이 아닙니다. 대신 addJoinQuery() 는 하위 쿼리를 추가합니다. 따라서 결과 집합은 조인에 따라 제한되지만 액세스할 수 있는 유일한 필드는 기본 테이블의 필드(GlideRecord가 초기화된 테이블에 있는 필드)입니다.
쿼리를 프로덕션 인스턴스에 배포하기 전에 항상 하위 프로덕션 인스턴스에서 테스트합니다. 잘못된 필드 이름을 포함하는 것과 같이 잘못 구성된 인코딩된 쿼리는 잘못된 쿼리를 생성합니다. 잘못된 쿼리가 실행되면 쿼리 조건의 잘못된 부분이 삭제되고 결과는 쿼리의 유효한 부분을 기반으로 하므로 테이블에서 모든 레코드를 반환할 수 있습니다. 잘못된 쿼리 결과에 insert(), update(),deleteRecord() 또는 deleteMultiple() 메서드를 사용하면 데이터가 손실될 수 있습니다.
시스템 속성을 true로 설정하면 glide.invalid_query.returns_no_rows 인코딩된 쿼리가 잘못된 쿼리가 있는 쿼리가 기록을 반환하지 않도록 할 수 있습니다. 경우에 따라 쿼리가 true로 설정된 경우에도 glide.invalid_query.returns_no_rows API 결과에 레코드를 반환할 수 있습니다. 이 문제는 잘못된 쿼리 용어가 WHERE 연산자와 함께 사용되는 쿼리에서 발생합니다. 이러한 쿼리에서 WHERE 연산자는 잘못된 용어를 무시하지만 쿼리 문의 나머지 부분을 해석하고 반환합니다. 이 시스템 속성 및 해당 기능에 대한 자세한 내용은 을 참조하십시오 Available system properties.
| 이름 | 유형 | 설명 |
|---|---|---|
| 테이블 | 문자열 | 테이블 이름 |
| primaryField | 문자열 | sys_id 이외의 경우 기본 필드입니다. |
| 조인 테이블 필드 | 문자열 | sys_id 이외의 경우 테이블을 조인하는 필드 |
| 유형 | 설명 |
|---|---|
| GlideQueryCondition | 관계가 일치하는 기록입니다. |
인시던트 caller_id 필드 값이 문제 opened_by 필드와 일치하는 인시던트가 관련된 문제를 찾습니다.
var now_GR = new GlideRecord('problem');
now_GR.addJoinQuery('incident', 'opened_by', 'caller_id');
now_GR.query();
범위가 지정된 등가
범위가 지정된 애플리케이션에서 addJoinQuery() 메서드를 사용하려면 해당 범위 지정 메서드인 addJoinQuery()를 사용합니다.
GlideRecord - addNotNullQuery(문자열 필드 이름)
지정된 필드가 null이 아닌 기록을 반환하는 필터를 추가합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| fieldName | 문자열 | 필드 이름입니다. |
| 유형 | 설명 |
|---|---|
| GlideQueryCondition | 매개변수 필드가 null이 아닌 기록의 GlideQueryCondition입니다. |
var target = new GlideRecord('incident');
target.addNotNullQuery('short_description');
target.query(); // Issue the query to the database to get all records
while (target.next()) {
// add code here to process the incident record
}
범위가 지정된 등가
범위가 지정된 애플리케이션에서 addNotNullQuery() 메서드를 사용하려면 해당 범위 지정 메서드인 addNotNullQuery()를 사용합니다.
GlideRecord - addNullQuery(문자열 필드 이름)
지정된 필드가 null인 기록을 반환하는 필터를 추가합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| fieldName | 문자열 | 필드 이름입니다. |
| 유형 | 설명 |
|---|---|
| GlideQueryCondition | 지정된 필드가 null인 기록의 GlideQueryCondition입니다. |
var target = new GlideRecord('incident');
target.addNullQuery('short_description');
target.query(); // Issue the query to the database to get all records
while (target.next()) {
// add code here to process the incident record
}
범위가 지정된 등가
범위가 지정된 애플리케이션에서 addNullQuery() 메서드를 사용하려면 해당 범위 지정 메서드인 addNullQuery()를 사용합니다.
GlideRecord - addQuery(문자열 이름, 객체 연산자, 객체 값)
요청을 작성할 수 있는 기능을 제공하며, 요청이 실행되면 요청과 일치하는 지정된 테이블의 행을 반환합니다.
SQL에 익숙한 경우 이 메서드는 "where" 절과 유사합니다. 단일 쿼리에서 하나 이상의 addQuery() 호출을 수행할 수 있습니다. 이 메서드의 경우 쿼리는 AND'ed입니다. 쿼리 문을 OR로 설정해야 하는 경우 GlideQueryCondition 클래스를 사용합니다.
addQuery() 는 일반적으로 세 개의 매개 변수로 호출됩니다. 테이블 필드, 연산자 및 비교 값입니다. 테이블 필드와 비교 값의 두 매개 변수(예: myObj.addQuery('category','Hardware');)로만 호출할 수 있습니다. 이 경우 연산자는 "같음"으로 간주됩니다.
쿼리 사용에 대한 자세한 내용은 스크립트에서 테이블 쿼리를 참조하세요.
쿼리를 프로덕션 인스턴스에 배포하기 전에 항상 하위 프로덕션 인스턴스에서 테스트합니다. 잘못된 필드 이름을 포함하는 것과 같이 잘못 구성된 인코딩된 쿼리는 잘못된 쿼리를 생성합니다. 잘못된 쿼리가 실행되면 쿼리 조건의 잘못된 부분이 삭제되고 결과는 쿼리의 유효한 부분을 기반으로 하므로 테이블에서 모든 레코드를 반환할 수 있습니다. 잘못된 쿼리 결과에 insert(), update(),deleteRecord() 또는 deleteMultiple() 메서드를 사용하면 데이터가 손실될 수 있습니다.
시스템 속성을 true로 설정하면 glide.invalid_query.returns_no_rows 인코딩된 쿼리가 잘못된 쿼리가 있는 쿼리가 기록을 반환하지 않도록 할 수 있습니다. 경우에 따라 쿼리가 true로 설정된 경우에도 glide.invalid_query.returns_no_rows API 결과에 레코드를 반환할 수 있습니다. 이 문제는 잘못된 쿼리 용어가 WHERE 연산자와 함께 사용되는 쿼리에서 발생합니다. 이러한 쿼리에서 WHERE 연산자는 잘못된 용어를 무시하지만 쿼리 문의 나머지 부분을 해석하고 반환합니다. 이 시스템 속성 및 해당 기능에 대한 자세한 내용은 을 참조하십시오 Available system properties.
| 이름 | 유형 | 설명 |
|---|---|---|
| 이름 | 문자열 | 테이블 필드 이름 또는 동적 속성 저장소 요소 내의 속성에 대한 경로입니다. 동적 경로의 형식: dyn_att_field->group_name->attribute_name
동적 속성에 대한 자세한 내용은 을 참조하십시오 Dynamic Schema. |
| 운영자 | 객체 | 쿼리 연산자입니다. 사용 가능한 값은 value 매개변수의 데이터 유형에 따라 다릅니다. 숫자:
문자열(대문자여야 함):
주: LIKE 연산자 대신 CONTAINS를 사용합니다. 동적 스키마 연산자:
|
| 값 | 객체 | 쿼리할 값(대/소문자 구분 안 함)입니다. |
| 유형 | 설명 |
|---|---|
| GlideQueryCondition | GlideRecord에 추가된 GlideQueryCondition에 대한 참조입니다. |
다음 예제에서는 이 메서드를 호출하는 방법을 보여 줍니다.
var rec = new GlideRecord('incident');
rec.addQuery('active',true);
rec.addQuery('sys_created_on', ">", "2010-01-19 04:05:00");
rec.query();
while (rec.next()) {
rec.active = false;
gs.print('Active incident ' + rec.number + ' closed');
rec.update();
}
다음은 IN 연산자를 사용하는 예이다.
var que = new GlideRecord('incident');
que.addQuery('number','IN','INC00001,INC00002');
que.query();
while(que.next()) {
//do something....
}
다음 예제에서는 동적 특성 저장소에서 특성을 사용하기 위해 이 메서드를 호출하는 방법을 보여 줍니다.
var gr_Inc = new GlideRecord('incident');
gr_Inc.addQuery('inc_dynamic_schema->cars->avg_mpg', 'GT_FIELD', 'inc_dynamic_schema2->cars->avg_mpg');
gr_Inc.query();
while(gr_Inc.next()) {
gs.info(gr_Inc.number + " Gas Mileage 1: " + gr_Inc.getDynamicAttributeValue('inc_dynamic_schema->cars->avg_mpg') + " GT_FIELD Gas Mileage 2 :" + gr_Inc.getDynamicAttributeValue('inc_dynamic_schema2->cars->avg_mpg'));
}
범위가 지정된 등가
범위가 지정된 애플리케이션에서 addQuery() 메서드를 사용하려면 해당 범위 지정 메서드인 addQuery()를 사용합니다.
GlideRecord - addValue(문자열 필드, 숫자 값)
현재 GlideRecord 객체에 대한 데이터베이스 수준에서 지정된 숫자 필드에 대한 원자성 더하기 및 빼기 연산을 제공합니다.
일반적으로 GlideRecord 객체는 데이터베이스에 하나의 기록으로 작성됩니다. 개별 필드 값은 정의된 대로 저장됩니다. GlideRecord 필드에 값을 추가하는 코드의 경우 필드를 원자성으로 증가시키는 대신 새 값을 사용하여 데이터베이스에 저장하기만 하면 됩니다.
gs.print(now_now_GR.u_count); // "1"
now_GR.u_count += 1;
now_GR.update();
now_GR.get(now_now_GR.sys_id);
gs.print(now_now_GR.u_count); // "2" 다른 사용자가 동일한 코드를 동시에 실행하는 경우 두 연산이 각각 1을 더하는 대신 u_count 결과적으로 u_count에는 2만 포함되고 한 연산의 업데이트가 실제로 손실됩니다.gs.print(now_now_GR.u_count); // "1"
now_GR.addValue("u_count", 1);
now_GR.update();
now_GR.get(now_GR); // The record must be reloaded from the database to observe the result
gs.print(now_now_GR.u_count); // "3", if executed concurrently with another user setValue()와 마찬가지로 addValue() 변경 사항은 update() 또는 insert()에 대한 후속 호출 후에만 데이터베이스에 적용됩니다. insert()가 호출되면 addValue()에 전달된 value 매개변수로 지정된 필드가 초기화됩니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 필드 | 문자열 | 수정할 이 GlideRecord의 필드 이름입니다. 연결된 필드가 숫자 형식이 아니면 작업이 무시됩니다. |
| 값 | 번호 | 기록이 저장될 때 값에 추가할 금액입니다. 빼기 연산을 수행하려면 음수 값을 전달하기만 하면 됩니다. |
| 유형 | 설명 |
|---|---|
| void |
추가되는 값을 표시합니다.
gs.print(now_GR.u_count); // "1"
now_GR.addValue("u_count", 1);
now_GR.update();
now_GR.get(now_GR.sys_id); // The record must be reloaded from the database to observe the result
gs.print(now_GR.u_count);
출력: 2
뺄 값을 표시합니다.
gs.print(now_GR.u_count); // "4"
now_GR.addValue("u_count", -1);
now_GR.update();
now_GR.get(now_GR.sys_id); // The record must be reloaded from the database to observe the result
gs.print(now_GR.u_count);
출력: 3
GlideRecord - applyEncodedQuery(String, queryString)
지정된 인코딩된 쿼리 용어의 값을 설정하고 현재 GlideRecord에 적용합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 쿼리 문자열 | 문자열 | 현재 GlideRecord에 적용할 인코딩된 쿼리입니다. |
| 유형 | 설명 |
|---|---|
| 없음 |
function createAcl(table, role) {
gs.print("Checking security on table " + table);
var now_GR = new GlideRecord("sys_security_acl");
now_GR.addQuery("name", table);
now_GR.addQuery("operation", "read");
now_GR.query();
var encQuery = now_GR.getEncodedQuery();
if (now_GR.next()) {
// existing acl found so use it
createAclRole(now_GR.sys_id.toString(), role);
return;
} else {
now_GR.initialize();
now_GR.applyEncodedQuery(encQuery);
var acl = now_GR.insert();
gs.print("Added read access control on " + table);
createAclRole(acl, role);
}
}
GlideRecord - applyTemplate(문자열 템플릿)
템플릿 테이블 [sys_template]의 템플릿 기록을 현재 기록에 적용합니다. 지정된 템플릿을 찾을 수 없으면 아무 작업도 수행되지 않습니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 템플릿 | 문자열 | 템플릿 [sys_template] 테이블의 템플릿 이름입니다. |
| 유형 | 설명 |
|---|---|
| void |
var rec1 = new GlideRecord("incident");
rec1.initialize();
rec1.applyTemplate("my_incident_template");
rec1.insert();
GlideRecord - autoSysFields(부울 e)
sys_updated_by, sys_updated_on, sys_mod_count, sys_created_by 및 sys_created_on 필드에 대한 업데이트를 활성화하거나 비활성화합니다. 이는 종종 기록 정보를 변경하지 않고 기록의 필드 값을 수동으로 업데이트하는 데 사용됩니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| e | 부울 | false인 경우 sys_updated_by, sys_updated_on, sys_mod_count, sys_created_by 및 sys_created_on에 대한 업데이트를 비활성화합니다. |
| 유형 | 설명 |
|---|---|
| void |
var inc = new GlideRecord('incident');
// Change all Open(1) incidents to Active(2)
inc.addQuery('state', 1);
inc.query();
while (inc.next()) {
inc.autoSysFields(false); // Do not update sys_updated_by, sys_updated_on, sys_mod_count, sys_created_by, and sys_created_on
inc.setWorkflow(false); // Do not run any other business rules
inc.setValue('state', 2);
inc.update();
}
GlideRecord - canCreate()
사용자 역할 포함의 접근 제어 규칙에서 이 테이블에 새 기록 삽입을 허용할지 여부를 결정합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 없음 |
| 유형 | 설명 |
|---|---|
| 부울 | 사용자의 역할이 이 테이블에서 기록 생성을 허용하는지 여부를 나타내는 플래그입니다. 가능한 값:
|
이 예는 benefit_plan 테이블에 기록을 생성할 수 있는지 여부를 보여줍니다.
canCreateBenefitPlan : function() {
var now_GR = new GlideRecord('benefit_plan');
return now_GR.canCreate();
}
범위가 지정된 등가
범위가 지정된 애플리케이션에서 canCreate() 메서드를 사용하려면 해당 범위 지정 메서드인 canCreate()를 사용합니다.
GlideRecord - canDelete()
사용자 역할 포함의 접근 제어 규칙에서 이 테이블의 기록 삭제를 허용할지 여부를 결정합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 없음 |
| 유형 | 설명 |
|---|---|
| 부울 | 사용자의 역할이 이 테이블의 기록 삭제를 허용하는지 여부를 나타내는 플래그입니다. 유효한 값은 다음과 같습니다.
|
var att = new GlideRecord('sys_attachment');
att.get('$[sys_attachment.sys_id]');
var sm = GlideSecurityManager.get();
var checkMe = 'record/sys_attachment/delete';
var canDelete = sm.hasRightsTo(checkMe, att);
gs.log('canDelete: ' + canDelete);
범위가 지정된 등가
범위가 지정된 응용 프로그램에서 canDelete() 메서드를 사용하려면 해당 범위 지정 메서드인 canDelete()를 사용합니다.
GlideRecord - canRead()
접근 통제 규칙(ACL)이 이 테이블의 기록 읽기를 허용하는지 여부를 결정합니다. 이 방법은 사용자 역할, 스크립팅된 ACL, 스크립팅된 조건이 있는 ACL 등과 같은 모든 ACL 유형을 평가합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 없음 |
| 유형 | 설명 |
|---|---|
| 부울 | 사용자의 역할이 이 테이블의 기록 읽기를 허용하는지 여부를 나타내는 플래그입니다. 유효한 값은 다음과 같습니다.
|
이 예는 benefit_plan 테이블에서 기록을 읽을 수 있는지 여부를 보여줍니다.
canReadBenefitPlan: function() {
var now_GR = new GlideRecord('benefit_plan');
return now_GR.canRead();
}
범위가 지정된 등가
범위가 지정된 애플리케이션에서 canRead() 메서드를 사용하려면 해당 범위 지정 메서드인 canRead()를 사용합니다.
GlideRecord - canWrite()
(사용자 역할 포함의) 접근 제어 규칙이 이 테이블의 기록에 대한 업데이트를 허용하는지 여부를 결정합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 없음 |
| 유형 | 설명 |
|---|---|
| 부울 | 사용자의 역할이 이 테이블의 기록 쓰기를 허용하는지 여부를 나타내는 플래그입니다. 유효한 값은 다음과 같습니다.
|
이 예는 benefit_plan 테이블에 기록을 쓸 수 있는지 여부를 보여줍니다.
canWriteBenefitPlan : function() {
var now_GR = new GlideRecord('benefit_plan');
return now_GR.canWrite();
}
범위가 지정된 등가
범위가 지정된 응용 프로그램에서 canWrite() 메서드를 사용하려면 해당 범위 지정 메서드인 canWrite()를 사용합니다.
GlideRecord - changes()
기록의 필드가 변경되었는지 여부를 확인합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 없음 |
| 유형 | 설명 |
|---|---|
| 부울 | 지정된 기록에 변경 사항이 있는지 여부를 나타내는 플래그입니다. 가능한 값:
|
이 예는 인시던트 기록에 변경 내용이 있는지 확인하는 방법을 보여줍니다.
var now_GR = new GlideRecord("incident");
now_GR.query();
now_GR.next();
if (now_GR.changes()) {
gs.print("The incident record reported changes right after being read");
} else {
gs.print("The incident record has not changed");
}
범위가 지정된 등가
범위가 지정된 애플리케이션에서 이 기능을 구현하려면 다음과 유사한 코드를 추가합니다.
var now_GR = new GlideRecord("incident");
now_GR.get("965c9e5347c12200e0ef563dbb9a7156");
now_GR.short_description = "test";
var elements = now_GR.getElements();
var hasChanged = false;
for(var i=0; i < elements.length;i++){
var element = elements[i];
hasChanged = hasChanged || element.changes();
gs.info(element.getName() + ":" + element.changes());
}
gs.info(hasChanged);
GlideRecord - deleteMultiple()
쿼리를 만족하는 모든 기록을 삭제합니다.
이 메서드는 첨부 파일을 삭제하지 않습니다.
이 방법에서는 닷워킹이 지원되지 않습니다. 참조된 테이블에서 deleteMultiple() 함수를 사용하면 테이블의 모든 레코드가 삭제됩니다. 또한 deleteRecord() 를 사용하여 계단식 삭제를 수행할 때 동일한 GlideRecord 객체에서 setWorkflow() 에 대한 이전 호출은 무시됩니다.
통화 필드가 있는 테이블에는 deleteMultiple() 을 사용하지 마십시오. 항상 각 기록을 개별적으로 삭제하십시오. 또한 큰 테이블로 작업할 때는 chooseWindow() 또는 setLimit() 메서드와 함께 이 메서드를 사용하지 마십시오. setLimit() 메서드는 deleteMultiple()로 삭제되는 레코드 수를 제한하지 않습니다. 쿼리에서 반환된 모든 레코드는 setLimit()에 관계없이 삭제됩니다.
glide.db.forced.chunk.threshold 시스템 속성은 청크 기록 삭제 및 업데이트를 강제하는 임계치를 설정합니다. 청크는 대용량 테이블에서 기본이 아닌 키 삭제로 인해 복제 문제가 발생하는 것을 방지하는 데 도움이 됩니다. 자세한 내용은 Available system properties 문서를 참조하십시오.
| 이름 | 유형 | 설명 |
|---|---|---|
| 없음 |
| 유형 | 설명 |
|---|---|
| 없음 |
이 예는 인시던트 테이블에서 모든 비활성 기록을 삭제하는 방법을 보여줍니다.
var now_GR = new GlideRecord('incident');
now_GR.addQuery('active','false');
now_GR.query();
now_GR.deleteMultiple();
범위가 지정된 등가
범위가 지정된 응용 프로그램에서 deleteMultiple() 메서드를 사용하려면 해당 범위 지정 메서드 deleteMultiple()을 사용합니다.
GlideRecord - deleteRecord()
단일 기록을 삭제합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 없음 |
| 유형 | 설명 |
|---|---|
| 부울 | 기록이 성공적으로 삭제되었는지 여부를 나타내는 플래그입니다. 가능한 값:
|
이 예는 인시던트 테이블에서 모든 비활성 기록을 삭제하는 방법을 보여줍니다.
var rec = new GlideRecord('incident');
rec.addQuery('active',false);
rec.query();
while (rec.next()) {
gs.info('Inactive incident ' + rec.number + ' deleted');
rec.deleteRecord();
}
출력:
Inactive incident INC0010010 deleted
Inactive incident INC0010011 deleted
이 예는 인시던트 테이블에서 기록을 삽입한 직후 삭제하는 방법을 보여줍니다. 인시던 트 GlideRecord 를 삭제하려면 먼저 삽입 후 다시 로드해야 합니다.
var grTicket = new GlideRecord('incident');
grTicket.initialize();
grTicket.short_description = 'Example ticket';
grTicket.work_notes = 'An update about the ticket';
var ins_sys_id = grTicket.insert(); // Insert the record
grTicket.get(ins_sys_id); // Reload the inserted record
gs.info(grTicket.deleteRecord()); // Delete the record
출력:
true
범위가 지정된 등가
범위가 지정된 응용 프로그램에서 deleteRecord() 메서드를 사용하려면 해당 범위 지정 메서드인 deleteRecord()를 사용합니다.
GlideRecord - find(문자열, columnName, 문자열 값)
지정된 열에 일치하는 값이 있는 기록이 있으면 예를 반환합니다. 발견되면 일치하는 첫 번째 레코드로 이동하며, 기본적으로 레코드가 반환될 때까지 next() 를 실행합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| columnName | 문자열 | 검색할 필드 이름입니다. |
| 값 | 문자열 | 지정된 필드에서 확인할 값입니다. |
| 유형 | 설명 |
|---|---|
| 부울 | 현재 테이블 내의 기록이 지정된 필드에서 일치하는 값을 가지고 있는지 여부를 나타내는 플래그입니다. 가능한 값:
|
이 예는 간단한 설명 필드에 "중요"가 있는 인시던트 테이블에서 기록을 찾는 방법을 보여줍니다.
var now_GR = new GlideRecord("incident");
now_GR.query();
var shortDescription = "Critical";
if (now_GR.find("short_description", shortDescription)) {
gs.print("An incident with the specified field value was found");
var recordID = now_GR.getValue("sys_id");
gs.print("Found in the following record: " + recordID);
} else {
gs.print("An incident with the specified field value was not found");
}
출력
An incident with the specified field value was found
Found in the following record: 552c48888c033300964f4932b03eb092
GlideRecord - get(객체 이름, 객체 값)
현재 GlideRecord 객체에서 지정된 기록을 반환합니다.
이 메서드는 하나 또는 두 개의 매개 변수를 허용합니다. 단일 매개 변수만 전달되는 경우 메서드는 해당 매개 변수가 원하는 레코드의 sys_id이라고 가정합니다. 찾을 수 없는 경우에는 값을 표시 값과 일치시키려고 시도합니다. 두 매개변수가 전달되면 첫 번째 매개변수는 검색할 GlideRecord 내 열의 이름입니다. 두 번째는 검색할 값입니다.
레코드가 여러 개 있는 경우 next() 를 사용하여 추가 레코드에 액세스합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 이름 | 객체 | 옵션입니다. 지정된 value 매개변수를 검색할 인스턴스화된 GlideRecord 열의 이름입니다. 단일 매개 변수만 전달되는 경우 메서드는 이 매개 변수가 sys_id 것으로 가정합니다. |
| 값 | 객체 | 일치시킬 값입니다. |
| 유형 | 설명 |
|---|---|
| 부울 | 요청된 기록의 위치 여부를 나타냅니다. 가능한 값:
|
이 예시에서는 sys_id 전달하여 인시던트 기록을 가져옵니다.
var grIncident = new GlideRecord('incident');
var returnValue = grIncident.get('99ebb4156fa831005be8883e6b3ee4b9');
gs.info(returnValue); // logs true or false
gs.info(grIncident.number); // logs Incident Number
이 예시에서는 검색할 기록의 열과 검색할 값을 전달하여 인시던트 기록을 가져옵니다.
var grIncident = new GlideRecord('incident');
var returnValue = grIncident.get('caller_id.name','Sylivia Wayland');
gs.info(returnValue); // logs true or false
gs.info(grIncident.number); // logs Incident Number
범위가 지정된 등가
범위가 지정된 애플리케이션에서 get() 메서드를 사용하려면 해당 범위 지정 메서드인 get()을 사용합니다.
GlideRecord - getAttribute(문자열 필드 이름)
지정된 필드에 대한 딕셔너리 속성을 반환합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| fieldName | 문자열 | 딕셔너리 속성을 반환할 필드 이름 |
| 유형 | 설명 |
|---|---|
| 문자열 | 딕셔너리 속성 |
이 예제에서는 "tree_picker"에 대한 사전 특성을 반환하는 방법을 보여 줍니다.
function doit() {
var now_GR = new GlideRecord('sys_user');
now_GR.query("user_name","admin");
if (now_GR.next()) {
gs.print("we got one");
gs.print(now_GR.location.getAttribute("tree_picker"));
}
}
범위가 지정된 등가
범위가 지정된 애플리케이션에서 getAttribute() 메서드를 사용하려면 해당 범위 지정 메서드인 getAttribute()를 사용합니다.
GlideRecord - getClassDisplayValue()
테이블의 레이블을 반환합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 없음 |
| 유형 | 설명 |
|---|---|
| 문자열 | 테이블을 식별하는 레이블입니다. |
이 예제에서는 전달된 테이블의 레이블을 인쇄합니다.
// Display the incident table label
var now_GR = new GlideRecord("incident");
var value = now_GR.getClassDisplayValue();
gs.info("The table label is " + value + ".");
출력:
The table label is Incident.
범위가 지정된 등가
범위가 지정된 애플리케이션에서 getClassDisplayValue() 메서드를 사용하려면 해당 범위 지정 메서드인 getClassDisplayValue()를 사용합니다.
GlideRecord - getDisplayValue(문자열 이름)
현재 기록의 표시 값 또는 동적 속성 저장소에서 속성의 표시 값을 검색합니다.
Display values 데이터베이스의 실제 값과 사용자 또는 시스템 설정 및 기본 설정에 따라 조작됩니다.
- 선택 필드: 데이터베이스 값은 숫자일 수 있지만 표시 값은 더 설명적입니다.
- 날짜 필드: 데이터베이스 값은 UTC 형식이고 표시 값은 사용자의 시간대를 기반으로 합니다.
- 암호화된 텍스트: 데이터베이스 값은 암호화되지만 표시된 값은 사용자의 암호화 컨텍스트에 따라 암호화되지 않습니다.
- 참조 필드: 데이터베이스 값은 sys_id이지만 표시 값은 참조된 기록의 표시 필드입니다.
동적 속성에 대한 자세한 내용은 을 참조하십시오 Dynamic Schema.
| 이름 | 유형 | 설명 |
|---|---|---|
| 이름 | 문자열 | 옵션입니다. 동적 속성에 대한 표시 값을 요청할 때만 필요합니다. 검색할 동적 스키마 내의 속성 경로입니다. 동적 경로의 형식: dyn_att_field->group_name->attribute_name
|
| 유형 | 설명 |
|---|---|
| 문자열 | 현재 기록 또는 지정된 요소에 대한 값을 표시합니다. |
이 예시에서는 지정된 인시던트 기록의 표시 값을 로그에 씁니다.
var now_GR = new GlideRecord('incident');
now_GR.get('sys_id','<sys_id>');
gs.info(now_GR.getDisplayValue());
출력:
INC0000050
이 예제에서는 동적 특성 저장소 요소 내에서 특성의 표시 값을 검색하는 방법을 보여 줍니다.
var gr_AppTab = new GlideRecord('application_table');
gr_AppTab.setValue('dyn_att_field->group->attr', 42);
gr_AppTab.setDisplayValue('dyn_att_field->group->attr2, true);
gr_AppTab.update();
gs.info('Attr value: ' +
gr_AppTab.getDisplayValue('dyn_att_field->group->attr);
gs.info('Attr2 value: ' +
gr_AppTab.getDisplayValue('dyn_att_field->group->attr2);
출력:
Attr value: System error
Attr2 value: true
범위가 지정된 등가
범위가 지정된 애플리케이션에서 getDisplayValue() 메서드를 사용하려면 해당 범위 지정 메서드인 getDisplayValue()를 사용합니다.
GlideRecord - getDynamicAttribute(문자열 fullPath)
지정된 동적 속성 저장소 경로에 대한 GlideElementDynamicAttribute 객체를 반환합니다.
동적 속성에 대한 자세한 내용은 을 참조하십시오 Dynamic Schema.
| 이름 | 유형 | 설명 |
|---|---|---|
| 풀패스(fullPath) | 문자열 | 원하는 동적 속성을 찾는 데 사용할 경로입니다. 동적 경로의 형식: dyn_att_field->group_name->attribute_name
|
| 유형 | 설명 |
|---|---|
| 객체 | 지정된 동적 속성을 포함하는 GlideElementDynamicAttribute 객체입니다. 매개 변수가 잘못되면 null을 fullPath 반환합니다. |
다음 코드 예제에서는 이 메서드를 호출하는 방법을 보여 줍니다.
var gr_Inc = new GlideRecord('incident');
gr_Inc.get('number', 'INC0009009');
gr_Inc.getDynamicAttribute('attr_store->car->color').setValue('Blue');
gr_Inc.update();
gr_Inc = new GlideRecord('incident');
gr_Inc.get('number', 'INC0009009');
gs.info(gr_Inc.getDynamicAttribute('attr_store', 'car->color'));
*** Script: BlueGlideRecord - getDynamicAttribute(문자열 dynamicAttributeField, 문자열 groupAttrPath)
지정된 테이블 필드 및 속성 경로에 있는 동적 속성을 포함하는 GlideElementDynamicAttribute 객체를 반환합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 동적 속성 필드 | 문자열 | 동적 속성을 포함하는 테이블의 필드 이름입니다. |
| groupAttrPath | 문자열 | 연결된 동적 스키마 속성을 찾는 데 사용할 속성 경로입니다. 형식: "group_name->attr_name"
예: |
| 유형 | 설명 |
|---|---|
| 객체 | 지정된 동적 속성을 포함하는 GlideElementDynamicAttribute 객체입니다. dynamicAttributeField 또는 groupAttrPath 매개 변수가 잘못되면 null을 반환합니다. |
다음 코드 예제에서는 이 메서드를 호출하는 방법을 보여 줍니다.
var gr_Inc = new GlideRecord('incident');
gr_Inc.get('number', 'INC0009009');
gr_Inc.getDynamicAttribute('attr_store->car->color').setValue('Blue');
gr_Inc.update();
gr_Inc = new GlideRecord('incident');
gr_Inc.get('number', 'INC0009009');
gs.info(gr_Inc.getDynamicAttribute('attr_store', 'car->color'));
*** Script: BlueGlideRecord - getDynamicAttributeValue(문자열 fullPath)
지정된 경로에 있는 동적 특성의 값을 반환합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 풀패스(fullPath) | 문자열 | 원하는 동적 속성을 찾는 데 사용할 경로입니다. 동적 경로의 형식: dyn_att_field->group_name->attribute_name
|
| 유형 | 설명 |
|---|---|
| 객체 | 지정된 경로에 있는 동적 특성의 값입니다. 매개 변수에 fullPath 잘못된 데이터가 포함되어 있거나 지정된 특성 값이 지원되는 데이터 형식 중 하나가 아닌 경우 null을 반환합니다. |
다음 코드 예제에서는 이 메서드를 호출하는 방법을 보여 줍니다.
// Update the value of the attribute 'attribute_store->car->time_of_purchase' incident `INC0009009` to a timestamp (in UTC)
var gr1 = new GlideRecord('incident');
gr1.get('number', 'INC0009009');
gr1.setDynamicAttributeValue('attribute_store->car->time_of_purchase', '2020-05-13 13:52:44');
gr1.update();
// Then retrieve the value of the attribute on the same record
var gr2 = new GlideRecord('incident');
gr2.get('number', 'INC0009009');
gs.info("Time of Purchase Value (UTC): " + gr2.getDynamicAttributeValue('attribute_store->car->time_of_purchase'));
gs.info("Time of Purchase DisplayValue (PST): " + gr2.getDynamicAttributeDisplayValue('attribute_store->car->time_of_purchase'));
출력:
*** Script: Time of Purchase Value (UTC): 2020-05-13 13:52:44
*** Script: Time of Purchase DisplayValue (PST): 2020-05-13 06:52:44
GlideRecord - getDynamicAttributeValue(문자열 dynamicAttributeField, 문자열 groupAttrPath)
현재 테이블과 지정된 속성 경로의 지정된 필드에 있는 동적 속성의 값을 반환합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 동적 속성 필드 | 문자열 | 동적 속성을 포함하는 테이블의 필드 이름입니다. |
| groupAttrPath | 문자열 | 연결된 동적 스키마 속성을 찾는 데 사용할 속성 경로입니다. 형식: "group_name->attr_name"
예: |
| 유형 | 설명 |
|---|---|
| 객체 | 지정된 경로에 있는 동적 특성의 값입니다. dynamicAttributeField 또는 groupAttrPath 매개 변수가 잘못되면 null을 반환합니다. |
다음 코드 예제에서는 이 메서드를 호출하는 방법을 보여 줍니다.
// Update the value of the attribute 'attribute_store->car->time_of_purchase' incident `INC0009009` to a timestamp (in UTC)
var gr1 = new GlideRecord('incident');
gr1.get('number', 'INC0009009');
gr1.setDynamicAttributeValue('attribute_store', 'car->time_of_purchase', '2020-05-13 13:52:44');
gr1.update();
// Then retrieve the value of the attribute on the same record
var gr2 = new GlideRecord('incident');
gr2.get('number', 'INC0009009');
gs.info("Time of Purchase Value (UTC): " + gr2.getDynamicAttributeValue('attribute_store', 'car->time_of_purchase'));
gs.info("Time of Purchase DisplayValue (PST): " + gr2.getDynamicAttributeDisplayValue('attribute_store', 'car->time_of_purchase'));
출력:
*** Script: Time of Purchase Value (UTC): 2020-05-13 13:52:44
*** Script: Time of Purchase DisplayValue (PST): 2020-05-13 06:52:44
GlideRecord - getDynamicAttributeDisplayValue(문자열 fullPath)
지정된 경로에 있는 동적 속성의 표시 값을 반환합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 풀패스(fullPath) | 문자열 | 원하는 동적 속성을 찾는 데 사용할 경로입니다. 동적 경로의 형식: dyn_att_field->group_name->attribute_name
|
| 유형 | 설명 |
|---|---|
| 문자열 | 지정된 경로에 있는 동적 속성의 표시 값입니다. 매개 변수가 잘못되면 null을 fullPath 반환합니다. |
다음 코드 예제에서는 이 메서드를 호출하는 방법을 보여 줍니다.
// Update the value of the attribute 'attribute_store->car->time_of_purchase' incident `INC0009009` to a timestamp (in UTC)
var gr1 = new GlideRecord('incident');
gr1.get('number', 'INC0009009');
gr1.setDynamicAttributeValue('attribute_store->car->time_of_purchase', '2020-05-13 13:52:44');
gr1.update();
// Then retrieve the value of the attribute on the same record
var gr2 = new GlideRecord('incident');
gr2.get('number', 'INC0009009');
gs.info("Time of Purcahse Value (UTC): " + gr2.getDynamicAttributeValue('attribute_store->car->time_of_purchase'));
gs.info("Time of Purcahse DisplayValue (PST): " + gr2.getDynamicAttributeDisplayValue('attribute_store->car->time_of_purchase'));
출력:
*** Script: Time of Purcahse Value (UTC): 2020-05-13 13:52:44
*** Script: Time of Purcahse DisplayValue (PST): 2020-05-13 06:52:44
GlideRecord - getDynamicAttributeDisplayValue(문자열 dynamicAttributeField, 문자열 groupAttrPath)
지정된 테이블 필드와 속성 경로에 있는 동적 속성의 표시 값을 반환합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 동적 속성 필드 | 문자열 | 동적 속성을 포함하는 테이블의 필드 이름입니다. |
| groupAttrPath | 문자열 | 연결된 동적 스키마 속성을 찾는 데 사용할 속성 경로입니다. 형식: "group_name->attr_name"
예: |
| 유형 | 설명 |
|---|---|
| 문자열 | 지정된 경로에 있는 동적 속성의 표시 값입니다. dynamicAttributeField 또는 groupAttrPath 매개 변수가 잘못되면 null을 반환합니다. |
다음 코드 예제에서는 이 메서드를 호출하는 방법을 보여 줍니다.
// Update the value of the attribute 'attribute_store->car->time_of_purchase' incident `INC0009009` to a timestamp (in UTC)
var gr1 = new GlideRecord('incident');
gr1.get('number', 'INC0009009');
gr1.setDynamicAttributeValue('attribute_store', 'car->time_of_purchase', '2020-05-13 13:52:44');
gr1.update();
// Then retrieve the value of the attribute on the same record
var gr2 = new GlideRecord('incident');
gr2.get('number', 'INC0009009');
gs.info("Time of Purchase Value (UTC): " + gr2.getDynamicAttributeValue('attribute_store', 'car->time_of_purchase'));
gs.info("Time of Purchase DisplayValue (PST): " + gr2.getDynamicAttributeDisplayValue('attribute_store', 'car->time_of_purchase'));
출력:
*** Script: Time of Purchase Value (UTC): 2020-05-13 13:52:44
*** Script: Time of Purchase DisplayValue (PST): 2020-05-13 06:52:44
GlideRecord - getED()
요소의 설명자를 반환합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 없음 |
| 유형 | 설명 |
|---|---|
| GlideElementDescriptor (영문) | 요소의 설명자입니다. |
이 예는 인시던트 GlideRecord의 이름 필드를 검색하는 방법을 보여줍니다.
grInc = new GlideRecord('incident');
grInc.getActiveQuery();
grInc.query();
if (grInc.next())
gs.info("Table Descriptor is - " + grInc.getED().getName());
출력:
Table Descriptor is - incident
범위가 지정된 등가
범위가 지정된 애플리케이션에서 getED() 메서드를 사용하려면 해당 범위 지정 메서드인 getED()를 사용합니다.
GlideRecord - getElement(문자열 필드 이름)
지정된 필드에 대한 GlideElement를 검색합니다.
이 메서드에서 반환되는 값은 완전한 GlideElement 객체입니다. 결과는 필드 값을 닷워킹하는 것과 같습니다. 예를 들어 , now_GR.getElement('short_description') 는 nowGR.short_description와 동일한 결과를 제공합니다.
대부분의 경우 기록에서 값을 얻기 위해 닷워킹을 사용하지 마십시오. 닷워킹은 필드 값 대신 전체 객체를 검색합니다. 객체를 검색하면 더 많은 저장 공간이 사용되며 배열 또는 에서 서비스 포털사용할 때 바람직하지 않은 결과가 발생할 수 있습니다.
전체 객체를 검색하는 대신 다음 방법 중 하나를 사용하여 필드 값을 복사할 수 있습니다.
var mgr = current.caller_id.manager.toString();참고 항목: GlideElement - toString().
| 이름 | 유형 | 설명 |
|---|---|---|
| fieldName | 문자열 | GlideElement 객체를 반환할 열 이름입니다. |
| 유형 | 설명 |
|---|---|
| GlideElement (영문) | 현재 기록의 지정된 열에 대한 GlideElement입니다. 각 객체는 현재 GlideRecord의 필드를 설명합니다. |
이 예제에서는 전달된 테이블에 대한 GlideElement 객체를 가져와서 예상되는 시스템 메타데이터 값과 비교하는 방법을 보여줍니다.
function compareElement(comment, table, element, /*{}*/ expected) {
var now_GR = new GlideRecord(table);
var el = now_GR.getElement(element);
for (var n in expected) {
assertEquals(comment + ":" + table + "." + element, expected[n], el.sys_meta[n]);
}
}
범위가 지정된 등가
범위가 지정된 애플리케이션에서 getElement() 메서드를 사용하려면 해당 범위 지정 메서드인 getElement()를 사용합니다.
GlideRecord - getEncodedQuery()
현재 결과 세트의 쿼리 조건을 인코딩된 쿼리 문자열로 조회합니다.
자세한 내용은 인코딩된 쿼리 문자열을 참조하십시오 .
| 이름 | 유형 | 설명 |
|---|---|---|
| 없음 |
| 유형 | 설명 |
|---|---|
| 문자열 |
이 예제에서는 나중에 읽기 ACL 역할을 생성하는 데 사용할 현재 인코딩된 쿼리를 가져오는 방법을 보여 줍니다.
function createAcl(table, role) {
gs.print("Checking security on table " + table);
var now_GR = new GlideRecord("sys_security_acl");
now_GR.addQuery("name", table);
now_GR.addQuery("operation", "read");
now_GR.query();
var encQuery = now_GR.getEncodedQuery();
if (now_GR.next()) {
// existing acl found so use it
createAclRole(now_GR.sys_id.toString(), role);
return;
} else {
now_GR.initialize();
now_GR.applyEncodedQuery(encQuery);
var acl = now_GR.insert();
gs.print(" Added read access control on " + table);
createAclRole(acl, role);
}
}
범위가 지정된 등가
범위가 지정된 애플리케이션에서 getEncodedQuery() 메서드를 사용하려면 해당 범위 지정 메서드인 getEncodedQuery()를 사용합니다.
GlideRecord - getEscapedDisplayValue()
현재 기록의 표시 필드에 대한 필드 값을 검색하고 Jelly 스크립트에 사용할 이스케이프 문자를 추가합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 없음 |
| 유형 | 설명 |
|---|---|
| 문자열 | 현재 테이블 표시 필드의 이스케이프된 값입니다. |
이 예에서는 사용자 [sys_user] 테이블에서 이스케이프된 user_name 표시 값을 가져오는 방법을 보여 줍니다.
var userName = "Michael J'ones";
var now_GR = new GlideRecord("sys_user");
if (now_GR.get("user_name", userName)) {
gs.print("Deleting existing user=" + userName);
now_GR.deleteRecord();
}
now_GR.initialize();
var name = userName.split(" ", 2);
var firstName = name[0];
var lastName = name[1];
now_GR.setValue("user_name", userName);
gs.print("Name: " + now_GR.getValue("user_name"));
now_GR.setValue("first_name", firstName);
now_GR.setValue("last_name", lastName);
var escapeValue = now_GR.getEscapedDisplayValue();
gs.print("Escaped name: " + escapeValue);
출력:
Name: Michael J'ones
Escaped name: Michael J\'ones
GlideRecord - getFields()
현재 기록의 Java ArrayList 필드를 검색합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 없음 |
| 유형 | 설명 |
|---|---|
| 자바 ArrayList | 현재 기록의 필드 |
// This can be run in "Scripts - Background" for demonstration purposes
// Get a single incident record
var grINC = new GlideRecord('incident');
grINC.query();
grINC.next();
gs.print('Using ' + grINC.getValue('number'));
gs.print('');
// getFields() returns a Java ArrayList
var fields = grINC.getFields();
// Enumerate GlideElements in the GlideRecord object that have values
gs.print('Enumerating over all fields with values:');
for (var i = 0; i < fields.size(); i++) {
var glideElement = fields.get(i);
if (glideElement.hasValue()) {
gs.print(' ' + glideElement.getName() + '\t' + glideElement);
}
}
gs.print('');
// Get a specific GlideElement: number
gs.print('Getting the number field:');
for (var i = 0; i < fields.size(); i++) {
var glideElement = fields.get(i);
if (glideElement.hasValue() && glideElement.getName() == 'number') {
gs.print(' ' + glideElement.getName() + '\t' + glideElement);
}
}
GlideRecord - getLabel()
필드의 레이블을 검색합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 없음 |
| 유형 | 설명 |
|---|---|
| 문자열 | 필드의 레이블 |
이 예제에서는 요청 항목 테이블에서 질문 필드의 레이블을 검색하고 레이블과 표시 이름을 인쇄하는 방법을 보여줍니다.
template.print("Summary of Requested items:\n");
var now_GR = new GlideRecord("sc_req_item");
now_GR.addQuery("request", current.sysapproval);
now_GR.query();
while(now_GR.next()) {
var nicePrice = now_GR.price.toString();
if (nicePrice != '') {
nicePrice = parseFloat(nicePrice);
nicePrice = nicePrice.toFixed(2);
}
template.print(now_GR.number + ": " + now_GR.quantity + " X " + now_GR.cat_item.getDisplayValue()
+ " at $" + nicePrice + " each \n");
template.print(" Options:\n");
for (key in now_GR.variables) {
var now_V = now_GR.variables[key];
if(now_V.getGlideObject().getQuestion().getLabel() != '') {
template.space(4);
template.print(' ' + now_V.getGlideObject().getQuestion().getLabel() + " = "
+ vnow_V.getDisplayValue() + "\n");
}
}
}
범위가 지정된 등가
범위가 지정된 애플리케이션에서 getLabel() 메서드를 사용하려면 해당 범위 지정 메서드인 getLabel()을 사용합니다.
GlideRecord - getLink(부울 noStack)
현재 기록에 대한 링크를 검색합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 노스택 | 부울 | 작성된 링크를 URL 끝에 추가할지 여부를 나타내는 플래그입니다. 예: &sysparm_stack=[tablename]_list.do? sysparm_query=active=true.유효한 값은 다음과 같습니다.
기본값: false |
| 유형 | 설명 |
|---|---|
| 문자열 | 현재 기록의 URL입니다. |
이 예제에서는 첨부 파일을 확인하고 링크가 있는 경우 추가합니다.
var attachment_link = '';
var rec = new GlideRecord('sc_req_item');
rec.addQuery('sys_id', current.request_item);
rec.query();
if(rec.next()){
if(rec.hasAttachments()){
attachment_link = gs.getProperty('glide.servlet.uri') + rec.getLink();
}
}
범위가 지정된 등가
범위가 지정된 애플리케이션에서 getLink() 메서드를 사용하려면 해당 범위 지정 메서드인 getLink()를 사용합니다.
GlideRecord - getLocation()
테이블 내에서 현재 기록의 행 번호를 조회합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 없음 |
| 유형 | 설명 |
|---|---|
| 번호 | 테이블 내 현재 기록의 0부터 시작하는 행 번호입니다. |
이 예시에서는 기록 개수를 기록 위치 번호와 비교하여 인시던트 테이블 내의 기록이 제대로 검색되지 않았는지 확인하는 방법을 보여줍니다.
var now_GR = new GlideRecord("incident");
now_GR.addQuery("priority", "4");
now_GR.query();
for (x=0; x <4; x++) {
now_GR.next();
gs.print("Location value: " + now_GR.getLocation());
}
출력:
Location value: 0
Location value: 1
Location value: 2
Location value: 3
GlideRecord - getPlural()
GlideRecord 테이블의 복수 레이블을 검색합니다.
예를 들어 테이블 이름이 "변경 요청"인 경우 이 메서드는 "변경 요청"을 반환합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 없음 |
| 유형 | 설명 |
|---|---|
| 문자열 | GlideRecord 테이블의 복수 레이블입니다. |
이 예시에서는 인시던트 테이블의 getLabel() 및 getPlural() 에 대한 반환 값을 확인하는 방법을 보여줍니다.
var now_GR = new GlideRecord('incident');
gs.print(now_GR.getLabel());
if (now_GR.getLabel() != 'Incident')
throw "GlideRecord.getLabel() returned unexpected value for table 'incident': " + now_GR.getLabel();
gs.print(now_GR.getPlural());
if (now_GR.getPlural() != 'Incidents')
throw "GlideRecord.getPlural() returned unexpected value for table 'incident': " + now_GR.getPlural();
"success";
범위가 지정된 등가
범위가 지정된 애플리케이션에서 getPlural() 메서드를 사용하려면 범위가 지정된 GlideRecord.getED() 메서드를 사용하여 필드의 설명자를 가져온 다음 범위가 지정된 GlideElementDescriptor.getPlural() 메서드를 사용합니다.
GlideRecord - getRecordClassName()
현재 기록의 클래스(테이블) 이름을 검색합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 없음 |
| 유형 | 설명 |
|---|---|
| 문자열 | 클래스 또는 테이블 이름 |
function TaskAssignmentFilter() {
var classname = current.getRecordClassName();
var filter = "type=null";
if (classname == "incident" && current.category == "database") {
filter = GetGroupFilter("database");
}
else {
// append exclusion for 'catalog' to the filter
var cat = new GlideRecord("sys_user_group_type");
cat.addQuery("name", "catalog");
cat.query();
if (cat.next()) {
filter += "^ORtype!=" + cat.sys_id;
}
}
gs.log("TaskAssignmentFilter: " + filter);
return filter;
}
범위가 지정된 등가
범위가 지정된 애플리케이션에서 getRecordClassName() 메서드를 사용하려면 해당 범위 지정 메서드인 getRecordClassName()을 사용합니다.
GlideRecord - getRelatedLists()
현재 GlideRecord와 연결된 관련 목록의 이름 및 표시 값 목록을 검색합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 없음 |
| 유형 | 설명 |
|---|---|
| 해시맵 | 관련 목록의 이름과 표시 값이 포함된 해시 맵입니다. |
이 예시에서는 현재 GlideRecord와 연결된 관련 목록의 이름 목록 및 표시 값을 가져와서 배열에 저장한 다음 해당 값을 출력하는 방법을 보여줍니다.
var now_GR = new GlideRecord('incident');
var c = now_GR.getRelatedLists().values().toArray();
var numElements = c.length;
for( var i = 0; i < numElements; ++i){
gs.print(i+": "+c[i]);
}
GlideRecord - getRelatedTables()
현재 기록에서 참조하는 테이블의 이름 및 표시 값의 목록을 검색합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 없음 |
| 유형 | 설명 |
|---|---|
| 해시맵 | 관련 테이블의 이름과 표시 값이 포함된 해시 맵입니다. |
이 예시에서는 현재 GlideRecord와 관련된 테이블의 이름 목록 및 표시 값을 가져와서 배열에 저장한 다음 해당 값을 출력하는 방법을 보여줍니다.
var now_GR = new GlideRecord('incident');
var c = now_GR.getRelatedTables().values().toArray();
var numElements = c.length;
for( var i = 0; i < numElements; ++i){
gs.print(i+": "+c[i]);
}
GlideRecord - getRowCount()
현재 GlideRecord 객체의 행(기록) 수를 검색합니다.
- GlideRecord 또는 GlideAggregate에서 번호 기록 검색
- GlideRecord getRowCount() 및 GlideAggregate getAggregate() API도 유사한 정보를 제공합니다. 다음 기준을 사용하여 가장 적합한 옵션을 결정합니다.
- GlideRecord getRowCount() 메서드는 기록 자체와 함께 쿼리에서 반환된 기록 수를 알려줍니다. 레코드에 대한 작업을 수행하기 위해 집합을 반복하기 전이나 후에 결과 집합의 레코드 수가 필요한 경우 이 방법을 사용합니다.
- GlideAggregate getAggregate() 메서드는 실제 기록을 제외하고 쿼리와 일치하는 기록 수만 검색합니다. 쿼리를 실행하기 전에 GlideAggregate 객체에서 집계를 설정해야 합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 없음 |
| 유형 | 설명 |
|---|---|
| 번호 | 현재 GlideRecord의 행 수입니다. |
다음 예시는 인시던트 [incident] 테이블에서 인시던트 수를 가져오는 방법을 보여줍니다.
var numberOfIncidents = new GlideRecord('incident');
numberOfIncidents.query();
gs.info("Records in incident table: " + numberOfIncidents.getRowCount());
출력:
Records in incident table: 6920
범위가 지정된 등가
범위가 지정된 애플리케이션에서 getRowCount() 메서드를 사용하려면 해당 범위 지정 메서드인 getRowCount()를 사용합니다.
GlideRecord - getRowNumber()
saveLocation() 또는 setLocation()으로 설정된 행 번호를 검색합니다.
현재 행 번호를 가져오려면 getLocation()을 사용합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 없음 |
| 유형 | 설명 |
|---|---|
| 번호 | 저장된 행 번호입니다. |
이 예에서는 사용자 테이블에 행 위치를 저장한 다음 해당 행 번호를 가져오는 방법을 보여 줍니다.
var now_GR = new GlideRecord('sys_user');
now_GR.addQuery();
now_GR.query();
now_GR.saveLocation(5);
var savedRow = now_GR.getRowNumber();
gs.print("Saved row: " + savedRow);
출력:
Saved row: 5
GlideRecord - getTableName()
이 GlideRecord와 연결된 테이블 이름을 검색합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 없음 |
| 유형 | 설명 |
|---|---|
| 문자열 | 테이블 이름 |
이 예제에서는 현재 테이블 이름을 시스템 로그에 쓰는 방법을 보여 줍니다.
gs.log('Table: ' + current.getTableName());
gs.log('Parent: ' + current.parent.sys_id);
var item = new GlideRecord('sc_req_item');
item.addQuery('sys_id', current.parent.sys_id);
item.query();
if(item.next()){
for(var variable in item.variable_pool) {
gs.log(variable);
var answer = eval ("item.variable_pool." + variable + ".getDisplayValue()");
gs.log(answer);
}
}
범위가 지정된 등가
범위가 지정된 애플리케이션에서 getTableName() 메서드를 사용하려면 해당 범위 지정 메서드인 getTableName()을 사용합니다.
GlideRecord - getUniqueValue()
달리 지정하지 않는 한 일반적으로 sys_id인 레코드의 기본 키를 가져옵니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 없음 |
| 유형 | 설명 |
|---|---|
| 문자열 | String으로서의 고유 기본 키 또는 키가 null인 경우 null입니다. |
var now_GR = new GlideRecord('kb_knowledge');
now_GR.query();
now_GR.next();
var uniqueid = now_GR.getUniqueValue();
gs.info(uniqueid);
GlideRecord - getValue(문자열 필드 이름)
동적 속성 저장소에서 지정된 필드의 문자열 값 또는 특성의 문자열 값을 검색합니다.
동적 속성에 대한 자세한 내용은 을 참조하십시오 Dynamic Schema.
| 이름 | 유형 | 설명 |
|---|---|---|
| fieldName | 문자열 | 검색할 값이 있는 필드의 이름 또는 검색할 동적 속성 저장소 내의 속성 경로입니다. 동적 경로의 형식: dyn_att_field->group_name->attribute_name
|
| 유형 | 설명 |
|---|---|
| 문자열 | 지정된 요소의 값입니다. 필드가 비어 있거나 필드가 없는 경우 null을 반환합니다. 주: 부울 값은 false 및 true 대신 "0" 및 "1" 문자열 값으로 반환됩니다. |
이 예시에서는 getValue() 메서드를 사용하여 비교되는 두 GlideRecord의 필드 값을 가져옵니다.
function() {
var jobExists = true;
var jobGr;
while(jobExists){
jobGr = new GlideRecord("sys_trigger");
jobExists = jobGr.get("name", "BaselineAPI: Create Baseline Job");
}
var baselineGr = new GlideRecord('pm_project_baseline');
baselineGr.get('baseline_name','Test Project Baseline');
baselineGr.query();
Assert.assertEquals(true, baselineGr.next());
var projectGr = new GlideRecord('pm_project');
projectGr.get(this._project);
Assert.assertEquals(projectGr.getValue('cost'), baselineGr.getValue('cost'));
Assert.assertEquals((projectGr.getValue('capex_cost')), baselineGr.getValue('capex_cost'));
Assert.assertEquals((projectGr.getValue('opex_cost')), baselineGr.getValue('opex_cost'));
Assert.assertEquals((projectGr.getValue('budget_cost')), baselineGr.getValue('budget_cost'));
Assert.assertEquals((projectGr.getValue('value')), baselineGr.getValue('value'));
Assert.assertEquals((projectGr.getValue('npv_value')), baselineGr.getValue('npv_value')); Assert.assertEquals((projectGr.getValue('score')), baselineGr.getValue('score'));
}
이 예제에서는 동적 특성의 값을 검색하는 방법을 보여 줍니다.
// Update the value of the attribute 'attribute_store->car->color' to 'Red' on incident `INC0009009`
var gr1 = new GlideRecord('incident');
gr1.get('number', 'INC0009009');
gr1.setDynamicAttributeValue('attribute_store->car->color', 'Red');
gr1.update();
// Then retrieve the value of the attribute on the same record
var gr2 = new GlideRecord('incident');
gr2.get('number', 'INC0009009');
gs.info(gr2.getValue('attribute_store->car->color'));
출력:
*** Script: Red
범위가 지정된 등가
범위가 지정된 애플리케이션에서 getValue() 메서드를 사용하려면 해당 범위 지정 메서드인 getValue()를 사용합니다.
GlideRecord - hasAttachments()
현재 GlideRecord에 첨부 파일이 있는지 확인합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 없음 |
| 유형 | 설명 |
|---|---|
| 부울 | 현재 기록에 첨부 파일이 있으면 True, 그렇지 않으면 False입니다. |
이 예제에서는 첨부 파일을 확인하고 있는 경우 링크를 만듭니다.
var attachment_link = '';
var rec = new GlideRecord('sc_req_item');
rec.addQuery('sys_id', current.request_item);
rec.query();
if(rec.next()){
if(rec.hasAttachments()){
attachment_link = gs.getProperty('glide.servlet.uri') + rec.getLink();
}
}
GlideRecord - hasNext()
GlideRecord에 기록이 더 있는지 확인합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 없음 |
| 유형 | 설명 |
|---|---|
| 부울 | 쿼리 세트에 더 많은 기록이 있으면 True, 그렇지 않으면 False입니다. |
이 예시에서는 현재 GlideRecord에 추가 기록이 있는지 여부에 따라 다른 함수를 호출하는 방법을 보여줍니다.
if (now_GR.hasNext()) {
dothis(); // found it, do it
} else {
dothat(); // didn't find it
};
범위가 지정된 등가
범위가 지정된 애플리케이션에서 hasNext() 메서드를 사용하려면 해당 범위 지정 메서드인 hasNext()를 사용합니다.
GlideRecord - initialize()
삽입 전에 채우기에 적합한 현재 GlideRecord 내에 빈 기록을 작성합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 없음 |
| 유형 | 설명 |
|---|---|
| void |
이 예에서는 to_do 테이블에서 새 레코드를 초기화하고 레코드를 만든 다음 테이블에 삽입합니다.
var now_GR = new GlideRecord('to_do');
now_GR.initialize();
now_GR.name = 'first to do item';
now_GR.description = 'learn about GlideRecord';
now_GR.insert();
범위가 지정된 등가
범위가 지정된 응용 프로그램에서 initialize() 메서드를 사용하려면 해당 범위가 지정된 메서드인 initialize()를 사용합니다.
GlideRecord - 삽입()
현재 기록에 대해 설정된 필드 값으로 새 기록을 삽입합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 없음 |
| 유형 | 설명 |
|---|---|
| 문자열 | 삽입된 기록의 sys_id이거나 기록이 삽입되지 않은 경우 null입니다. |
이 예에서는 to_do 테이블에 새 기록을 만들고 일부 기록 필드의 값을 설정한 다음 기록을 테이블에 삽입합니다.
var now_GR = new GlideRecord('to_do');
now_GR.initialize();
now_GR.name = 'first to do item';
now_GR.description = 'learn about GlideRecord';
now_GR.insert();
범위가 지정된 등가
범위가 지정된 애플리케이션에서 insert() 메서드를 사용하려면 해당 범위 지정 메서드인 insert()를 사용합니다.
GlideRecord - insertWithReferences()
새 기록을 삽입하고 제공된 정보로 관련 기록도 삽입하거나 업데이트합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 없음 |
| 유형 | 설명 |
|---|---|
| 문자열 | 삽입된 기록의 sys_id이거나 기록이 삽입되지 않은 경우 null입니다. |
참조 값을 지정하지 않으면(아래와 같이) 제공된 first_name 및 last_name 사용하여 새 사용자 기록이 생성되고 caller_id 값이 새로 생성된 sys_user 기록으로 설정됩니다. 그 결과 제공된 first_name 및 last_name 포함된 새 sys_user 기록과 제공된 short_description 및 caller_id 포함된 새 인시던트 기록이 생성됩니다.
var inc = new GlideRecord('incident');
inc.initialize();
inc.short_description = 'New incident 1';
inc.caller_id.first_name = 'John';
inc.caller_id.last_name = 'Doe';
inc.insertWithReferences();
caller_id 값을 지정하면 해당 caller_id가 제공된 first_name과 last_name 사용하여 업데이트됩니다. 그 결과 short_description 및 caller_id에 대해 설정된 값으로 새로 생성된 인시던트 기록이 생성됩니다.
var inc = new GlideRecord('incident');
inc.initialize();
inc.short_description = 'New incident 1';
inc.caller_id.setDisplayValue('David Loo');
inc.caller_id.first_name = 'John';
inc.caller_id.last_name = 'Doe';
inc.insertWithReferences();
GlideRecord - instanceOf(문자열 클래스 이름)
테이블에서 테이블의 유형\클래스를 확인합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 클래스 이름 | 문자열 | 기록의 유형 또는 클래스의 이름입니다. |
| 유형 | 설명 |
|---|---|
| 부울 | 테이블이 지정된 클래스의 인스턴스이면 True입니다. |
이 예제에서는 전달된 그룹/사용자가 sys_user 테이블/클래스 유형인지 확인합니다.
function(groupOrUser, label, grantedBy) {
var labelCheck;
var labelRecord;
if (typeof label === "string") {
labelRecord = new GlideRecord('label');
labelRecord.addQuery('name', label);
labelRecord.query();
labelRecord.next();
} else {
labelRecord = label;
}
if (groupOrUser.instanceOf('sys_user')) {
labelCheck = new GlideRecord('label_user_m2m');
labelCheck.addQuery('user', groupOrUser.sys_id);
} else {
labelCheck = new GlideRecord('label_group_m2m');
labelCheck.addQuery('group', groupOrUser.sys_id);
}
labelCheck.addQuery('label', labelRecord.sys_id);
if (grantedBy !== "undefined") {
labelCheck.addQuery('granted_by', grantedBy.sys_id);
}
labelCheck.query();
return labelCheck.hasNext();
}
GlideRecord - isNewRecord()
현재 기록이 데이터베이스에 삽입되었는지 여부를 확인합니다.
이 메서드는 newRecord() 메서드가 호출된 경우에만 true를 반환합니다. 이 메서드는 스크립팅된 ACL과 UI 작업 조건에 유용하지만 백그라운드 스크립트에서 사용해서는 안 됩니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 없음 |
| 유형 | 설명 |
|---|---|
| 부울 | 현재 기록이 새 기록인지 여부를 나타내는 플래그입니다(데이터베이스에 삽입되지 않음). 가능한 값:
|
이 예에서는 새 기록이 sys_user 테이블에 삽입되었는지 확인합니다.
var now_GR = new GlideRecord("sys_user");
now_GR.newRecord();
now_GR.setValue("user_name", "John Smith");
gs.print("Is this a new record: " + now_GR.isNewRecord());
var now_GR2 = new GlideRecord("sys_user");
now_GR2.addQuery("user_name", "Abel Tutor");
now_GR2.query();
now_GR2.next();
gs.print("Is this a new record: " + now_GR2.isNewRecord());
GlideRecord - isValid()
현재 GlideRecord 테이블이 있는지 확인합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 없음 |
| 유형 | 설명 |
|---|---|
| 부울 | 테이블이 존재하면(유효) True이고, 그렇지 않으면 False입니다. |
이 예에서는 인시던트 테이블이 존재하는지 확인합니다.
var testTable = new GlideRecord('incident');
gs.print(testTable.isValid());
범위가 지정된 등가
범위가 지정된 응용 프로그램에서 isValid() 메서드를 사용하려면 해당 범위 지정 메서드인 isValid()를 사용합니다.
GlideRecord - isValidField(문자열, columnName)
지정된 필드가 현재 GlideRecord 테이블에 정의되어 있는지 여부를 결정합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| columnName | 문자열 | 확인할 열의 이름입니다. |
| 유형 | 설명 |
|---|---|
| 부울 | 필드가 테이블에 정의되어 있으면 True, 그렇지 않으면 False입니다. |
이 예에서는 sys_class_name 필드가 cmds_software_instance 테이블에 있는지 확인합니다.
var gobj = new GlideRecord('sys_db_object');
gobj.addQuery('name','cmdb_software_instance');
gobj.query();
if (!gobj.next()) {
var si = new GlideRecord('cmdb_software_instance');
si.query();
var count = 0;
while (si.next()) {
if (!si.isValidField('sys_class_name')) {
var ci = new GlideRecord('cmdb_ci');
ci.name = si.name;
ci.setNewGuidValue(si.sys_id);
ci.sys_class_name = 'cmdb_software_instance';
ci.insert();
count++;
}
}
}
범위가 지정된 등가
범위가 지정된 응용 프로그램에서 isValidField() 메서드를 사용하려면 해당 범위 지정 메서드인 isValidField()를 사용합니다.
GlideRecord - isValidRecord()
현재 기록이 유효한지 여부를 결정합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 없음 |
| 유형 | 설명 |
|---|---|
| 부울 | 현재 기록이 유효한지 여부를 나타내는 플래그입니다. 유효한 값은 다음과 같습니다.
|
이 예에서는 전달된 sys_id에 의한 기록 식별자가 아이디어 테이블의 유효한 기록인지 확인합니다.
function(sysId) {
this.log('Inside acceptIdea sysId = ' + sysId);
var now_GR = new GlideRecord('idea');
now_GR.get(sysId);
this.log('now_GR.isValidRecord() = ' + now_GR.isValidRecord());
if(now_GR.isValidRecord()) {
now_GR.setValue('state', 2);
this.log('Updating gliderecord');
this.log('gliderecord table name' + now_GR.getTableName());
now_GR.update();
}
}
범위가 지정된 등가
범위가 지정된 응용 프로그램에서 isValidRecord() 메서드를 사용하려면 해당 범위 지정 메서드인 isValidRecord()를 사용합니다.
GlideRecord - newRecord()
GlideRecord를 만들고, 필드의 기본값을 설정하고, 기록에 고유 ID를 할당합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 없음 |
| 유형 | 설명 |
|---|---|
| void |
이 예에서는 새 기록이 sys_user 테이블에 삽입되었는지 확인합니다.
var now_GR = new GlideRecord("sys_user");
now_GR.newRecord();
now_GR.setValue("user_name", "John Smith");
gs.print("Is this a new record: " + now_GR.isNewRecord());
var now_GR2 = new GlideRecord("sys_user");
now_GR2.addQuery("user_name", "Abel Tutor");
now_GR2.query();
now_GR2.next();
gs.print("Is this a new record: " + now_GR2.isNewRecord());
범위가 지정된 등가
범위가 지정된 응용 프로그램에서 newRecord() 메서드를 사용하려면 해당 범위 지정 메서드인 newRecord()를 사용합니다.
GlideRecord - next()
GlideRecord의 다음 기록으로 이동합니다.
이 메서드를 사용하여 GlideRecord 쿼리에서 반환된 기록을 반복합니다.
if(myObj.next()) 구문은 반환된 첫 번째 레코드만 처리합니다.| 이름 | 유형 | 설명 |
|---|---|---|
| 없음 |
| 유형 | 설명 |
|---|---|
| 부울 | GlideRecord에 "다음" 기록이 있는지 여부를 나타내는 플래그입니다. 유효한 값은 다음과 같습니다.
|
이 예시에서는 next() 메서드를 사용하여 인시던트 테이블을 반복하는 방법을 보여줍니다.
var rec = new GlideRecord('incident');
rec.query();
while (rec.next()) {
gs.print(rec.number + ' exists');
}
범위가 지정된 등가
범위가 지정된 애플리케이션에서 next() 메서드를 사용하려면 해당 범위 지정 메서드인 next()를 사용합니다.
GlideRecord - _next()
GlideRecord의 다음 기록으로 이동합니다. next()와 동일한 기능을 제공합니다. GlideRecord에 next라는 열이 있는 경우에 사용됩니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 없음 |
| 유형 | 설명 |
|---|---|
| 부울 | 쿼리 세트에 더 많은 기록이 있는 경우 True입니다. |
var rec = new GlideRecord('sys_template');
rec.query();
while (rec._next()) {
gs.print(rec.number + ' exists');
}
범위가 지정된 등가
범위가 지정된 응용 프로그램에서 _next() 메서드를 사용하려면 해당 범위 메서드 _next()을 사용합니다.
GlideRecord - operation()
작업이 삽입, 업데이트 또는 삭제인지 여부를 결정합니다.
작업을 알면 current.operation() 을 사용하여 각 작업을 고유하게 처리할 수 있는 일반 비즈니스 규칙을 만들 수 있습니다.
전역 변수 current 사용에 대한 자세한 내용은 비즈니스 규칙의 전역 변수를 참조하십시오.
| 이름 | 유형 | 설명 |
|---|---|---|
| 없음 |
| 유형 | 설명 |
|---|---|
| 문자열 | 현재 작업입니다. 가능한 값:
|
다음 예시에서는 비즈니스 규칙에서 이 메서드를 사용하는 방법을 보여줍니다. operation() 메서드는 이벤트를 트리거한 작업을 감지하고 업데이트 및 삽입 작업에 따라 다른 작업을 수행합니다.
if(current.operation() == "update") {
current.updates ++; }
if(current.operation() == "insert") {
current.updates = 0; }
이 예제에서는 operation() 메서드를 사용하여 작업 값을 startFlow() 메서드에 전달하는 방법을 보여 줍니다.
function createNewTransferOrder() {
var toGr = new GlideRecord("alm_transfer_order");
toGr.initialize();
// From Stockroom - Southern California Warehouse
toGr.setValue('from_stockroom', fromStockroomSysId);
// To Stockroom - San Diego North - Pickup/Dropoff
toGr.setValue('to_stockroom', toStockroomSysId);
var transferOrder = toGr.insert();
if(toGr.get(transferOrder)){
// Start Transfer Order Workflow
var wf = new Workflow();
var context = wf.startFlow(toWorkflowSysId, toGr, toGr.operation(),{});
createNewTransferOrderLine(transferOrder);
}
}
범위가 지정된 등가
범위가 지정된 애플리케이션에서 operation() 메서드를 사용하려면 해당 범위 지정 메서드인 operation()을 사용합니다.
GlideRecord - orderBy(문자열 필드 이름)
쿼리 세트를 정렬하는 데 사용할 필드 이름 또는 동적 특성 저장소 내의 특성 경로를 지정합니다. 여러 필드를 기준으로 정렬하려면 서로 다른 필드 값으로 이 메서드를 여러 번 호출합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| fieldName | 문자열 | 쿼리 세트를 정렬할 동적 속성 저장소 내의 속성 경로 또는 테이블 필드 이름입니다. 동적 경로의 형식: dyn_att_field->group_name->attribute_name
동적 속성에 대한 자세한 내용은 을 참조하십시오 Dynamic Schema. |
| 유형 | 설명 |
|---|---|
| void |
이 예제에서는 "order"를 기준으로 쿼리를 정렬한 다음 "number"를 기준으로 정렬하는 방법을 보여 줍니다.
function UpdateProjectWBS(project) {
var count = 0;
var child = new GlideRecord('pm_project_task');
child.addQuery('parent', project.sys_id);
child.orderBy('order');
child.orderBy('number');
child.query();
var len = child.getRowCount().toString().length;
var seq = 0;
while (child.next()) {
count += UpdateProjectTaskWBS(child, 1, ++seq, len, '');
}
gs.addInfoMessage(count + ' Project Tasks updated');
}
이 예제에서는 동적 특성 저장소 내의 특성별로 쿼리 집합을 정렬하는 방법을 보여 줍니다.
var gr_Inc = new GlideRecord('incident');
gr_Inc.orderBy('attribute_store->caller_id->first_name');
gr_Inc.query();
while(gr_Inc.next()) {
gs.info("first_name: " + gr_Inc.getValue('attribute_store->caller_id->first_name'));
}
*** Script: first_name: Alejandro
*** Script: first_name: Bertie
*** Script: first_name: Beth
*** Script: first_name: Bow
*** Script: first_name: Bud
*** Script: first_name: Carol
*** Script: first_name: Charlie
*** Script: first_name: Christen
*** Script: first_name: David범위가 지정된 등가
범위가 지정된 응용 프로그램에서 orderBy() 메서드를 사용하려면 해당 범위 지정 메서드인 orderBy()를 사용합니다.
GlideRecord - orderByDesc(문자열, 필드 이름)
동적 속성 저장소의 필드 또는 속성을 지정하여 쿼리 세트를 내림차순으로 정렬하는 데 사용할 수 있습니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| fieldName | 문자열 | 쿼리 세트를 내림차순으로 정렬할 동적 속성 저장소 내의 속성 경로 또는 테이블 필드 이름입니다. 동적 경로의 형식: dyn_att_field->group_name->attribute_name
동적 속성에 대한 자세한 내용은 을 참조하십시오 Dynamic Schema. |
| 유형 | 설명 |
|---|---|
| void |
이 예제에서는 쿼리 집합을 오름차순 또는 내림차순으로 정렬하는 방법을 보여 줍니다.
function(fiscalType, orderByDesc) {
var now_GR = new GlideRecord('fiscal_period');
now_GR.addQuery('fiscal_type', fiscalType);
if (orderByDesc) {
now_GR.orderByDesc('fiscal_start_date_time');
} else {
now_GR.orderBy('fiscal_start_date_time');
}
now_GR.setLimit(1);
now_GR.query();
now_GR.next();
return now_GR.sys_id;
}
이 예제에서는 동적 특성 저장소 내의 특성별로 쿼리 집합을 정렬하는 방법을 보여 줍니다.
var gr_Inc = new GlideRecord('incident');
gr_Inc.orderByDesc('attribute_store->caller_id->first_name');
gr_Inc.query();
while(gr_Inc.next()) {
gs.info("first_name: " + gr_Inc.getValue('attribute_store->caller_id->first_name'));
}
*** Script: first_name: David
*** Script: first_name: Christen
*** Script: first_name: Charlie
*** Script: first_name: Carol
*** Script: first_name: Bud
*** Script: first_name: Bow
*** Script: first_name: Beth
*** Script: first_name: Bertie
*** Script: first_name: Alejandro범위가 지정된 등가
범위가 지정된 애플리케이션에서 orderByDesc() 메서드를 사용하려면 해당 범위 지정 메서드인 orderByDesc()를 사용합니다.
GlideRecord - 쿼리(문자열 필드, 문자열 값)
addQuery() 및 addEncodedQuery()와 같은 쿼리 메서드로 지정된 필터를 기반으로 테이블에 대해 쿼리를 실행합니다.
이 메서드는 GlideRecord 테이블과 테이블의 참조를 쿼리합니다. 자세한 정보는 스크립트에서 테이블 쿼리의 내용을 참조하십시오.
쿼리 작성 및 실행에 대한 자세한 내용은 GlideRecord 문서를 참조하십시오.
| 이름 | 유형 | 설명 |
|---|---|---|
| 이름 | 문자열 | 선택 사항 - 값 매개변수도 지정해야 합니다. 값 매개변수에 지정된 값을 검색할 필드의 이름입니다. 주: 이 메서드는 일반적으로 인수 없이 실행되지만, 지정된 값을 포함하는 레코드를 필터링하기 위해 이름-값 쌍을 지정할 수 있습니다. 매개변수가 지정되면 "name=value" 조건이 쿼리에 추가됩니다. |
| 값 | 문자열 | 선택 사항 - 필드 매개변수도 지정해야 합니다. 지정된 필드 매개변수에서 검색할 값입니다. |
| 유형 | 설명 |
|---|---|
| void |
다음 예에서는 시스템 딕셔너리 [sys_dictionary]에서 쿼리 필드가 있는 테이블을 검색하는 방법을 보여 줍니다.
var tableArr = [];
var now_GR = new GlideRecord('sys_dictionary');
now_GR.addQuery('element', 'query');
now_GR.setLimit(6);
now_GR.query();
while(now_GR.next()){
tableArr.push(now_GR.name.getValue());
};
gs.info('The following tables have a field column called "query":');
for (i = 0; i < tableArr.length; i++) {
gs.info(tableArr[i]);
};
출력:
The following tables have a field column called "query":
cmdb_convert_bulk_services
cmdb_multisource_query_status
cmdb_qb_result_base
cmdb_qb_table_mapping
discovery_probes_cim_query
kb_feedback
범위가 지정된 등가
범위가 지정된 애플리케이션에서 query() 메서드를 사용하려면 해당 범위 지정 메서드인 query()를 사용합니다.
GlideRecord - _query(문자열 필드, 문자열 값)
addQuery() 및 addEncodedQuery()와 같은 쿼리 메서드로 지정된 필터를 기반으로 테이블에 대해 쿼리를 실행합니다. 이 메서드는 query() 메서드를 실행하는 동안 오류가 발생할 수 있는 "query"라는 열이 있는 테이블에서 사용하기 위한 것입니다.
이 메서드는 GlideRecord 테이블과 테이블의 참조를 쿼리합니다. 자세한 정보는 스크립트에서 테이블 쿼리의 내용을 참조하십시오.
쿼리 작성 및 실행에 대한 자세한 내용은 GlideRecord 문서를 참조하십시오.
| 이름 | 유형 | 설명 |
|---|---|---|
| 이름 | 문자열 | 선택 사항 - 값 매개변수도 지정해야 합니다. 값 매개변수에 지정된 값을 검색할 필드의 이름입니다. 주: 이 메서드는 일반적으로 인수 없이 실행되지만, 지정된 값을 포함하는 레코드를 필터링하기 위해 이름-값 쌍을 지정할 수 있습니다. 매개변수가 지정되면 "name=value" 조건이 쿼리에 추가됩니다. |
| 값 | 문자열 | 선택 사항 - 필드 매개변수도 지정해야 합니다. 지정된 필드 매개변수에서 검색할 값입니다. |
| 유형 | 설명 |
|---|---|
| void |
다음 예제에서는 지식 피드백 [kb_feedback] 테이블을 쿼리하고 Excel이 포함된 주석이 있는 KB 문서를 나열하는 방법을 보여 줍니다.
var rec = new GlideRecord('kb_feedback');
rec.addQuery('comments', 'CONTAINS', 'Excel');
rec._query();
while (rec.next()) {
gs.info(rec.getDisplayValue('article') + " comment: " + rec.getValue('comments'));
}
출력:
KB0000005 comment:
Can you please add the version of Excel this applies to? All?
KB0000005 comment:
Does this work for all Excel versions? OSX and Windows alike?
범위가 지정된 등가
범위가 지정된 애플리케이션에서 _query() 메서드를 사용하려면 해당 범위 지정 메서드 _query()을 사용합니다.
GlideRecord - queryNoDomain(문자열 필드, 문자열 값)
도메인 분리 인스턴스에서 사용됩니다. query()와 마찬가지로 addQuery() 및 addEncodedQuery()로 지정된 필터를 기반으로 테이블에 대해 쿼리를 실행하지만 도메인은 무시합니다.
이 메서드는 GlideRecord 테이블과 테이블의 참조를 쿼리합니다. 자세한 정보는 스크립트에서 테이블 쿼리의 내용을 참조하십시오.
| 이름 | 유형 | 설명 |
|---|---|---|
| 이름 | 문자열 | 선택 사항 - 값 매개변수도 지정해야 합니다. 값 매개변수에 지정된 값을 검색할 필드의 이름입니다. 주: 이 메서드는 일반적으로 인수 없이 실행되지만, 지정된 값을 포함하는 레코드를 필터링하기 위해 이름-값 쌍을 지정할 수 있습니다. 매개변수가 지정되면 "name=value" 조건이 쿼리에 추가됩니다. |
| 값 | 문자열 | 선택 사항 - 필드 매개변수도 지정해야 합니다. 지정된 필드 매개변수에서 검색할 값입니다. |
| 유형 | 설명 |
|---|---|
| void |
이 예시에서는 모든 도메인의 인시던트 테이블을 쿼리하는 방법을 보여줍니다.
var rec = new GlideRecord('incident');
rec.queryNoDomain();
while (rec.next()) {
gs.print(rec.number + ' exists');
}
GlideRecord - restoreLocation()
현재 레코드를 saveLocation()과 함께 저장된 레코드로 설정합니다. saveLocation()이 호출되지 않은 경우 현재 기록은 GlideRecord의 첫 번째 기록으로 설정됩니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 없음 |
| 유형 | 설명 |
|---|---|
| void |
이 예제에서는 현재 기록 위치를 저장하고 다음 기록으로 이동한 다음 저장된 위치로 다시 돌아가는 방법을 보여줍니다.
function() {
var now_GR = new GlideRecord("incident");
now_GR.query();
now_GR.next();
var firstID = now_GR.getValue("sys_id");
now_GR.next();
var restoreID = now_GR.getValue("sys_id");
now_GR.saveLocation();
now_GR.next();
var lastID = now_GR.getValue("sys_id");
now_GR.restoreLocation();
now_GR.next();
var thisID = now_GR.getValue("sys_id");
var progress = "first id=" + firstID
+ "\n\t last id=" + lastID
+ "\n\t saved id=" + restoreID
+ "\n\t restored id=" + thisID;
gs.print("Progress:\n\t" + progress);
}
GlideRecord - saveLocation()
restoreLocation() 메서드를 사용하여 이 위치로 돌아갈 수 있도록 현재 행 번호를 저장합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 없음 |
| 유형 | 설명 |
|---|---|
| void |
이 예제에서는 현재 기록 위치를 저장하고 다음 기록으로 이동한 다음 저장된 위치로 다시 돌아가는 방법을 보여줍니다.
function() {
var now_GR = new GlideRecord("incident");
now_GR.query();
now_GR.next();
var firstID = now_GR.getValue("sys_id");
now_GR.next();
var restoreID = now_GR.getValue("sys_id");
now_GR.saveLocation();
now_GR.next();
var lastID = now_GR.getValue("sys_id");
now_GR.restoreLocation();
now_GR.next();
var thisID = now_GR.getValue("sys_id");
var progress = "first id=" + firstID
+ "\n\t last id=" + lastID
+ "\n\t saved id=" + restoreID
+ "\n\t restored id=" + thisID;
gs.print("Progress:\n\t" + progress);
}
GlideRecord - setAbortAction(부울 b)
다음 데이터베이스 작업(삽입, 업데이트, 삭제)을 중단할 것인지 여부를 나타내는 플래그를 설정합니다.
onBefore 비즈니스 규칙에서 사용하여 데이터베이스 작업이 수행되지 않도록 합니다. 비즈니스 규칙은 setAbortAction()이 호출된 후에도 계속 실행됩니다. setAbortAction()을 호출해도 후속 비즈니스 규칙의 실행은 중지되지 않습니다. 이 메서드를 호출하면 데이터베이스 작업이 발생하지 않습니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| b | 부울 | 다음 작업을 중단하려면 예이고, 다음 작업을 허용하려면 아니오입니다. |
| 유형 | 설명 |
|---|---|
| void |
if ((!current.u_date1.nil()) && (!current.u_date2.nil())) {
var start = current.u_date1.getGlideObject().getNumericValue();
var end = current.u_date2.getGlideObject().getNumericValue();
if (start > end) {
gs.addInfoMessage('start must be before end');
current.u_date1.setError('start must be before end');
current.setAbortAction(true);
}
}
범위가 지정된 등가
범위가 지정된 애플리케이션에서 setAbortAction() 메서드를 사용하려면 해당 범위 지정 메서드인 setAbortAction()을 사용합니다.
GlideRecord - setDisplayValue(문자열 이름, 객체 값)
지정된 필드 또는 동적 속성 저장소의 특성을 지정된 표시 값으로 설정합니다.
참조 필드의 경우 테이블의 표시 값입니다. 날짜/시간의 경우 호출자의 현재 시간대에 있는 시간입니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 이름 | 문자열 | 값을 설정할 필드의 이름 또는 동적 속성 저장소 내의 속성 경로입니다. 동적 경로의 형식: dyn_att_field->group_name->attribute_name
|
| 값 | 객체 | 지정된 속성에서 설정할 값입니다. 주: 동적 속성의 경우 다음 데이터 유형만 지원됩니다.
|
| 유형 | 설명 |
|---|---|
| void |
다음 코드 예제에서는 레코드에서 표시 값을 설정한 다음 레코드를 업데이트하는 방법을 보여 줍니다.
var now_GR = new GlideRecord('incident');
now_GR.get('46f09e75a9fe198100f4ffd8d366d17b');
now_GR.setDisplayValue('opened_at','2011-02-13 4:30:00');
now_GR.update();
다음 코드 예제에서는 동적 특성 저장소에서 표시 값을 설정하는 방법을 보여 줍니다.
var gr_AppTab = new GlideRecord('application_table');
gr_AppTab.setValue('dyn_att_field->group->attr', 42);
gr_AppTab.setDisplayValue('dyn_att_field->group->attr2, true);
gr_AppTab.update();
gs.info('Attr value: ' +
gr_AppTab.getDisplayValue('dyn_att_field->group->attr);
gs.info('Attr2 value: ' +
gr_AppTab.getDisplayValue('dyn_att_field->group->attr2);
GlideRecord - setDynamicAttributeValue(문자열, fullPath, 객체 값)
지정된 경로에 있는 동적 특성의 값을 설정합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 풀패스(fullPath) | 문자열 | 원하는 동적 속성을 찾는 데 사용할 경로입니다. 동적 경로의 형식: dyn_att_field->group_name->attribute_name
|
| 값 | 객체 | 지정된 동적 속성을 설정할 값입니다. 전달된 값은 다음 데이터 유형 중 하나여야 합니다.
|
| 유형 | 설명 |
|---|---|
| 부울 | 동적 속성이 성공적으로 업데이트되었는지 여부를 나타내는 플래그입니다. 가능한 값:
|
다음 코드 예제에서는 이 메서드를 호출하는 방법을 보여 줍니다.
var gr_Inc = new GlideRecord('incident');
gr_Inc.setValue('inc_dynamic_groups', '78db044fc4b44210f8770961513dd7fe'); //Sysid of cars dimensions group
gr_Inc.setDynamicAttributeValue("inc_dynamic_schema->cars->color","black");
gr_Inc.setDynamicAttributeValue("inc_dynamic_schema->cars->make","Honda");
gr_Inc.setDynamicAttributeValue("inc_dynamic_schema->cars->model","CRV");
gr_Inc.setDynamicAttributeValue("inc_dynamic_schema->cars->luxury",false);
gr_Inc.setDynamicAttributeValue("inc_dynamic_schema->cars->cost",20000);
gr_Inc.setDynamicAttributeValue("inc_dynamic_schema->cars->avg_mpg",28.4);
gr_Inc.setDynamicAttributeValue("inc_dynamic_schema->cars->date_purchased", new GlideDateTime());
gr_Inc.setValue("inc_dynamic_schema->cars->total_miles", 10000.12345);
gr_Inc.insert();
GlideRecord - setDynamicAttributeValue(문자열 dynamicAttributeField, 문자열 groupAttrPath, 객체 값)
현재 GlideRecord의 지정된 필드와 지정된 속성 경로에 있는 동적 속성의 값을 설정합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 동적 속성 필드 | 문자열 | 동적 속성을 포함하는 테이블의 필드 이름입니다. |
| attributePath | 문자열 | 연결된 동적 스키마 속성을 찾는 데 사용할 속성 경로입니다. 형식: "group_name->attr_name"
예: |
| 값 | 객체 | 지정된 동적 속성을 설정할 값입니다. 전달된 값은 다음 데이터 유형 중 하나여야 합니다.
|
| 유형 | 설명 |
|---|---|
| 부울 | 동적 속성이 성공적으로 업데이트되었는지 여부를 나타내는 플래그입니다. 가능한 값:
|
다음 코드 예제에서는 이 메서드를 호출하는 방법을 보여 줍니다.
// Update the value of the attribute 'attribute_store->car->time_of_purchase' incident `INC0009009` to a timestamp (in UTC)
var gr1 = new GlideRecord('incident');
gr1.get('number', 'INC0009009');
gr1.setDynamicAttributeValue('attribute_store', 'car->time_of_purchase', '2020-05-13 13:52:44');
gr1.update();
// Then retrieve the value of the attribute on the same record
var gr2 = new GlideRecord('incident');
gr2.get('number', 'INC0009009');
gs.info("Time of Purchase Value (UTC): " + gr2.getDynamicAttributeValue('attribute_store', 'car->time_of_purchase'));
gs.info("Time of Purchase DisplayValue (PST): " + gr2.getDynamicAttributeDisplayValue('attribute_store', 'car->time_of_purchase'));
출력:
*** Script: Time of Purchase Value (UTC): 2020-05-13 13:52:44
*** Script: Time of Purchase DisplayValue (PST): 2020-05-13 06:52:44
GlideRecord - setDynamicAttributeDisplayValue(문자열, fullPath, 객체 값)
지정된 경로에 있는 동적 속성의 표시 값을 설정합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 풀패스(fullPath) | 문자열 | 표시 값을 업데이트하려는 동적 속성을 찾는 데 사용할 경로입니다. 동적 경로의 형식: dyn_att_field->group_name->attribute_name
|
| 값 | 객체 | 지정된 동적 속성을 설정할 표시 값입니다. 전달된 값은 다음 데이터 유형 중 하나여야 합니다.
|
| 유형 | 설명 |
|---|---|
| 부울 | 동적 속성의 표시 값이 성공적으로 업데이트되었는지 여부를 나타내는 플래그입니다. 가능한 값:
|
다음 코드 예제에서는 이 메서드를 호출하는 방법을 보여 줍니다.
var grProdTab = new GlideRecord('products_table');
grProdTab.query();
grProdTab.next();
var val = grProdTab.setDynamicAttributeDisplayValue('product_details->cars->date_purchased', '2023-03-31 08:54:26');
GlideRecord - setDynamicAttributeDisplayValue(문자열 dynamicAttributeField, 문자열 groupAttrPath, 객체 값)
현재 GlideRecord의 지정된 필드와 지정된 속성 경로에 있는 동적 속성의 표시 값을 설정합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 동적 속성 필드 | 문자열 | 동적 속성을 포함하는 테이블의 필드 이름입니다. |
| groupAttrPath | 문자열 | 연결된 동적 스키마 속성을 찾는 데 사용할 속성 경로입니다. 형식: "group_name->attr_name"
예: |
| 값 | 객체 | 지정된 동적 속성을 설정할 표시 값입니다. 전달된 값은 다음 데이터 유형 중 하나여야 합니다.
|
| 유형 | 설명 |
|---|---|
| 부울 | 동적 속성의 표시 값이 성공적으로 업데이트되었는지 여부를 나타내는 플래그입니다. 가능한 값:
|
다음 코드 예제에서는 이 메서드를 호출하는 방법을 보여 줍니다.
var grProdTab = new GlideRecord('products_table');
grProdTab.query();
grProdTab.next();
var val = grProdTab.setDynamicAttributeDisplayValue('product_details', 'cars->date_purchased', '2023-03-31 08:54:26');
GlideRecord - setDynamicAttributeValues(String dynamicAttributeField, GlideDynamicAttributeStore 값)
전달된 GlideDynamicAttributeStore 객체에 지정된 값을 사용하여 하나 이상의 동적 속성 값을 설정합니다.
이 메서드는 인수로 전달된 특성과 값만 업데이트합니다. 지정되지 않은 GlideRecord의 속성 및 값은 이 호출의 영향을 받지 않습니다. 잘못된 그룹, 속성 또는 값은 무시됩니다. 로그 메시지에서 가능한 오류 정보를 확인하십시오.
| 이름 | 유형 | 설명 |
|---|---|---|
| 동적 속성 필드 | 문자열 | 동적 스키마를 포함하는 현재 테이블의 필드 이름입니다. |
| 값 | GlideDynamicAttributeStore | 업데이트할 동적 속성이 포함된 GlideDynamicAttributeStore 객체입니다. 개체에 채워진 값은 다음 데이터 형식이어야 합니다.
|
| 유형 | 설명 |
|---|---|
| 없음 |
다음 코드 예제에서는 이 메서드를 호출하는 방법을 보여 줍니다.
var das = new GlideDynamicAttributeStore();
das.setDynamicAttributeValue('group->attribute1', 'Apple');
das.setDynamicAttributeValue('group->attribute2', 1234);
var gr_Inc = new GlideRecord('incident');
gr_Inc.query();
gr_Inc.next();
gr_Inc.setDynamicAttributeValues(das);
GlideRecord - setForceUpdate(부울 힘)
필드가 변경되지 않은 경우에도 기록을 업데이트합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 포스 | 부울 | 필드가 변경되지 않았어도 업데이트하려면 예이고, 그렇지 않으면 아니오입니다. |
| 유형 | 설명 |
|---|---|
| void |
이 예는 itfm_cost_model 테이블의 기록을 변경하지 않아도 강제로 업데이트하는 방법을 보여줍니다.
function() {
gs.log("Update Script: Upgrade_cost_model_data.js started");
var now_GR = new GlideRecord("itfm_cost_model");
now_GR.initialize();
now_GR.addNullQuery("source_table");
now_GR.query();
while (now_GR.next()) {
now_GR.setForceUpdate(true);
var sourceTable = getSourceTable(now_GR.getValue('clone_from'));
if(sourceTable){
now_GR.setValue("source_table", sourceTable);
now_GR.setWorkflow(false);
now_GR.update();
}
}
}
GlideRecord - setLimit(숫자 제한)
쿼리에서 GlideRecord에 반환할 최대 기록 수를 설정합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 제한 | 번호 | 가져올 기록의 제한입니다. |
| 유형 | 설명 |
|---|---|
| void |
이 예에서는 쿼리에 반환되는 레코드 수를 최대 10개로 설정합니다.
var now_GR = new GlideRecord('incident');
now_GR.orderByDesc('sys_created_on');
now_GR.setLimit(10);
now_GR.query();
범위가 지정된 등가
범위가 지정된 애플리케이션에서 setLimit() 메서드를 사용하려면 해당 범위 지정 메서드인 setLimit()를 사용합니다.
GlideRecord - setLocation(번호, rowNumber)
현재 행 위치를 지정된 값으로 설정합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 행 번호 | 번호 | 현재 행으로 설정할 행 번호입니다. |
| 유형 | 설명 |
|---|---|
| void |
이 예는 인시던트 테이블에서 기록 위치를 설정하는 방법을 보여줍니다.
verifySetLocation : function() {
var now_GR = new GlideRecord("incident");
now_GR.query();
var recordIDs = new Array();
while(now_GR.next()) {
recordIDs.push(now_GR.getValue("sys_id"));
}
for (var ix = recordIDs.length - 1; ix >= 0; ix--) {
now_GR.setLocation(ix);
Assert.assertEquals(recordIDs[ix], now_GR.getValue("sys_id"),
"The entry retrieved for the index " + ix + " is not valid");
}
}
GlideRecord - setNewGuid()
새 GUID를 생성하고 현재 레코드의 고유 ID(sys_id)로 설정합니다.
이 함수는 새 기록에만 적용됩니다. 기존 레코드의 GUID는 변경할 수 없습니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 없음 |
| 유형 | 설명 |
|---|---|
| 문자열 | 현재 기록의 Sys_id입니다. |
이 예제에서는 새 작업 기록을 만들고 task_rel_task 테이블에 ID를 저장합니다.
var task = new GlideRecord ('task');
var tsk_id = task.setNewGuid();
task.description = "Request: " + current.request.number;
task.description = task.description + "\n" + "Requested by: " + current.request.u_requested_by.name;
task.description = task.description + "\n" + "Requested for: " + current.request.u_requested_for.name;
task.description = task.description + "\n" + "Item: " + current.cat_item.name;
var now_GR = new GlideRecord ('task_rel_task');
//link the incident to the request
now_GR.parent = current.request;
now_GR.child = tsk_id;
now_GR.insert();
GlideRecord - setNewGuidValue(문자열 guid)
새 GUID를 생성하고 새 레코드를 삽입할 때 현재 레코드의 고유 ID로 설정합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| guid | 문자열 | 새 GUID의 값입니다. |
| 유형 | 설명 |
|---|---|
| void |
이 예제에서는 새 GUID를 생성하고 새로 만든 cmdb_software_instance 레코드의 고유 ID로 설정합니다.
var gobj = new GlideRecord('sys_db_object');
gobj.addQuery('name','cmdb_software_instance');
gobj.query();
if (!gobj.next()) {
var si = new GlideRecord('cmdb_software_instance');
si.query();
var count = 0;
while (si.next()) {
if (!si.isValidField('sys_class_name')) {
var ci = new GlideRecord('cmdb_ci');
ci.name = si.name;
ci.setNewGuidValue(si.sys_id);
ci.sys_class_name = 'cmdb_software_instance';
ci.insert();
count++;
}
}
범위가 지정된 등가
범위가 지정된 애플리케이션에서 setNewGuidValue() 메서드를 사용하려면 해당 범위 지정 메서드인 setNewGuidValue()를 사용합니다.
GlideRecord - setQueryReferences(부울 queryReferences)
참조 필드를 쿼리할 때 참조 필드의 표시 이름을 사용하거나 사용하지 않도록 설정합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| query참조 | 부울 | 생성할 데이터의 시간을 나타내는 플래그입니다. 유효한 값은 다음과 같습니다.
|
| 유형 | 설명 |
|---|---|
| void |
var grByName = new GlideRecord(this.TEST_TABLE);
grByName.addQuery("caller_id", userDisplayName);
grByName.setQueryReferences(true);
grByName.query();
if (grByName.hasNext()) {
while(grByName.next()) {
gs.print("Incident caller_id=" + grByName.caller_id);
}
} else {
gs.print("NO RESULTS");
}
GlideRecord - setUseEngines(부울 e)
엔진(승인 규칙/담당 규칙)의 실행을 사용하거나 사용하지 않도록 설정합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| e | 부울 | 엔진 실행을 활성화하거나 비활성화할지 여부를 나타내는 플래그입니다. 유효한 값은 다음과 같습니다.
|
| 유형 | 설명 |
|---|---|
| void |
이 예에서는 쿼리를 실행하기 전에 엔진과 비즈니스 규칙을 비활성화하는 방법을 보여줍니다.
function auditOAuthInboundRequestsUsage(){
var now_GR = new GlideRecord("oauth_credential");
var oauthClient = now_GR.addJoinQuery("oauth_entity", "peer", "sys_id");
now_GR.addQuery("type", "access_token");
now_GR.addQuery("expires", ">", nowDateTime());
now_GR.addNullQuery("oauth_requestor_profile");
oauthClient.addCondition("active", "true");
oauthClient.addCondition("type", "client");
now_GR.setUseEngines(false);
now_GR.setWorkflow(false);
now_GR.query();
return now_GR.hasNext();
}
GlideRecord - setValue(문자열 이름, 객체 값)
지정된 필드 또는 동적 특성 저장소의 특성을 지정된 값으로 설정합니다.
일반적으로 스크립트는 직접 할당을 수행합니다(예: now_GR.category = value). 그러나 스크립트에서 요소 이름이 변수인 경우 now_GR.setValue(elementName, value)를 사용할 수 있습니다. 값을 설정할 때 필드의 데이터 유형이 입력한 값의 데이터 유형과 일치하는지 확인합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 이름 | 문자열 | 값을 설정할 필드의 이름 또는 동적 속성 저장소 내의 속성 경로입니다. 동적 경로의 형식: dyn_att_field->group_name->attribute_name
동적 속성에 대한 자세한 내용은 을 참조하십시오 Dynamic Schema. |
| 값 | 객체 | 지정된 필드에 설정할 값입니다. 주: 동적 속성의 경우 다음 데이터 유형만 지원됩니다.
|
| 유형 | 설명 |
|---|---|
| void |
이 예에서는 planned_task 테이블에서 상태 필드의 값을 설정하는 방법을 보여줍니다.
function() {
var topTask = new GlideRecord('planned_task');
topTask.setValue('state', -5);
var childTask = new GlideRecord('planned_task');
childTask.setValue('state', -5);
var s = new PlannedTaskStateManagement(childTask, topTask);
var state = s.manageStateChange(false);
Assert.assertEquals("-5", state);
}
이 예제에서는 동적 속성의 값을 설정하는 방법을 보여 줍니다.
var gr_Inc = new GlideRecord('incident');
gr_Inc.setValue('inc_dynamic_groups', '78db044fc4b44210f8770961513dd7fe'); //Sysid of cars dimensions group
gr_Inc.setValue("inc_dynamic_schema->cars->color", "black");
gr_Inc.setValue("inc_dynamic_schema->cars->make", "Honda");
gr_Inc.setValue("inc_dynamic_schema->cars->model", "CRV");
gr_Inc.setValue("inc_dynamic_schema->cars->luxury", false);
gr_Inc.setValue("inc_dynamic_schema->cars->cost", 25000);
gr_Inc.setValue("inc_dynamic_schema->cars->avg_mpg", 28.4);
gr_Inc.setValue("inc_dynamic_schema->cars->date_purchased", new GlideDateTime());
gr_Inc.setValue("inc_dynamic_schema->cars->total_miles", 10000.12345);
gr_Inc.insert();
범위가 지정된 등가
범위가 지정된 응용 프로그램에서 setValue() 메서드를 사용하려면 해당 범위 지정 메서드인 setValue()를 사용합니다.
GlideRecord - setWorkflow(부울 e)
일반적으로 후속 작업에 의해 트리거될 수 있는 비즈니스 규칙의 실행을 활성화하거나 비활성화합니다. e 매개 변수를 false로 설정하면 삽입/업데이트가 감사되지 않습니다. 감사는 GlideRecord 작업에 대해 매개변수가 true로 설정된 경우에만 발생합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| e | 부울 | 비즈니스 규칙 실행을 활성화하거나 비활성화할지 여부를 나타내는 플래그입니다. 유효한 값은 다음과 같습니다.
|
| 유형 | 설명 |
|---|---|
| void |
doit('name1','name2');
function doit(username1,username2) {
var usr1 = new GlideRecord('sys_user');
var usr2 = new GlideRecord('sys_user');
var num = 0;
if (usr1.get('user_name',username1) && usr2.get('user_name',username2)) {
var ref;
var dict = new GlideRecord('sys_dictionary');
dict.addQuery('reference','sys_user');
dict.addQuery('internal_type','reference');
dict.query();
while (dict.next()) {
num = 0;
ref = new GlideRecord(dict.name.toString());
ref.addQuery(dict.element,usr1.sys_id);
ref.query();
while (ref.next()) {
ref.setValue(dict.element.toString(),usr2.sys_id);
ref.setWorkflow(false);
ref.update();
num++;
}
if (num > 0) {
gs.print(dict.element + ' changed from ' + usr1.user_name +
' to ' + usr2.user_name + ' in ' + num + ' ' + dict.name + ' records');
}
}
}
}
범위가 지정된 등가
범위가 지정된 응용 프로그램에서 setWorkflow() 메서드를 사용하려면 해당 범위 지정 메서드인 setWorkflow()를 사용합니다.
GlideRecord - 업데이트(객체 이유)
변경된 내용으로 GlideRecord를 업데이트합니다. 기록이 없으면 삽입됩니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 이유 | 객체 | 옵션입니다. 업데이트의 이유입니다. 이유는 감사 기록에 표시됩니다. |
| 유형 | 설명 |
|---|---|
| 문자열 | 새 기록 또는 업데이트 기록의 sys_id입니다. 업데이트가 실패하면 null을 반환합니다. |
이 예에서는 task_ci 테이블의 기록을 업데이트합니다.
var now_GR = new GlideRecord('task_ci');
now_GR.addQuery();
now_GR.query();
var count = now_GR.getRowCount();
if (count > 0) {
var allocation = parseInt(10000 / count) / 100;
while (now_GR.next()) {
now_GR.u_allocation = allocation;
now_GR.update();
}
}
범위가 지정된 등가
범위가 지정된 응용 프로그램에서 update() 메서드를 사용하려면 해당 범위 지정 메서드 update()를 사용합니다.
GlideRecord - updateMultiple()
지정된 변경 세트로 명시된 쿼리의 각 GlideRecord를 업데이트합니다.
저널 항목 추가에 대한 자세한 내용은 setJournalEntry() 메서드를 참조하십시오.
glide.db.forced.chunk.threshold 시스템 속성은 청크 기록 삭제 및 업데이트를 강제하는 임계치를 설정합니다. 청크는 대용량 테이블에서 기본이 아닌 키 삭제로 인해 복제 문제가 발생하는 것을 방지하는 데 도움이 됩니다. 자세한 내용은 Available system properties 문서를 참조하십시오.
gr_Now.setValue('<field_name>', '4'));대신 gr_Now.<field_name> = 4.이 메서드는 새 값을 설정하고 기존 값을 지우지 않습니다. 기존 값을 지우려면 setValue() 메서드를 사용하고 필드를 null로 설정합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 없음 |
| 유형 | 설명 |
|---|---|
| 없음 |
이 예에서는 모든 활성 인시던트의 상태를 4 - "사용자 정보 대기 중"으로 업데이트하는 방법을 보여줍니다.
var now_GR = new GlideRecord('incident');
now_GR.addQuery('active', true);
now_GR.setValue('state', 4);
now_GR.updateMultiple();
범위가 지정된 등가
범위가 지정된 애플리케이션에서 updateMultiple() 메서드를 사용하려면 해당 범위 지정 메서드인 updateMultiple()을 사용합니다.
GlideRecord - updateWithReferences(객체 이유)
기록을 업데이트하고 제공된 정보로 관련 기록을 삽입하거나 업데이트합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 이유 | 객체 | 업데이트 이유입니다. 이유는 감사 기록에 표시됩니다. |
| 유형 | 설명 |
|---|---|
| 문자열 | 업데이트할 기록의 sys_id입니다. |
호출자 ID가 참조 sys_user 기록 'John Doe'로 설정된 인시던트를 처리하는 경우 다음 코드는 John Doe의 사용자 기록을 업데이트합니다. 지정된 호출자 ID가 없는 인시던트를 처리하는 경우 다음 코드는 제공된 정보(first_name, last_name)로 새 sys_user 레코드를 만들고 호출자 ID 값을 새로 만든 sys_user 레코드로 설정합니다.
var inc = new GlideRecord('incident');
inc.get(inc_sys_id); // Looking up an existing incident record where 'inc_sys_id' represents the sys_id of a incident record
inc.caller_id.first_name = 'John';
inc.caller_id.last_name = 'Doe';
inc.updateWithReferences();
}