GlideRecord - 클라이언트
GlideRecord API는 데이터베이스 작업을 수행하는 메서드를 제공합니다. 이 API를 사용하면 클라이언트 스크립트 및 UI 정책 스크립트와 같은 클라이언트 측 스크립트에서 일부 GlideRecord 기능을 사용할 수 있습니다.
GlideRecord에는 기록과 필드가 모두 포함됩니다. 클라이언트 측 GlideRecord 메서드로 작성된 쿼리는 서버에서 실행됩니다. 따라서 기록 데이터를 가져오기 위해 클라이언트 브라우저에서 요청이 이루어집니다.
클라이언트 측 GlideRecord API는 범위가 지정된 애플리케이션에서 지원되지 않습니다. 대신 스크립트 포함을 생성하고 GlideAJAX API를 사용하거나 REST API를 사용하십시오. 또한 이 API는 스크립트를 실행하는 사용자의 자격 증명을 기반으로 ACL(접근 제어 목록)을 적용합니다. ACL 없이 서버에서 코드를 실행하려면 GlideAjax API를 사용합니다.
클라이언트 측 GlideRecord - GlideRecord(문자열, tableName)
지정된 테이블에 대한 GlideRecord 클래스의 인스턴스를 작성합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| tableName | 문자열 | 사용할 테이블입니다. |
var now_GR = new GlideRecord('incident');
클라이언트 측 GlideRecord - addOrderBy(문자열 열)
쿼리에서 order by에 열을 추가합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 열 | 문자열 | 결과 집합의 순서를 지정할 열입니다. |
| 유형 | 설명 |
|---|---|
| void |
클라이언트 측 GlideRecord - addQuery(문자열 이름, 객체 값)
지정된 필드 이름이 지정된 값과 같거나 값 목록에 있는 기록을 반환하는 쿼리를 추가합니다.
SQL에 익숙한 경우 이 방법은 "where" 절과 유사합니다. 이 메서드를 여러 번 호출하여 단일 필터에 대해 하나 이상의 쿼리를 만들 수 있습니다. 이 메서드의 경우 쿼리는 AND입니다. 원하는 쿼리를 모두 정의한 후에는 를 클라이언트 측 GlideRecord - 쿼리(문자열 이름, 함수 responseFunction, 문자열 값) 호출하여 지정된 쿼리 절(필터)을 실행합니다.
AND 이외의 작업을 수행하려면 addQuery(String name, Object operator, Object value) 메서드 또는 setEncodedQuery() 메서드를 사용합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 이름 | 문자열 | 확인할 필드의 이름입니다. |
| 값 | 객체 | 쿼리할 값의 값 또는 목록입니다. |
| 유형 | 설명 |
|---|---|
| void |
여러 쿼리를 보여주는 예입니다.
var now_GR = new GlideRecord('incident');
now_GR.addQuery('priority', 4); // Priority is 4 – Low and,
now_GR.addQuery('state', 3); // State is On Hold
now_GR.query(response);
function response(result) {
while(result.next()) {
// Print all INC with priority 4 – Low AND state is On Hold
console.log(result.getValue('number'));
}
}
문자열 객체를 전달하는 방법을 보여주는 예제입니다.
var now_GR = new GlideRecord('incident');
now_GR.addQuery('short_description', new String('USB device not working')); // string object
now_GR.addQuery('priority', 4); //number
now_GR.query(response);
function response(result) {
while(result.next()) {
// Print all INC with priority 4 – Low AND short description contains 'USB device not working'
console.log(result.getValue('number'));
}
}
클라이언트 측 GlideRecord - addQuery(문자열 이름, 객체 연산자, 객체 값)
필드가 지정된 조건(필드, 연산자, 값)을 충족하는 기록을 반환하는 필터를 추가합니다.
SQL에 익숙한 경우 이 방법은 "where" 절과 유사합니다. 이 메서드를 여러 번 호출하여 단일 필터에 대해 하나 이상의 쿼리를 만들 수 있습니다. 원하는 쿼리를 모두 정의한 후에는 를 클라이언트 측 GlideRecord - 쿼리(문자열 이름, 함수 responseFunction, 문자열 값) 호출하여 지정된 쿼리 절(필터)을 실행합니다.
더 복잡한 쿼리를 만들려면 setEncodedQuery() 메서드를 사용합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 이름 | 문자열 | 확인할 필드의 이름입니다. |
| 운영자 | 객체 | 쿼리 연산자입니다. 사용할 수 있는 값은 값 매개변수의 데이터 유형에 따라 다릅니다. 숫자:
문자열(대문자여야 함):
주: LIKE 연산자를 사용하지 마십시오. 대신 CONTAINS를 사용합니다. |
| 값 | 객체 | 쿼리할 값(대/소문자 구분 없음)입니다. |
| 유형 | 설명 |
|---|---|
| void |
필터에 여러 쿼리를 추가하는 방법을 보여주는 예입니다.
var now_GR = new GlideRecord('incident');
now_GR.addQuery('priority', '<=', 2); // Priority is 2 or higher and,
now_GR.addQuery('short_description', 'CONTAINS', 'crash'); // Short description contains the word crash
now_GR.query(response);
function response(result) {
while(result.next()) {
// Print all INC with priority of 2 or higher AND short description contains "crash"
console.log(result.getValue('number'));
}
}
단일 쿼리에서 여러 조건을 확인하기 위해 배열을 전달하는 방법을 보여주는 예입니다.
var priorities = [4,2];
var now_GR = new GlideRecord('incident');
now_GR.addQuery('priority', 'IN', priorities);
now_GR.query(response);
function response(result) {
while(result.next()) {
console.log(result.getValue('number'));
}
}
클라이언트 측 GlideRecord - deleteRecord(함수 responseFunction)
현재 기록을 삭제하고 완료 시 지정된 응답 함수를 호출합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 응답 함수 | 함수 | 콜백에 대한 응답 함수입니다. |
| 유형 | 설명 |
|---|---|
| 없음 |
이 예제에서는 레코드를 삭제한 다음 응답 함수 response 를 호출하여 경보 메시지를 기록합니다.
var recordGR = new GlideRecord('incident');
if (recordGR.get('99ebb4156fa831005be8883e6b3ee4b9')) {
recordGR.deleteRecord(response);
}
function response(result) {
alert('Deleted record sys_id: ' + result.getValue('sys_id'));
}
출력:
Deleted record sys_id: 99ebb4156fa831005be8883e6b3ee4b9
클라이언트 측 GlideRecord - get(문자열 sys_id)
지정된 sys_id의 기록에 대한 GlideRecord 쿼리를 실행합니다. 이 메서드는 단일 레코드를 쿼리하는 데 사용되므로 반환하기 전에 다음 작업이 수행됩니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| sys_id | 문자열 | 찾을 기록의 sys_id. |
| 유형 | 설명 |
|---|---|
| 부울 | 일치하는 기록이 하나 이상 있는 경우 True입니다. 기록을 찾을 수 없는 경우 False입니다. |
클라이언트 측 GlideRecord - getEncodedQuery()
현재 결과 세트의 쿼리 조건을 인코딩된 쿼리 문자열로 조회합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 없음 |
| 유형 | 설명 |
|---|---|
| 문자열 | 쿼리에 추가된 모든 조건을 포함하는 인코딩된 쿼리 문자열입니다. |
클라이언트 측 GlideRecord - getLimit()
GlideRecord 쿼리가 반환할 기록의 제한을 반환합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 없음 |
| 유형 | 설명 |
|---|---|
| 번호 | GlideRecord 쿼리가 반환할 기록의 제한입니다. |
클라이언트 측 GlideRecord - getTableName()
이 GlideRecord와 연결된 테이블의 이름을 조회합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 없음 |
| 유형 | 설명 |
|---|---|
| 문자열 | 테이블 이름 |
var item = new GlideRecord('sc_request');
item.addQuery('sys_id', current.request);
item.query(itemResponse);
function itemResponse(item) {
alert('The table is ' + item.getTableName());
}
클라이언트 측 GlideRecord - hasNext()
GlideRecord에 기록이 더 있는지 확인합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 없음 |
| 유형 | 설명 |
|---|---|
| 부울 | 쿼리 세트에 더 많은 기록이 있는 경우 예입니다. |
클라이언트 측 GlideRecord - 삽입(함수 responseFunction)
현재 기록에 대해 설정된 필드 값을 사용하여 새 기록을 삽입합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 응답 함수 | 함수 | 기록이 삽입되면 실행할 함수입니다. |
| 유형 | 설명 |
|---|---|
| 문자열 | 삽입된 기록의 Sys_id이거나 기록이 삽입되지 않은 경우 null입니다. |
var now_GR = new GlideRecord('incident');
now_GR.short_description = 'Learn about GlideRecord';
var recResponse = now_GR.insert(handleResponse);
function handleResponse(recResponse, answer) {
// Answer will be the sys_id of the created record or null
alert('Newly created sys_id is - ' + answer + ' exists');
}
클라이언트 측 GlideRecord - 다음()
GlideRecord의 다음 기록으로 이동합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 없음 |
| 유형 | 설명 |
|---|---|
| 부울 | 쿼리 세트에 더 이상 기록이 없으면 False입니다. |
var rec = new GlideRecord('incident');
rec.query(recResponse);
function recResponse(rec) {
while (rec.next()) {
alert(rec.number + ' exists');
}
}
클라이언트 측 GlideRecord - orderBy(문자열 열)
orderBy 열을 지정합니다. 여러 열로 정렬하기 위해 두 번 이상 호출할 수 있습니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 열 | 문자열 | 결과 집합의 순서를 지정하는 데 사용할 열 이름입니다. |
| 유형 | 설명 |
|---|---|
| void |
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(childResponse);
g_form.addInfoMessage(count + ' Project Tasks updated');
}
function childResponse(child) {
var len = child.getRowCount().toString().length;
var seq = 0;
while (child.next()) {
count += UpdateProjectTaskWBS(child, 1, ++seq, len, '');
}
}
클라이언트 측 GlideRecord - 쿼리(문자열 이름, 함수 responseFunction, 문자열 값)
addQuery() 필터를 기반으로 테이블에 대해 서버에 대한 쿼리를 실행합니다. 이 메서드는 GlideRecord 테이블뿐 아니라 테이블 참조를 쿼리합니다.
동기 쿼리 호출을 수행하지 마십시오. 응답 함수 없이 쿼리를 수행하면 호출이 동기화되며, 이는 디스플레이가 계속하기 전에 쿼리 응답을 기다린다는 것을 의미합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 이름 | 문자열 | 옵션입니다. 쿼리할 필드의 이름입니다. |
| 응답 함수 | 함수 | 쿼리 결과를 사용할 수 있을 때 호출되는 함수입니다. |
| 값 | 문자열 | 옵션입니다. 쿼리할 필드 값입니다. 모든 리터럴 쌍은 쿼리 쌍(field : value)으로 간주됩니다. |
| 유형 | 설명 |
|---|---|
| void |
다음은 응답 함수가 있는 기본 예제입니다.
var rec = new GlideRecord('incident');
rec.query(recResponse);
function recResponse(rec) {
while (rec.next()) {
alert(rec.number + ' exists');
}
}
다음 예제에서는 비동기 예제와 함께 synchronus와 asynchronous 구문의 차이점을 보여 줍니다.
// synchronous call syntax (no response function): DO NOT USE
query();
// asynchronous call syntax
// performs query with current conditions, calls responseFunction when done
query(responseFunction)
// synchronous call syntax (no response function): DO NOT USE
// adds "category=hardware" to current query conditions and performs query
query('category', 'hardware')
// asynchronous call syntax
// adds "category=hardware" to current query conditions, performs query, and calls responseFunction when done
query('category', 'hardware', responseFunction)
// asynchronous call example
// adds "user_name=abel.tuter" to current query conditions, performs query, and calls defined response function when done
function onLoad() {
var now_GR = new GlideRecord("sys_user");
now_GR.query("user_name", "abel.tuter", function(now_GR) {
if (now_GR.next()) {
alert("You can access fields by name from the client API, just like in the server API:\n now_GR.name = " + now_GR.name);
alert("You can also access fields using getValue():\n now_GR.getValue(\"email\") = " + now_GR.getValue("email"));
if (now_GR.getDisplayValue) {
alert("In Service Portal, Mobile, and Agent Workspace, you can access a field's display value:\n now_GR.getDisplayValue(\"company\") = " + now_GR.getDisplayValue("company"));
} else {
alert("On the desktop, you cannot access a field's display value, but can get its sys_id:\n now_GR.company = " + now_GR.company);
}
alert("You cannot dot-walk in the client API:\n now_GR.company.name = " + now_GR.company.name);
}
});
}
클라이언트 측 GlideRecord - setEncodedQuery(String encodedQuery)
지정된 인코딩된 쿼리 문자열을 현재 쿼리 절에 추가합니다.
이 메서드를 사용하면 다른 클라이언트측 addQuery() 메서드와 달리 단일 쿼리 호출에서 복잡한 필터(인코딩된 쿼리 문자열)를 지정할 수 있습니다. 원하는 쿼리를 모두 정의한 후에는 를 클라이언트 측 GlideRecord - 쿼리(문자열 이름, 함수 responseFunction, 문자열 값) 호출하여 지정된 쿼리 절(필터)을 실행합니다. 인코딩된 쿼리 문자열에 대한 자세한 내용은 인코딩된 쿼리 문자열을 참조하십시오.
query() 메서드를 호출하기 전에 이 메서드를 여러 번 호출하면 쿼리가 함께 AND됩니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| encodedQuery | 문자열 | 현재 쿼리 절에 추가할 인코딩된 쿼리 문자열입니다. |
| 유형 | 설명 |
|---|---|
| void |
var now_GR = new GlideRecord('incident');
now_GR.setEncodedQuery('priority=4^ORstate=3');
now_GR.query(response);
function response(result) {
while(result.next()) {
console.log(result.getValue('number'));
}
}
클라이언트 측 GlideRecord - setLimit(Number, maxQuery)
GlideRecord에 포함되는 기록 수에 대한 제한을 설정합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| maxQuery | 번호 | 검색할 기록 수의 제한입니다. |
| 유형 | 설명 |
|---|---|
| void |