원격 테이블에 대한 스크립트 정의 생성
외부 데이터 소스에서 데이터를 검색하거나 외부 소스에서 데이터를 편집하기 위해 원격 테이블에 대한 스크립트를 정의합니다.
시작하기 전에
필요한 역할: 스크립트 작성 허용 권한 또는 관리자가 있는 delegated_developer
이 태스크 정보
ServiceNow AI Platform 사용자가 보거나 수정할 수 있도록 외부 데이터 소스에 대해 쿼리 스크립트를 실행하여 원격 테이블의 데이터를 검색하고 캐시합니다. 또한 이 외부 데이터를 캐시하는 방법과 스크립트를 다시 실행해야 할 때까지 데이터가 메모리에 캐시되는 기간을 지정할 수 있습니다.
프로시저
- 다음으로 이동 모두 > 시스템 정의 > 원격 테이블 > 정의.
- 새로 만들기를 선택합니다.
-
양식에서 필드를 채웁니다.
통제 설명 이름 선택한 원격 테이블에 연결하기 위해 생성 중인 스크립트의 이름입니다.
테이블 생성 중인 스크립트를 연결할 원격 테이블의 이름입니다.- 범위가 지정된 애플리케이션의 원격 테이블의 경우, 이름 앞에 네임스페이스 식별자와 문자열 st_ 가 추가되어 원격이며 애플리케이션의 일부임을 나타냅니다.
- 전역 애플리케이션의 원격 테이블의 경우 이름 앞에 문자열 u_st_이 붙습니다.
애플리케이션 이 원격 테이블과 연결된 애플리케이션입니다. 애플리케이션에서 작업 중이거나 애플리케이션 기록에서 원격 테이블을 생성하는 경우 필드는 기본적으로 해당 애플리케이션으로 설정됩니다. 그렇지 않으면 필드는 기본적으로 전역으로 설정됩니다. 모듈 및 보안 규칙과 같이 테이블 기록에서 생성된 모든 기록은 기본적으로 이 애플리케이션에 할당됩니다. 활성 원격 테이블과 연결 중인 스크립트를 활성화하는 옵션입니다. 원격 테이블에 대해 여러 개의 비활성 스크립트 정의를 가질 수 있지만 활성 스크립트 정의는 하나만 가질 수 있습니다. 스크립트 정의를 활성화하면 외부 데이터를 검색하고 캐시할 수 있도록 스크립트 정의를 원격 테이블에 연결합니다. 고급 고급 캐싱 및 편집 설정에 액세스하는 옵션입니다. 캐싱 설정은 이 원격 테이블에서 메모리 캐싱이 작동하는 ServiceNow AI Platform 방법을 지정합니다.주:고급 사용자만 원격 테이블에 대한 캐싱 매개 변수를 설정해야 합니다. - 옵션:
고급 옵션을 선택한 경우 고급 섹션에서 필드를 채웁니다.
주:기본적으로 외부 데이터는 사용자가 메모리에 캐시합니다.
필드 설명 캐시 TTL 외부 데이터가 이 원격 테이블 스크립트 정의에 대한 메모리에 캐시되는 캐시 시간(초)입니다. 예를 들어 5분 동안 메모리에 데이터를 캐시하려면 300 을 입력합니다. 기본값은 0이며, 이는 데이터가 캐시되지 않고 매번 검색됨을 의미합니다. 최대값은 60분(3600초)입니다.
캐시 격리 수준 각 사용자 또는 모든 사용자에 대한 쿼리 결과를 캐시합니다. - 사용자당 캐시: 캐시된 쿼리 결과는 로그인한 사용자와 관련이 있어야 합니다. 이는 기본값입니다.
- 시스템 공유 캐시: 캐시된 쿼리 결과는 모든 사용자에게 동일해야 합니다.
향상된 용량 원격 테이블에서 1,000개 이상의 행을 지원하도록 향상된 용량을 선택하는 옵션입니다. 주:외부 원본에서 검색된 데이터 크기가 작은 경우 원격 테이블에서 1000개 행 기본 제한을 사용하여 쿼리 시간을 최소화합니다. 검색된 데이터 크기가 크고 성능이 떨어질 수 있는 경우 향상된 용량 필드를 선택할 수 있습니다.편집 가능을 선택한 경우 이 필드는 지원되지 않습니다.
편집 가능 인스턴스에서 원격 테이블과 해당 외부 데이터 소스 편집을 지원하는 옵션입니다. v_record API를 사용하여 테이블의 데이터 삽입, 업데이트 및 삭제에 대한 스크립트 정의를 사용자 지정합니다. -
v_table, v_query 및 v_record API를 사용하여 다음 스크립트 정의를 사용자 지정합니다.
이러한 API에 대한 자세한 내용은 , v_query – Scoped, Global, 및 v_record - Scoped, Global를 참조하십시오v_table – Scoped, Global.
스크립트 정의 설명 쿼리 쿼리 스크립트 정의는 외부 소스에서 데이터를 검색하여 원격 테이블에 포함합니다. 쿼리 섹션에서 v_table 및 v_query API를 사용하여 스크립트를 사용자 지정합니다.
원격 테이블의 외부 데이터가 포함된 목록을 새로 고칠 때마다 연결된 쿼리 스크립트가 실행됩니다.
(function executeQuery(v_table, v_query) { // Parameters: // v_table - object to record response: // v_table.addRow({ ... }) - adds a row to the result set. // keys are the column names of the table definition. // sys_id must be non-empty and uniquely identify each row. // the above rule will be strictly enforced for editable tables, and generate warnings for read-only tables. // sys_id will be supplied to the Update, and Delete scripts to specify the row's identity. // v_query - the query definition: // v_query.getEncodedQuery() - encoded querystring // v_query.getCondition(field) - encoded querystring for the given field (includes field name, operator, and value) // v_query.getParameter(field) - parameter for the given field (only includes value for equality conditions) // v_query.isGet() - whether the query is a single get by sys_id // v_query.getSysId() - parameter for sys_id field // v_query.isTextSearch() - whether the query contains a text query parameter // v_query.getTextSearch() - text search query parameter (internal field name 123TEXTQUERY321) // v_query.getFirstRowWanted() - the first row to include, don't use with caching // v_query.getLastRowWanted() - the last row to include, don't use with caching // v_query.setLastErrorMessage(message) - the message is visible from GlideRecord.getLastErrorMessage() // Sample code: // try { // retrieve-rows-from-external-system; // if (there-was-an-error) { // var message = ...; // v_query.setLastErrorMessage(message); // return; // } // // for (var row in rows) { // v_table.addRow(row); // } // } catch (ex) { // var message = ex.getMessage(); // v_query.setLastErrorMessage(message); // } })(v_table, v_query);삽입 스크립트 정의 삽입은 외부 소스에 기록을 추가합니다. 이 스크립트 정의는 고급 편집 가능 옵션을 선택한 경우에만 사용할 수 있습니다. 삽입 섹션에서 v_record API를 사용하여 스크립트를 사용자 지정합니다.
원격 테이블에 기록이 추가될 때마다 관련 삽입 스크립트가 실행됩니다.
function executeInsert(v_record) { // Parameters: // v_record is a map of field names and values containing the sys_id of the // record and the fields that need to be inserted in the record on the // remote system (source of data) // v_record.<field_name> - fields in the remote table GlideRecord // v_record.setLastErrorMessage(message) - signal an error // Sample code: // try { // update-external-system; // if (there-was-an-error) { // var message = ...; // v_record.setLastErrorMessage(message); // } // } catch (ex) { // var message = ex.getMessage(); // v_record.setLastErrorMessage(message); // } })(v_record);업데이트 업데이트 스크립트 정의는 외부 소스의 기록을 수정합니다. 이 스크립트 정의는 고급 편집 가능 옵션을 선택한 경우에만 사용할 수 있습니다. 업데이트 섹션에서 v_record API를 사용하여 스크립트를 사용자 지정합니다.
원격 테이블에서 기록이 업데이트될 때마다 관련 업데이트 스크립트가 실행됩니다.
주:여러 사용자가 동시에 동일한 레코드를 업데이트하는 경우 원격 시스템의 값은 실행된 마지막 업데이트 호출의 값입니다.(function executeUpdate(v_record, v_changed_fields) { // Parameters: // v_record - a map of field names and values containing the sys_id of the record // v_record.<field_name> - fields in the remote table GlideRecord // v_record.setLastErrorMessage(message) - signal an error // v_changed_fields - a map of field names and values containing the sys_id of the record // v_changed_fields.<field_name> - changed fields in the remote table GlideRecord // Sample code: // try { // update-external-system; // if (there-was-an-error) { // var message = ...; // v_record.setLastErrorMessage(message); // } // } catch (ex) { // var message = ex.getMessage(); // v_record.setLastErrorMessage(message); // } })(v_record, v_changed_fields);삭제 삭제 스크립트 정의는 외부 소스에서 기록을 제거합니다. 이 스크립트 정의는 고급 편집 가능 옵션을 선택한 경우에만 사용할 수 있습니다. 삭제 섹션에서 v_record API를 사용하여 스크립트를 사용자 지정합니다.
원격 테이블에서 기록이 삭제될 때마다 연결된 삭제 스크립트가 실행됩니다.
(function executeDelete(v_record) { // Parameters: // v_record - a map of field names and values containing (among others) the // sys_id of the record that needs to be deleted on the remote system // v_record.<field_name> - fields in the remote table GlideRecord // v_record.setLastErrorMessage(message) - signal an error // Sample code: // try { // update-external-system; // if (there-was-an-error) { // var message = ...; // v_record.setLastErrorMessage(message); // } // } catch (ex) { // var message = ex.getMessage(); // v_record.setLastErrorMessage(message); // } })(v_record); - 제출을 선택합니다.