GlideApplicationProperty - スコープ付き、グローバル

  • リリースバージョン: Zurich
  • 更新日 2025年07月31日
  • 所要時間:9分
  • GlideApplicationProperty API は、特定のドメインのアプリケーションプロパティ値を取得および設定するためのメソッドを提供します。

    アプリケーションプロパティを使用すると、サービスプロバイダーはドメインに基づいてアプリケーション機能をカスタマイズできます。すべてのドメインとユーザーの機能を定義する単一のシステムプロパティ (システムプロパティ [sys_properties] テーブル) のみを持つ代わりに、特定のドメインの機能を定義するアプリケーションプロパティを実装できます。

    この API にアクセスするには、Domain Support - Domain Extensions Installer [com.glide.domain.msp_extensions.installer] プラグインをアクティブ化する必要があります。

    ドメイン固有のアプリケーションプロパティの詳細については、「 ドメインセパレーションアプリケーションのプロパティ」を参照してください。

    GlideApplicationProperty - getValue(文字列 name, 文字列 domainSysId)

    指定されたアプリケーションプロパティとドメイン sys_id の値を返します。

    利用可能なアプリケーションプロパティのリストは、アプリケーションプロパティ [sys_application_property] テーブルとアプリケーションプロパティ値 [sys_application_property_value] テーブルにあります。

    注:
    指定されたドメインが子ドメインであり、子ドメインのアプリケーションプロパティが存在しない場合、このメソッドは親ドメインのアプリケーションプロパティを返します (利用可能な場合)。
    表 : 1. パラメーター
    名前 タイプ 説明
    name 文字列 返されるアプリケーションプロパティの名前です。
    注:
    アプリケーションがグローバルでない場合は、sys_application_property の名前にプリフィックスとしてアプリケーションのスコープを付加する必要があります。
    domainSysId 文字列 オプション。アプリケーションプロパティに関連付けられたドメインの sys_id。

    デフォルト:セッションドメイン

    表 : 2. 返される内容
    タイプ 説明
    文字列 指定されたドメインの指定されたアプリケーションプロパティの値です。呼び出しで domainSysId が渡されない場合は、セッションドメインが返されます。

    指定されたアプリケーションプロパティが存在しない場合は、同じ名前のシステムプロパティ値を返します。

    ユーザーが指定されたドメインへのアクセス権を持っていない場合は、例外をスローし、値は返しません。

    この例は、新しいアプリケーションプロパティを作成し、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(文字列 name, 文字列 value, 文字列 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 の名前にプリフィックスとしてアプリケーションのスコープを付加する必要があります。
    value 文字列 指定されたアプリケーションプロパティに格納する値です。
    domainSysId 文字列 オプション。アプリケーションプロパティに関連付けられたドメインの sys_id です。

    デフォルト:現在のセッションドメイン

    表 : 4. 返される内容
    タイプ 説明
    ブーリアン 保存操作が成功したかどうかを示すフラグです。
    有効な値:
    • true:値が正常に保存されました。
    • false:エラーが発生し、アプリケーションプロパティは作成/更新されませんでした。

    ユーザーが指定されたドメインへのアクセス権を持っていない場合は、例外をスローし、値は返しません。

    この例は、新しいアプリケーションプロパティを作成し、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