Basierend auf dem Artikel URL-Parameter für VertiGIS Studio Web-Apps wird in diesem Artikel ein möglicher Weg beschrieben, wie man mit Hilfe von VertiGIS Studio Workflow und dem VertiGIS Studio Web SDK einen Aufruf einer Web-App mit angehängten Parametern so konfiguriert, dass direkt zum Initialisierungszeitpunkt der App das Editieren gestartet wird und die Attribute eines Features mit übergebenen Werten vorbefüllt wird.
Ausgangslage: In diesem Beispiel wird ein neues Projekt mit dem Web GIS - Default Template erstellt. Die hier verwendete Beispielkarte Capital City (Web 2.0) enthält 3 editierbare Feature Layer. In diesem Beispiel soll ein Hydrant (Fire Hydrants) erfasst werden und ihm per URL-Parameter ein Wert für die Asset ID übergeben werden. Die Position des Hydranten, sowie weitere Attribute, soll der Anwender interaktiv erfassen.
1. Schritt: Sammeln der Konfigurationswerte
Über die Konfiguration der Map Komponenten (Karte) in die Layer-Erweiterungen navigieren. Fire Hydrants auswählen und im Einstellungsmenü der Titel-Zeile die Modell-URI kopieren. Der Layer Identifikator ist item://layer-extension/victoria-fire-hydrants.
Über die Felderweiterungen zum Feld ASSET_ID navigieren und die Feldeigenschaften aufrufen. Der Feldname der zum Editieren verwendet werden soll ist ASSET_ID.
2. Schritt: Workflow zur Datenübergabe erstellen und zum Start ausführen
Als nächstes wird nach Anleitung in URL-Parameter für VertiGIS Studio Web-Apps ein Workflow erstellt, der die Activities: Get Browser Info und Parse URL, sowie ein Alert enthält.
Die Parameternamen sind frei definierbar. Hie im Beispiel sollen EditLayerID für den Layer-Namen und value für die übergebene Asset ID verwendet werden. Dementsprechend kann zum Testen der korrekten Übergabe im Alert Text entsprechend auf $parseUrl1.query.EditLayerID
und $parseUrl1.query.value
verwiesen werden.
Nun wird der Workflow als Launch Link Workflow konfiguriert. Wird also die App nun mit Eingabe der Workflow ID als Parameter ausgeführt, läuft der Workflow und gibt die übergebenen Werte in einem Alert Pop-Up aus. Beispiel:
3. Schritt: Workflow zum Starten einer Editiersitzung mit vorbefüllten Attributen
Fügt man das Werkzeug zum Erfassen von Features zur App hinzu, hat man einen guten Startpunkt, um Anpassungen vorzunehmen. Dazu wählt man bspw. in der Werkzeugleisten-Konfiguration die Menüelemente und fügt den Befehl Feature hinzufügen der Werkzeugleiste hinzu.
In den Haupt-Einstellungen des Befehls kann nun der Ziel-Layer auf die Fire Hydrants gelegt und die Befehlssequenz von Feature hinzufügen editiert werden.
Der Benutzerdefinierte Befehl zeigt nun Name und Argumente des Befehls: edit.display-add-feature
Sucht man nach diesem in der VertiGIS Studio Web SDK Befehlsreferenz findet man das Beispiel zum Übergeben eines Attributwertes. Fügt man dieses Beispiel nun in den benutzerdefinierten Befehl ein erhält man die folgende Sequenz:
[ { "name": "edit.display-add-feature", "arguments": { "orientation": "vertical", "showTitles": true, "editAttributes": true, "editGeometry": true, "layers": "item://layer-extension/victoria-fire-hydrants", "featureAttributes": { "ASSET_ID": "WFH001234" }, "formUITarget": { "parent": "", "attributes": { "slot": "panel" } }, "templateUITarget": { "parent": "", "attributes": { "slot": "panel" } } } } ]
Nach erfolgreichem Test, kann der Befehl mit einem Klick in einen Workflow umgewandelt werden:
Nach Speichern des Workflows ist dieser Schritt abgeschlossen. Der Befehl kann bei bedarf wieder aus der Werkzeugleiste entfernt werden.
4. Schritt: Workflows zusammenführen
Öffnet man in Workflow Designer nun die erstellten Workflows aus den Schritten 2 und 3, kann man durch Selektieren, Kopieren und Einfügen die Activities von Workflow 3 auf Workflow 2 übertragen.
Um die Aktivitäten zu verketten, muss im Ablauf die Activity Run Operation nach Parse URL anstatt des Alert angehängt werden. In weiterer Folge kann in der Operation der Wert für den Layer ("item://layer-extension/victoria-fire-hydrants"
) durch den Wert aus der Parse URL Activity mit $parseUrl1.query.EditLayerID
ersetz werden. Selbes gilt für den Attributwert. Die Activity Get Workflow Inputs wurde nicht übernommen, daher wurde aus der Operation auch der Bezug zu dieser entfernt. Diest ergibt im beschriebenen Beispiel folgenden Operation Parameter:
=[ { "orientation": "vertical", "showTitles": true, "formUITarget": { "parent": "", "attributes": { "slot": "panel" } }, "templateUITarget": { "parent": "", "attributes": { "slot": "panel" } }, "editAttributes": true, "editGeometry": true, "featureAttributes": {"ASSET_ID":$parseUrl1.query.value }, "layers":$parseUrl1.query.EditLayerID } ]
Ergänzend wurden zwei Activities ergänzt, um die Robustheit zu erhöhen:
- Es wurde eine If Activity ergänzt, die das Vorhandensein des korrekten Ziel-Layer-Parameters überprüft ergänzt. Wenn der Parameter nicht oder ohne Wert geschickt wird, wird der Workflow direkt beendet.
- Es wurde ein Logging für Operation ergänzt, um im Fehlerfall die weitergegebenen eingabewerte überprüfen zu können.
Sie können den Beispielworkflow im Designer mit Open by URL unter Eingabe von https://www.arcgis.com/home/item.html?id=d9f0b77d6b214d55aa066b91ae9cc6c3 öffnen und in Ihre Organisation kopieren.
Notiz: Dieser Artikel ist zur Veranschaulichung der Vorgehensweise beim Arbeiten mit Dokumentation, Help-Center Artikeln und den Studio Designern entstanden. Um einen Workflow für den Produktiveinsatz zum Übergeben und Verarbeiten von Parameterwerten zur Datenerfassung zu erstellen, sollten folgende Erweiterungen und Änderungen in Betracht gezogen werden:
- Interpretation der URL (Get Browser Info, Parse URL) hat diverse Limitationen (nur HTTP GET, Begrenzung der max. Zeichenfolge,...), daher wäre ein Umbau auf Übergabe als Workflow Parametern und auslesen via Get Workflow Inputs Activity.
- Um auch den Feldnamen zu parametrieren müsste eine zusätzliche Run Operation Activity eingefügt werden, die übergebenen Parameterwerte in die finale Operation für das Command einsteuert.
- Um mehrere Felder-Werte-Paare übergeben zu können, müsste eine Iteration (Loop Activity oder ForEach) über Parameter mit Postfix (zB. field1, value1,...) konfiguriert werden und deren Ergebnisse in die Operations einfließen.
Kommentare
0 Kommentare
Bitte melden Sie sich an, um einen Kommentar zu hinterlassen.