스크립트 포함
스크립트 포함은 서버에서 실행되는 JavaScript를 저장하는 데 사용됩니다.
서버 스크립트에서 사용할 JavaScript 함수와 클래스를 저장하는 스크립트 포함을 만듭니다. 각 스크립트 포함은 객체 클래스 또는 함수를 정의합니다.
스크립트 포함은 요청 시에만 로드되므로 전역 비즈니스 규칙 대신 스크립트 포함을 사용하는 것이 좋습니다. 자세한 내용은 및를 검색 스크립트 포함 참조하십시오클라이언트 호출 가능 스크립트 포함에 대한 개인정보 설정.
스크립트의 추가 예는 다음 문서를 참조하십시오 유용한 스크립트.
스크립트 포함 양식
스크립트 포함에는 이름, 설명 및 스크립트가 포함됩니다. 또한 활성 상태인지 여부와 클라이언트 스크립트에서 호출할 수 있는지 여부도 지정합니다. 스크립트 포함 양식을 사용하여 기존 스크립트 포함을 보거나 새 스크립트 포함을 만듭니다.
스크립트 포함에 액세스하려면 시스템 정의 > 스크립트 포함으로 이동하십시오.
| 필드 | 설명 |
|---|---|
| 이름 | 스크립트 포함의 이름입니다. 클래스를 정의하는 경우 클래스 이름, 프로토타입 및 형식과 일치해야 합니다. 클래스 없는(온디맨드) 스크립트 포함을 사용하는 경우 이름이 함수 이름과 일치해야 합니다. |
| API 이름 | 읽기 전용이며 자동으로 채워진 API 이름입니다. |
| 클라이언트 호출 가능 | 스크립트 포함을 클라이언트 스크립트, 목록/보고서 필터, 참조 한정자 또는 URL의 일부로 지정된 경우에 사용할 수 있도록 합니다. 선택하면 접근 제어 관련 링크를 사용할 수 있습니다. 자세한 내용은 클라이언트 호출 가능 스크립트 포함에 대한 개인정보 설정 문서를 참조하십시오. |
| 애플리케이션 | 이 스크립트가 포함되어 있는 애플리케이션입니다. |
| 다음에서 접근 가능 | 이 스크립트 포함에 접근할 수 있는 애플리케이션을 설정합니다.
|
| 활성 | 선택 시 스크립트 포함을 활성화합니다. 스크립트 포함을 비활성화하려면 활성 필드의 선택을 취소합니다. |
| 설명 | 스크립트 포함과 관련된 설명 콘텐츠를 제공합니다. |
| 스크립트 | 다른 스크립트에서 호출할 때 실행할 서버 측 스크립트를 정의합니다. 스크립트는 단일 JavaScript 클래스 또는 전역 함수를 정의해야 합니다. 클래스 또는 함수 이름이 이름 필드와 일치해야 합니다. |
| 패키지 | 이 스크립트 포함이 포함된 패키지입니다. |
| 작성자 | 이 스크립트 포함을 만든 사용자입니다. |
| 업데이트한 사람 | 가장 최근에 이 스크립트 포함을 업데이트한 사용자입니다. |
| 보호 정책 | 스크립트 포함에 대한 보호 수준을 설정합니다.
|
| 양식 뷰의 관련 목록: | |
| 버전 | 스크립트 포함의 모든 버전을 표시합니다. 이 목록을 사용하여 버전을 비교하거나 이전 버전으로 되돌릴 수 있습니다. 버전을 참조하십시오. |
| 접근 통제 | 클라이언트 호출 가능 선택란이 선택되고 표준 스크립트 포함에서 숨겨지면 사용할 수 있습니다. 공용 액세스가 부여되지 않을 때 무단 사용으로부터 CCSI를 보호하는 데 사용합니다. |
스크립트 포함 사용
Script Includes는 시스템 정의 또는 시스템 UI에서 찾을 수 있습니다. 스크립트에서 기존 스크립트 포함을 호출하거나 새 스크립트 포함을 만들 수 있습니다.
완전히 새로운 스크립트 포함을 만들려면 기존 스크립트 포함의 형식을 따를 수 있습니다. 이 예제에서 스크립트 포함의 이름은 NewInclude 이고 myFunction이라는 단일 함수가 있습니다. 스크립트 포함의 이름은 클래스, 프로토타입 및 유형의 이름과 일치해야 합니다. 새 스크립트 포함을 만들고 이름을 지정하면 시스템에서 클래스와 프로토타입이 제대로 설정된 코드 스니펫을 제공합니다.
var NewInclude =Class.create();
NewInclude.prototype={
initialize :function(){},
myFunction :function(){<Put function code here>},
type :'NewInclude'};그런 다음 다음과 같이 myFunction 행을 사용할 수 있습니다.
var foo =new NewInclude();
foo.myFunction();클라이언트 호출 가능 스크립트 포함
CCSI(클라이언트 호출 가능 스크립트 포함)는 스크립트 포함을 클라이언트 스크립트, 목록/보고서 필터, 참조 한정자 또는 URL의 일부로 지정된 경우에 사용할 수 있도록 합니다.
시작하기 전에
필요한 역할: admin
프로시저
클라이언트 호출 가능 스크립트 포함에 대한 개인정보 설정
클라이언트 호출 가능 스크립트 포함(CCSI)에 대한 개인정보 설정은 클라이언트 호출 가능 스크립트 포함에 액세스할 수 있는 사용자를 결정합니다.
개인 정보 보호 설정
비공개 개인 정보 설정은 공개 페이지에 액세스하는 게스트가 클라이언트 호출 가능 스크립트 포함에 액세스할 수 없음을 의미합니다. 로그인하지 않은 사용자는 비공개 스크립트를 실행할 수 없습니다.
공개 개인 정보 설정
공개 개인 정보 설정은 로그인하지 않은 사용자가 클라이언트 스크립트를 실행하여 적절한 HTTP 요청을 생성할 수 있음을 의미합니다. 클라이언트 스크립트가 기밀 정보를 제공하는 경우 보안 문제가 발생할 수 있습니다.
- GlideSystemAjax
- SysMessageAjax
- KnowledgeMessagingAjax
- 지식아약스
- PasswordResetAjax
모든 클라이언트 호출 가능 스크립트 포함에 대한 개인정보 설정
모든 클라이언트 호출 가능 스크립트 포함의 개인정보 설정을 변경합니다.
모든 클라이언트 호출 가능 스크립트 포함에 대한 제어를 강화하기 위해 관리자는 glide.script.ccsi.ispublic 속성을 추가할 수 있습니다. 이 속성은 클라이언트 호출 가능 스크립트 포함을 모두 공개 또는 비공개로 설정하여 가시성을 변경합니다. 다음과 같이 속성을 구성합니다.
| 제목 | 속성 |
|---|---|
| 이름 | glide.script.ccsi.ispublic |
| 유형 | true|false |
| 값 | 거짓 |
단일 클라이언트 호출 가능 스크립트 포함에 대한 개인정보 변경
isPublic() 함수를 추가하여 단일 클라이언트 호출 가능 스크립트 포함에 대한 개인 정보 설정을 변경합니다.
isPublic() 설정이 속성보다 우선합니다glide.script.ccsi.ispublic. 예를 들어, 속성이 false로 설정되어 모든 클라이언트 호출 가능 스크립트 포함을 비공개로 만들고 스크립트가 isPublic() 을 true로 설정하면 스크립트는 공용입니다.
단일 클라이언트 호출 가능 스크립트 포함에 대한 개인정보를 변경하려면 스크립트 포함에 다음 메서드를 추가합니다.
isPublic:function(){return[true/false];},var NewInclude =Class.create();
NewInclude.prototype={
initialize:function(){},
myFunction:function(){//Put function code here},
isPublic:function(){return false;},
type:'NewInclude'};
클라이언트 호출 가능 스크립트 포함에 대한 보안
클라이언트호출 가능 스크립트 포함(CCSI)이 무단 사용을 방지하도록 합니다. 고객 애플리케이션으로 작성된 모든 CCSI 기록에 대해 보안 위험을 줄이는 데 도움이 될 수 있는 권장 사항이 표시됩니다.
CCSI를 생성할 때 시스템은 아직 구성되지 않은 경우 다음 보안 권장 사항을 표시합니다.
- CCSI에 공용 액세스 권한이 없는 경우 접근 제어를 추가하거나 정의합니다.
- 스크립트가 데이터베이스를 쿼리하는 경우 보안 강화를 위해 GlideRecord API 대신 GlideRecordSecure를 사용합니다.주:보안 권장 사항 메시지를 사용하지 않도록 설정하려면 sys_properties 테이블에서 glide.script.ccsi.customer_scoped.security_msgs_enabled 속성을 false 로 설정합니다. 기본값은 true로 설정됩니다.
보안 규정 준수에 대한 자세한 내용은 인스턴스 보안 강화 설정을 참조하십시오.
검색 스크립트 포함
검색 스크립트 포함은 작업을 수행하는 검색 데 사용할 수 있는 JavaScript 클래스를 정의합니다.
GlideRecordUtil을 사용하여 GlideRecord 작업
GlideRecordUtil 은 를 수행하는 동안 검색GlideRecord를 사용하는 데 유용한 메서드를 제공하는 유틸리티 클래스입니다. 사용 가능한 방법에 대한 설명은 GlideRecordUtil 을 참조하십시오.
GlideRecord 인스턴스 가져오기
var now_GR = new GlideRecordUtil().getCIGR("2dfd7c8437201000deeabfc8bcbe5d56");var now_GR = new GlideRecordUtil().getGR( "cmdb_ci_computer", "2dfd7c8437201000deeabfc8bcbe5d56");GlideRecord의 모든 필드 가져오기
var now_GR = new GlideRecordUtil().getGR("cmdb_ci_computer", "2dfd7c8437201000deeabfc8bcbe5d56");
var fields = new GlideRecordUtil().getFields(now_GR);
gs.log(fields.join(" ")); // List all the fields that are in a computer CIGlideRecord 객체 필드 채우기
var objectToPopulate = { };
var now_GR = new GlideRecordUtil().getGR("cmdb_ci_computer", "2dfd7c8437201000deeabfc8bcbe5d56");
var ignore = {"sys_created_on": true, "sys_updated_by": true};
new GlideRecordUtil().populateFromGR(objectToPopulate, now_GR, ignore);
// Now the objectToPopulate contains field/value pairs from the computer GlideRecordvar now_GR = new GlideRecordUtil().getGR("cmdb_ci_computer", "2dfd7c8437201000deeabfc8bcbe5d56");
var obj = {"name": "xyz", "os": "windows 2000", "sys_created_by", "aleck.lin"};
var ignore = {"sys_created_by": true};
new GlideRecordUtil().mergeToGR(obj, gr, ignore);
gr.update();테이블 계층 구조 가져오기
var tables = new GlideRecordUtil().getTables("cmdb_ci_linux_server");
gs.log(tables.join(","));
// The result would be "cmdb_ci, cmdb_ci_computer, cmdb_ci_server, cmdb_ci_linux_server".DiscoveryException 및 AutomationException 사용
센서 및 센서 관련 스크립트를 작성할 검색 때 DiscoveryException 또는 AutomationException을 사용하여 에서 예외가 발생 검색했음을 나타낼 수 있습니다.
function foo() {
if(//condition matches) throw new DiscoveryException("The message", "The cause"); }try {
foo();
}
catch(e) {
if(e instanceof DiscoveryException)
gs.log("A DiscoveryException occurred. It is " + e. getMessage() + " caused by " + e.getCause()); }위의 예는 AutomationException에도 적용됩니다. DiscoveryException 은 일반적으로 Discovery에 대한 예외 처리를 제공하는 데 사용되는 반면, AutomationException 은 Orchestration 및 검색.