Funktionsfeld

  • Freigeben Version: Xanadu
  • Aktualisiert 1. August 2024
  • 9 Minuten Lesedauer
  • Sie können Funktionsfelder und Skripts auf der Now Platform erstellen, um gängige Datenbanktransformationen und Datenbankberechnungen durchzuführen.

    Reguläre Felder speichern einen Wert in der Datenbank. Anstatt Daten zu speichern, zeigt ein Funktionsfeld die Ergebnisse einer Datenbankabfrage an. Funktionsfelder haben keine zugeordnete Datenbankspalte. Stattdessen generieren Funktionsfelder einen Wert auf Basis einfacher Berechnungen unter Rückgriff auf andere Felder und Konstanten. Sie können wie alle anderen Felder im System verwendet werden: in Formularen, Listen, Abfragebedingungen, Berichten usw.

    Warnung:
    Ein Funktionsfeld, das auf ein anderes Funktionsfeld in der Funktion verweist, führt zu einem Fehler. Funktionsfelder enthalten keine Daten und werten sie auch nicht zur Laufzeit aus.

    Anwendungsfall

    Sie möchten alle Incidents mit einer wahrscheinlich nutzlosen Kurzbeschreibung von weniger als 10 Zeichen identifizieren.

    Anstatt alle Datensätze abzufragen, um zu bestimmen, welcher Datensatz ein bestimmtes Kriterium erfüllt, erstellen Sie ein Funktionsfeld oder ein Funktionsskript, das nur die Datensätze abruft, die die Kriterien erfüllen.

    Bei einfachen Berechnungen ist die Verwendung eines Funktionsfelds oder Funktionsskripts vorteilhafter als die Speicherung eines berechneten Werts. Der Wert wird immer beim Abrufen berechnet. Ein weiterer Vorteil der Verwendung von Funktionsfeldern besteht darin, dass die Transformation vom Datenbankserver und nicht vom Anwendungsknoten durchgeführt wird.

    Unterschiede zwischen Funktionsfeldern und berechneten Feldern

    Die Werte der berechneten Felder werden in der Datenbank gespeichert. Die Werte von Funktionsfeldern oder Funktionsskripts werden nicht in der Datenbank gespeichert, sondern zum Zeitpunkt des Abrufs berechnet. Funktionsfeldwerte sind immer aktuell.

    Unterschiede zwischen Funktionsfeldern und Business Rules

    Verwenden Sie Funktionsfelder oder Skripts, wenn die Geschäftslogik auf einer einfachen Transformation eines oder mehrerer vorhandener Felder basiert. Mit Funktionsfeldern und Skripts können Sie Geschäftslogik implementieren, ohne das Ergebnis einer Transformation zu speichern und zu verwalten.

    Unterschiede zwischen Funktionsfeldern und Filtern, Abfragezeichenfolgen sowie Rhino

    Statt Rhino zur Durchführung von Zeichenfolgentransformationen aufzurufen, können Sie die Transformationen von einem Funktionsfeld oder einem Funktionsskript durchführen lassen. Funktionsfelder und Funktionsskripts sind effizienter und führen zu aktuellen Werten, die nicht gespeichert oder verwaltet werden müssen.

    Einschränkungen von Funktionsfeldern

    Da Funktionsfeldberechnungen nicht in der Datenbank gespeichert werden, sind einige Vorgänge nicht relevant.
    • Funktionsfelder können nicht direkt geprüft oder indiziert werden.
      Hinweis:
      Damit ein Funktionsfeld wie ein reguläres Feld indiziert wird, müssen die einzelnen Felder indiziert sein, die von der Funktion verwendet werden. Oder stellen Sie für eine optimale Leistung sicher, dass ein zusammengesetzter Index vorhanden ist, der alle in der Funktion verwendeten Felder enthält.
    • Funktionsfelder können nicht verschlüsselt werden, da Funktionsfeldwerte niemals in der Datenbank gespeichert werden.
    • Funktionsfelder können nicht in reguläre Felder konvertiert werden. Ebenso können reguläre Felder nicht in Funktionsfelder konvertiert werden.
    • Funktionsfelder, die Sie in der Reporting-UI erstellen, unterstützen kein Dot-Walking. Weitere Informationen finden Sie unter Funktionsfelder in der Berichterstellung konfigurieren.
    • Die Sicherheit wird für die Komponenten der Funktion und für den berechneten Wert des Felds ausgewertet. Bei Verwendung in Visualisierungen werden Abschnitte, die Informationen enthalten, die der Benutzer nicht anzeigen darf, für den Benutzer ausgeblendet.
    • Feldfunktionsnamen müssen eindeutig sein.

    Plattformfähigkeiten definieren

    Plattformfähigkeiten können auf zwei Arten definiert werden:
    1. Verwenden Sie die folgenden Anwendungsprogrammierschnittstellen (APIs), um Skriptfunktionen zu erstellen und zu verwenden.
      Tabelle : 1. Funktions-APIs
      APIs Beschreibung
      Scoped GlideDBFunctionBuilder Konstruiert die Funktion zur Durchführung eines SQL-Vorgangs.
      GlideRecord – addFunction(Object function) Wendet die Funktion auf ein Objekt des Typs „GlideRecord“ an.
      GlideDBFunctionCaseBuilder - Global Erstellen Sie Fallbeschreibungen.
    2. Erstellen Sie ein Feld, das die Funktionsdefinition enthält (siehe folgendes Beispiel).

      Definition von Funktionsfeldern

      Aktivieren Sie im Formular „Wörterbucheintrag“ [sys_dictionary] das Kontrollkästchen Funktionsfeld. Diese Aktion gibt an, dass das Feld eine Funktion ausführt, anstatt einen Wert zu speichern.

    GlideFunktionsvorgänge

    Funktionsfelder können mit der Glide-Funktion die folgenden Vorgänge ausführen: <operation> Syntax. Wenn Sie ein Feld als Argument angeben, können Sie per Dot-Walk zu zugehörigen Feldern wechseln. Beispiel: cmdb_ci.name.
    Hinweis:
    Der Funktionsfeldtyp muss mit dem Rückgabetyp der Glide-Funktion kompatibel sein. Zum Beispiel Ganzzahl, Langer Integer, Zeichenfolge usw. Wenn der zurückgegebene Typ nicht in den Wörterbuchtyp konvertiert werden kann, erhalten Sie Ausnahmen.
    Tabelle : 2. Funktionsfeldvorgänge
    Vorgang Beschreibung Beispiel
    add() Verwendet zwei Zahlenfelder als Eingabe, addiert sie und gibt die Ergebnisse als Feldwert zurück.

    Diese Funktion akzeptiert auch numerische Werte für beide Eingaben. Platzieren Sie numerische Werte in einfachen oder doppelten Anführungszeichen.

    glidefunction:add(child_incidents, parent_incident)

    Gibt 6 zurück, wenn der Incident fünf untergeordnete Incidents und einen übergeordneten Incident aufweist.

    Mögliche Rückgabetypen: Dezimalzahl, Gleitkommazahl, große ganze Zahl, ganze Zahl

    zusammenfügen () Verwendet eine beliebige Anzahl von durch Kommas getrennten Feldern als Eingabe und gibt den ersten nicht leeren Wert zurück. glidefunction:coalesce(closed_at, resolved_at, sys_updated_on)

    Wenn der Wert von closed_at leer ist, gibt die Funktion den Wert von resolved_at zurück. Wenn der Wert von resolved_at ebenfalls leer ist, gibt die Funktion den Wert sys_updated_on zurück.

    Rückgabetyp: Text

    concat() Verwendet eine beliebige Anzahl kommagetrennter Felder und Konstanten als Eingabe, verkettet die Eingabe und gibt eine einzige Zeichenfolge als Feldwert zurück. glidefunction:concat(incident_number, '/', short_description)

    Gibt „INC0001 / Mein Client benötigt einen neuen Laptop“ zurück. wenn der Wert des Nummernfelds „INC0001“ und die short_description „Mein Client benötigt einen neuen Laptop“ lautet.

    Rückgabetyp: Text

    datediff() Verwendet zwei Datum/Uhrzeit-Felder als Eingabe, berechnet die Differenz zwischen den Datumsangaben in Tagen, Minuten und Sekunden und gibt die Ergebnisse als Wert für das Feld „Dauer“ zurück. glidefunction:datediff(closed_at, sys_created_on)

    Gibt die Dauer eines incident vom Erstellungsdatum bis zum Abschlussdatum zurück. Beispielergebnis: 10 Tage, 8 Stunden, 23 Minuten und 11 Sekunden

    Rückgabetyp: Dauer

    dayofweek() Verwendet 2 Argumente: Ein Datumsfeld und entweder die Konstante „1“ (Woche beginnt Sonntag) oder „2“ (Woche beginnt Montag). Gibt die Ergebnisse als Ganzzahlwert zurück, der den Wochentag darstellt.

    Die Funktion „dayofweek()“ verwendet UTC-Daten, passt die Vergleichswerte jedoch basierend auf der Zeitzone der Instanz an.

    glidefunction:dayofweek(resolved_at, '1').

    Wenn resolved_at an einem Mittwoch auftritt, wird 4 zurückgegeben, wenn die Ganzzahl 1 ist, und 3 zurückgegeben, wenn die Ganzzahl 2 ist.

    Rückgabetyp: Ganzzahl

    Abstand_Kugel () Verwendet zwei Standorte und gibt die Entfernung zwischen ihnen in Zählern zurück.
    • glidefunction:distance_sphere('-0.189937', '51.473584', '80.206458', '25.767242')

      Gibt die Entfernung zwischen den beiden Sätzen von Längengrad- und Breitengradpaaren zurück.

    • glidefunction:distance_sphere(u_location, '80.206458', '25.767242')

      Gibt die Entfernung zwischen dem Geopunktfeld „u_location“ und den Längen- und Breitengradkoordinaten zurück.

    • glidefunction:distance_sphere(location1, location2)

      Gibt die Entfernung zwischen den Geopunktfeldern „location1“ und „location2“ zurück.

    • glidefunction:divide(distance_sphere(location1, '-0.189937', '51.473584'), '1000')

      Gibt die Entfernung zwischen dem Geopunktfeld „location1“ und London in Kilometern zurück.

    Rückgabetyp: Dezimalzahl

    divide() Verwendet zwei Zahlenfelder als Eingabe, dividiert das erste durch das zweite und gibt das Ergebnis als Feldwert zurück.

    Diese Funktion akzeptiert auch numerische Werte für beide Eingaben. Platzieren Sie numerische Werte in einfachen oder doppelten Anführungszeichen.

    glidefunction:divide(u_num2,u_num1)

    Gibt 5 zurück, wenn num2 = 10 und num1 = 2.

    Mögliche Rückgabetypen: Dezimalzahl, Gleitkommazahl, große ganze Zahl, ganze Zahl

    abrufen_Breite () Nimmt eine beliebige Geopunktspalte oder ein numerisches Feld oder eine numerische Konstante und konvertiert sie in einen gültigen Breitengradwert innerhalb des Bereichs [-90,90].
    • glidefunction:get_latitude(u_geo_point_field) Gibt den Breitengradwert im Feld „u_geo_point_field“ zurück.
    • glidefunction:get_latitude(u_numerical_column)Gibt den Breitengradwert in „u_numerical_column“ innerhalb des Bereichs [-90,90] zurück.
    • glidefunction:get_latitude('305.767242') Gibt den Breitengradwert -54.232758 zurück.

    Rückgabetyp: Gleitkommazahl

    abrufen_Längengrad () Nimmt eine beliebige Geopunktspalte oder ein numerisches Feld oder eine numerische Konstante und konvertiert sie in einen gültigen Längengradwert innerhalb des Bereichs [-179,180].
    • glidefunction:get_longature(u_geo_point_field) gibt den Längengradwert im Feld „u_geo_point_field“ zurück.
    • glidefunction:get_longitude(u_numerical_column)Gibt den Längengradwert in „u_numerical_column“ innerhalb des Bereichs [-179,180] zurück.
    • glidefunction:get_longitud('380.206458') Gibt einen Längengradwert von 20,206458 zurück.

    Rückgabetyp: Gleitkommazahl

    Größte () Verwendet zwei oder mehr Werte als Eingabe und gibt den größten Wert der Liste der Argumente zurück. GlideFunktion:Größte(10,100,1000)

    Gibt 1000 zurück

    Mögliche numerische Rückgabetypen: Dezimalzahl, Gleitkommazahl, große ganze Zahl, ganze Zahl

    Diese Funktion funktioniert auch mit Datums- und Zeichenfolgenfeldern.

    mindestens () Verwendet zwei oder mehr Werte als Eingabe und gibt den niedrigsten Wert der Liste der Argumente zurück. GlideFunktion:least(10,100,1000)

    Gibt 10 zurück

    Mögliche numerische Rückgabetypen: Dezimalzahl, Gleitkommazahl, große ganze Zahl, ganze Zahl

    Diese Funktion funktioniert auch mit Datums- und Zeichenfolgenfeldern.

    length() Verwendet ein Zeichenfolgenfeld als Eingabe, berechnet die Feldlänge in Zeichen und gibt die Ergebnisse als Feldwert zurück. glidefunction:length(short_description)

    Gibt 37 zurück, wenn short_description = „Diese Anwendung führt einen Test durch“

    Rückgabetyp: Ganzzahl

    multiply() Verwendet zwei Zahlenfelder als Eingabe, führt die Multiplikation durch und gibt die Ergebnisse als Feldwert zurück.

    Diese Funktion akzeptiert auch numerische Werte für beide Eingaben. Platzieren Sie numerische Werte in einfachen oder doppelten Anführungszeichen.

    glidefunction:multiply(u_num1, u_num2)

    Gibt 48 zurück, wenn num1 = 8 und num_2 = 6.

    Mögliche Rückgabetypen: Dezimalzahl, Gleitkommazahl, große ganze Zahl, ganze Zahl

    Position () Verwendet zwei Textfelder oder zwei Textfelder und eine ganze Zahl als Eingabe. Eines oder beide Textfelder können auch Zeichenfolgen sein.
    1. gibt die Position des ersten Vorkommens der Zeichenfolge des ersten Textfelds im zweiten zurück.
    2. Wenn eine ganze Zahl angegeben ist, gibt diese Funktion die Position des zweiten Textfelds nach der Position der ganzen Zahl zurück.

    Gibt 0 zurück, wenn das erste Textfeld im zweiten nicht vorhanden ist (nach der Position der ganzen Zahl, falls angegeben).

    • glidefunction:position('e',short_description)

      Wenn der Wert des Felds short_description „Dieser Computer wird aktualisiert“ lautet, wird 12 zurückgegeben.

    • glidefunction:position('e',short_description,'14')

      Wenn der Wert des Felds short_description „Dieser Computer wird aktualisiert“ lautet, wird 19 zurückgegeben.

    Rückgabetyp: Ganzzahl

    Teilzeichenfolge () Verwendet ein Textfeld und zwei ganze Zahlen als Eingabe. gibt die erste Instanz einer Zeichenfolge zurück, die an der Position der ersten ganzen Zahl beginnt und die Länge der zweiten hat. glidefunction:substring(short_description, '7', '2')

    Wenn der Wert des Felds „short_description“ „Wir gehen zum Store“ ist, wird „go“ zurückgegeben.

    Rückgabetyp: Text

    subtract() Verwendet zwei Zahlenfelder als Eingabe, subtrahiert das zweite vom ersten und gibt das Ergebnis als Feldwert zurück.

    Diese Funktion akzeptiert auch numerische Werte für beide Eingaben. Platzieren Sie numerische Werte in einfachen oder doppelten Anführungszeichen.

    glidefunction:subtract(u_num1, u_num2)

    Gibt 2 zurück, wenn num1 = 8 und num_2 = 6.

    Mögliche Rückgabetypen: Dezimalzahl, Gleitkommazahl, große ganze Zahl, ganze Zahl

    to_geopoint () Übernimmt Breiten- und Längengradspalten oder numerische Werte und konvertiert sie in eine Geopunktspalte.
    • glidefunction:to_geopoint(u_long_column, u_lat_column)

      Konvertiert die Spalten für Längen- und Breitengrad in eine einzige geo_point-Spalte.

    • glidefunction:to_geopoint('80.206458','25.767242')

      Gibt ein Feld „geo_point“ mit den Koordinaten „(80.206458, 25.767242)“ zurück.

    Rückgabetyp: Geopunkt

    Funktionsfelder zur Ausführung von Datenbankfunktionen erstellen

    Sie können ein Feld erstellen, in dem das Ergebnis einer Datenbankfunktion angezeigt wird, beispielsweise einer mathematischen Berechnung, einer Feldlängenberechnung oder einer Wochentagberechnung. Testen Sie in einer Test- und Entwicklungsumgebungsinstanz, bevor Sie in einer Produktionsinstanz bereitstellen.

    Vorbereitungen

    Erforderliche Rolle: „personalize_dictionary“ oder „admin“

    Prozedur

    1. Navigieren zu Alle > Systemdefinition > Lexikonan.
    2. Klicken Sie auf Neu.
    3. Wählen Sie Funktionsfeld aus.
    4. Füllen Sie die unten aufgeführten Formularfelder aus.
      Tabelle : 3. Felder für Funktionsfelder
      Feld Beschreibung
      Tabelle Gibt die Tabelle an, der das Funktionsfeld hinzugefügt werden soll.
      Typ Gibt den Typ des Felds an: Zeichenfolge, Nummer, Datum usw.
      Spaltenbezeichnung Definiert die Bezeichnung für die Spalte.
      Spaltenname Definiert den Namen der Spalte. Wird automatisch basierend auf Spaltenbezeichnung erstellt.
      Max. Länge Definiert die maximale Länge des Rückgabewerts.
      Funktionsfeld Bei Auswahl dieser Option wird ein Feld erstellt, in dem die Ergebnisse einer Datenbankfunktion angezeigt werden, z. B. mathematische Operationen, Feldlängenberechnungen oder Wochentagberechnungen.

      Wenn der neue Funktionssatz gespeichert ist, können Sie die Checkbox nicht deaktivieren, um das Feld zu einem regulären Feld zu machen.

      Funktionsdefinition Definiert die Funktion, die das Feld ausführt.

      Beginnt mit glidefunction:, gefolgt von der auszuführenden Operation (z. B. concat), gefolgt von Funktionsparametern. Konstanten müssen in einfache Anführungszeichen gesetzt werden.

      Mit der folgenden Funktionsdefinition wird beispielsweise ein Feld erstellt, in dem die Kurzbeschreibung gefolgt von einem Leerzeichen und dem Namen des Anrufers angezeigt wird:

      glidefunction:concat(short_description, ' ', caller_id.name)

      Hinweis:
      Funktionsparameter unterstützen das Dot-Walking. Weitere Informationen finden Sie unter Dot-walking to data in related tables.
    5. Klicken Sie auf Absenden.
      Die Tabelle „Dictionary-Eintrag“ [sys_dictionary] wird wieder angezeigt.
    6. Navigieren Sie zu der Tabelle, der Sie das Funktionsfeld hinzugefügt haben.
    7. Fügen Sie das Funktionsfeld der Liste hinzu.
      Weitere Informationen finden Sie unter Configure items on forms or in lists using a list collector.

    Ergebnisse

    Das Funktionsfeld kann wie jedes andere Feld verwendet werden. Beispielsweise können Sie es einem Formular hinzufügen oder in einem Filter oder im Condition Builder verwenden.

    Ist die Funktionsdefinition ungültig, wird anstelle des erwarteten Werts die Nachricht Ungültige Funktion angezeigt, wenn das Funktionsfeld ein Zeichenfolgenfeld ist. Bei anderen Feldtypen wird ein leerer Wert angezeigt.