UI ページ

  • リリースバージョン: Washingtondc
  • 更新日 2024年02月01日
  • 読む11読むのに数分
  • UI ページは、フォーム、ダイアログ、リスト、その他の UI コンポーネントの作成と表示に使用できます。

    ダッシュボードのウィジェットとして UI ページを使用します。UI ページを見つけるには、次に移動します。 システム UI > UI ページ.

    この機能を使用するには、HTML または Jelly のナレッジが必要です。UI ページを使用して簡単な AngularJS アプリケーションを作成することもできます。

    UI ページフォームには、次のフィールドが含まれています。
    表 : 1. UI ページ
    フィールド 説明
    名前 URL を介してページを呼び出すために使用される名前 (スペースを含めることはできません)。
    アプリケーション 現在のアプリケーションスコープを表示します。
    説明 UI ページの説明とその使用目的。
    直接 直接 UI ページ [sys_ui_page] の場合は、このチェックボックスをオンにします。直接 UI ページには、一般的な HTML、CSS、およびスクリプトは含まれません。この設定では、ページで使用するカスタム CSS と JavaScript を追加する必要があります。
    HTML ページが表示されるときに何をレンダリングするかを定義する、ページのメインコンポーネント。静的 XHTML、Jelly として定義された動的に生成されたコンテンツを含めるか、またはスクリプトインクルードと UI マクロを呼び出すことができます。
    注:
    GlideRecord/GlideDBQueryGlideRecordSecure の代わりに使用すると、セキュリティ推奨メッセージが表示されます。
    クライアントスクリプト ボタンによって呼び出される機能など、ブラウザーで実行されるクライアント側の JavaScript を含みます。これは、ページがロードされた後にフィールドやその他のインタラクティブな DHTML 機能にフォーカスを設定するなど、必要なクライアント側の処理を実行することを目的としています。

    UI ページのクライアントスクリプトは <script/> タグ内でブラウザーに展開されるため、HTML フィールド内で同様にコンテンツを定義できます。代わりに [クライアントスクリプト] フィールドを使用してこれらのスクリプトを簡潔に定義し、Jelly および HTML の管理性を維持することができます。

    処理スクリプト ページが送信されたときにサーバーで実行されるスクリプト。これは、ページに <g:ui_form/> または <g:form/> タグで定義されたフォームがある場合に便利です。
    注:
    GlideRecord/GlideDBQueryGlideRecordSecure の代わりに使用すると、セキュリティ推奨メッセージが表示されます。
    obsolete-custom-processors
    注:
    この機能は廃止されました。従来の既存のカスタムプロセッサーは引き続きサポートされますが、新しいカスタムプロセッサーの作成は廃止されました。代わりに、Scripted REST APIs を使用します。
    フォームビューの関連リスト:
    アクセス制御 UI ページのアクセス制御を表示および設定します。詳細については、「UI ページでアクセス制御を使用する」を参照してください。
    バージョン UI ページのすべてのバージョンを表示します。バージョンを比較したり以前のバージョンに戻したりするには、このリストを使用します。

    アクセス制御

    UI ページは、次のパラメーターを指定して ACL を作成することで保護できます。

    • タイプui_page
    • 操作読み取り
    • 名前:保護する UI ページの名前
    • ロール:レコードへのアクセスが許可されているユーザーロール
    新しい UI ページを保存すると、アクセス制御のロールを割り当てるように求められます。新しい UI ページのアクセス制御のロール選択。
    注:
    UI ページと同じ名前のエントリーがアクセス制御テーブルに作成されます。
    ACL ルールの作成の詳細については、「ACL ルールを作成する」を参照してください。

    高リスク UI ページ

    次のいずれかの属性がある UI ページは、高リスクと見なされます。
    • GlideRecordSecure の代わりに GlideRecord または GlideDBQuery を使用している
      注:
      これは [HTML] および [処理] スクリプトフィールドに適用され、クライアントスクリプトには適用されません。
    • 対応する ACL が設定されていない
    • パブリック UI ページであると示され、sys_public レコードに入力されている
    • 高リスク UI ページを示すメッセージを表示している
    • glide.installation.developertrue に設定されているインスタンスの場合。
    • リソースが顧客インスタンスのカスタマイズされたコンテンツである場合

    UI ページへのアクセス

    各 UI ページには、アプリケーションスコープ、ページ名、および .do ファイル拡張子から計算された URL があります。

    たとえば、glidewindow_example というページをデモシステムで表示するには、https://<instance name>.service-now.com/glidewindow_example.do に移動します。ページが example_app と呼ばれるカスタムアプリケーションの一部である場合は、代わりに https://<instance name>.service-now.com/x_example_app_glidewindow_example.do に移動します。

    ページの HTML セクション内で jelly 変数としてアクセスできる追加のパラメーターを URL に追加することもできます。つまり、引数を /my_test_page.do?sysparm_verbose=true のように URL に追加すると、次のようにアクセスできる verbose と呼ばれる jelly 変数が作成されます。
    <j2:if test="$[!empty(sysparm_verbose)]"> <span>show extra stuff </span> </j2:if >

    これの一般的で実用的な例は、表示用のデータベースレコードの取得です。ユーザーのロールのリストを構築するには、ユーザーの sys_id を使用してパラメーターを渡します。次の UI ページを呼び出して、そのユーザーのロールのリストを Jelly コードで次のように表示します。

    role_select.do?sysparm_user=5137153cc611227c000bbd1bd8cd2007
    <j:set var = "jvar_user_id" value = "${sysparm_user}" />
     
      <g:evaluate> var userRoles = new GlideRecord('sys_user_has_role');
        userRoles.addQuery('user','${jvar_user_id}');
        userRoles.query(); 
      </g:evaluate>
     
      <select id='select_role'> 
          <j:while test = "${userRoles.next()}"> 
              <option value = "${userRoles.sys_id}"> ${userRoles.role.name} </option> 
          </j:while> 
      </select>

    ただし、予約済みの変数名 sys_id は注意すべき例外です。この変数には、URL の指定に関係なく、常に UI ページ自体の ID が含まれます。一般的な代替変数名は sysparm_id です。

    URL パラメーターを使用してクライアントスクリプトを UI ページにロードしないでください。システムは、URL パラメーターによって渡されたスクリプトを評価しなくなりました。ご利用の実装がこの動作に依存している場合は、システムプロパティ[glide.security.disable_ui_pages_sysparm_client_script] を追加して false に設定すると、UI ページでスクリプトを渡す URL パラメーターの評価が一時的に許可されます。

    UI ページでアクセス制御を使用する

    UI ページレコードを作成または編集するときに、[UI ページ] フォームから直接アクセス制御を確認し、ロールベースのアクセス制御を追加します。

    始める前に

    既存の UI ページに追加されたアクセス制御は、関連リンクの下にある UI ページレコードを開くことでアクセスおよび編集できます。

    必要なロール:security_admin および admin

    手順

    1. security_admin ロールに昇格させます。
      ロールの昇格の詳細については、「特権ロールへの昇格」を参照してください。
    2. 移動先 すべて > システム UI > UI ページ.
    3. [新規] を選択します。
    4. フォームに入力します。
      UI フィールドの詳細については、「UI ページ」を参照してください。
    5. [送信] または [保存] を選択します。
      UI ページのロールベースのアクセス制御を作成するように求めるモーダルが表示されます。ロールベースのアクセス制御モーダルを表示します。
    6. ロールを選択します。
    7. [OK] を選択してロールをアサインします。
      UI ページのリストに戻ります。
    既存の UI ページのアクセス制御を追加、編集、または表示します。
    1. UI ページテーブルから UI ページを開きます。
    2. 関連リストの [アクセス制御] を表示します。
    3. [新規] を選択して新しいアクセス制御を作成するか、既存のエントリを選択して編集します。
      [アクセス制御] フォームがロードされます。UI ページの詳細が表示されます。
    4. フォームに入力し、UI ページにロールを割り当てます。
      アクセス制御の詳細については、「ACL ルールの作成」を参照してください。
    5. 新しいアクセス制御の場合は [送信] を、編集する場合は [更新] を選択します。
      注:
      UI ページごとに複数のアクセス制御を設定できます。

    保護された UI ページ

    アクセス制御と関連するセキュリティメッセージは、セキュリティを強化するためにリスクの高い UI ページに統合されています。

    高リスク UI ページに情報メッセージが表示され、ロールベースのアクセス制御を UI ページに追加するように顧客に通知されます。

    UI ページのセキュリティ推奨メッセージ。

    このメッセージは、次の条件で表示されます。
    • ACL (アクセス制御リスト) がない場合
    • [HTML] セクションまたは [処理スクリプト] セクション HTML および処理スクリプトの例GlideRecordSecure の代わりに GlideRecord/GlideDBQuery が使用されている場合
    • sys_publicで UI ページがパブリックとして設定されている場合
      注:
      パブリック UI ページまたは GlideRecord を使用する場合は、ACL 欠落の警告は表示されません。
    高リスク UI ページの詳細については、「UI ページ」を参照してください。

    セキュリティに関する推奨事項のメッセージが表示される条件

    このメッセージは、次の条件で表示されます。

    • glide.installation.developer=true であるすべての内部インスタンス eclipse/IJ
    • 顧客のすべてのスコープ対象 UI ページのリソース
    • glide.script.ui_page.customer_scoped.security_msgs_enabled プロパティが true に設定されている場合のカスタマイズされた UI ページ(デフォルト値は true)。

    セキュリティに関する推奨事項のメッセージが表示されない条件

    次の条件では、メッセージは表示されません。

    • UI ページが公開されていない
    • UI ページが [グローバル] スコープにある
    • glide.script.ui_page.customer_scoped.security_msgs_enabledfalse に設定されている
    注:
    ロールベースの ACL 作成プロンプトを無効にするには、glide.ui_page.enable_acl_create_ux プロパティを [false] に設定します。プロパティはデフォルトで [true] に設定されています。

    UI ページプロセススクリプト

    UI ページにフォームが含まれている (<g:form> タグを使用している) 場合は、フォームを送信してプロセススクリプトを実行できます。

    処理スクリプトは、フォーム上のフィールドに自然にアクセスできます。たとえば、フォームに application_sys_id フィールドが含まれている場合は、次のようにします。

    <g:ui_form>
      <p>Click OK to run the processing script.</p>
      <g:dialog_buttons_ok_cancel ok="return true" />
      <input type="hidden" name="application_sys_id" value="499836460a0a0b1700003e7ad950b5da" />
    </g:ui_form>
    このフィールドには、application_sys_id を使用してアクセスできます。
    var application = new GlideRecord('hr_application');
     application.get(application_sys_id);
     application.status = "Rejected";
     application.update();
     var urlOnStack = GlideSession.get().getStack().bottom();
     response.sendRedirect(urlOnStack);
    重要:
    上記のスクリプトは、グローバルアプリケーションでのみ使用できます。

    ダイアログの UI ページを使用している場合は、上記のコードを使用してスタック上の最新の URL を参照し、その場所に応答を送信することもできます。これは、ダイアログの処理スクリプトで何らかの内容を更新し、ダイアログが表示された画面を再表示する場合に便利です。