Wertauflöser
Wenn eine Konfiguration eine Beziehung zu einem konkreten Wert erfordert, kommt - egal ob es um einen "simplen" Wert oder ein mehr oder weniger komplexes Datenobjekt geht - fast immer eine Wert-Konfiguration ins Spiel.
Im Kontext der Konfiguration erscheint dann ein Platzhalter für eine Wert-Konfiguration, über den - in der Regel optional - genau ein konkreter "Wertauflöser" eingerichtet werden kann.
Dieser Screenshot zeigt eine "leere" Wert-Konfiguration, also das Erscheinungsbild des Platzhalters für eine Wert-Konfiguration innerhalb einer anderen Konfiguration (z. B. als Parameter in einer Ereignisaktion).
Der Text "Kein Wert konfiguriert" weist darauf hin, dass keine Wert-Konfiguration vorhanden ist. Dieser Zustand ist nicht identisch damit, das "Kein Wert" ($null) explizit - als statischer "Un-Wert" - zugewiesen wurde (s. Kein Wert).
Zu welchem Zweck ein konkreter Wertauflöser genutzt wird, hängt von der Konfiguration im Kontext ab. Grundsätzlich sind dabei folgende Fälle zu unterscheiden:
Die Wert-Konfiguration definiert eine "Datenquelle", soll also einen Wert "beschaffen" (durch einen Lesezugriff oder das "Erzeugen" eines Werts), damit dieser verarbeitet (z. B. ausgegeben oder zugeordnet) werden kann.
Die Wert-Konfiguration definiert eine "Datensenke", also den Übergabepunkt für eine Wertzuweisung, z. B. eine Variable oder ein Feld eines Datenobjekts, dem ein Wert zugewiesen werden soll.
Die Konfiguration der Setze Wert Ereignisaktion (s. Screenshot rechts) visualisiert beide Anwendungsfälle für eine Wert-Konfiguration perfekt: Die linke Wert-Konfiguration definiert wohin der durch die rechte Wert-Konfiguration beschaffte Wert geschrieben werden soll. |
|
Lobster Data Platform / Orchestration bietet Wertauflöser der folgenden Kategorien an, teilweise abhängig von der Lizenzierung bestimmter Module:
Konfiguration
Jede Wert-Konfiguration beginnt mit einem Klick auf das Menü-Symbol (links in jedem Platzhalter), der den kontextspezifischen Auswahldialog öffnet:
Der Auswahldialog listet links alle verfügbaren Kategorien von Wertauflösern auf. Per Standard ist die übergreifende (Pseudo-)Kategorie "Alle" ausgewählt, sodass in der Auswahlliste (rechts) alle verfügbaren Wertauflöser inkl. Hinweis auf deren übergeordnete Kategorie (in der "Unterzeile") anzeigt. Im Bild ist der erste Eintrag der Auswahlliste fokussiert: Ein benutzerdefinierter Wertauflöser mit dem Namen "meinResolver", der der Kategorie "Eigene Bausteine" angehört. Links oben (in der Menüleiste oberhalb der Listen) befindet sich ein Eingabefeld für ein Suchkriterium, das ausschließlich die Einträge in der Auswahlliste (also die Wertauflöser der ausgewählten Kategorie) durchsucht. Die Kategorie "Alle" ist beim Öffnen des Auswahldialogs immer vorbelegt, damit die Eingabe eines Suchkriteriums ohne gezielte Auswahl einer spezifischen Kategorie immer alle verfügbaren Wertauflöser berücksichtigt. Erfahrenere Benutzer überspringen die Kategorieauswahl und geben einfach eine bewährte Zeichenfolge ein, um rasch zur Auswahl für einen bestimmten Wertauflöser zu gelangen. Rechts vom Suchfeld erscheinen situationsabhängig verschiedene Ribbon Buttons. Im Screenshot erscheint z. B. der Ribbon Button "Einfügen", weil die Lobster Data Platform / Orchestration-Zwischenablage zum Einfügen geeigneten Inhalt enthält. Dabei muss es sich hier um einen Wertauflöser handeln. |
|
Wertauflöser suchen |
|
Der Screenshot rechts zeigt eine Auswahlliste, die durch die Auswahl einer Kategorie ("Inhaltserzeuge") in der Menüleiste eingeschränkt ist. Hier wird der Name der Kategorie nicht in der Unterzeile angegeben, da er durch die Vorauswahl für alle "Treffer" übereinstimmt. Solange eine Kategorie nur eine überschaubare Anzahl von Wertauflösern enthält, fällt die Auswahl des "richtigen" Kandidaten für ein bestimmte Aufgabe anhand der Short list für die Kategorie recht leicht. Wie an den Zahlen hinter dem Namen der Kategorie in der Menüleiste abzulesen ist, gibt es aber auch Kategorien (z. B. "Wertauflöser (38)" oder "Textverarbeitung (14)") denen so viele Wertauflöser zugeordnet sind, dass auch die eingeschränkte Auswahlliste lang ausfällt. Die Zuordnungssystematik der Wertauflöser zu Kategorien ist eine einstufige Hierarchie, d. h. jeder Wertauflöser ist genau einer Kategorie zugeordnet. Das "Finden" des passenden Wertauflösers über die Auswahl einer Kategorie funktioniert also nur, falls der Anwender aus den angebotenen Kategorien die richtige Wahl trifft. Nicht alle angebotenen Kategorien sdin so benannt, dass sich aus de Namen ein spezifischen Profil ableiten ließe. Außerdem ist z. B. das Aufgabenspektrum für benutzerdefinierte Wertauflöser in der Kategorie "Eigene Bausteine" per Definition unspezifisch. Ob ein Benutzer die Auswahl aus einer selbst gewählten Kategorie gegenüber einer "globalen" Suche über die Kategorie "Alle" bevorzugt, hängt von vielen Faktoren - wie individuellen Kenntnissen, Erfahrungen und Vorlieben - ebenso ab, wie von der spezifischen Aufgabenstellung: Geht es darum einen bekannten Wertauflöser "wiederzufinden", um ihn möglichst effizient auszuwählen, oder ist man auf der Suche nach einem "passenden" Kandidaten, von dem nicht bekannt ist, ob er überhaupt existiert oder wie er benannt und wo er einzusortieren ist. |
|
Im Screenshot rechts wurde in das Suchfeld die Zeichenfolge "relativ" eingegeben, während die Kategorie "Alle" ausgewählt war (Standard beim Öffnen). Die Auswahlliste im Screenshot zeigt für die eingegebene Suchzeichenfolge genau zwei Treffer, in deren Name der Text "relativ" ohne Berücksichtigung der Groß-/Kleinschreibung aber zusammenhängend "gefunden" wurde. Es ist allerdings kein Kriterium für die Suche, dass die eingegebenen Zeichen als zusammenhängende Teilzeichenfolge im Namen verwendet wurden, wie das nächste Beispiel demonstriert. |
|
Im Screenshot rechts wurde in das Suchfeld die Zeichenfolge "rettich" eingegeben. Die Kategorie "Alle" wurde beibehalten. Die Auswahlliste zeigt mit dieser Zeichenfolge nur noch einen Treffer, der die eingegebenen Zeichen (r-e-t-t-i-c-h) in der Eingabereihenfolge enthält: "Relativer Datumsbereich mit Zeit" Die Unterstreichung zeigt dabei die Übereinstimmungen zeichenweise an. Ob es sich lohnt, sich das inhaltlich nicht hilfreiche Schlüsselwort "rettich" für die präzise Auswahl des Relatives Datum mit Zeit-Wertauflösers zu merken, sei dahingestellt. Jedenfalls beschleunigt die Eingabe den Auswahlprozess, der durch Drücken der Eingabetaste abgeschlossen werden kann. |
|
Hilfe zu Wertauflösern erhalten |
|
Innerhalb der Auswahlliste erscheint ganz rechts in der Zeile für jeden Treffer ein kleines
|
|
Symbolik |
|
Der eingangs bereits gezeigte Platzhalter für eine Wert-Konfiguration wird grafisch als Umriss eines Stadions (geometrische Figur) dargestellt. Diese Form soll den Wert symbolisieren, den eine konkrete Wert-Konfiguration zurückgibt. Im Screenshot rechts betrifft dies die linke Seite (Platzhalter) innerhalb einer Setze Wert-Ereignisaktion. Im Unterschied dazu ist auf der rechten Seite der Setze Wert-Konfiguration ein blau umrandetes Trapez zu sehen, das einen konkreten Wertauflöser (hier: Zufälliger Long-Wert) repräsentiert. Das Symbol soll den Wertauflöser als Trichter darstellen, in den man "von oben" einen Eingabewert einkippt, um "unten" einen spezifischen Rückgabewert zu erhalten. |
|
Der Screenshot rechts zeigt eine Setze Wert-Ereignisaktion, die die Zuweisung eines zufälligen Long Long-Werts (Zufälliger Long-Wert-Wertauflöser auf der rechten Seite) als Wert einer Vairablen (Variable-Wertauflöser auf der linken Seite) definiert.
|
|
Der Screenshot rechts zeigt dieselbe Setze Wert-Ereignisaktion, allerdings nachdem für beide Wert-Konfigurationen auf das Minuszeichen rechts oben in dem blau eingerahmten Bereich geklickt wurde. Die Konfigurationsoberfläche mit den Parametern ist dadurch nicht mehr sichtbar und das Trichter-Symbol mit dem blauen Rand zeigt nur noch den Namen des Wertauflösers (in grauer Schrift am oberen Rand) und eine spezifische Detailinformation (links: Name der Variable, rechts: Typ des Rückgabewerts). |
|
Der Screenshot rechts zeigt wiederum dieselbe Setze Wert-Ereignisaktion, allerdings nachdem für beide Wert-Konfigurationen auf das Minuszeichen rechts oben in dem grauen Rechteck geklickt wurde. Das blau umrandete Trichter-Symbol für den Wertauflöser ist nun ganz verschwunden und nur noch das Stadion-Symbol, das den Bereich für eine Wert-Konfiguration (mit oder ohne konfigurierten Wertauflöser) kennzeichnet, ist zu sehen. |
|
Verketten von Wertauflösern |
|
Das Ziel einer Wert-Konfiguration ist immer das Bereitstellen genau eines Rückgabewerts. Beim diesem kann es sich zwar auch um eine "Liste" von Werten oder ein komplexes Datenobjekt mit mehreren Werten in Datenfeldern handeln. Aber auch diese komplexen Datenstrukturen werden insgesamt ebenso als ein Wert (Objekt) zurückgegeben, wie ein simpler Zahlenwert oder Text. Allerdings kann jede Wert-Konfiguration mehr als einen Wertauflöser enthalten, wenn diese zu einer Wertauflöserkette zusammengestellt werden. Innerhalb der Kette, die in der Konfigurationsoberfläche als "Stapel" von Wertauflösern erscheint, hat jeder Wertauflöser genau einen Eingabewert (ggf. von seinem Vorgänger in der Kette) und genau einen Rückgabewert, der entweder als Eingabewert für seinen Nachfolger in der Kette dient oder den Rückgabewert der gesamten Kette darstellt. Der Screenshot rechts verdeutlicht das am Beispiel einer Setze Wert-Ereignisaktion in der Wert-Konfiguration für den zuzuweisenden Wert (rechts):
|
|
Der Screenshot rechts zeigt die Konfiguration für den Setze Wert-Wertauflöser, nach einem Klick auf das Minuszeichen rechts oben in der Wert-Konfiguration für den zuzuweisenden Wert (rechts).
|
|
Das Verketten von Wertauflösern ermöglicht der oben beschriebene Auswahldialog, der zum Hinzufügen eines Wertauflösers in einer bestehenden Wert-Konfiguration für eine vom Benutzer ausgewählte Einfügeposition aufgerufen werden muss. Wie im Screenshot rechts gezeigt, verfügt jeder Wertauflöser über je eine Einfügeposition am oberen und unteren Rand des Trichter-Symbols, um das Hinzufügen eines Vorgängers oder Nachfolger zu ermöglichen. Alle verfügbaren Einfügepositionen innerhalb einer Wert-Konfiguration werden durch ein Beim Verketten eines einzelnen Wertauflösers mit einem zweiten, wird automatisch ein Verketteter Wertauflöser erzeugt, der als unsichtbare Schnittstelle zwischen der Wert-Konfiguration und der Wertauflöserkette fungiert und automatisch wieder aus der Wert-Konfiguration verschwindet, wenn nach dem Entfernen von Wertauflösern (Menüsymbol → Auswahldialog → Ribbon Button "Wert entfernen" oder "Ausschneiden") aus der Kette nur noch ein einzelner Wertauflöser zurückbleibt. |
|
Verschachteln von Wertauflösern |
|
Wenn Wertauflöser über Parameter eines bestimmten Typ verfügen, muss diesen Parametern im Kontext der Konfiguration ein Wert zugewiesen werden können. Der rechts abgebildete Wertauflöser für statischen Text (s. Text) bietet dafür ein Eingabefeld für Text an, dessen Wert ausschließlich im Konfigurationskontext geändert werden kann. Zur Laufzeit wird der konfigurierte Textwert "statisch" (unveränderlich) zurückgegeben. |
|
Im Unterschied dazu sieht der rechts abgebildete Variable-Wertauflöser für den Text-Parameter Name der Variable zwei alternative Wege zum Bereitstellen des Textwerts vor:
|
|
Sofern der Wert eines Parameters (hier: Name der Variable) die Möglichkeit vorsieht, den Parameterwert als Rückgabewert eines anderen Wertauflösers zu definieren, kann man von einer Verschachtelung oder Kaskadierung der beiden Wertauflöser sprechen, wobei der innere Wertauflöser seinen Rückgabewert bereitstellen muss, damit der äußere seinen Rückgabewert ermitteln kann. Im Beispiel rechts wird der Name der Variable im äußeren Variable-Wertauflöser durch eine zweistufige Wertauflöserkette ermittelt:
Der Variable-Wertauflöser ermöglicht mit dieser Konfiguration Schreib-/Lesezugriffe auf eine Variable die abhängig von der im Kontext anwendbaren Rolle dynamisch "benannt" wird (z. B. "Super user limited"). |
|
Verändert man die Wert-Konfiguration für den Parameter Name der Variable so, dass nur noch der per Standard angebotene statische Text-Wertauflöser den Parameterwert definiert (s. erster Screenshot rechts), dann erscheint beim nächsten Öffnen der gesamten Konfiguration oder nach dem Zu-/Aufklappen der Konfigurationsoberfläche für den Variable-Wertauflöser wieder die ursprünglich angebotene Direkteingabe mit den kleinen grauen Pfeilsymbol inks unten. |
|
Während die Auswahlmöglichkeit zwischen Direkteingabe vs. Wert-Konfiguration nur selektiv und fast ausschließlich für Text-Parameter angeboten wird, kommt das Konzept der Verschachtelung von Wertauflösern vielfältig zum Einsatz im allgemeinen Fall wird dann für einen Parameter schon per Standard ein Platzhalter für eine Wert-Konfiguration angezeigt. Gelegentlich ist auch ein konkreter Wertauflöser vorbelegt. Der im Screenshot rechts gezeigte Bedingter Wert-Wertauflöser bietet die Möglichkeit einer Fallunterscheidung, bei der der Rückgabewert je Fall durch eine frei definierbare Wert-Konfiguration festgelegt werden kann. Im Beispiel rechts wurde als Regel für die Fallunterscheidung eine Objekt-Feld-Regel mit dem Ist leer-Vergleichstyp eingefügt. Diese Regel beinhaltet eine Wert-Konfiguration für den Prüfwert, die per Standard mit einem Objekt-Feld-Wertauflöser vorbelegt ist. Dabei handelt sich allerdings nur um einen Vorschlag. Der Objekt-Feld-Wertauflöser kann ohne Weiteres durch jeden anderen Wertauflöser ersetzt werden. |
|
Die rechts abgebildete Beispielkonfiguration für den Bedingter Wert-Wertauflöser prüft Objekt-Feld-Regel, ob der Trim-Wertauflöser (Prüfwert) ausgehend vom Eingabewert für den Bedingter Wert-Wertauflöser eine Zeichenfolge liefert oder leer ist.
►WICHTIG◄ Durch die in der Konfigurationsoberfläche eingezeichneten Pfeile könnte der Eindruck entstehen, dass der in der Objekt-Feld-Regel "getrimmte" Prüfwerts an den zweiten Zweig der Fallunterscheidung als Eingabewert weitergeleitet wird, falls er nicht-leer ist. Das ist nicht der Fall! Vielmehr symbolisieren die Pfeile im Kontext der Fallunterscheidung nur die Reihenfolge der logischen Abarbeitung der Zweige und nicht die Weitergabe eines Werts. Sowohl für eine (im Beispiel nicht vorgesehene) weitere Prüfung als auch für eine Wert-Konfiguration in jedem Zweig ist ausschließlich der Eingabewert relevant, der an den Bedingter Wert-Wertauflöser von außen übergeben wurde. |
|