스크립트 포함

  • 릴리스 버전: Zurich
  • 업데이트 날짜 2025년 07월 31일
  • 소요 시간: 14분
  • 스크립트 포함은 서버에서 실행되는 JavaScript를 저장하는 데 사용됩니다.

    서버 스크립트에서 사용할 JavaScript 함수 및 클래스를 저장하는 스크립트 포함을 만듭니다. 각 스크립트 포함은 객체 클래스 또는 함수를 정의합니다.

    스크립트 포함은 요청 시에만 로드되므로 전역 비즈니스 규칙 대신 스크립트 포함 사용을 고려하십시오. 자세한 내용은 AND 검색 스크립트 포함 문서를 참조하십시오Glide AJAX 지원 스크립트 포함에 대한 개인 정보 설정.

    스크립트에 대한 추가 예는 다음 문서를 유용한 스크립트참조하십시오.

    스크립트 포함 양식

    스크립트 포함에는 이름, 설명 및 스크립트가 포함됩니다. 또한 활성 상태인지 여부와 클라이언트 스크립트에서 호출할 수 있는지 여부도 지정합니다. 스크립트 포함 양식을 사용하여 기존 스크립트 포함을 보거나 새 스크립트 포함을 만듭니다.

    스크립트 포함에 액세스하려면 다음으로 이동하십시오. 모두 > 시스템 정의 > 스크립트 포함.

    표 1. 스크립트 포함 양식
    필드 설명
    이름 스크립트 포함의 이름입니다. 클래스를 정의하는 경우 클래스 이름, 프로토타입 및 형식과 일치해야 합니다. 클래스가 없는(요청 시) 스크립트 포함을 사용하는 경우 이름이 함수 이름과 일치해야 합니다.
    API 이름 스크립트 포함의 내부 이름입니다. 범위를 벗어난 애플리케이션에서 스크립트 포함을 호출하는 데 사용됩니다.
    Glide AJAX 활성화(또는 클라이언트 호출 가능) 스크립트 포함은 클라이언트 스크립트, 목록/보고서 필터, 참조 한정자 또는 URL의 일부로 지정된 경우에 사용할 수 있습니다. Glide AJAX 지원 스크립트 포함은 GlideAjax 에서 호출되며 사용자가 스크립트 포함과 연결된 ACL을 충족해야 합니다. 선택하면 접근 제어 관련 링크를 사용할 수 있습니다. 자세한 내용은 Glide AJAX 지원 스크립트 포함에 대한 개인 정보 설정 문서를 참조하십시오.
    모바일 호출 가능 스크립트 포함은 모바일 장치에서 호출된 클라이언트 스크립트에 사용할 수 있습니다.
    샌드박스 사용 스크립트 포함은 쿼리 조건과 같이 스크립트 샌드박스에서 호출된 스크립트에 사용할 수 있습니다.
    중요사항:
    스크립트 포함은 필요한 경우에만 스크립트 샌드박스에서 사용할 수 있도록 해야 합니다.

    스크립트 샌드박스에 대한 자세한 내용은 다음 문서를 참조하십시오 스크립트 샌드박스.

    애플리케이션 이 스크립트 포함이 있는 애플리케이션입니다.
    다음에서 접근 가능
    이 스크립트에 액세스할 수 있는 다음과 같은 애플리케이션을 설정합니다.
    모든 애플리케이션 범위
    모든 애플리케이션 범위에서 액세스할 수 있습니다.
    이 애플리케이션 범위만
    현재 애플리케이션 범위에서만 액세스할 수 있습니다.
    활성 선택하면 스크립트 포함을 사용합니다. 스크립트 포함을 사용하지 않으려면 활성 필드를 선택 취소합니다.
    설명 스크립트 포함에 대한 설명이 포함된 컨텐츠를 제공합니다.
    스크립트 다른 스크립트에서 호출될 때 실행할 서버 측 스크립트를 정의합니다.

    스크립트는 단일 JavaScript 클래스 또는 전역 함수를 정의해야 합니다. 클래스 또는 함수 이름은 이름 필드와 일치해야 합니다.

    패키지 이 스크립트 포함을 포함하는 패키지입니다.
    작성자 이 스크립트를 만든 사용자입니다.
    업데이트한 사람 이 스크립트를 가장 최근에 업데이트한 사용자입니다.
    보호 정책
    스크립트 포함에 대한 보호 수준을 설정합니다.
    없음
    누구나 이 다운로드 또는 설치된 스크립트 포함을 읽고 편집할 수 있습니다.
    읽기 전용
    누구나 이 다운로드 또는 설치된 스크립트 포함에서 값을 읽을 수 있습니다. 아무도 스크립트 포함을 다운로드하거나 설치하는 인스턴스에서 스크립트 값을 변경할 수 없습니다.
    보호됨
    애플리케이션 개발자를 위한 지적 재산권 보호를 제공합니다. 스크립트 포함을 다운로드하는 고객은 스크립트 필드의 내용을 볼 수 없습니다. 스크립트는 권한이 없는 사용자가 일반 텍스트로 볼 수 없도록 메모리에서 암호화됩니다.
    양식 뷰의 관련 목록:
    버전 스크립트 포함의 모든 버전을 표시합니다. 이 목록을 사용하여 버전을 비교하거나 이전 버전으로 되돌릴 수 있습니다. 버전을 참조하십시오.
    접근 통제 Glide AJAX 사용이 선택되어 있고 표준 스크립트 포함에서 숨겨지면 사용할 수 있게 됩니다. 공용 액세스 권한이 부여되지 않은 경우 스크립트 포함을 무단으로 사용하지 못하도록 보호하는 데 사용합니다.

    스크립트 포함 사용

    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();

    Glide AJAX 지원 스크립트 포함

    Glide AJAX 지원 스크립트 포함 클라이언트 스크립트, 목록/보고서 필터, 참조 한정자 또는 URL의 일부로 지정된 경우 스크립트 포함을 사용할 수 있도록 합니다.

    시작하기 전에

    필요한 역할: 관리자

    프로시저

    1. 다음으로 이동 시스템 정의 > 스크립트 포함.
    2. 새로 만들기를 선택하거나 보거나 편집할 기존 스크립트 포함을 선택합니다.
      스크립트 포함 작성에 대한 자세한 내용은 을 참조하십시오 스크립트 포함 사용 .
    3. 양식을 완성하고 Glide AJAX 사용 옵션을 선택합니다.
      역할 선택기가 팝업되어 사용자 역할을 선택하고 접근 제어 항목을 자동으로 생성합니다. 사용자 역할을 선택하고 확인을 클릭합니다.사용자 역할 선택 창.
      주:
      역할 선택기 창을 비활성화하려면 glide.script.ccsi.enable_acl_create_uxfalse로 설정합니다.

      역할 기반 액세스 제어가 포함된 스크립트 포함 기록이 생성됩니다. Glide AJAX 지원 확인란을 선택하면 접근 제어 관련 링크를 사용할 수 있게 됩니다.

    Glide AJAX 지원 스크립트 포함에 대한 개인 정보 설정

    Glide AJAX 지원 스크립트 포함에 대한 개인정보 설정에 따라 Glide AJAX 지원 스크립트 포함에 액세스할 수 있는 사용자가 결정됩니다.

    개인 정보 보호 설정

    비공개 개인 정보 설정은 공개 페이지에 액세스하는 게스트가 Glide AJAX 지원 스크립트 포함에 액세스할 수 없음을 의미합니다. 로그인하지 않은 사용자는 비공개 스크립트를 실행할 수 없습니다.

    공개 개인정보 보호 설정

    공개 개인 정보 설정은 로그인하지 않은 사용자가 적절한 HTTP 요청을 만드는 클라이언트 스크립트를 실행할 수 있음을 의미합니다. 클라이언트 스크립트가 기밀 정보를 제공하는 경우 보안 문제가 발생할 수 있습니다.

    다음 스크립트 포함은 UI 페이지를 공개 또는 비공개로 설정해야 액세스할 수 있으므로 기본적으로 공개 상태로 유지됩니다.
    • GlideSystemAjax
    • SysMessageAjax
    • KnowledgeMessagingAjax
    • KnowledgeAjax
    • PasswordResetAjax

    모든 Glide AJAX 지원 스크립트 포함에 대한 개인정보 보호 설정

    모든 Glide AJAX 지원 스크립트 포함에서 개인 정보 설정을 변경합니다.

    모든 Glide AJAX 지원 스크립트 포함에 대한 추가 제어를 제공하기 위해 관리자는 glide.script.ccsi.ispublic 속성을 추가할 수 있습니다. 이 속성은 Glide AJAX 지원 스크립트 포함을 모두 공개 또는 비공개로 설정하여 가시성을 변경합니다. 다음과 같이 속성을 구성합니다.

    표 2. 속성 구성
    직위 속성
    이름 glide.script.ccsi.ispublic
    유형 true|false
    아니오
    주:
    이 속성에 대한 자세한 내용은 인스턴스 보안 강화 설정을 참조하십시오 Require authentication by default for client-callable script includes [Updated in Security Center 1.3] .

    단일 Glide AJAX 지원 스크립트 포함에 대한 개인정보 보호 변경

    isPublic() 함수를 추가하여 단일 Glide AJAX 지원 스크립트 포함에 대한 개인 정보 설정을 변경합니다.

    isPublic() 설정이 속성보다 glide.script.ccsi.ispublic 우선합니다. 예를 들어 속성이 false로 설정되어 모든 Glide AJAX 지원 스크립트 포함을 비공개로 설정하고 스크립트가 isPublic()true로 설정하면 스크립트는 공개됩니다.

    단일 Glide AJAX 지원 스크립트 포함에 대한 개인 정보를 변경하려면 스크립트 포함에 다음 메서드를 추가합니다.

    isPublic:function(){return[true/false];},
    NewInclude 클라이언트 스크립트를 비공개로 설정합니다.
    var NewInclude =Class.create();
     
    NewInclude.prototype={
       initialize:function(){},
     
       myFunction:function(){//Put function code here},
       isPublic:function(){return false;},
     
       type:'NewInclude'};

    Glide AJAX 지원 스크립트 포함의 보안

    무단 사용에 대해 Glide AJAX 지원 스크립트 포함을 확인하십시오. 고객 애플리케이션으로 생성된 모든 기록에는 보안 위험을 줄이는 데 도움이 될 수 있는 권장 사항이 표시됩니다.

    Glide AJAX 지원 스크립트 포함을 만들 때 다음 보안 권장 사항이 아직 구성되지 않은 경우 시스템에 다음 보안 권장 사항이 표시됩니다.

    • 스크립트 포함에 공용 액세스 권한이 없는 경우 접근 제어를 추가하거나 정의합니다.
    • 스크립트가 데이터베이스를 쿼리하는 경우 보안 강화를 위해 GlideRecord API 대신 GlideRecordSecure를 사용합니다.

      Glide AJAX 지원 보안 권장 사항.

      주:
      보안 권장 사항 메시지를 사용하지 않도록 설정하려면 sys_properties 테이블에서 glide.script.ccsi.customer_scoped.security_msgs_enabled 속성을 false 로 설정합니다. 기본값은 true로 설정됩니다.

    보안 준수에 대한 자세한 내용은 인스턴스 보안 강화 설정을 참조하십시오.

    검색 스크립트 포함

    디스커버리 스크립트 포함은 작업을 수행하는 디스커버리 데 사용할 수 있는 JavaScript 클래스를 정의합니다.

    주:
    discovery_admin 역할을 가진 사용자는 스크립트 포함을 작성할 수 있습니다. 서버 측 및 클라이언트 측 스크립팅에 대한 베스트 프랙티스를 따라 보안 문제를 방지합니다. 자세한 내용은 지식 문서 KB0550828 참조하십시오.

    GlideRecordUtil을 사용하여 GlideRecord 작업

    GlideRecordUtil 은 실행 중 디스커버리GlideRecord를 사용하는 데 유용한 메서드를 제공하는 유틸리티 클래스입니다. 사용 가능한 메서드에 대한 설명은 GlideRecordUtil 을 참조하십시오.

    GlideRecord 인스턴스 가져오기

    지정된 구성 항목과 올바른 클래스 및 테이블에 대한 GlideRecord 인스턴스를 얻으려면 getCIGR(sys_id) 메서드를 사용하십시오. 예를 들어, 다음 코드는 sys_id이 2dfd7c8437201000deeabfc8bcbe5d56인 CI의 GlideRecord를 가져옵니다.
    var now_GR = new GlideRecordUtil().getCIGR("2dfd7c8437201000deeabfc8bcbe5d56");
    클래스 형식을 모른 채 계층적 테이블을 검색하려면 getGR(base_table, sys_id) 메서드를 사용합니다. 예를 들어 컴퓨터 클래스 CI에 대한 GlideRecord를 가져오려면 컴퓨터 클래스, Windows 서버 또는 서버 클래스 중 Linux 어떤 클래스인지 구분해야 할 수 있습니다. 이 메서드를 사용하면 올바른 클래스의 GlideRecord가 보장됩니다. 클래스마다 속성이 다릅니다. 이 사용 사례에서 서버에는 Windows 서버와 다른 Linux 속성이 있습니다. 다음 예제는 속성이 있는 올바른 클래스에서 GlideRecord를 가져오는 방법을 보여줍니다.
    var now_GR = new GlideRecordUtil().getGR( "cmdb_ci_computer", "2dfd7c8437201000deeabfc8bcbe5d56");

    GlideRecord에서 모든 필드 가져오기

    getFields(now_GR) 메서드는 지정된 GlideRecord에 있는 모든 필드 또는 속성의 JavaScript 객체(예: 해시 맵)를 반환합니다.
    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 CI

    GlideRecord 객체 필드 채우기

    populateFromGR(hashmap, gr, ignore) 메서드를 사용하면 GlideRecord 개체를 가져와서 해당 필드와 값을 JavaScript 개체에 채울 수 있습니다. 세 번째 인수(ignore)는 특정 필드를 제외할 수 있는 선택적 JavaScript 객체입니다. 예를 들어 GlideRecord의 OR sys_updated_by 필드는 신경 쓰지 sys_created_by 않아도 됩니다.
    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 GlideRecord
    mergeToGR(hashmap, gr, ignore) 메서드를 사용하면 필드/값 쌍을 이루는 객체로 GlideRecord를 채울 수 있습니다. ignore 인수는 지정된 필드가 업데이트되지 않도록 중지합니다. 다음 코드 예제에서는 컴퓨터 레코드 nameos 필드를 업데이트하지만 필드는 업데이트하지 않습니다.sys_created_by
    var 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();

    테이블 계층 구조 가져오기

    getTables(table) 메서드는 다음 예제와 같이 테이블 계층 구조 목록을 반환합니다.
    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을 사용하여 예외가 .디스커버리

    DiscoveryException 스크립트 포함은 GenericException 클래스를 확장하는 AutomationException을 확장합니다. 다음 예제에서는 DiscoveryException 을 사용하여 예외를 throw합니다.
    function foo() { 
      if(//condition matches) throw new DiscoveryException("The message", "The cause"); }
    첫 번째 인수는 예외의 메시지를 사용하고 두 번째 인수(선택 사항)는 예외의 원인을 사용합니다. 아래 예제와 같이 예외를 catch하고 기록할 수도 있습니다.
    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 및 디스커버리.