Soll eine große Anzahl an Features bearbeitet werden, so ist die Service API zum klassischen Editieren wenig zweckmäßig. Daher bietet WebOffice 10.7 SP1 eine Service API zur Massenbearbeitung mittels URL-Parametern an, wobei mit einem Aufruf jeweils nur eine einzige Feature Class bearbeitet werden kann, welche über den Parameter editlayerid definiert wird. Die zu editierenden Features müssen weiters über dasselbe Schlüsselfeld angesprochen werden, welches mittels des Parameters editkeyfield festgelegt wird.
Eine Massenbearbeitung besteht aus zwei Schritten. Zuerst wird für alle editkeyvalue-Parameter überprüft, ob sie schon in der Featureklasse gespeichert sind oder nicht. Für das Erstellen dürfen diese Werte nicht vorhanden sein, fürs Löschen und Updaten müssen sie es dagegen sein. Ist skip_checks=false gesetzt, so wird der Editiervorgang schon an dieser Stelle unterbrochen, falls es entsprechende Probleme gibt. Dieser Schritt kann durch Eingabe des Parameters skip_checks=true übersprungen werden, sodass die übrigen, möglichen Editieraktionen sehr wohl durchgeführt werden. Dadurch kann verhindert werden, dass der gesamte Aufruf mit einem Fehler abgebrochen wird und keine Daten verändert werden, sobald eine Inkonsistenz im Aufruf festgestellt wird.
In einem zweiten Schritt erfolgt die tatsächliche Änderung der Daten.
Ein großer Vorteil der Verwendung dieser Editierfunktionalität besteht im Unterschied zur klassischen Editierfunktionalität darin, dass für den Fall, dass das Editieren einzelner Features nicht möglich ist, in der Logdatei die fehlgeschlagenen Features einzeln angeführt werden. Außerdem besteht die Möglichkeit, mittels skip_checks=true die möglichen Änderungen auch im Falle von Fehlschlägen bei anderen Änderungen durchzuführen.
Im Folgenden stehen die HTTP Abfrage String Parameter, die verwendet werden können, um das Verhalten des WebOffice 10.7 SP1 Massenbearbeitungsmoduls zu kontrollieren, wobei die Parameter mit "_XX" mehrmals vergeben werden können und jede Editieraktion durch Parameter derselben Nummer identifiert werden kann (z.B. "_01").
Parameter |
Beschreibung |
project |
Definiert das Projekt, in dem die Massenbearbeitung durchgeführt werden soll |
skip_checks |
Wird dieser Parameter auf "false" gesetzt, so wird der Editiervorgang schon an dieser Stelle unterbrochen, falls es entsprechende Probleme gibt. Dieser Schritt kann durch Setzen des Parameters auf "true" übersprungen werden, sodass die übrigen, möglichen Editieraktionen sehr wohl durchgeführt werden. |
editlayerid |
Die Editier-Layer werden über den Abgleich mit der Kennung identifiziert, die in den Attributen der externen Layer-ID konfiguriert ist. |
editkeyfield |
Der Parameter editkeyfield muss den Feldnamen enthalten, um nach dem Namen des Features zu suchen, das editiert werden soll. Die zu editierenden Features müssen alle über dasselbe Schlüsselfeld angesprochen werden. |
edit action_XX |
Definiert die Editier-Aktion, die verwendet werden soll. Gültige Werte für diesen Parameter sind: ▪create ▪edit ▪delete |
editkeyvalue_XX |
Dieser Parameter ist nur gültig für die Editieraktionen "Edit". Der Wert editkeyvalue muss eindeutig sein und darf nicht mehrmals auftauchen (z.B. mittels Objekt-ID, um Objekt eindeutig anzusprechen). |
editfields_XX |
Liste an Editierfeldern, an die die jeweiligen Werte unter editvalues übergeben werden soll. Die Liste wird standardmäßig durch ";" begrenzt, z.B. TYPE;NAME;REMARK;DISTANCE |
editvalues_XX |
Liste mit Editierwerten, die an die Felder unter editkeyvalue übergeben werden sollen. Die Anzahl der Elemente der Liste muss mit der Anzahl der Elemente der Liste der Editierfelder übereinstimmen, z.B.: Mein Eingabetyp;Mein Name;Meine Anmerkung;100.87 |
geometry_XX |
Mit diesem Parameter können Stützpunkte (X,Y) von Objekten gesetzt werden. In Kombination mit den Parametern editvalues und editfields können sowohl die Geometrie als auch die Attribute von Objekten gesetzt werden. Der Editiervorgang muss dann nur mehr im Editierformular mit dem Button "Übernehmen" abgeschlossen werden. Beim Erstellen von Punkten wird nur ein Koordinatenpaar gesetzt. Beim Erstellen von Linien und Polygonen müssen mehr Koordinatenpaare getrennt durch ";" gesetzt werden. Die jeweiligen Koordinaten in einem Paar werden durch "%20" oder " " voneinander getrennt. |
Beispielanfrage für einen Massenbearbeitungsaufruf auf eine Punkt-Featureklasse:
https://myserver.domain.com/MyApplication/synservice?project=MyProject&skip_checks=true&editlayerid=gasthaeuser&editkeyfield=NUMMER&editaction_01=create&editkeyvalue_01=25&editfields_01=E_NAME;ANSCHRIFT&editvalues_01=Basuatz Sägewerk;Schlögelgasse 1&geometry_01=1718472 5954030&editaction_02=edit&editkeyvalue_02=11&editfields_02=E_NAME&editvalues_02=Gasthof zur goldenen Eiche&editaction_03=delete&editkeyvalue_03=12