Tipps & Tricks - Unique Number Generator
Der Unique Number Generator ermöglicht es, sich automatisch erhöhende Nummern nach vordefinierten
Kriterien zu generieren. Die Nummer kann hierbei aus frei kombinierbaren Teilen (Zahl, Datum, Zeit, Wort)
bestehen. Bekanntestes Beispiel für eine Unique Number sind wohl die Inventarnummern. Bei Anlage eines
Inventargutes in einer entsprechenden Intrexx Applikation kann mit dem Unique Number Generator eine
fortlaufende und nach einer definierten Syntax aufgebaute Nummer generiert werden
(z.B. Inv-2007-06-0001, Inv-2007-06-0002, usw.). Auch bei Anträgen, Stücklisten oder Kundennummern
kann die Verwendung des Unique Number Generators sinnvoll sein. Unique Numbers können über den Datahandler
eines Datenfeldes erzeugt werden. Dabei wird vor dem Speichern ermittelt, welche Unique Number zu diesem
Zeitpunkt in einem der bereits erfassten Datensätze die höchste vergebene Nummer ist. Beim Speichern
des Datensatzes wird eine neue um 1 erhöhte Nummer in das Datenfeld geschrieben.
Eine fortlaufende Nummernvergabe ist mit dieser Methode gewährleistet. Auch bei einem Neustart
des Portaldienstes wird die höchste vergebene Unique Number ermittelt und als Startnummer für
folgende Nummern verwendet.
Datahandler konfigurieren
Legen Sie zunächst im Intrexx Portal Manager eine
neue Anwendung auf Basis der
Applikationsvorlage Basisapplikation an. Legen Sie über das Kontextmenü der Datengruppe
ein
Datenfeld an. Da in einer Unique Number Date-, Integer- und String-Werte
enthalten sein können, verwenden Sie bitte ausschließlich Datenfelder mit dem Datentyp
Kurzer Text. Setzen Sie die Unique Number nicht in Systemfeldern ein.
Verwenden Sie nur selbst erstellte Datenfelder. Tragen Sie den Titel Unique Number ein.
Blenden Sie die Datenfelder über das Kontextmenü der Datengruppe ein.
Falls noch nicht geschehen,
aktivieren Sie
die Optionen für Experten.
Öffnen Sie den Eigenschaftendialog des Unique Number-Datenfeldes
mit einem Doppelklick auf das Datenfeld und wechseln Sie dort auf den Reiter Expert.
Tragen Sie beim Attribut datahandler den Wert
de.uplanet.lucy.server.util.numbergenerator.SystemFieldNumberGenerator
ein und klicken Sie auf OK.
Nun können Sie das Feld Unique Number noch
in der
Tabelle auf der Seite Alle Einträge aufnehmen. Speichern Sie die Applikation.
Erstellen der Datei UniqueNumber.xml
Die UniqueNumber.xml enthält die Definition aller Unique Numbers im aktuellen Portal.
<?xml version="1.0" encoding="UTF-8"?>
<uniquenumbers>
<uniquenumber name="myUniqueNumber1" guid="guid" link-datafield="guid">
<part type="constant" value="UP-"/>
<part type="year" condition="true" format="yyyy"/>
<part type="month" condition="true" format="mm"/>
<part type="day" condition="true" format="dd"/>
<part type="constant" value="-"/>
<part type="number" format="###"/>
</uniquenumber>
</uniquenumbers>
Erstellen Sie eine neue Datei mit einem handelsüblichen Texteditor und kopieren Sie den
obigen Code in die Datei. Ändern Sie die folgenden Werte wie folgt ab:
- name
Name der jeweiligen Unique Number (frei wählbar, muss eindeutig sein)
- guid
GUID der jeweiligen Unique Number (frei wählbar, muss eindeutig sein)
- link-datafield
GUID des string-Datenfeldes, in dem die Unique Number generiert wird
- <part .../>
Definition eines Teils der Unique Number
Tragen Sie in name einen Namen für Ihre Unique Number ein. Eine GUID für die Unique Number
können Sie ganz einfach über das
Hauptmenü Extras / GUID erstellen
erzeugen. Die GUID des Datenfeldes, in dem die Unique Number erzeugt
werden soll, können Sie mit der Taste F4 ermitteln, wenn Sie es in der Applikationsstruktur
markiert haben. In der UniqueNumber.xml können beliebig viele Unique Numbers definiert werden. Kopieren Sie
für weitere Definitionen von Unique Numbers den Abschnitt
<uniquenumber name=" myUniqueNumber1" guid="guid" link-datafield="guid">
...
</uniquenumber>
und ändern Sie die Angaben name, guid, link-datafield und die Part-Typen entsprechend ab.
In den dann folgenden Part-Type-Tags können Sie je einen Teil der Unique Number festlegen.
In unserem Beispiel hier würde die neue Nummer z.B. mit "UP-" beginnen, gefolgt von der vierstelligen
Jahreszahl, dem Monat, dem Tag, einem Bindestrich und einer dreistelligen Zahl,
die automatisch erhöht wird. Mehr zu diesem Thema erfahren Sie im folgenden Kapitel.
Speichern Sie die Datei unter dem Namen UniqueNumber.xml im
Portalverzeichnis internal/cfg ab.
Nun muss der Portaldienst neu gestartet werden. Hier sehen Sie das Ergebnis
im Browser.
Part-Typen
Die einzelnen Teile einer Unique Number und deren Reihenfolge werden über die unterschiedlichen
Part-Typen definiert.
part type: constant
<part type="constant" value="UP-"/<
Mit diesem Part Type kann ein beliebiger, fester Stringwert erzeugt werden.
part type: number
<part type="number" format="###"/<
Mit diesem Part Type kann eine sich um 1 erhöhende Zahl erzeugt werden. Über die Anzahl
der Rauten (#) wird die Länge des Nummernteils gesteuert. format="###" erzeugt also einen
dreistelligen Nummernteil für die Unique Number in der Syntax 001, 002, 003, etc. Ist die
höchst mögliche Zahl erreicht (hier im Beispiel 999), wird wieder bei 001 begonnen.
part type: Zeit/Datum
Bei Part-Typen vom Typ Zeit/Datum muss jeder Teil eines Datums einzeln erzeugt werden.
Hierfür stehen alle benötigen Part Typen von Jahr über Monat, Tag, Stunde, Minute bis hin
zu Sekunde zur Verfügung.
<part type="year"/>
<part type="month"/>
<part type="day"/>
<part type="hour"/>
<part type="minute"/>
<part type="second"/>
Wird bei den Part-Typen vom Typ Datum/Zeit (year, month, day, hour, minute und second) darüber
hinaus eine condition verwendet, fängt der Number-Teil der Unique Number bei einem Wechsel
des entsprechenden Datum/Zeit Teiles wieder bei 1 an zu zählen.
Bei der Verwendung der condition ist darauf zu achten, dass die Datum/Zeit
Part-Typen vom stärksten (Jahr) zum schwächsten (Sekunde) Wert hin nacheinander angeordnet werden.
<part type="year" condition="true"/>
<part type="month" condition="true"/>
<part type="day" condition="true"/>
Über format="Formatangabe" ist eine Formatierung der Datum/Zeitausgabe möglich.
<part type="year" format="yyyy"/>
<part type="month" format="mm"/>
<part type="day" format="dd"/>