GlideApplicationProperty - 범위가 지정됨, 전역

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

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

    이 API에 액세스하려면 Domain Support - Domain Extensions Installer(com.glide.domain.msp_extensions.installer) 플러그인을 활성화해야 합니다.

    도메인별 애플리케이션 속성에 대한 자세한 내용은 도메인 분리 애플리케이션 속성을 참조하십시오.

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

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

    사용 가능한 애플리케이션 속성 목록은 애플리케이션 속성 [sys_application_property] 및 애플리케이션 속성 값 [sys_application_property_value] 테이블에 있습니다.

    주:
    지정된 도메인이 자식 도메인이고 자식 도메인에 대한 응용 프로그램 속성이 없는 경우 메서드는 부모 도메인 응용 프로그램 속성(사용 가능한 경우)을 반환합니다.
    표 1. 매개변수
    이름 유형 설명
    이름 문자열 반환할 애플리케이션 속성의 이름입니다.
    주:
    애플리케이션이 전역이 아닌 경우 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
    • 이름이 같은 기존 시스템 속성이 있고 시스템 속성이 private으로 표시된 경우 애플리케이션 속성이 생성되지 않습니다.
    • 기존 시스템 속성이 있고 애플리케이션 속성이 이를 참조하지 않으면 애플리케이션 속성이 생성되지 않습니다.
    • sys_application_property 테이블의 애플리케이션 속성 이름에는 전역이 아닌 경우 애플리케이션의 범위가 접두사로 붙습니다.
    • 이 메서드는 다른 범위에서 호출할 수 없습니다.
    표 3. 매개변수
    이름 유형 설명
    이름 문자열 저장할 애플리케이션 속성의 이름입니다.
    주:
    애플리케이션이 전역이 아닌 경우 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