UI-Seiten

  • Freigeben Version: Washingtondc
  • Aktualisiert 1. Februar 2024
  • 6 Minuten Lesedauer
  • UI-Seiten können zum Erstellen und Anzeigen von Formularen, Dialogfeldern, Listen und anderen UI-Komponenten verwendet werden.

    Verwenden Sie UI-Seiten als Widgets in Dashboards. Um die UI-Seiten zu finden, navigieren Sie zu System-UI > UI-Seiten.

    Diese Funktionalität erfordert Kenntnisse von HTML oder Jelly. Sie können auch einfache AngularJS-Anwendungen mithilfe von UI-Seiten erstellen.

    Das UI-Seitenformular enthält die folgenden Felder:
    Tabelle : 1. UI-Seite
    Feld Beschreibung
    Name Name, über den die Seite über eine URL aufgerufen wird (darf keine Leerzeichen enthalten).
    Anwendung Zeigt den aktuellen Anwendungsbereich an.
    Beschreibung Die Beschreibung der UI-Seite und deren Verwendung.
    Direkt Aktivieren Sie diese Checkbox für eine direkte UI-Seite [sys_ui_page]. Eine direkte UI-Seite enthält kein allgemeines HTML, CSS und keine Skripts. Diese Einstellung erfordert das Hinzufügen von benutzerdefiniertem CSS und JavaScript zur Verwendung auf der Seite.
    HTML Hauptkomponente der Seite, in der Sie festlegen, was gerendert werden soll, wenn die Seite angezeigt wird. Es kann entweder statisches XHTML, dynamisch generierten Inhalt, der als Jelly definiert ist, oder Skripteinbindungen und UI-Makros enthalten.
    Hinweis:
    Wenn GlideRecord/GlideDBQuery anstelle von GlideRecordSecureverwendet wird, wird eine Sicherheitsempfehlungsmeldung angezeigt.
    Client-Skript Fügen Sie clientseitiges JavaScript ein, das im Browser ausgeführt wird, z. B. Funktionen, die über Schaltflächen aufgerufen werden. Es soll alle erforderlichen clientseitigen Verarbeitungen verarbeiten, z. B. das Setzen des Fokus auf ein Feld oder andere interaktive DHTML-Funktionen, nachdem eine Seite geladen wurde.

    Client-Skripts für die UI-Seite werden innerhalb eines <script/> -Tags im Browser bereitgestellt, sodass der Inhalt auf ähnliche Weise innerhalb des HTML-Felds definiert werden kann. Das Feld Client-Skript kann stattdessen verwendet werden, um diese Skripts so zu definieren, dass die Verwaltbarkeit von Jelly und HTML erhalten bleibt.

    Verarbeitungs-Skript Skript, das auf dem Server ausgeführt wird, wenn die Seite gesendet wird. Das ist nützlich, wenn Ihre Seite über ein Formular verfügt, das mit den Tags <g:ui_form/> oder <g:form/> definiert ist.
    Hinweis:
    Wenn GlideRecord/GlideDBQuery anstelle von GlideRecordSecureverwendet wird, wird eine Sicherheitsempfehlungsmeldung angezeigt.
    obsolete-custom-processors
    Hinweis:
    Diese Funktion ist veraltet. Während ältere benutzerdefinierte Prozessoren weiterhin unterstützt werden, ist die Erstellung neuer benutzerdefinierter Prozessoren veraltet. Verwenden Sie stattdessen Scripted REST APIs.
    Zugehörige Listen in der Formularansicht:
    Zugriffssteuerungen Zeigen Sie Zugriffssteuerungen für die UI-Seite an, und konfigurieren Sie sie. Weitere Informationen finden Sie unter Verwenden Sie Zugriffssteuerungen auf UI-Seiten.
    Versionen Zeigt alle Versionen der UI-Seite an. Verwenden Sie diese Liste, um Versionen zu vergleichen oder eine vorherige Version wiederherzustellen.

    Zugriffssteuerung

    Eine UI-Seite kann durch Erstellen einer ACL mit den folgenden Parametern gesichert werden:

    • Typ: ui_page
    • Vorgang: lesen
    • Name: Name der zu schützenden UI-Seite
    • Rolle: Benutzerrolle, die auf den Datensatz zugreifen darf
    Beim Speichern einer neuen UI-Seite werden Sie aufgefordert, eine Rolle für die Zugriffssteuerung zuzuweisen.Rollenauswahl für die Zugriffssteuerung für eine neue UI-Seite.
    Hinweis:
    In der Zugriffssteuerungstabelle wird ein Eintrag mit demselben Namen wie die UI-Seite erstellt.
    Detaillierte Informationen zum Erstellen einer ACL-Regel finden Sie unter Eine ACL-Regel erstellen.

    UI-Seiten mit hohem Risiko

    UI-Seiten gelten mit einem der folgenden Attribute als hohes Risiko:
    • Verwendet GlideRecord oder GlideDBQuery anstelle von GlideRecordSecure.
      Hinweis:
      Dies gilt für HTML- und Verarbeitungsskriptfelder und nicht für Clientskripts.
    • Für ist keine entsprechende ACL konfiguriert.
    • Gibt an, dass es sich um eine öffentliche UI-Seite handelt, und wird in den sys_public -Datensatz eingegeben.
    • Zeigt eine Meldung an, die auf die UI-Seite mit hohem Risiko hinweist.
    • Für Instanzen mit glide.installation.developer ist auf truefestgelegt.
    • Wenn die Ressource benutzerdefinierter Inhalt für eine Kundeninstanz ist.

    Zugriff auf die UI-Seite

    Jede UI-Seite hat eine URL, die aus dem Anwendungsbereich, dem Seitennamen und der Dateierweiterung .do besteht.

    Um zum Beispiel die Seite „glidewindow_example“ auf dem Demo-System anzuzeigen, navigieren Sie zu https://<Instanzname>.service-now.com/glidewindow_example.do. Wenn die Seite Teil einer benutzerdefinierten Anwendung mit dem Namen „example_app“ ist, navigieren Sie stattdessen zu https://<Instanzname>.service-now.com/x_example_app_glidewindow_example.do.

    Sie können einer URL auch zusätzliche Parameter hinzufügen, auf die im HTML-Abschnitt einer Seite als Jelly-Variablen zugegriffen werden kann. Das heißt, wenn Argumente wie folgt an die URL angehängt werden: /my_test_page.do?sysparm_verbose=true erstellt Jelly-Variablen mit dem Namen verbose, auf die wie folgt zugegriffen werden kann:
    <j2:if test="$[!empty(sysparm_verbose)]"> <span>show extra stuff </span> </j2:if >

    Ein allgemeines praktisches Beispiel hierfür ist das Abrufen eines Datenbank-Datensatzes zur Anzeige. Um eine Liste der Rollen eines Benutzers zu erstellen, übergeben Sie einen Parameter mit der sys_id des Benutzers. Rufen Sie die folgende UI-Seite auf, um eine Liste mit Rollen für diesen Benutzer mit Jelly-Code anzuzeigen:

    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>

    Eine Ausnahme ist jedoch der reservierte Variablenname „sys_id“. Diese Variable enthält immer die ID der UI-Seite selbst, unabhängig davon, was in der URL angegeben ist. Ein gängiger Ersatzvariablenname ist „sysparm_id“.

    Verwenden Sie keine URL-Parameter zum Laden von Client-Skripts in UI-Seiten. Das System wertet Skripts, die über URL-Parameter übergeben werden, nicht mehr aus. Wenn Ihre Implementierung von diesem Verhalten abhängt, können Sie die Systemeigenschaft [glide.security.disable_ui_pages_sysparm_client_script] hinzufügen und auf „ false “ setzen, um die Auswertung von URL-Parametern, die Skripts in UI-Seiten übergeben, vorübergehend zuzulassen.

    Verwenden Sie Zugriffssteuerungen auf UI-Seiten

    Zeigen Sie Zugriffssteuerungen direkt über das UI-Seitenformular an, und fügen Sie rollenbasierte Zugriffssteuerungen hinzu, wenn Sie einen UI-Seitendatensatz erstellen oder bearbeiten.

    Vorbereitungen

    Zugriffssteuerungen, die einer vorhandenen UI-Seite hinzugefügt wurden, können durch Öffnen des UI-Seitendatensatzes unter den zugehörigen Links aufgerufen und bearbeitet werden.

    Erforderliche Rolle: security_admin und admin

    Prozedur

    1. Erhöhen Sie auf die Rolle security_admin.
      Weitere Informationen zur Erhöhung von Rollen finden Sie unter Auf eine privilegierte Rolle erweitern.
    2. Navigieren zu Alle > System-UI > UI-Seiten.
    3. Wählen Sie Neu.
    4. Füllen Sie das Formular aus.
      Weitere Informationen zu UI-Feldbeschreibungen finden Sie unter UI-Seiten.
    5. Wählen Sie Absenden oder Speichern.
      Ein Modal wird angezeigt, in dem Sie aufgefordert werden, eine rollenbasierte Zugriffssteuerung für die UI-Seite zu erstellen.Zeigt das modale Fenster für die rollenbasierte Zugriffssteuerung an.
    6. Wählen Sie eine Rolle aus.
    7. Klicken Sie auf OK, um die Rolle zuzuweisen.
      Sie kehren zur Liste der UI-Seiten zurück.
    Fügen Sie Zugriffssteuerungen für eine vorhandene UI-Seite hinzu, bearbeiten Sie sie oder zeigen Sie sie an:
    1. Öffnen Sie eine UI-Seite aus der Tabelle „UI-Seiten“.
    2. Zeigen Sie die Zugriffssteuerungen unter den zugehörigen Listen an.
    3. Wählen Sie Neu, um eine neue Zugriffssteuerung zu erstellen, oder wählen Sie einen vorhandenen Eintrag zur Bearbeitung aus.
      Das Zugriffssteuerungsformular wird geladen. UI-Seitendetails werden angezeigt.
    4. Füllen Sie das Formular aus, und weisen Sie der UI-Seite eine Rolle zu.
      Weitere Informationen zur Zugriffskontrolle finden Sie unter ACL-Regeln erstellen.
    5. Wählen Sie Absenden für eine neue Zugriffskontrolle oder Aktualisieren für Bearbeitungen.
      Hinweis:
      Pro UI-Seite können mehrere Zugriffssteuerungen vorhanden sein.

    Sichere UI-Seiten

    Zugriffskontrollen und zugehörige Sicherheitsmeldungen sind auf UI-Seiten mit hohem Risiko integriert, um die Sicherheit zu erhöhen.

    Auf UI-Seiten mit hohem Risiko wird eine Informationsnachricht angezeigt, um den Kunden darüber zu informieren, der UI-Seite eine rollenbasierte Zugriffssteuerung hinzuzufügen.

    Sicherheitsempfehlungsmeldungen für UI-Seite

    Die Nachricht wird unter den folgenden Bedingungen angezeigt:
    • Wenn eine ACL (Zugriffssteuerungsliste) fehlt
    • Wenn GlideRecord/GlideDBQuery anstelle von GlideRecordSecure in den HTML- oder Verarbeitungsskriptabschnitten verwendet wird . Beispiele für HTML- und Verarbeitungsskripts.
    • Wenn die UI-Seite in sys_publicals öffentlich konfiguriert ist
      Hinweis:
      Öffentliche UI-Seiten, die öffentlich sind oder GlideRecord verwenden, zeigen keine fehlende ACL-Warnung an.
    Weitere Informationen zu UI-Seiten mit hohem Risiko finden Sie unter UI-Seiten.

    Bedingungen, die die Sicherheitsempfehlungsnachricht anzeigen

    Die Nachricht wird unter den folgenden Bedingungen angezeigt:

    • Alle internen Instanzen eliminieren/IJ, wobei glide.installation.developer=true ist.
    • Alle bereichsbezogenen UI-Seitenressourcen des Kunden.
    • Jede benutzerdefinierte UI-Seite, wenn die Eigenschaft glide.script.ui_page.customer_scoped.security_msgs_enabled auf truefestgelegt ist. (Der Standardwert ist true).

    Bedingungen, bei denen die Sicherheitsempfehlungsmeldung nicht angezeigt wird

    Die Nachricht wird unter den folgenden Bedingungen nicht angezeigt:

    • UI-Seite ist öffentlich.
    • UI-Seite befindet sich im globalen Bereich.
    • glide.script.ui_page.customer_scoped.security_msgs_enabled ist auf falsefestgelegt.
    Hinweis:
    Um die rollenbasierte ACL-Erstellungsaufforderung zu deaktivieren, legen Sie die Eigenschaft glide.ui_page.enable_acl_create_ux auf falsefest. Die Eigenschaft ist standardmäßig auf „ true “ festgelegt.

    Verarbeitungsskripts für UI-Seiten

    Wenn Ihre UI-Seite ein Formular enthält (mit dem Tag <g:form>) können Sie das Formular absenden und das Verarbeitungsskript ausführen lassen.

    Das Verarbeitungsskript kann naturgemäß auf Felder im Formular zugreifen. Beispiel: Ihr Formular enthält das Feld 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>
    Sie können über application_sys_idauf das Feld zugreifen:
    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);
    Wichtig:
    Das vorherige Skript kann nur mit globalen Anwendungen verwendet werden.

    Wenn Sie die UI-Seite für ein Dialogfeld verwenden, können Sie mit dem obigen Code auch die aktuellste URL im Stack referenzieren und die Antwort an diesen Speicherort senden. Dies ist nützlich, wenn Sie möchten, dass das Verarbeitungsskript des Dialogfelds etwas aktualisiert, und dann der Bildschirm, der das Dialogfeld aufgerufen hat, erneut angezeigt werden soll.