Einführung in den App Builder - Anhang B: Die Geschäftsschicht im App Builder (Fortgeschritten)
Dies ist der zweite Anhang der Einführung in den App Builder Tutorialreihe. Diese Anhänge ergänzen die Lektionen der Reihe und bieten detailliertere Informationen zu den eingeführten Konzepten.
In dieser Lektion werden wir die Geschäftsschicht des App Builders weiter erkunden, den Bereich, in dem wir Geschäftsobjekte oder Regeln erstellen.
Vereinigungen
Joins, die in Lektion 7 eingeführt wurden, werden verwendet, wenn wir mit Regeln arbeiten, die Daten aus mehr als einer Tabelle in der Datenschicht abrufen. Sie kombinieren Daten horizontal, indem sie Spalten aus einer zweiten Tabelle neben den Spalten der ersten hinzufügen.
Vereinigungen funktionieren anders: Anstatt Spalten hinzuzufügen, stapeln sie Zeilen. Eine Vereinigung fügt die Ergebnisse einer Abfrage oben auf eine andere hinzu und erzeugt eine kombinierte Liste von Datensätzen, die aus mehr als einer Tabelle stammen. Damit eine Vereinigung funktioniert, müssen beide Abfragen mindestens eine Spalte mit demselben Namen enthalten, da der App Builder diese gemeinsame Spalte als Grundlage für das Stapeln der Ergebnisse verwendet. Deshalb können wir die Country-Spalten aus unseren Customer- und Supplier-Tabellen direkt kombinieren: Beide Spalten haben denselben Namen.
Hinweis
Wenn Sie Spalten mit unterschiedlichen Namen kombinieren möchten, können Sie eine Unterabfrage mit einem Alias verwenden, um eine von ihnen umzubenennen, sodass beide Namen übereinstimmen. Darüber hinaus, wenn die Datenformate zwischen den beiden Spalten unterschiedlich sind, können Sie sie in einen gemeinsamen Datentyp umwandeln, um sicherzustellen, dass die Vereinigung erfolgreich ist.
Um zu demonstrieren, wie eine Vereinigung funktioniert, erstellen wir manuell eine Vereinigung, die alle Länder zeigt, die in der Northwinds-Datenquelle existieren. Es gibt zwei Tabellen, Supplier und Customer, die eine Spalte namens Country enthalten, also werden wir die Einträge aus beiden kombinieren.
-
In App Workbench > Rules, klicken Sie auf + Regel.
-
Wenn der Bildschirm zur Regel Erstellung erscheint:
-
Geben Sie im Feld Name Supplier (Länder für Supplier und Customer) ein.
-
Wählen Sie im Feld Zweck Business Object aus.
-
Stellen Sie sicher, dass Lieferant im Feld Ziel ausgewählt ist.
-
Klicken Sie auf Erstellen.
-
-
Der App Builder erstellt die Regel. Standardmäßig fügt er die Zieltabelle hinzu und wählt deren Primärschlüssel aus. In dieser Regel interessieren wir uns jedoch nur für die in den Tabellen vorhandenen Länder, also deaktivieren Sie SupplierID, wählen Sie die Spalte Land aus und markieren Sie sie als Primärschlüssel.
-
Wir müssen die andere Tabelle hinzufügen, die Informationen zu Ländern enthält, also klicken Sie auf + Tabellen.
-
Suchen Sie die Tabelle Kunde und klicken Sie auf Hinzufügen. Der App Builder fügt die Tabelle Kunde hinzu, und Sie können sie im Tab Tabellen neben Lieferant sehen.
-
Gehen Sie zum Tab Verknüpfungen.
-
Der App Builder hat eine Verknüpfung erstellt, aber passen Sie sie an, um den gewünschten Typ zu erhalten. Stellen Sie sicher, dass Lieferant im Feld Links ausgewählt ist und dass im Feld Typ Union steht.
-
Klicken Sie auf den Tab SQL, um die Syntax Ihrer Union zu sehen:

-
Um Ihre Ergebnisse zu sehen, klicken Sie auf die Schaltfläche Ergebnisse im Regel-Panel.
-
Beachten Sie, dass die Ergebnisse doppelte Länder enthalten. Das ist zu erwarten: Mehrere Kunden und Lieferanten sind in denselben Regionen ansässig, sodass jedes Land einmal für jeden Datensatz in jeder Tabelle erscheint. Um eine saubere, eindeutige Liste von Ländern zu erstellen, verwenden wir die Schaltfläche Select Distinct.
-
Navigieren Sie zurück zum Regel-Builder.
-
Klicken Sie im Regel-Panel auf Mehr > Randfall. Der Dialog Randfall-Einstellungen öffnet sich. Dieser Dialog bietet erweiterte Steuerung über Ihre Regel. Siehe Erweiterte Optionen im App-Workbench-Regel-Tab für eine vollständige Beschreibung aller verfügbaren Optionen.
-
Aktivieren Sie das Kontrollkästchen Select Distinct, um redundante Zeilen aus den Ergebnissen zu entfernen und sicherzustellen, dass jeder Datensatz in der Liste eindeutig ist. Klicken Sie auf Speichern.
-
Klicken Sie erneut auf die Schaltfläche Ergebnisse. Die Regel gibt jetzt eine eindeutige Liste aller Länder zurück, die in den Tabellen Kunde und Lieferant vertreten sind.
Übungszeit: Verwenden Sie Ihre Union-Regel als Listensteuerung
Jetzt setzen wir Ihre neue Union-Regel in die Praxis um. Navigieren Sie zu den Popup-Seiten Kunde und Lieferant und ändern Sie den Steuerungstyp des Feldes Land in Liste. Wählen Sie im Tab Listenoptionen das Union-Geschäftsobjekt aus, das Sie gerade erstellt haben, und setzen Sie sowohl den Schlüssel als auch den Titel auf die Spalte Land.
CRUD-Regeln
Wir haben CRUD-Regeln in Lektion 7 eingeführt, aber jetzt schauen wir uns diese genauer an.
Das Akronym CRUD steht für "Erstellen, Lesen, Aktualisieren, Löschen". Das bedeutet, dass CRUD-Regeln von App Builder-Entwicklern verwendet werden, um Datensätze aus den Tabellen in der Datenquelle einzufügen, abzurufen, zu ändern oder zu löschen.
Zielschicht: Geschäft vs. Daten
Wenn Sie eine CRUD-Regel erstellen, müssen Sie eine Zielschicht auswählen: entweder die Geschäfts- oder die Datenschicht. Diese Wahl ist entscheidend und hat erhebliche Auswirkungen.
Die Geschäfts- schicht anzusprechen ist der empfohlene Ansatz für die meisten Operationen. Wenn Ihre CRUD-Regel die Geschäftsschicht (z. B. das Bestell- (Quelle)-Geschäftsobjekt) anvisiert, verhält sie sich wie ein Benutzer, der mit der Anwendung interagiert. Sie löst alle intrinsischen Ereignisse (Speichern, Aktualisieren usw.) aus, die mit diesem Geschäftsobjekt verbunden sind. Das bedeutet, dass alle Ihre konfigurierten Validierungsregeln, benutzerdefinierten Aktionen und Audit-Lite-Tracking automatisch ausgeführt werden. Dieser Ansatz gewährleistet die Datenintegrität und Konsistenz mit der Logik Ihrer Anwendung. Er ermöglicht es Ihnen auch, Handler für Erfolg, Misserfolg und Rückrollungen für das Ereignis zu verwenden.
Die Datenschicht anzusprechen umgeht alle Geschäftslogik. Wenn Sie die Datenschicht (z. B. die Bestell-Tabelle) anvisieren, interagiert Ihre Regel direkt mit der Datenbank. Sie löst keine intrinsischen Ereignisse, Validierungen oder Audit-Tracking aus, die auf dem Geschäftsobjekt konfiguriert sind. Dies ist ein "Hintertür"-Ansatz, der nützlich ist für leistungsstarke Bulk-Operationen, bei denen Sie absichtlich die Geschäftslogik umgehen möchten.
Sie können diesen Unterschied visuell im visuellen Workflow sehen; eine Regel, die auf die Geschäftsebene abzielt, zeigt Unterprozesse für ihre Ereignislogik, während eine, die auf die Datenebene abzielt, dies nicht tut.
Hinweis
Der App Builder unterstützt auch XP CRUD-Regeln, die spezialisierte Regeln zum Schreiben von Daten zwischen zwei verschiedenen Datenquellen sind. Diese Regeln durchlaufen immer die Geschäftsebene, um sicherzustellen, dass alle Logik angewendet wird. Siehe CRUD (Regel) für mehr.
CRUD-Aktualisierung
Zuerst sehen wir uns an, wie man eine CRUD-Aktualisierungsregel erstellt. Das bedeutet, vorhandene Datensätze in einer Tabelle zu ändern. Um dies zu demonstrieren, erstellen wir eine Regel, die alle Mengen der bestellten Produkte erhöht.
-
Gehen Sie zu App Workbench > Regeln, und klicken Sie auf + Regel.
-
Geben Sie im Feld Name
OrderDetail (Menge + 1)ein. -
Wählen Sie im Feld Zweck CRUD aus.
-
Wählen Sie im Feld Aktion Aktualisieren aus.
-
Wählen Sie unter Zielschicht Datenebene aus. (Für dieses einfache Massenupdate werden wir die Geschäftslogik umgehen).
-
Wählen Sie im Feld Ziel OrderDetail aus.
-
Klicken Sie auf Erstellen. Der App Builder benötigt einige Sekunden, um die Regel zu erstellen.
-
Im Tab Tabellen wird die OrderDetail-Tabelle angezeigt, mit ihrem Primärschlüssel OrderDetailID, der ausgewählt ist. Wählen Sie auch die Spalte Menge aus, indem Sie das Kontrollkästchen anklicken.
-
Wir fügen eine neue Spalte mit einem Alias hinzu, um uns zu helfen, zu visualisieren, dass die Regel funktioniert. Gehen Sie zum Tab Spalten und klicken Sie auf + Spalte. Wenn der Dialog Spalte - Spalte hinzufügen geöffnet wird, geben Sie die folgenden Informationen ein:
-
Geben Sie im Feld Spalte oder Ausdruck
OD.Quantity + 1ein. -
Geben Sie im Feld Alias einen lesbaren Namen ein. Wir verwenden
QuantityPlus. -
Wählen Sie im Feld Ziel Menge aus. Dies sagt dem App Builder, dass das Ergebnis dieses Ausdrucks in die Spalte Menge geschrieben werden soll.
-
Klicken Sie auf Speichern.
-
-
Im Tab Spalten sehen Sie jetzt sowohl Menge als auch QuantityPlus. Die ursprüngliche Spalte OD.Quantity wird standardmäßig ebenfalls auf Menge abzielen. Wir müssen sie abwählen, um Mehrdeutigkeiten zu vermeiden:
-
Finden Sie die OD.Quantity-Zeile in der Spalten-Liste.
-
Klicken Sie auf das Ziel-Dropdown. Ein X-Button erscheint daneben. Klicken Sie darauf, um die Spalte nicht mehr zuzuordnen.
Dies stellt sicher, dass nur unser QuantityPlus-Ausdruck verwendet wird, um die Quantity-Spalte zu aktualisieren. Wenn beide zugeordnet wären, würde der mit dem höheren Index "gewinnen", was zu unvorhersehbarem Verhalten führen könnte.
-
-
Die Regel ist bereit. Klicken Sie im Regel-Panel auf das Ergebnisse-Panel, um zu sehen, wie sie funktioniert. Beachten Sie, dass die zusätzliche Spalte, die Sie hinzugefügt haben, alle Mengen um eins erhöht:

Regel kopieren
Überlegen Sie, wie Sie eine CRUD-Aktualisierungsregel erstellen würden, die der oben erstellten ähnlich ist, jedoch mit dem gegenteiligen Effekt, d.h. eine Regel, die alle Einträge in der Quantity-Spalte der OrderDetail-Tabelle um eins verringert. Anstatt diese Regel von Grund auf neu zu erstellen, verwenden wir jedoch die Kopieren Regel-Funktion von App Builder, die eine vorhandene Regel dupliziert, sodass Sie sie als Ausgangspunkt verwenden können, was Zeit spart, wenn Sie Regeln erstellen, die denen ähneln, die Sie bereits erstellt haben.
-
Gehen Sie zu App Workbench > Regeln, suchen Sie die Regel
OrderDetail (Quantity + 1)und klicken Sie auf Mehr > Regel kopieren. -
Klicken Sie auf Kopieren.
-
App Builder erstellt die neue Regel und benennt sie
OrderDetail (Quantity + 1) (Neu). Sie werden direkt zu ihrem Bearbeitungsbildschirm weitergeleitet. Aktualisieren Sie im Regel-Panel das Name-Feld aufOrderDetail (Quantity - 1), und navigieren Sie dann zur Spalten-Registerkarte. -
Finden Sie den Ausdruck
OD.Quantity + 1und bearbeiten Sie ihn. Ändern Sie den Ausdruck inOD.Quantity - 1und aktualisieren Sie das Alias vonQuantityPlusaufQuantityMinus. Klicken Sie auf Speichern. -
Überprüfen Sie, ob die Regel korrekt funktioniert, indem Sie im Regel-Panel auf Ergebnisse klicken.
Übungszeit: Mengensteuerungen hinzufügen
Jetzt, da Sie beide Mengenregeln haben, verbinden Sie sie mit dem Bestelldetails-Panel auf der Bestellungen-Seite.
-
Öffnen Sie das OrderDetail (Quelle) Geschäftsobjekt und erstellen Sie ein benutzerdefiniertes Ereignis für die Regel
OrderDetail (Menge + 1). Geben Sie im Dialogfeld zur Erstellung des EreignissesMenge Plusim Feld Name ein und setzen Sie Aktualisierungsbereich auf Zeile. Dies stellt sicher, dass beim Auslösen des Ereignisses nur die betroffene Zeile aktualisiert wird und nicht das gesamte Panel. -
Wiederholen Sie Schritt 1, um ein zweites Ereignis mit dem Namen
Menge Minuszu erstellen, das die RegelOrderDetail (Menge - 1)anfügt und ebenfalls Aktualisierungsbereich auf Zeile setzt. -
Navigieren Sie zum Bearbeitungsbildschirm der Bestellungen-Seite. Fügen Sie im Panel Bestelldetails zwei Schaltflächen-Steuerelemente hinzu: eine, die das Ereignis
Menge Plusausführt, und eine, die das EreignisMenge Minusausführt. -
Besuchen Sie die Vorschau der Bestellungen-Seite und testen Sie die neuen Schaltflächen.
CRUD löschen
CRUD-Löschregeln werden verwendet, um Datensätze aus den Tabellen zu löschen. Da es jedoch einfach ist, UI-Elemente zu verwenden, um einzelne Datensätze zu löschen, werden CRUD-Löschregeln typischerweise nur verwendet, um viele Datensätze auf einmal zu löschen. Um dies zu demonstrieren, erstellen wir eine CRUD-Löschregel, die alle Bestelldetails, die mit einer einzelnen Bestellung verbunden sind, löscht, um die Notwendigkeit zu beseitigen, alle Bestelldetails separat zu löschen, wenn eine Bestellung storniert wird.
-
Klicken Sie in App Workbench > Regeln auf + Regel.
-
Geben Sie im Feld Name
OrderDetail (Bestelldetails für Bestellung löschen)ein. -
Wählen Sie im Feld Zweck CRUD aus.
-
Wählen Sie im Feld Aktion Löschen aus.
-
Wählen Sie unter Zielschicht Datenebene aus.
-
Wählen Sie im Feld Ziel OrderDetail aus.
-
Klicken Sie auf Erstellen.
-
Im Tab Tabellen hat der App Builder die Tabelle OrderDetail hinzugefügt und ihren Primärschlüssel OrderDetailID ausgewählt. Lassen Sie dies ausgewählt, da das Anvisieren des Primärschlüssels die effizienteste und sicherste Methode ist, um eine Löschoperation durchzuführen. Wählen Sie auch die Spalte OrderID aus; wir werden diese Spalte im nächsten Abschnitt verwenden, um die Regel an eine bestimmte Bestellung zu binden.
Ereignisse
CRUD-Regeln können nur verwendet werden, wenn sie an Ereignisse angehängt sind, die Prozesse sind, die in Tabellen oder Geschäftsobjekten integriert sind und als Reaktion auf bestimmte Aktionen, wie das Speichern eines Datensatzes, ausgeführt werden. Alle Tabellen und Geschäftsobjekte haben intrinsisch vier Ereignisse: speichern, aktualisieren, löschen und einfügen, die ausgeführt werden, während Sie Datensätze im App Builder ändern.
Lass uns die CRUD-Regeln aktivieren, die wir erstellt haben. Dazu erstellen wir unsere eigenen benutzerdefinierten Ereignisse. Im Gegensatz zu intrinsischen Ereignissen müssen benutzerdefinierte Ereignisse an ein Steuerelement angehängt werden, um ausgeführt zu werden. Die CRUD-Regeln, die wir erstellen, erfordern benutzerdefinierte Ereignisse, die ausgeführt werden, wenn wir es wünschen.
Zuerst erstellen wir ein benutzerdefiniertes Ereignis, das mit unserer CRUD-Löschregel verknüpft ist, damit beim Löschen einer Bestellung die zugehörigen Bestelldetails ebenfalls gelöscht werden.
-
Gehe zu App Workbench > Regeln, suche die Bestellung (Quelle)-Regel und öffne sie.
-
Klicke im Regel-Panel auf Ereignisse. Die Seite Alle Ereignisse (Bestellung (Quelle)) öffnet sich. Sie listet die vier intrinsischen Ereignisse auf, die der App Builder für jede Tabelle und jedes Geschäftsobjekt enthält: Einfügen, Speichern, Aktualisieren und Löschen. Für eine vollständige Beschreibung dieser Seite und ihrer Optionen siehe Ereignis konfigurieren.
-
Da wir ein benutzerdefiniertes Ereignis erstellen, klicke auf + Regelereignis. Die Seite Ereignis öffnet sich, auf der du die Details des neuen Ereignisses hinzufügen kannst (siehe Ereignisdetailoptionen für eine vollständige Beschreibung aller Felder):
-
Unter Ereignisinformationen gib im Feld Name
Lösche Bestelldetailsein. -
Unter Nachrichten gib im Feld Bestätigung eine Nachricht ein, die den Benutzern vor der Ausführung des Ereignisses angezeigt wird und sie fragt, ob sie fortfahren möchten. Die Nachricht sollte klar angeben, was passiert, wenn der Benutzer fortfährt, um versehentliche Aktionen zu verhindern. Siehe Ereignis konfigurieren, um mehr über die anderen Nachrichtentypen zu erfahren.

-
Überprüfe im Abschnitt Ausführungseigenschaften das Kontrollkästchen Transaktion. Dies stellt sicher, dass das Ereignis eine Alles-oder-Nichts-Ausführung ist: Da unsere Löschregel mehrere Zeilenartikel betrifft, garantiert eine Transaktion, dass, wenn während des Vorgangs ein Fehler auftritt, der App Builder alle Änderungen zurücksetzt. Dies verhindert ein Szenario, in dem einige Datensätze gelöscht werden, während andere verbleiben, was zu inkonsistenten Daten führt. Siehe Ausführungseigenschaften für eine vollständige Beschreibung aller Optionen in diesem Abschnitt.
-
Lassen Sie die anderen Felder mit ihren Standardauswahlen und klicken Sie auf Speichern. Der App Builder erstellt das Ereignis.
Hinweis
Für Szenarien mit gleichzeitigen Zugriffen, bei denen die Datenintegrität gefährdet sein könnte, bietet der App Builder auch Ereignissperrung an, die eine serielle Ausführung erzwingt und auf einzelne Datensätze beschränkt werden kann. Lassen Sie dies für das aktuelle Ereignis deaktiviert, behalten Sie es jedoch für Umgebungen mit hohem Datenverkehr oder komplexe Workflows im Hinterkopf, bei denen eine Synchronisierung auf Datensatzebene erforderlich ist.
-
-
Das Ereignis wurde erstellt, und der App Builder zeigt Ihnen den Konfigurationsbildschirm:

Sie befinden sich derzeit in der Grid-Ansicht (siehe Screenshot oben), die eine Übersichtsliste aller Aktionen und Validierungen bietet, die für dieses Ereignis registriert sind. Eine alternative Ansicht des Ereignisses kann im Visual Workflow Editor gesehen werden, der die Ausführungsreihenfolge und die Beziehung zwischen vererbten Ereignissen zeigt. Um dies zu sehen, klicken Sie auf das -Symbol im Ereignis-Panel. Um jederzeit zur Grid-Ansicht zurückzukehren, klicken Sie auf das -Symbol, das es ersetzt.
Der Visual Workflow Editor verwandelt Ihre Ereignisse in interaktive Flussdiagramme, die es einfacher machen, den Weg Ihrer Daten zu visualisieren, während sie durch das System fließen. Jedes Ereignis wird als Prozess mit klaren Start- und Endpunkten abgebildet, und Unterprozesse, die mit einem Plus-Symbol gekennzeichnet sind, können durch Doppelklick in tiefere Logikschichten eingetaucht werden. Sie können die speziellen Schaltflächen verwenden, um neue Aktionen oder Validierungen direkt in die Sequenz einzufügen, und jeden Knoten auswählen, um dessen Details zu bearbeiten, ihn zu löschen oder ihn innerhalb der Logik-Kette neu zu sequenzieren. Siehe Visual Workflow Editor für eine vollständige Beschreibung seiner Funktionen.
-
Das Ereignis hat noch keine Aktionen angehängt. Wenn Sie sich in der Grid-Ansicht befinden, beachten Sie, dass das Aktionen-Panel leer ist, und klicken Sie auf die Schaltfläche Registrieren. Wenn Sie sich im Visual Workflow Editor befinden, klicken Sie auf die Schaltfläche + Aktion oben im Ereignisdiagramm-Panel. Dadurch wird der Aktion-Dialog geöffnet:
-
Wählen Sie im Feld Typ Regel aus.
-
Wählen Sie im Feld Regel OrderDetail (OrderDetail für Bestellung löschen) aus, die CRUD-Löschregel, die wir zuvor erstellt haben.
-
Lassen Sie die anderen Felder mit ihren Standardauswahlen. Dazu gehören die Positions-Einstellungen, die die Ausführungsreihenfolge und -zeit steuern. Siehe Ereignisaktionsarten für eine vollständige Beschreibung. Klicken Sie auf Speichern. Der Dialog für die Aktion zeigt weitere Details an:

-
Klicken Sie im Panel Bindings auf + Binding. Wählen Sie OrderID als Quellspalte und OrderID als Regelspalte aus.
Hinweis
Dieser Bindungsschritt ist entscheidend, da er die Ergebnisse Ihrer Regel nach dem Panel-Datensatz filtert, gegen den Sie das Ereignis ausgeführt haben. Wenn es "ungebunden" bleibt, würde die Löschregel alle Datensätze in der Tabelle OrderDetail betreffen. Durch das Binden der Quellspalte (OrderID aus dem Panel-Datensatz Order (Quelle)) an die Regelspalte (OrderID in unserer Löschregel) fügen wir einen impliziten Filter hinzu (zum Beispiel
WHERE OrderID = 10248).Dadurch wird sichergestellt, dass nur die OrderDetail-Datensätze gelöscht werden, die mit dieser spezifischen OrderID übereinstimmen. Wenn diese Bindung weggelassen würde, würde das Auslösen des Ereignisses alle Datensätze aus der Tabelle OrderDetail löschen.
-
Klicken Sie auf Speichern.
-
-
Das benutzerdefinierte Ereignis ist nun bereit zur Implementierung.
Weiterführende Informationen
Neben dem, was in diesem Beispiel gezeigt wird, kann die Ereigniskonfiguration im App Builder auch Folgendes umfassen:
-
Wo Ereignisse konfiguriert werden: Ereignisse können auf der Geschäftsebene (Geschäftsobjekte) oder der Datenebene (Tabellen) konfiguriert werden. Die Registrierung von Ereignissen auf der Geschäftsebene ermöglicht eine unterschiedliche Logik pro Schnittstelle, während Ereignisse auf der Datenebene global sind. Lesen Sie mehr in Wo Ereignisse konfiguriert werden.
-
Ereignisvererbung: Geschäftsobjekte können Ereignislogik von der zugrunde liegenden Tabelle oder anderen Quellen erben. Lesen Sie mehr in Ereignisvererbung.
Übungszeit: Fügen Sie eine Löschsteuerung hinzu
Jetzt, da Ihre Löschregel und das Ereignis bereit sind, lassen Sie uns diese in der Benutzeroberfläche einsetzen. Fügen Sie eine Löschen Sie Bestelldetails-Schaltfläche zum Bestellungen-Panel hinzu und verlinken Sie sie mit dem Löschen Sie Bestelldetails-Ereignis, das Sie gerade konfiguriert haben. Dies ermöglicht es Ihren Benutzern, die Details einer gesamten Bestellung mit einem einzigen Klick zu löschen.
Unterabfrage-Regeln
Eine Unterabfrage-Regel fungiert als logischer Zwischenhändler, der Daten berechnet oder anpasst, bevor sie an ein anderes Objekt übergeben werden. Im Gegensatz zu Standardregeln, die direkt mit einem Datensatz interagieren, schreiben Unterabfragen nicht in Tabellen zurück. Stattdessen führen sie eine spezifische Operation, wie eine Aggregation, durch, um einen Wert zu generieren, der an anderer Stelle in Ihrer Anwendung verwendet werden kann.
Wir werden dies demonstrieren, indem wir eine Unterabfrage-Regel erstellen. Diese wird verwendet, um die maximale OrderNumber der Bestellung-Tabelle zu finden und dann eins hinzuzufügen. Später werden wir eine CRUD-Regel erstellen, die dazu dient, eine Bestellung zu kopieren, und sie wird von dieser Unterabfrage abhängen, um zu funktionieren.
-
In App Workbench > Regeln, klicken Sie auf + Regel.
-
Geben Sie im Feld Name
Bestellung (OrderNumber + 1)ein. -
Wählen Sie im Feld Zweck Unterabfrage aus.
-
Wählen Sie im Feld Ziel Bestellung aus.
-
Klicken Sie auf Erstellen. Der App Builder wird die neue Regel erstellen.
-
Der App Builder wählt automatisch den Primärschlüssel der Bestellung-Tabelle aus, aber wir benötigen ihn für diese Regel nicht. Deaktivieren Sie ihn im Tab Tabellen.
Warum
OrderIDabwählen?Wenn Sie eine Aggregatfunktion wie hier verwenden, führt das Hinzufügen einer anderen Spalte zur Abfrage (wie OrderID) dazu, dass die Datenbank eine
GROUP BY-Klausel für diese Spalte anwendet.Wenn wir OrderID einbeziehen würden, würde der Ausdruck die maximale OrderNumber pro OrderID finden. Dies würde nur die OrderNumber für jede Bestellung zurückgeben, was nicht unser Ziel ist.
Um die einzige maximale OrderNumber über die gesamte Tabelle hinweg zu finden, dürfen wir keine anderen Spalten in unserer Abfrage einbeziehen. Deshalb verwenden wir eine Unterabfrage: um diese Aggregatberechnung zuerst durchzuführen, damit sie in einer anderen Regel verwendet werden kann.
-
Klicken Sie im Tab Spalten auf + Spalte. Der Dialog Spalte - Spalte hinzufügen öffnet sich.
-
Geben Sie im Feld Spalte oder Ausdruck den Ausdruck
Max(O.OrderNumber) + 1ein. Die SyntaxMax()ruft die Max() Funktion auf, die den größten Wert in der SpalteO.OrderNumberfindet. Dann wird eins hinzugefügt. -
Geben Sie im Feld Alias und Ziel einen geeigneten Alias für diese Spalte ein, wie zum Beispiel
MaxOrderNumber. -
Wählen Sie im Feld Logischer Datentyp Zahl aus, da OrderNumber kein UUID-Wert, sondern eine natürliche Zahl ist.
-
Klicken Sie auf Speichern.
-
Überprüfen Sie, ob die Regel korrekt funktioniert, indem Sie auf die Schaltfläche Ergebnisse klicken. Es sollte nur eine Zeile mit einer Bestellnummer geben, die um eins höher sein sollte als die größte Bestellnummer, die derzeit in der Bestellung-Tabelle vorhanden ist.
Jetzt erstellen wir eine CRUD-Regel, die in der Lage ist, eine Bestellung zu kopieren. Diese CRUD-Regel wird auf der Unterabfrage-Regel basieren, die wir gerade erstellt haben.
-
Klicken Sie in App Workbench > Regeln auf + Regel.
-
Geben Sie im Feld Name
Bestellung (Bestellung kopieren)ein. -
Wählen Sie im Feld Zweck CRUD aus.
-
Wählen Sie im Feld Aktion Einfügen aus.
-
Wählen Sie im Feld Zielschicht Logikschicht aus.
-
Wählen Sie im Feld Ziel Bestellung aus.
-
Klicken Sie auf Erstellen. Der App Builder wird die Regel erstellen.
Sobald die Regel erstellt ist, konfigurieren Sie ihre Spalten und Ziele:
-
Im Tab Tabellen hat der App Builder automatisch die Bestellung-Tabelle hinzugefügt, aber wir benötigen mehr. Klicken Sie auf + Tabellen.
-
Wählen Sie die Unterabfrage-Regel aus, die wir zu diesem Zweck erstellt haben, Bestellung (Bestellnummer + 1). Klicken Sie auf Hinzufügen.
-
Überprüfen Sie im Tab Tabellen das Kontrollkästchen neben der Suchleiste oben in der Spaltenliste. Dadurch werden alle vorhandenen Spalten aus der Bestellung-Tabelle auf einmal ausgewählt.
-
Klicken Sie auf den Tabellennamen Bestellung. Der Dialog Tabelle öffnet sich. Aktivieren Sie das Kontrollkästchen unter Alle Spalten auswählen. Dadurch wird sichergestellt, dass alle neuen Spalten, die in Zukunft zur Bestellung-Tabelle hinzugefügt werden, automatisch in dieser Regel enthalten sind. Schließen Sie den Dialog.
-
Wählen Sie aus der Order (OrderNumber + 1) Unterabfrage-Tabelle ihre einzige Spalte, MaxOrderNumber.
-
Verfeinern Sie im Tab Columns die Datenzuordnung der Regel wie folgt:
- Entfernen Sie das Ziel für OrderID. Da dies ein automatisch generierter Primärschlüssel ist, wird die Geschäftsschicht beim Ausführen der Regel automatisch einen eindeutigen Wert zuweisen.
- OrderNumber: Bestätigen Sie, dass die Zeile OON.MaxOrderNumber auf OrderNumber abzielt und den neuen inkrementierten Wert der richtigen Spalte zuordnet.
- OrderDate: Klicken Sie auf das Feld Column or Expression für diese Spalte und ersetzen Sie den aktuellen Wert durch
Now(), um das Datum der kopierten Bestellung auf heute zu setzen. - Nicht alle Spalten sind in dieser Regel erforderlich. Entfernen Sie Folgendes:
- RequiredDate, ShippedDate und Freight: Diese Details sollten manuell für die neue Bestellung eingegeben werden, anstatt sie von der Originalbestellung zu duplizieren.
- AddedOn, AddedBy, ChangedOn, ChangedBy und IsActive: Diese Werte werden vom App Builder bei der Erstellung automatisch generiert.
Weiterführende Informationen
Erfahren Sie mehr über dieses Konzept in Ziel in Geschäftsobjektregeln.
-
Klicken Sie im Rule-Panel auf Results, um zu überprüfen, ob die Regel korrekt funktioniert.
Jetzt erstellen wir eine zweite CRUD-Regel, um die Positionen der Bestellung zu kopieren. Diese Regel wird als Erfolgsbehandler für das Ereignis Copy Order registriert, um sicherzustellen, dass die Detailzeilen nur erstellt werden, wenn der neue Bestellposten existiert.
-
Klicken Sie in App Workbench > Rules auf + Rule.
-
Geben Sie im Feld Name
OrderDetail (Insert) Copy Order Detailein. -
Wählen Sie im Feld Purpose CRUD aus.
-
Wählen Sie im Feld Action Insert aus.
-
Wählen Sie im Feld Target Layer Logic Layer aus.
-
Wählen Sie im Feld Target OrderDetail aus.
-
Klicken Sie auf Create.
-
Aktivieren Sie im Tab Tables das Kontrollkästchen neben der Suchleiste, um alle vorhandenen Spalten auf einmal auszuwählen. Klicken Sie dann auf den Tabellennamen OrderDetail, aktivieren Sie Select all Columns im Dialogfeld Table und schließen Sie das Dialogfeld.
-
Im Tab Spalten die folgenden Änderungen vornehmen:
- Die Audit-Lite- und benutzerwählbaren Spalten (AddedOn, AddedBy, ChangedOn, ChangedBy, IsActive) löschen. Diese werden bei der Erstellung automatisch ausgefüllt.
- Den Ausdruck für OrderDetailID auf
NewUUID()aktualisieren. Dies stellt sicher, dass jedes kopierte Zeilenobjekt eine eigene eindeutige Kennung erhält. - Das Ziel für OrderID entfernen und dessen Alias auf
BindOrderIDsetzen. Dieser Wert repräsentiert die ID der ursprünglichen Bestellung, die wir für die Bindung während des Ereignisses verwenden werden. - Einen neuen Ausdruck mit
Generated()hinzufügen, der auf OrderID abzielt. Die FunktionGenerated()ruft einen Wert ab, der während der aktuellen Ereignisausführung erstellt wurde, und nimmt zwei Argumente: den Wert und den Datentyp. Geben SieGenerated('OrderID', 'UUID')als Ausdruck ein.
-
Klicken Sie auf Ergebnisse, um die Regel zu überprüfen.
Wir haben nun beide Kopierregeln erstellt. Lassen Sie uns die Regel Bestellung kopieren an ein benutzerdefiniertes Ereignis anhängen und die Regel Bestellzeilen kopieren so einstellen, dass sie automatisch bei Erfolg ausgelöst wird.
-
In App-Arbeitsbereich > Regeln die Regel Bestellung (Quelle) suchen und öffnen.
-
Im Regel-Panel auf Ereignisse klicken. Die Seite Alle Ereignisse (Bestellung (Quelle)) öffnet sich.
-
Auf + Regelereignis klicken. Die Seite Ereignis öffnet sich:
-
Unter Ereignisinformationen im Feld Name
Bestellung kopiereneingeben. -
Im Feld Aktualisierungsbereich Panelaktualisierung auswählen. Dies stellt sicher, dass das Panel sofort nach Abschluss der Kopie aktualisiert wird, sodass die neue Bestellung ohne manuelle Aktualisierung erscheint.
-
Unter Nachrichten eine Bestätigungs-, Erfolgs- und Fehlermeldung mit dynamischer Substitution konfigurieren. Durch die Verwendung von doppelten geschweiften Klammern können Sie Echtzeitdaten aus der zugrunde liegenden Regel abrufen und in den Text einfügen. Da dieses Ereignis in der Regel Bestellung (Quelle) registriert ist, haben Sie Zugriff auf alle ihre Spalten. Zum Beispiel:
- Bestätigung:
Sind Sie sicher, dass Sie die Bestellung {{OrderNumber}} duplizieren möchten? - Erfolg:
Die Bestellung {{OrderNumber}} wurde erfolgreich kopiert! - Fehler:
Fehler: Die Bestellung {{OrderNumber}} konnte nicht kopiert werden!
- Bestätigung:
-
Im Abschnitt Ausführungseigenschaften aktivieren Sie das Kontrollkästchen Transaktion, um die Datenintegrität sicherzustellen, indem der gesamte Prozess zurückgerollt wird, wenn ein Teil der Duplikation fehlschlägt.
-
Lassen Sie die anderen Felder mit ihren Standardauswahlen und klicken Sie auf Speichern.
Hinweis
Siehe Ereignisdetailoptionen für eine vollständige Beschreibung aller Felder.
-
-
Das Ereignis wurde erstellt. Klicken Sie im Panel Aktionen auf Registrieren. Der Dialog Aktion öffnet sich:
- Wählen Sie im Feld Typ Regel aus.
- Wählen Sie im Feld Regel Bestellung (Bestellung kopieren) aus.
- Klicken Sie im Panel Bindings auf + Binding. Wählen Sie OrderID als Quellspalte und OrderID als Regelspalte aus. Die Verwendung von OrderID für das Binding ist zuverlässiger als OrderNumber, da diese möglicherweise nicht eindeutig ist.
- Speichern.
-
Im Panel Aktionen gibt es ein Feld Handler, das drei Schaltflächen anzeigt: Erfolg, Fehler und Rollback:
- Erfolgs-Handler: Wird nur ausgelöst, wenn die übergeordnete Regel erfolgreich abgeschlossen wird. Verwenden Sie dies, um Logik zu verketten, wie das Kopieren unserer Bestelldaten, die davon abhängt, dass der übergeordnete Datensatz zuerst existiert.
- Fehler-Handler: Wird nur ausgelöst, wenn die übergeordnete Regel auf einen Fehler stößt. Verwenden Sie es, um Warnungen zu senden, Fehler zu protokollieren oder ausgleichende Maßnahmen auszulösen.
- Rollback-Handler: Wird verwendet, wenn mit Systemen gearbeitet wird, die keine standardmäßigen Datenbanktransaktionen unterstützen, wie z. B. eine Drittanbieter-REST-API. Es führt Aktionen in umgekehrter chronologischer Reihenfolge aus, um die Regelverarbeitung bis zu diesem Punkt manuell rückgängig zu machen.
Klicken Sie auf Erfolg. Der Dialog Erfolgs-Handler öffnet sich. Klicken Sie auf Erstellen. Der Dialog Aktion öffnet sich:
- Wählen Sie im Feld Typ Regel aus.
- Wählen Sie im Feld Regel OrderDetail (Einfügen) Bestellung Detail kopieren aus.
- Speichern.
- Klicken Sie im Panel Bindings auf + Binding und ordnen Sie Folgendes zu:
- Quellspalte: Wählen Sie OrderID (die eindeutige ID der aktuell kopierten Bestellung).
- Regelspalte: Wählen Sie BindOrderID (das Alias, das wir in der Regel erstellt haben, um den Quell-Datensatz zu identifizieren).
- Speichern.
-
Schließen Sie die offenen Dialoge und navigieren Sie zum Visual Workflow Editor, indem Sie auf das -Symbol klicken. Das Ereignisdiagramm ist jetzt komplexer als das Löschen der Bestelldetails-Ereignis, das wir zuvor überprüft haben. Beachten Sie Folgendes:
- Logikschicht: Sowohl die Regeln Bestellung kopieren als auch Bestellpositionen kopieren durchlaufen die Geschäftsschicht, weshalb beide Regelblöcke das +-Symbol anzeigen. Doppelklicken Sie auf einen der Blöcke, um direkt zu den übergeordneten Ereignissen zu navigieren, die sie auslösen.
- Bedingte Pfade: Sie können die Verzweigungswege für Erfolg und Fehler sehen. Der Erfolg-Pfad zeigt die Auslösung der Regel Bestellpositionen kopieren, während der Fehler-Pfad keine nachfolgenden Ereignisse zeigt, was bestätigt, dass der Prozess stoppt, wenn die primäre Kopie fehlschlägt.
Übungszeit: Fügen Sie eine Kopiersteuerung hinzu
Jetzt, da Ihre Kopierregeln und das Ereignis bereit sind, lassen Sie uns diese in der Benutzeroberfläche anwenden. Fügen Sie eine Kopie-Schaltfläche zum Bestellungen-Panel hinzu und verlinken Sie sie mit dem Bestellung kopieren-Ereignis, das Sie gerade erstellt haben. Sobald die Schaltfläche hinzugefügt ist, testen Sie sie: Sie sollten die Bestätigungsnachricht mit der dynamischen Bestellnummer sehen, und bei Erfolg wird eine neue Bestellung mit der nächsten verfügbaren Bestellnummer angezeigt.
Validierungen
Validierungsregeln werden verwendet, um sicherzustellen, dass die in den App Builder eingegebenen Daten gültig sind, bevor sie gespeichert werden. In Lektion 7 haben wir eine einfache Validierung für "Pflichtfeld" behandelt. Jetzt werden wir ein komplexeres Validierungsszenario erkunden, das benutzerdefinierte Logik und dynamische Fehlermeldungen umfasst.
Wie andere Regeln müssen auch Validierungsregeln an ein Ereignis angehängt werden, um verwendet zu werden. Die Wahl des Ereignisses hängt vom Anwendungsfall ab:
-
Intrinsisches Ereignis: Verwenden Sie dies, wenn die Validierung automatisch während der Standardoperationen ausgeführt werden soll (z. B. um das Speichern zu verhindern, wenn die Daten ungültig sind).
-
Benutzerdefiniertes Ereignis: Verwenden Sie dies, wenn Sie die Validierung auf Anfrage von einer bestimmten Steuerung (z. B. einem Schaltflächenklick) auslösen möchten.
Lassen Sie uns eine Validierungsregel erstellen, um sicherzustellen, dass ein Rabatt auf eine Bestellung niemals größer als 10 % ist. Wir möchten, dass dies jedes Mal ausgeführt wird, wenn ein OrderDetail-Datensatz gespeichert wird, daher werden wir es an das intrinsische Speichereignis anhängen.
-
In App Workbench > Regeln, klicken Sie auf + Regel.
-
Geben Sie im Feld Name
OrderDetail (Rabatt validieren)ein. -
Wählen Sie im Feld Zweck Validierung aus.
-
Wählen Sie im Feld Ziel OrderDetail aus.
-
Klicken Sie auf Erstellen.
-
Wählen Sie im Tab Tabellen die Spalte Rabatt aus (Sie können OrderDetailID abwählen).
-
Klicken Sie im Tab Wo auf + Where-Klausel. Ein Dialog öffnet sich, in dem Sie
WHERE-Klauseln erstellen können:
-
Geben Sie im Feld Linker Ausdruck
OD.Rabattein. -
Wählen Sie im Feld Operator
>aus. -
Geben Sie im Feld Rechter Ausdruck
0.1ein.
-
-
Klicken Sie auf Speichern.
Die Regel ist nun erstellt. Sie ist darauf ausgelegt, "schlechte" Daten (Datensätze, bei denen der Rabatt über 10 % liegt) zu finden.
Dynamische Schwelle
Im letzten Schritt haben wir eine feste Grenze von 10 % festgelegt. Lassen Sie uns dies jetzt konfigurierbar machen: Wir speichern die Schwelle als Anwendungsparameter, damit das Unternehmen sie über die Benutzeroberfläche aktualisieren kann, ohne die Regel selbst zu berühren. Führen Sie die folgenden Schritte unter Verwendung der Fähigkeiten aus vorherigen Lektionen durch:
-
Fügen Sie der Parameter-Tabelle eine Spalte
DiscountMaximumhinzu. Setzen Sie den Logischen Datentyp auf Prozent und den Maßstab auf 4, um präzise Werte wie 12,25 % zu erfassen. -
Navigieren Sie zur Parameter-Seite. Auf dem Bildschirm zur Tabellenbearbeitung bietet die Schaltfläche Seiten eine Abkürzung: Sie listet alle Seiten auf, die derzeit diese Tabelle verwenden, sodass Sie direkt zur richtigen Seite springen können.
-
Fügen Sie DiscountMaximum als numerische Steuerung zur Seite hinzu und füllen Sie sie mit einem Wert wie
.3, um Rabatte von bis zu 30 % zu ermöglichen. -
Kehren Sie zu App Workbench > Regeln zurück und öffnen Sie die Regel
OrderDetail (Rabatt validieren). -
Klicken Sie im Tab Tabellen auf + Tabellen und fügen Sie die Parameter-Tabelle hinzu. Wählen Sie die Spalte DiscountMaximum aus.
-
Klicken Sie im Tab Wo auf das Stiftsymbol, um die WHERE-Klausel zu bearbeiten. Ersetzen Sie im Feld Rechter Ausdruck
0.1durchP.DiscountMaximum.
Der auf der Parameter-Seite festgelegte Wert steuert jetzt die Schwelle für diese Validierung.
Validierungsregel anhängen
Jetzt hängen wir die Validierungsregel an das intrinsische Speicherevent für OrderDetail an.
-
Gehen Sie zu App Workbench > Regeln, suchen Sie das Geschäftsobjekt OrderDetail (Source) und öffnen Sie es.
-
Klicken Sie im Regel-Panel auf Ereignisse. Die Seite Alle Ereignisse (OrderDetail (Source)) öffnet sich.
-
Suchen Sie die Zeile Speichern. Beachten Sie, dass es zwei Designer-Buttons gibt: Tabellenereignisdetails und Regelereignisdetails. Wir möchten diese Validierung mit Regelereignisdetails registrieren. Dies ist eine wichtige Unterscheidung: Sie stellt sicher, dass die Validierung nur angewendet wird, wenn diese spezifische Geschäftsregel verwendet wird, anstatt eine globale Einschränkung für die gesamte OrderDetail-Tabelle zu verhängen. Dies hält die App flexibel. Zum Beispiel könnten Sie später eine Seite für Managergenehmigung erstellen. Indem Sie dort ein anderes Geschäftsobjekt verwenden, könnte ein Vorgesetzter höhere Rabatte genehmigen, ohne durch die Standardregel, die wir hier erstellen, blockiert zu werden. Klicken Sie auf Regelereignisdetails für das Speichern-Ereignis.
-
Klicken Sie im Validierungen-Panel auf Registrieren. Der Validierungs-Dialog öffnet sich:

-
Wählen Sie im Feld Typ Regel aus.
-
Wählen Sie im Feld Regel OrderDetail (Validate Discount), die Validierungsregel, die wir gerade erstellt haben.
-
Wählen Sie im Feld Bindung Implizit aus.
Hinweis
Implizite Bindung validiert die Daten, die sich derzeit "im Speicher" auf dem Bildschirm des Benutzers befinden. Dies ist der Wert, den der Benutzer eingegeben hat, bevor er in die Datenbank gespeichert wurde. Wir verwenden hier die implizite Bindung, weil wir den Benutzer daran hindern möchten, einen neuen Datensatz zu speichern, während der Rabatt-Wert ungültig ist (d.h. größer als die konfigurierte Schwelle). Andererseits validiert Explizite Bindung die Daten, die bereits in der Datenbank gespeichert sind.
Um dies zu veranschaulichen, stellen Sie sich vor, ein Datensatz wurde mit einem ungültigen Rabatt von 50 % gespeichert. Ein Benutzer öffnet diesen Datensatz, korrigiert das Rabatt-Feld auf einen gültigen Wert wie 7 % und reicht ihn ein. Wenn das Validierungsereignis die explizite Bindung verwendet, wird es die Datenbank überprüfen, den ursprünglichen Wert von 50 % sehen und die Validierung fehlschlagen. Wenn das Validierungsereignis jedoch die implizite Bindung verwendet, wird es den im Speicher befindlichen Wert (7 %) überprüfen, sehen, dass er nicht größer als die Schwelle ist, und die Validierung bestehen, was das Speichern ermöglicht.
Lesen Sie mehr in Implizite und explizite Bindung.
-
Wählen Sie im Feld Failure die Option Fail on data returned.
Hinweis
Die Validierungen im App Builder können auf zwei Arten konfiguriert werden. Die Standardoption, die wir verwenden, ist Fail on data returned. Das bedeutet, dass die Validierungsregel so geschrieben ist, dass sie die fehlerhaften Daten findet (zum Beispiel, wenn Discount über dem Schwellenwert liegt). Wenn die Regel Datensätze findet, die dieses "schlechte" Kriterium erfüllen, schlägt sie fehl und zeigt die Fehlermeldung an. Die Alternative ist Fail on no data returned, die verwendet wird, wenn eine Regel geschrieben wird, um gute Daten zu finden.
-
Wählen Sie im Feld Severity die Option Error.
Hinweis
Das Feld Severity bestimmt, wie stark der App Builder mit dem Benutzer interagiert, wenn eine Validierung ausgelöst wird:
- Error: Die kritischste Stufe. Zeigt ein schwerwiegendes Problem an und verhindert das Speichern vollständig. Der Benutzer sieht eine rote Benachrichtigung und muss die Daten korrigieren, bevor er fortfahren kann.
- Warning: Eine sanfte Blockade. Warnt den Benutzer vor einem potenziellen Problem mit einer gelben Benachrichtigung, gibt ihm jedoch die Wahl, entweder abzubrechen und es zu beheben oder fortzufahren und den Datensatz trotzdem zu speichern.
- Information: Rein informativ. Bietet eine blaue Benachrichtigung, nachdem das Ereignis ausgeführt wurde, um dem Benutzer hilfreichen Kontext zu geben, unterbricht jedoch niemals den Workflow.
-
Geben Sie im Feld Message ein:
Discount cannot be greater than {{ DiscountMaximum }}. Die Verwendung von dynamischer Substitution hier stellt sicher, dass die Fehlermeldung automatisch den aktuellen Schwellenwert widerspiegelt, der auf der Parameter-Seite festgelegt ist. -
Klicken Sie auf Save, um den Dialog zu verlassen.
Die Validierung ist angehängt. Um sie zu testen, gehen Sie zur Vorschau der Orders-Seite, wählen Sie eine Bestellung aus und versuchen Sie, einen OrderDetail-Posten zu bearbeiten, um einen Rabatt festzulegen, der über dem von Ihnen festgelegten Schwellenwert liegt. Wenn Sie auf Speichern klicken, sollten Sie die dynamische Fehlermeldung sehen.
Damit der Platzhalter {{ DiscountMaximum }} korrekt aufgelöst wird, muss die Spalte im Geschäftobjekt OrderDetail (Source) verfügbar sein. Da DiscountMaximum in einer separaten Parameter-Tabelle gespeichert ist, müssen Sie es ausdrücklich hinzufügen:
-
Kehren Sie zu App Workbench > Regeln zurück und öffnen Sie die Regel OrderDetail (Quelle).
-
Klicken Sie im Tab Tabellen auf + Tabellen und fügen Sie die Tabelle Parameter hinzu. Wählen Sie die Spalte DiscountMaximum aus.
Der Spaltenname in der Regel muss genau mit dem Platzhalter in Ihrer Validierungsnachricht übereinstimmen. Wenn Sie in der Nachricht einen anderen Namen verwendet haben (zum Beispiel {{ MaxDiscount }}), müssten Sie die Spalte in der Regel umbenennen, um übereinzustimmen.
Weiterführende Informationen
Für weitere Techniken zur Sicherstellung der Datenintegrität siehe Validierungstipps.
Weiteres Lernen
Dies schließt diesen tiefen Einblick in die Details der Geschäftsschicht des App Builders ab. Siehe Anhang A für einen genaueren Blick auf die Datenschicht oder Anhang C für die UI-Schicht.