Unterstütze Adressierung von Steuerelementen
In diesem Artikel beschreiben wir, welche Möglichkeiten es gibt, Konfigurationen für den Designer als Steuerelement bereitzustellen; egal ob Sie in .NET oder eine andere beliebige Programmiersprache entwickeln.
Angabe von Konfigurationselementen
Grundlegend erkennt das System Konfigurationselemente anhand der jeweiligen Definition in der info.json des Moduls. Hierzu wird an der entsprechenden stelle in der Moduldefinitionsdatei folgendes JSON-Objekt hinzugefügt:
{
"type": "native/json/http/website",
"native": {...},
"json": {...},
"http": {...},
"website": {...}
}
Im obigen Abschnitt ist das JSON-Objekt für die Adressierung von Steuerelementen aufgeführt. Alle Eigenschaften sind in der unten stehenden Tabelle aufgeführt:
Feld | Beschreibung |
---|---|
type | Angabe, wie die zentrale Konfiguration bezogen werden muss. Hier sind folgende Typen gültig: json Angabe der benötigten Steuerelemente im JSON Format. (Siehe Abschnitt Angabe desKonfigurationselements im JSON- Format) native Angabe, dass ein .NET Steuerelement geladen werden muss. Dieses Steuerelement wird aus dem Modul- Container bezogen. http Angabe, dass die JSON-Definition für die Konfiguration per http Aufruf bezogen werden soll. messagequeue Angabe, dass die JSON-Definition für die Konfiguration per Message-Queue bezogen werden soll. website Angabe, dass eine Webseite angezeigt werden soll. Die Konfiguration wird direkt an eine JavaScript Funktion übergeben. |
native |
|
json |
|
http |
|
Angabe von Konfigurationselementen als .NET Bibliothek
Wenn das Konfigurationselement als .NET Steuerelement bereitgestellt wird, muss das nachstehende JSON-Objekt verwendet werden. In diesem JSON-Objekt wird dann die jeweilige .NET Bibliothek adressiert, welche die Schnittstelle Module aus dem Software Development Kit implementiert hat.
{
"type": "native",
"native": {
"library": "Core.Config.dll",
"namespace": "Module.Core",
"class": "Config"
}
}
Im obigen Abschnitt ist das JSON-Objekt für die Verwendung von .NET Bibliotheken aufgeführt. Alle Eigenschaften sind in der unten stehenden Tabelle aufgeführt:
Feld | Beschreibung |
---|---|
type | native Angabe, dass ein .NET Steuerelement geladen werden muss. Dieses Steuerelement wird aus dem Modul- Container bezogen. |
library | Angabe, welche Bibliothek aus dem Modul-Container verwendet werden muss um das Steuerelement zu laden. |
namespace | Hier wird der Namensraum zu der Klasse angegeben. Dies ist notwendig, damit der Designer die richtige Klasse initialisieren kann um das Steuerelement zu laden. |
class | Angabe des Klassennamen, der die Schnittstelle IModule implementiert hat. Sollte die Klasse nicht existieren oder nicht die richtige Schnittstelle implementiert haben, wird der Designer einen Fehler melden. |
Angabe von Konfigurationselemente als JSON-Formular
Wenn die Konfiguration im JSON-Format angegeben werden soll, muss das nachstehende JSON-Objekt verwendet werden.
{
"type": "json",
"json": [{
"name": "General",
"language_code": "MOD_TXT_TAB_GENERAL",
"controls": [{...}]
}]
}
Zunächst werden die Tabs definiert, welche die Konfiguration beinhaltet. Wenn nur ein Tab definiert ist, werden die Steuelemente ohne Tab-Control-Rahmen angezeigt.
Feld | Beschreibung |
---|---|
name | Der Name und Anzeigetext des Tabs. |
language_code | Sprachindex um den Anzeigetext des Tabs zu übersetzen. |
controls | Die Elemente, welche das Tab beinhaltet. |
Ein Control wird wie folgt definiert:
Feld | Beschreibung |
name | Name des Eingabefeldes. Dieser wird auch für die Adressierung und Speicherung verwendet. Aus diesem Grund darf der Name nur 1-mal vorkommen. |
display_text | Der Anzeigetext für das Eingabefeld. |
description | Die Beschreibung des Eingabefeldes. |
watermark | Wasserzeichen für das Eingabefeld. |
language_code | Sprachindex, um den Anzeigetext für das Modul zu übersetzen. |
language_code_description | Sprachindex, um die Beschreibung für das Modul zu übersetzen. |
language_code_watermark | Sprachindex, um den Text für das Wasserzeichen zu übersetzen. |
type | Hier wird der Eingabefeldtyp angegeben, der verwendet werden soll. Siehe Abschnitt: Unterstützte Eingabeformulartypen |
default_value | Angabe, welcher Standardwert dieser Eigenschaft zugewiesen werden soll. |
delimiter | Angabe, welches Trennzeichen verwendet werden soll, wenn ein Feld mehrere Werte zulässt. |
items | Bei der Verwendung von Checkboxen, Radio-Buttons und Auswahlboxen müssen die jeweiligen Einträge in diesem Bereich angegeben werden. |
display_text | Anzeigetext, der zur Auswahl angezeigt wird. |
language_code | Sprachindex, um die Anzeigetext zu übersetzen. |
value | Der Wert, welcher bei der Auswahl gespeichert werden muss. |
image | Wenn das Eingabeformular TreeView verwendet wird, kann mit dieser Option angegeben werden, welche Bild-Datei in dem Eingabeformular dargestellt werden soll.https://actiware-development.atlassian.net/browse/IO-1183 |
childs | Wenn das Eingabeformular TreeView verwendet wird, kann man für eine hierachische Darstellung der Einträge mit dieser Eigenschaft weitere Elemente hinzufügen. |
repository_items | Bei der Verwendung von Checkboxen, Radio-Buttons und Auswahlboxen müssen die jeweiligen Einträge in diesem Bereich angegeben werden. |
module_id | Angabe der Identifikationsnummer des Moduls, welches das Repository Add-In ausliefert. |
addin_id | Angabe der Identifikationsnummer des Repository Add-Ins, welches adressiert wurde. |
item_id | Angabe der Identifikationsnummer des Eintrages. Mit der Identifikationsnummer wird im weiteren Verlauf auf das Element referenziert. Somit wird diese Nummer immer benötigt, wenn eine Anwendung das Element beziehen möchte. |
type | Angabe, ob es sich um ein Paket, Ordner oder Datei handelt.
|
name | Anzeigetext, der zur Auswahl angezeigt wird. |
file_name | Name des Paketes, Ordners oder Datei. |
attributes | Optionale informationen zu dem Eintrag. |
items | Mit dieser Eigenschaft können Sie untergeordnete Einträge zu dem Element hinzufügen. |
options | Bei der Anlage von Eigenschaft muss dieses Objekt immer mit angegeben werden. |
required | Gibt mit true an, dass dieses Eigenschaftsfeld mit einem Wert befüllt werden muss. Mit false wird festgelegt, dass der Anwender keinen Eingabewert eintragen muss. Der Standardwert ist: false. |
disable | Gibt mit true an, dass dieses Eigenschaftsfeld deaktiviert ist und keine Eingabewerte zulässt. Mit false wird festgelegt, dass das Eigenschaftfeld aktiviert ist und vom Anwender Eingabewert eingetragen werden können. Der Standardwert ist: false. |
multiple_selection | Gibt mit true an, dass bei Selektionsfelder mehrere Werte ausgewählt werden können. Mit false wird festgelegt, dass nur ein einzelner Eintrag aus einer Liste selektiert werden kann. Der Standardwert ist: false. |
item_selection_only | Gibt mit true an, dass bei Selektionsfeldern nur Werte aus der angegebenen Liste (Werte aus dem Array items) gültig sind. Mit false wird festgelegt, dass dieses Feld nicht nur die Werte aus items zulässt, sondern auch eigene Benutzereingaben. Der Standardwert ist: true. |
input_mask_type | Hier kann entschieden werden, welche Maskenelemente verwendet werden sollen: Simple Unterstützung von einfachen Maskenelementen. Regular Unterstützung von einfachen regulären Ausdrücken als Maskenelement. RegEx Unterstützung von regulären Ausdrücken als Maskenelement. |
input_mask | Angabe der Maske, die für das Eingabefeld MaskedTextBox verwendet werden kann. Siehe Abschnitt: Unterstützte Eingabeformulartypen |
date_input_pattern | Hier kann ein Muster für ein Eingabe von Datumswerten hinterlegt werden. Wird dieses Feld nicht angegeben, verwendet jegliches Datumsfeld die Standardeinstellungen vom Betriebssystem. |
date_output_pattern | Hier kann ein Muster für die Ausgabe von Datumswerten hinterlegt werden. Wird dieses Feld nicht angegeben, wird das Datum in die universelle Zeit umgewandelt (2018-11-02 10:48:28Z). |
input_line_count | Angabe, wie viele Linien ein mehrzeiliges Textfeld darstellen soll. |
support_syntax_fields | Angabe, ob das Konfigurationselement den Syntaxassistenten unterstützt bzw. auf diesem Feld die Funktion für die Formatierung der Syntax ausgeführt wird. |
max_length | Gibt an, wie viele Zeichen das Eingenschaftenfeld maximal zulässt. Wird die Zeichenfolge überschritten, setzt das Eingeschaftenfeld den Status: Error. Der Standardwert ist: 0. Wird der Wert 0 eingetragen, hat das System keine Limitierung die es beachtet. |
min_length | Gibt an, wie viele Zeichen das Eingenschaftenfeld mindestens enthalten muss. Wird die Zeichenfolge unterschritten, setzt das Eingeschaftenfeld den Status: Error. Der Standardwert ist: 0. Wird der Wert 0 eingetragen, hat das System keine Limitierung die es beachtet. |
repository_source | Ordner oder Netzwerkname, welcher als Quelle für das File-Repository verwendet werden soll. |
file_repository_filter | Bei der Verwendung eines File-Repositories kann mit dem Filter angegeben werden, welche Dateien bei dem Auslesen eines Verzeichnisses beachtet werden sollen. Dieser Filter kann eine Kombination aus gültigen Literalpfad- und Platzhalterzeichen (* und ?) enthalten, unterstützt jedoch keine regulären Ausdrücke. |
include_sub_directories | Mit dem Wert true wird angegeben, ob beim Auslesen von Dateien auch alle Unterverzeichnisse aus dem Quellverzeichnis beachtet werden sollen. Mit false sucht das System nur auf der obersten Ebene des Quellverzeichnis nach Dateien. Der Standardwert ist: false. |
source_selection_enabled | Gibt mit true an ob das Quellverzeichnis vom Anwender geändert werden kann. Möchte man verhindern, dass der Anwender das Quellverzeichnis ändern kann muss der Wert false verwendet werden. Der Standardwert ist: false. |
add_button_language_code | Sprachindex für die Übersetzung der Schaltfläche für das Hinzufügen von Parametern, wenn das Eingabefeld Key-Value verwendet wird. |
add_button_display_text | Standardtext, der für die Schaltfläche für das Hinzufügen von Parametern verwendet werden soll. |
credential_stores | Angabe der Credential-Store Identifizierungsnummern, von denen die verfügbaren Login-Profile geladen werden sollen. |
file_selection_only | Gibt mit true an, ob der Anwender in der Auswahlliste eines Repositories nur Dateien auswählen kann. Möchte man erlauben, dass der Anwender auch Pakete und/oder Ordner auswählen kann, muss der Wert mit false verwendet werden. |
Angabe von Konfigurationselementen als JSON-Formular per http
Wenn die Konfiguration im JSON-Format angegeben werden soll, muss das nachstehende JSON-Objekt verwendet werden. In diesem JSON-Objekt wird der Service adressiert, welcher die Route für das Laden der JSON-Definition bereitstellt.
Feld | Beschreibung |
---|---|
type | http Angabe, dass die JSON-Definition für die Konfiguration per http Aufruf bezogen werden soll. |
http | Angabe für den http Aufruf um die JSON-Definition zu laden. |
method | Angabe, welche http-Methode für den Aufruf verwendet werden muss. |
url | Die Url, welche aufgerufen werden muss um die Definition zu beziehen. |
request_headers | Angabe der Header, die beim Aufruf neben den zentralen Headers mitgesendet werden müssen. |
Angabe von Konfigurationselementen als Webseite
Wenn die Konfiguration über eine Webseite bereitgestellt wird, kann das nachfolgende JSON Objekt verwendet werden.
Feld | Beschreibung |
---|---|
type | Soll eine Webseite angezeigt werden, muss als type website angegeben werden |
website | Beschreibt, wo die Webseite zu finden ist und welche JavaScript Funktionen verwendet werden sollen |
url | Die Url, welche aufgerufen werden muss um die Webseite anzuzeigen. |
js_function | Name der JavaScript-Funktion, welche für die Route (LOAD und SAVE) aufgerufen werden soll. |
load_function | (Nur zentrale Modulkonfiguration) Wird der Type website in der Zentralen Modulkonfiguration verwendet, muss statt js_function eine load_function angegeben werden. Diese Funktion wird aufgerufen, um die Modul-Konfiguration an die Webseite zu übergeben. |
save_function | (Nur zentrale Modulkonfiguration) Wird der Type website in der zentralen Modulkonfiguration verwendet, muss statt js_function eine save_function angegeben werden. Diese Funktion wird aufgerufen, um die Modulkonfiguration aus der Webseite auszulesen. |
Beispiel für JavaScript Funktionen
Die Load und Save Funktionen ähneln .NET-SDK Funktionen sehr stark. Der hauptsächliche Unterschied ist, dass in JavaScript die Eigenschaftennamen in “Lower Camel Case” definiert sind. Des Weiteren unterscheiden wir in den nachstehenden Beispielen zwischen dem Ansteuern einer LOAD-Method aktiv vom Designer aus und von dem aktiven Laden der Konfiguration von der Webseite aus.
Laden von Konfigurationen nach dem die Seite aufgerufen wurden (React, Angular, etc.)
In einigen Frameworks müssen die Konfigurationen aktiv von der Webseite aus aufgerufen werden. Bei diesem Verfahren müssen aber nicht nur die Konfigurationen aktiv geladen werden, sondern auch weitere Einstellungen wie alle Verfügbaren Prozesse oder Datenabfragen, sofern diese benötigt werden.
Um die Konfiguration aktiv zu laden kann folgende Code-Schnipsel verwendet werden:
Das obige Beispiel ist in TypeScript geschrieben und wir mit React verwendet. Zu sehen ist, dass unterhalb des Window-Object sdkUiEvents vom Designer bereitgestellt wird, welche die Methode loadConfig() beinhaltet. Da es sich dabei um eine asynchrone Methode handelt, kann diese mit await angesteuert werden, um direkt das Konfigurationsobjekt zu erhalten.
Laden von Konfigurationen bei der Verwendung von simplen Html-Seiten
Der Load-Funktion wird ein Parameter übergeben. Dieser Parameter beinhaltet die Klasse ConfigInformation (siehe https://actiware-development.atlassian.net/wiki/spaces/AWIO/pages/942112778 unter ConfigInformation). Da hier die JSON-Objekte 1-zu-1 als JavaScript zurückgegeben wird, werden z.B. aus den Properties Parameters, BusinessObjects, DataQueries, die Properties parameters
, business_objects
und data_queries
:
Speichern der Einstellungen
Im Gegensatz zur .NET Save Funktion, wird die JavaScript Funktion ohne Parameter aufgerufen. Es wird allerdings auch hier das Objekt ItemConfig zurückerwartet:
Weitere Schritte für die Entwicklung von Webseiten als Konfigurationsoberfläche
Die obigen Beispiele sind nur eine kurze Übersicht über die Funktionen die für Konfigurationsoberflächen welche als Webseite betrieben wird zur Verfügung stellen. Alle weiteren JavaScript Funktionen sind im nachstehenden Artikel beschrieben:
https://actiware-development.atlassian.net/wiki/spaces/AWIO/pages/2765619239