Primärschlüssel füllen

Siehe auch: Änderungen später speichern

Ereignisaktion - Kurzfassung

Zweck: Ruft für eine neue oder kopierte Entität schon vor dem Speichern (Erstellen) eine interne ID (als Primärschlüssel) ab, damit diese sofort (z. B. als Referenz) verwendet werden kann.

Die Ereignisaktion Primärschlüssel füllen kann verwendet werden, um das Primärschlüssel-Feld "ID" id einer neuen Entität vorzeitig mit einem vom System bestimmten Wert zu füllen, damit dieser im Kontext der laufenden Ereignisbehandlung bereits verarbeitet werden kann, bevor die Entität effektiv in der Datenbank gespeichert ist. Dies ist z. B. dann erforderlich, wenn im Zuge einer Ereignisbehandlung für das Ereignis "Erstellen" sofort auch Referenzen auf die neue Entität (z. B. in den Daten anderer Entitäten) eingerichtet werden sollen.

Als Primärschlüssel einer Entität gilt der Long-Wert, den das System dem Feld "ID" (id) beim Speichern automatisch zuweist. Bis zum erfolgreichen Abschluss der Transaktion für das Ereignis "Erstellen" enthält das Feld "ID" (id) einer Entität, die neu angelegt oder kopiert wurde, üblicherweise den Wert 0. Dabei ist es unerheblich, ob die noch nicht gespeicherte Entität per Klick auf "Neu" oder "Kopieren" im Ribbon oder z. B. durch eine Erzeuge Instanz-Ereignisaktion entstanden ist.

HINWEISE

  • Scheitert eine Transaktion nach dem Ausführen von Primärschlüssel füllen mit Fehler, wird sie durch eine Abbrechen "zurückgerollt" oder die Entität vom Benutzer ohne Speichern verworfen, ist die bereits ausgegebene ID für den betreffenden Entitätstyp "verloren". Sie wird also nicht erneut für denselben Entitätstyp ausgegeben.

  • Die Ereignisaktion Änderungen später speichern impliziert den Effekt von Primärschlüssel füllen und zwar im Gegensatz zum Speichern, das "später" (bei Abschluss der Transaktion) stattfindet, sofort beim Ausführen der Aktion.

Konfiguration

images/download/attachments/69043301/image2021-3-4_16-51-20-version-1-modificationdate-1614873082584-api-v2.png

Die Ereignisaktion Primärschlüssel füllen verwendet keine Parameter und bezieht sich immer auf das aktuelle Bezugsobjekt.

  • Beim Bezugsobjekt muss es sich um eine Entität handeln, sonst tritt ein Fehler auf.

  • Verfügt das Bezugsobjekt bereits über eine ID (id), die nicht 0 ist, bleibt die Ereignisaktion Primärschlüssel füllen wirkungslos. Ob die Entität mit der betreffenden ID bereits gespeichert wurde, ist dabei unerheblich.

  • Wird Primärschlüssel füllen mit demselben Bezugsobjekt wiederholt ausgeführt, weist nur der erste Aufruf eine ID zu. Die folgenden Aufrufe sind wirkungslos.

Beispiel

Beim Erstellen eines neuen Firmenkontos mit dem Firmentyp "Spediteur" (FWD) soll für diese Firma automatisch ein neues Adressbuch für Empfängeradressen angelegt werden. Dabei soll als Besitzer des Adressbuchs die neue Firma gelten und nicht die beim Erstellen einer Entität automatisch vorbelegete Firma der Session. Die Ereignisaktion Primärschlüssel füllen wird dabei benötigt, da beim Auslösen des "Erstellen"-Ereignisses (also beim "Speichern" des neuen Firmenkontos) dessen ID (id) noch den Wert 0 hat. Beim automatischen Erstellen des neuen Adressbuchs muss aber die besitzende Firma über das Feld "Besitzer" (ownerId) über ihre ID (id) identifiziert werden.

Konfiguration:

Innerhalb einer Ereignisbehandlung für das "Erstellen"-Ereignis (s. Allgemein (Ereignisse)) im Kontext eines neuen Firmenkontos, dem im Feld "Firmentypen" (types) der Firmentyp "Spediteur" (FWD) zugeordnet ist, werden die rechts abgebildeten Ereignisaktionen konfiguriert:


  • Die Ausführen mit-Ereignisaktion erstellt über den Erzeuge Instanz_Wertauflöser ein neues Adressbuch. Dabei wird das neue Firmenkonto in der Variablen newCompany gespeichert, damit beim Einrichten des Adressbuchs im folgenden Aktionsblock auf Merkmale des Firmenkontos zugegriffen werden kann.


  • Per Änderungen später speichern wird das neue Adressbuch zum Speichern im Zuge der aktuellen Transaktion vorgemerkt. Es wird also zusammen mit dem Firmenkonto erstellt.


  • In einer Setze Wert-Ereignisaktion wird dann die zuvor per Primärschlüssel füllen "beschaffte" ID (id) in das Feld "Besitzer" (ownerId) des neuen Adressbuchs übertragen. Dabei wird per Variable-Wertauflöser auf die Variable newCompany zugegriffen, die für den Kontext der Ausführen mit-Ereignisaktion gesetzt wurde.

ANMERKUNG◄ Unterhalb sollte weitere Zuordnungen für das Adressbuch folgen (z. B. Name, Firmentyp), auf die hier aber nicht genauer eingegangen werden soll.


images/download/attachments/69043301/image2021-3-5_8-34-6-version-1-modificationdate-1614929647576-api-v2.png

HINWEIS◄ Die zur Laufzeit verwendete Anmeldung muss ausreichende Berechtigungen zum Erstellen des Firmenkontos und eines Adressbuchs für die neue Firma gewährleisten, sonst scheitert die Transaktion insgesamt mit einem Fehler. Auch wenn die Firma der Session die neu angelegte Firma (per Standard) besitzen wird, darf sie für diese Firma nicht automatisch ein Adressbuch erstellen. Über Firmenfreigaben kann das erreicht werden.