Direkt zum Hauptinhalt

Lösungsskript schreiben

Ziel​

Ein Stück Logik einmal schreiben – „liegt diese Ausgabe über dem Genehmigungslimit“, „eine Referenz so formatieren, wie dieser Kunde sie schreibt“ – und es aus jeder Geschäftsregel und jedem Befehl aufrufen, die es brauchen, statt dieselben Zeilen in jede einzelne einzufügen.

Voraussetzungen​

  • Sie sind als Ersteller angemeldet, und eine Lösung sowie eine Umgebung sind ausgewählt.

Schritte​

  1. Öffnen Sie Ihre Lösung, und wählen Sie Skripte.

  2. Wählen Sie Neu. Der Designer öffnet sich mit einem kleinen Beispiel darin.

  3. Geben Sie ihm einen Anzeigenamen. Der Modulpfad füllt sich während der Eingabe selbst aus – das ist der Name, den andere Skripte importieren, und er lässt sich nach dem Speichern nicht mehr ändern.

  4. Schreiben Sie Ihre Hilfsfunktion, und exportieren Sie sie:

    func isOverLimit(amount: int, limit: int): bool {
    return amount > limit;
    }

    export isOverLimit;
  5. Wählen Sie Speichern.

Unter dem Namensfeld zeigt der Designer die genaue Zeile zum Kopieren: import 'par_expense_helpers';

Aus einer Geschäftsregel aufrufen​

Sie müssen sich den Modulpfad nicht merken. Öffnen Sie im Geschäftsregel-Designer rechts den Bereich Lösungsskripte: Er listet jedes Skript der Umgebung auf, und Importieren schreibt die Zeile für Sie an den Anfang Ihrer Regel. Ein Skript, das die Regel bereits importiert, ist als Importiert gekennzeichnet, statt doppelt angeboten zu werden.

Hat die Umgebung noch keine Skripte, sagt der Bereich das und bietet Neues Skript an, das den Skript-Designer in einem neuen Tab öffnet – Ihre nicht gespeicherte Regel bleibt, wo sie ist.

Die geschriebene Zeile ist dieselbe, die Sie selbst eintippen würden. Alles, was das Skript exportiert, steht dann so zur Verfügung, als hätten Sie es dort geschrieben:

import 'par_expense_helpers';

setVisible('par_approval', isOverLimit(getValue('par_amount'), 100));

Sie können stattdessen auch einen einzelnen Namen importieren, wenn Sie ausdrücklich angeben möchten, was Sie verwenden:

import isOverLimit from 'par_expense_helpers';

Derselbe Import funktioniert im Skript eines Befehls. Ein Skript gehört zur Lösung, nicht zu einer Tabelle; eine Regel für Invoice kann also eine für Expense geschriebene Hilfsfunktion aufrufen.

export ist nicht optional​

Ein Skript stellt nur das bereit, was es exportiert. Eine Hilfsfunktion, deren Export Sie vergessen, ist für alles unsichtbar, was das Skript importiert – daher verweigert der Designer das Speichern eines Skripts, das nichts exportiert, und sagt das auch. Diese Ablehnung ist Absicht: Ohne sie würde das Skript anstandslos gespeichert, und der Fehler würde ganz woanders auftauchen, als „function not found“ in einer Regel, die Sie gerade nicht ansehen.

Sie können mehrere Namen aus einem Skript exportieren:

export isOverLimit, formatReference;

Was mitreist – und was passiert, wenn nicht​

Ein Skript ist eine Lösungskomponente. Es wird mit seiner Lösung exportiert und vor den Regeln installiert, die es importieren, sodass ein Paket immer in einer funktionierenden Reihenfolge ankommt.

Importiert eine Regel ein Skript, das die Umgebung nicht hat – weil es gelöscht wurde oder weil die Lösung, die es bereitgestellt hat, nicht importiert wurde –, schlägt die Regel unter Nennung des Namens fehl, sowohl im Editor beim Schreiben als auch zur Laufzeit. Nichts schlägt stillschweigend fehl.

Fehlerbehebung​

„Script … exports nothing.“ Fügen Sie eine export-Zeile hinzu, die die Funktionen nennt, die Sie teilen möchten.

„BS Lang script is invalid: line …“ Der Quelltext lässt sich nicht parsen. Der Editor unterstreicht das Problem, und die Problemliste darunter nennt jedes einzelne; wählen Sie eine Zeile, um zur entsprechenden Codezeile zu springen.

Eine Regel meldet, dass meine Funktion nicht gefunden wird. Drei Dinge sind der Reihe nach zu prüfen: Die Regel hat die import-Zeile; der Modulpfad darin stimmt genau mit dem des Skripts überein; und das Skript exportiert diese Funktion unter ihrem Namen. Der Bereich Lösungsskripte schreibt die ersten beiden für Sie.

Der Bereich ist leer, obwohl ich weiß, dass es Skripte gibt. Die Liste ist die der Umgebung; ein in einem anderen Browsertab gespeichertes Skript erscheint, nachdem Sie die Regel erneut geöffnet haben.

Ich kann ein Skript nicht umbenennen. Richtig – den Modulpfad nennt jede importierende Regel; eine Umbenennung würde sie alle auf einmal und stillschweigend kaputt machen. Erstellen Sie das neue Skript, und stellen Sie das alte außer Dienst.

Verwandt​