GlideApplicationProperty - 범위 지정, 전역

  • 릴리스 버전: Washingtondc
  • 업데이트 날짜 2024년 02월 01일
  • 읽기8분
  • GlideApplicationProperty API는 특정 도메인에 대한 애플리케이션 속성 값을 가져오고 설정하는 기능을 제공합니다.

    애플리케이션 속성을 사용하면 서비스 제공자가 도메인을 기반으로 애플리케이션 기능을 사용자 지정할 수 있습니다. 모든 도메인과 사용자에 대한 기능을 정의하는 단일 시스템 속성(시스템 속성[sys_properties] 테이블)만 갖는 대신 애플리케이션 속성을 구현하여 특정 도메인에 대한 기능을 정의할 수 있습니다.

    이 API에 액세스하려면 도메인 지원 - 도메인 확장 설치 관리자(com.glide.domain.msp_extensions.installer) 플러그인을 활성화해야 합니다.

    도메인별 응용 프로그램 속성에 대한 자세한 내용은 도메인 구분 응용 프로그램 속성을 참조하세요.

    GlideApplicationProperty - getValue(문자열 이름, 문자열 domainSysId)

    지정된 애플리케이션 속성 및 도메인 sys_id 대한 값을 반환합니다.

    사용 가능한 응용 프로그램 속성 목록은 응용 프로그램 속성 [sys_application_property] 및 응용 프로그램 속성 값 [sys_application_property_value] 테이블에 있습니다.

    주:
    지정된 도메인이 자식 도메인이고 자식 도메인에 대한 응용 프로그램 속성이 없는 경우 메서드는 부모 도메인 응용 프로그램 속성(사용 가능한 경우)을 반환합니다.
    표 1. 매개변수
    이름 유형 설명
    name 문자열 반환할 응용 프로그램 속성의 이름입니다.
    주:
    애플리케이션이 전역이 아닌 경우 sys_application_property 이름의 프리픽스로 애플리케이션의 범위를 지정해야 합니다.
    domainSysId 문자열 옵션입니다. 애플리케이션 속성과 연결된 도메인의 Sys_id입니다.

    기본값: 세션 도메인

    표 2. 반환
    유형 설명
    문자열 지정된 도메인에 대한 지정된 애플리케이션 속성의 값입니다. 호출 domainSysId 에 전달되지 않으면 세션 도메인을 반환합니다.

    지정된 애플리케이션 속성이 없으면 같은 이름의 시스템 속성 값을 반환합니다.

    사용자에게 지정된 도메인에 대한 액세스 권한이 없는 경우 예외를 throw하고 값이 반환되지 않습니다.

    이 예에서는 새 애플리케이션 속성을 생성하고 ACME 및 Cisco 도메인에 대한 값을 재정의하는 방법을 보여줍니다.

    var MY_APP_PROP_NAME = 'my-app-prop';
    var ACME_DOMAIN_ID = 'c90d4b084a362312013398f051272c0d';
    var CISCO_DOMAIN_ID = 'c90f91924a362312001bdefae0f35d68';
    
    // create a new app_config entry:
    var now_GR = new GlideRecord('sys_application_property');
    now_GR.name = MY_APP_PROP_NAME; 
    now_GR.default_value = 'my-app-prop-default_value'; 
    now_GR.insert();
    
    // Override the value for ACME domain, catch exception if user can't access the specified domain
    try {
      GlideApplicationProperty.setValue(MY_APP_PROP_NAME, 'prop-value-ACME', ACME_DOMAIN_ID);
      gs.info('Value for ACME domain: ' + GlideApplicationProperty.getValue(MY_APP_PROP_NAME, ACME_DOMAIN_ID));
    } catch (ex) {
      gs.info('Exception: ' + ex);
    }
    
    // Override the value for Cisco domain -- assuming that the current session domain is Cisco. Notice that we don't pass domain-id explicitly
    session.setDomainID(CISCO_DOMAIN_ID); // NOTE: this API is not available from non-global scope (use domain-picker to switch to Cisco)
    gs.info('Domain: ' + session.getCurrentDomainID());
    GlideApplicationProperty.setValue(MY_APP_PROP_NAME, 'prop-value-Cisco');
    gs.info('Value for current session (Cisco) domain: ' + GlideApplicationProperty.getValue(MY_APP_PROP_NAME));
    
    출력:
    *** Script: Value for ACME domain: prop-value-ACME
    *** Script: Domain: c90f91924a362312001bdefae0f35d68
    *** Script: Value for current session (Cisco) domain: prop-value-Cisco

    GlideApplicationProperty - setValue(문자열 이름, 문자열 값, 문자열 domainSysId)

    지정된 도메인에 대해 지정된 애플리케이션 속성에 지정된 값을 저장하거나, 지정되지 않은 경우 현재 세션 도메인에 저장합니다.

    이 방법을 사용하기 위한 지침은 다음과 같습니다.
    • 응용 프로그램 속성은 이름에 다음 문자열 중 하나가 포함된 경우 만들어지지 않습니다.
      • glide.properties.blacklist
      • glide.properties.no_db_override
      • glide.properties.safe_overrides
      • glide.properties.maint_write_roles
    • 이름이 같은 기존 시스템 속성이 있고 시스템 속성이 비공개로 표시된 경우에는 애플리케이션 속성이 생성되지 않습니다.
    • 기존 시스템 속성이 있고 애플리케이션 속성이 이를 참조하지 않는 경우 애플리케이션 속성이 만들어지지 않습니다.
    • 전역이 아닌 경우 sys_application_property 테이블의 애플리케이션 속성 이름 앞에 애플리케이션의 범위가 붙습니다.
    • 이 메서드는 다른 범위에서 호출할 수 없습니다.
    표 3. 매개변수
    이름 유형 설명
    name 문자열 저장할 애플리케이션 속성의 이름입니다.
    주:
    애플리케이션이 전역이 아닌 경우 sys_application_property 이름의 프리픽스로 애플리케이션의 범위를 지정해야 합니다.
    문자열 지정된 애플리케이션 속성에 저장할 값입니다.
    domainSysId 문자열 옵션입니다. 애플리케이션 속성과 연결된 도메인의 Sys_id입니다.

    기본값: 현재 세션 도메인

    표 4. 반환
    유형 설명
    부울 저장 작업의 성공 여부를 나타내는 플래그입니다.
    유효한 값은 다음과 같습니다.
    • true: 값이 성공적으로 저장되었습니다.
    • false: 오류가 발생했으며 애플리케이션 속성이 작성/업데이트되지 않았습니다.

    사용자에게 지정된 도메인에 대한 액세스 권한이 없는 경우 예외를 throw하고 값이 반환되지 않습니다.

    이 예에서는 새 애플리케이션 속성을 생성하고 ACME 및 Cisco 도메인에 대한 값을 재정의하는 방법을 보여줍니다.

    var MY_APP_PROP_NAME = 'my-app-prop';
    var ACME_DOMAIN_ID = 'c90d4b084a362312013398f051272c0d';
    var CISCO_DOMAIN_ID = 'c90f91924a362312001bdefae0f35d68';
    
    // create a new app_config entry:
    var now_GR = new GlideRecord('sys_application_property');
    now_GR.name = MY_APP_PROP_NAME; 
    now_GR.default_value = 'my-app-prop-default_value'; 
    now_GR.insert();
    
    // Override the value for ACME domain, catch exception if user can't access the specified domain
    try {
      GlideApplicationProperty.setValue(MY_APP_PROP_NAME, 'prop-value-ACME', ACME_DOMAIN_ID);
      gs.info('Value for ACME domain: ' + GlideApplicationProperty.getValue(MY_APP_PROP_NAME, ACME_DOMAIN_ID));
    } catch (ex) {
      gs.info('Exception: ' + ex);
    }
    
    // Override the value for Cisco domain -- assuming that the current session domain is Cisco. Notice that we don't pass domain-id explicitly
    session.setDomainID(CISCO_DOMAIN_ID); // NOTE: this API is not available from non-global scope (use domain-picker to switch to Cisco)
    gs.info('Domain: ' + session.getCurrentDomainID());
    GlideApplicationProperty.setValue(MY_APP_PROP_NAME, 'prop-value-Cisco');
    gs.info('Value for current session (Cisco) domain: ' + GlideApplicationProperty.getValue(MY_APP_PROP_NAME));
    
    출력:
    *** Script: Value for ACME domain: prop-value-ACME
    *** Script: Domain: c90f91924a362312001bdefae0f35d68
    *** Script: Value for current session (Cisco) domain: prop-value-Cisco