Zum Hauptinhalt springen

What's New in MapEdit AppBuilder 25.1

Stand Bootcamp März 10, 2025 - Version 25.1.96

Warnung

Das Release 25.1. ist stand heute in der pre Alpha Release Phase und ist erst nach der Release Freigabe für den Produktionsbetrieb geeignet.

Hinweis

Die mit (24.2) markierten Neuerungen wurden erst nach dem letzten Bootcamp (Oktober 8, 2024) eingebaut.

Hier werden nur die Highlights vorgestellt.
Für eine vollständige Liste aller Feature und Bugfixes in Tabellenformat siehe
https://help.mapedit.de/changelog/changelog-mapedit-appbuilder

Login und Sicherheit

Die Mindestlänge des Passwort kann nun in den Einstellungen konfiguriert werden muss aber mindestens 8 Zeichen sein.

Desweiteren werden folgende Prüfungen beim anlegen/ändern des Passworts durchgeführt.

Das Passwort muss:

  • Muss mindestens einen Großbuchstaben enthalten
  • Muss mindestens einen Kleinbuchstaben enthalten
  • Muss mindestens eine Zahl enthalten
  • Darf keine Leerzeichen enthalten.
  • Darf keine 4 aufeinanderfolgenden Buchstaben enthalten, z.B. abcd, cdefgh etc
  • Darf keine 4 aufeinanderfolgenden Zahlen enthalten, z.B. 1234, 5678 etc
  • Darf keine 4 sich wiederholende Zeichen enhalten z.B. aaaa, 7777, 9999999 etc
  • Darf nicht das Wort login, password, Passwort etc enhalten
Hinweis

Passwörter die vor Version 25.1.36 angelegt wurden werden nicht geprüft und sind weiterhin nutzbar.

https://help.mapedit.de/admin-guide/mapedit-appbuilder/user-management/users/#passwortrichtlinien

Form Designer

Steuerelemente kopieren und einfügen (duplizieren)

Im gleichen Formular und Formular-übergreifend

SQLTextBox: Datum formatieren und Nachkommastellen bei Zahlen können nun eingestellt werden.

SQLLabel: Datentyp für Suche festlegen

Hier wird angegeben von welchem Datentyp das Ergebnis, also der Ausdruck der angezeigt wird ist.
Der Datentyp wird benötigt wenn der Anwender sich im Filtern Modus befindet und nach dem Wert Filtern will.

Wenn man z.B. auf >0 filtern möchte findet das Programm das Ergebnis nicht wenn es denkt der Ausdruck ist ein Text. Das gleiche mit Datumswerten.

Hinweis

Wenn der Wert nicht gesetzt ist versucht das Programm den Datentyp selbst herauszufinden. Wenn das nicht möglich ist nimmt das Programm den Datentyp "Text" an.

https://help.mapedit.de/admin-guide/mapedit-appbuilder/form-designer/controls/sqllabel#datentyp

SQLLabel: Rahmen anzeigen

Beispiel SQL Label mit und ohne Rahmen

Im Filter Modus werden Sql Labels schon immer mit Rahmen angezeigt

Tip: SQLLabel vs SQLTextBox

  • Beiden können zum Filtern verwendet werden
  • SQL Label kann einen beliebigen SQL Ausdruck zurück liefern, kann aber KEINE Daten ändern.
  • SQL TextBox geht fix auf eine Tabelle und genau ein Feld, kann aber Daten ändern.
    Beispiel: Man hat ein Formular auf die Tabelle Haltung.
    Die Haltung hat einen Anfangs und End Schacht (Tabelle hat ein Feld FID_SCHACHT_ANFANG und FID_SCHACHT_ENDE)
    Die Schachte haben ein Feld Schacht Höhe.
    Mit einer SQL Textbox kann man nun die Höhe des Anfangs und Endschachtes mit je einem SQLTextBox Feld im Haltungsformular anzeigen und ändern.

Geschwindigkeits-Tip

  • Bevorzugen Sie wenn möglich die SQLTextBox vor dem SQLLabel.
  • MapEdit fast im Hintergrund SQL Abfragen von SQL TextBoxen welche auf die gleiche Tabelle und den gleichen Filter gehen zusammen.
  • Damit werden weniger SQLs ausgeführt und das Formular ist schneller und das System wird weniger belastet.
  • Bei SQL Label gibt es keine solche Optimierung/Zusammenfassung.
  • SQLLabels sind immer dann gut wenn man Summen bilden will, Werte zusammen setzen will oder Werte aus mehreren Tabellen anzeigen will, ansonsten ist SQLTextbox die besser Wahl.

Form Designer - Neue Funktionen beim Funktion Button

Neue Variable U.FILTER

{U.FILTER}

Enthält den aktuellen Filter des Formulars

Feature löschen mit SQL

Spatial Filter erzeugen

Wird die Funktion ausgeführt wird der Anwender aufgefordert einen rechteckigen Bereich in der Grafik auf zu ziehen.
Aus diesem Bereich wird eine Spatial Filter Bedingung erzeugt und der Variable {U.SPATIALFILTER} zugewiesen.

Dieser Filter (bzw die Variable) kann dann z.B. beim erzeugen von Berichten, Shape Export und anderem verwendet werden um die Auswahl einzuschränken oder Feature eines Bereiches zu löschen, upzudaten etc.

Beispiel:

Es soll ein rechteckigen Bereich in der Grafik gewählt werden und dann mit dem Spatial Filter dieses Bereiches ein Bericht mit allen Bus Linien die in diesem Bereich liegen ausgegeben werden.

Dazu beim Bericht den Aliasnamen "f" einfügen wenn nicht bereits vorhanden.

Dann den Funktion Button erzeugen. Funktion "Spatial Filter erzeugen" hinzufügen

Funktion "Bericht erzeugen" hinzufügen und bei Filter "{U.SPATIALFILTER}" angeben.

Zeige Demo Video

https://help.mapedit.de/admin-guide/mapedit-appbuilder/form-designer/controls/functionbutton#spatial-filter-erzeugen-create-spatial-filter

Funktion Button: Shape Export

Erzeugt Shape Dateien mittels Tabellenname und SQL Where Bedingung.

Führen Sie den Befehl mehrfach aus wenn Sie mehrere Tabellen exportieren wollen.

https://help.mapedit.de/admin-guide/mapedit-appbuilder/form-designer/controls/functionbutton/#shape-datei-erzeugen-create-shape-file

Funktion Button: Option "Digitize Geometry in Map" bei Funktion "Feature erzeugen"

Wird die Option eingeschalten dann wird der Anwender aufgefordert für das Feature eine Geometrie zu digializieren.

https://help.mapedit.de/admin-guide/mapedit-appbuilder/form-designer/controls/functionbutton/#feature-erzeugen-create-feature

Datenstruktur

Trigger Definitionen anzeigen

Version 24.2.102 (Erweiterung nach Bootcamp)

Alle Trigger einer Tabelle und die Trigger Definitionen (Code) wird nun im AppBuilder im neuen Register "Trigger" angezeigt.

Alle Views anzeigen die eine bestimmte Tabelle verwenden ("Abhängige Views")

Benutze Client Identifier bei Postgre (Seit 24.2.128 rückwirkend nach Bootcamp)

Diese Option gibt es bei Oracle bereits seit vielen Jahren.

Wird diese Option eingeschalten dann wird die Session Variable "client.identification" mit dem Namen des Login Benutzers gefüllt.

Auf diese kann dann z.B. in Trigger etc zugegriffen werden.

Beispiel:

SELECT NULLIF(current_setting('client.identification'),'');

Postgres: Datenbank Grösse manuell optimieren (Vaccum=Staubsaugen)

Danach mit Postgres System User einloggen und die Datenbanken wählen die optimiert werden sollen.

https://help.mapedit.de/admin-guide/mapedit-appbuilder/database-connections/structure/database-connection#datenbank-gr%C3%B6%C3%9Fe-optimieren-vacuum

Warnung

Sie sollte die Aktion nicht im laufenden Betrieb ausführen.

Ist das den wirklich notwendig?

Aus dem Postgres Handbuch:

It is unnecessary to run VACUUM manually because PostgreSQL performs autovacuum operations based on table activity. However, manual VACUUM can be helpful for specific maintenance or performance-tuning purposes. VACUUM FULL recovers disk space occupied by dead tuples, but is very time and performance-intensive

PostgreSQL database tables are auto-vacuumed by default when 20% of the rows plus 50 rows are inserted, updated, or deleted. Tables are auto-analyzed when a threshold is met for 10% of the rows plus 50 rows. For example, a table with 10000 rows is not auto-vacuumed until 2050 rows are inserted, updated, or deleted.

Manche Datenbank Administratoren lassen ein VACCUM mittel Windows Task Scheduler nächtlich laufen.

Bei der Variantenplanung wo ggf viele hunderte Datenbanken im Spiel sind kann diese Speicherplatz sparen. Es ist dort zu empfehlen zumindest die Vorlagedatenbank zu säubern, da diese hunderte male geclont wird.

Kartenverwaltung

Ergebnis des "alle Karten aktualisieren" Dialogs in Zwischenablage kopieren.

Weiterarbeiten mit offenem Dialog ist nun möglich.

SQL Query Tool

Es kommt nun eine Warnung wenn der Anwender ein SQL eingibt bei dem der gleiche Spaltenname mehrfach vorkommt.

Diese Warnung kommt nun auch an anderen Stellen des AppBuilders.

Doppelte Namen sind zwar keine SQL Fehler, dies ist SQL technisch legal, aber es kann zu verwirrungen kommen wenn man nun z.B. das Feld NAME im Berichtsdesigner, bei Tooltips, SQL TableBox etc ausgeben will, dann kommt der eine Name und der andere nicht.

Beispiel:

Weiteres echtes Kunden Beispiel mit einem langen komplexen SQL.
Hinweise: Der alias "as Erfasser_vorname" wurde nachträglich eingefügt nachdem das Problem gefunden wurde.

Vergleichen von zwei Datenstrukturen

Mit dem Befehl "CompareSchema" kann das Datenbank Schema zweier Datenbanken verglichen werden.

Die Funktion vergleicht folgendes:

Sind alle Tabellen vorhanden Sind alle Indexe vorhanden (hierbei wird der Indexname nicht verglichen, nur die Definition) Sind alle Spalten vorhanden Haben die Spalten die gleiche Definition (Also Datentyp, Name etc) Ist der Type der Tabelle gleich. Punkt, Linie, Attribute etc Sind alle Views vorhanden Ist die View Definition die gleiche Andere Dinge werden nicht verglichen!!

Details siehe:
https://help.mapedit.de/admin-guide/mapedit-appbuilder/database-connections/Sql/QueryTool#datenstruktur-vergleichen---compareschema

Koordinatensystem SRID ändern

Beispiel:

CHANGESRID Connection=elektro_pg_1, NewSrid=26911
Warnung

Diese Funktion ändert/transformiert keine Koordinaten. Nur der SRID/ESPG wird geändert.

https://help.mapedit.de/admin-guide/mapedit-appbuilder/database-connections/Sql/QueryTool#koordinatensystem-code-sridepsg-code-%C3%A4ndern

Siehe auch Geometrie Transformieren
https://help.mapedit.de/admin-guide/mapedit-appbuilder/database-connections/Sql/QueryTool/#geometrie-transformieren

Datenstruktur Informationen für AI Abfragen erzeugen

Hiermit kann die Tabellenstuktur und Relationen der Tabellen als Text ausgegeben werden.
Diese Information kann dann AI Werkzeugen, wie z.B. Mircosoft Copilot, DuckDuckGO AI etc gefüttert werden um via AI Sqls zu erzeugen.

Geben Sie in das Eingabefeld alle Tabellen ein die Sie für die Abfrage verwenden wollen.
Bzw. wenn im Eingabefeld ein SQL steht nimmt das Programm alle Tabellen die in dem SQL beteiligt sind.

Zeige Demo Video

Weitere Informationsn finden Sie unter:
https://help.mapedit.de/admin-guide/mapedit-appbuilder/database-connections/Sql/QueryTool#datenstruktur-informationen-f%C3%BCr-ai-abfragen-erzeugen-create-db-structure-for-ai

Bitte beachten

Beachten Sie das bei vielen AI Online Werkzeugen die Länge des Textes der eingegeben werden kann begrenzt ist, z.B. 10240 Zeichen bei Copilot AI. Für längere Texte kann man deswegen bei machen AIs den Text als Datei hochladen.

Bitte beachten

Wenn vom AI erzeugte SQLs sich im AppBuilder nicht ausführen lässt, dann geben Sie dem AI die Fehlermeldung oder sagen sie dem AI "Funktioniert nicht".
Damit kann das AI den Fehler den es selbst gemacht hat korrigieren.
Ja, das klingt komisch, ist aber so, die Intelligenz ist wie der Name sagt "künstlich".

Warnung

Fragen Sie vor Benutzung von AI Ihren Datenschutzbeauftragen!
Das AI Programm (nicht der AppBuilder) kann ggf ihre Daten für andere Zwecke verwenden!

Links zu AI Webseiten

Microsoft Copilot Ai
https://copilot.microsoft.com/

DuckDuckGO Ai (priorisiert Privatsphäre/Datenschutz)
https://duckduckgo.com/aichat

Es gibt natürlich viele mehr.....

Tile Updater

Mehrere Zeilen markieren und Methode gleichzeitig ändern.

Hinweis

Auswahl von Bereichen durch gedrückt halten der Umschalt/SHIFT Taste. Einzelne durch gedrückt halten der STRG/CTRL Taste. Die ausgewählten Zeilen erscheinen grau. Danach den "..." Methode Knopf bei einer der Zeilen drücken und die Methode wählen.

Am Ende der Invalidate XML Dateien wird nun der Kommentar "#End" angezeigt.

Wurde von Kunden so gewünscht.

#Date:2/21/2025 7:27:23 AM
#ConnectionName=LASVEGAS

Map=LasVegas
SRID=26911

Polygon=657877.38;3987864.91;657877.38;4012872.94;659071.46;4012872.94;659071.46;3987864.91;657877.38;3987864.91
Polygon=657877.38;3987864.91;657877.38;4012872.94;659071.46;4012872.94;659071.46;3987864.91;657877.38;3987864.91
Polygon=657877.38;3987864.91;657877.38;4012872.94;659071.46;4012872.94;659071.46;3987864.91;657877.38;3987864.91

#End

Fid und Tabellenname können nun optional in XML als Kommentar geloggt werden.

https://help.mapedit.de/admin-guide/mapedit-appbuilder/map-definitions/TileUpdater/#option-schreibe-debug-infos-in-xml-dateien

Beispiel:

#Date:2/21/2025 7:27:23 AM
#ConnectionName=LASVEGAS

Map=LasVegas
SRID=26911

#BUS_ROUTE:2543821 old
Polygon=657877.38;3987864.91;657877.38;4012872.94;659071.46;4012872.94;659071.46;3987864.91;657877.38;3987864.91
#BUS_ROUTE:2543821 new
Polygon=657877.38;3987864.91;657877.38;4012872.94;659071.46;4012872.94;659071.46;3987864.91;657877.38;3987864.91
#BUS_ROUTE:2543821 old
Polygon=657877.38;3987864.91;657877.38;4012872.94;659071.46;4012872.94;659071.46;3987864.91;657877.38;3987864.91
#BUS_ROUTE:2543821 new
Polygon=657877.38;3987864.91;657877.38;4012872.94;659071.46;4012872.94;659071.46;3987864.91;657877.38;3987864.91
#V_PARK:5296700 old
Point=678083.64;4006367.46
#V_PARK:5296701 old
Point=678522.21;4008985.03
#V_PARK:5296704 launch
Point=678915.37;3995456.18

#Changes: 2094
#End

Änderung beim "Hash initialisieren"

ab Version 24.2.155

Wenn in der Tabelle "ME_TILEUPDATER_DIFF" bereits Datensätze stehen, also ein Initialisieren bereits durchgeführt wurde, dann wird nichts ausgeführt und die Funktion ignoriert. Die ist notwendig, da man ggf. Datenbanken hinterher der Konfiguration hinzufügt hat. D.h. wenn man ein nochmaliges neu initialisieren erzwingen will mus vorher die Tabelle "ME_TILEUPDATER_DIFF" geleert werden.

Statistik

Neue Option "Gelöschte User nicht anzeigen".

Blendet Benutzer die nicht mehr in der Benutzerverwaltung sind in der Liste aus.

Postgres Dump Export: Neue Option "Export im SQL Format"

Logging

Das Logging war in der alten Version vorwiegend für die Synchronisierung ausgelegt und wurde auf Grund von Kundenwünschen überarbeitet und erweitert.

Genau Details der Änderungen siehe:
https://help.mapedit.de/admin-guide/mapedit-appbuilder/database-connections/RecordLogging#protokollierung-von-datensatz%C3%A4nderungen-ab-version-25155
https://help.mapedit.de/admin-guide/mapedit-appbuilder/database-connections/mapedit-model/#me_record_log
https://help.mapedit.de/admin-guide/mapedit-appbuilder/database-connections/synchronization

Konfiguration aller Tabellen auf einmal, dadurch weniger geklicke.

Tabellenweise Protokollierung

Datensatzweise Protokollierung u.a. neue Spalten

value_old (Alle Werte vor der Änderung)
value_new (Alle Werte vor der Änderung) das gleiche für die Geometrie als GEOM Spalten. Vorher nur die neuen Werte in LOG_COMMENT.

Spaltenweise Protokollierung (Neu)

Bitte beachten

Das Logging basiert wie bisher auch auf Client Side Feature Rules. D.h. Änderungen die nicht von MapEdit Desktop Client/Professional kommen werden nicht geloggt.

WildFly Admin

Version 24.2.87 (Erweiterung nach Bootcamp)

Es gibt nun ein zweites Register "Log" in dem das WildFly Mum.Log File angezeigt wird.

Die WildFly Admin URL und das Login kann hier eingestellt werden.
Wird das Login nicht angegeben muss dieses bei jedem starten des WildFly Admin Fensters eingegeben werden.

Datenmodell Vorlagen

  • Vererbare Datenmodell IDs ohne doppelte Updates sind nun möglich. Die Orginale Datenmodell ID wird nun zusätzlich auch beibehalten. Wurde nach dem Release rückwirkend in 24.2.180/25.1. eingebaut.

    Beispiel:

    • Ein Kunde legt eine eigene Vorlage Datenbank mit der MuM Electric Datenmodel Vorlage an.
    • Fügt eigene Spalten und Tabellen hinzu.
    • Erzeugt dann daraus eine eigene Datenmodelvorlage.
    • Die Datenmodellvorlage hat danach zwei Datenmodelle (also zwei Datenmodell IDs) die des Kunden und die des Orginalen Datenmodells (MuM Electric).
    • Mit dieser eigenen Datenmodelvorlage erzeugt er dann die Produktionsdatenbanken.
    • Der Kunde muss wenn sich dann das Orginale Datenmodell (MuM Electric) ändert zuerst seine Vorlage Datenbank updaten und danach seine Datenmodelvorlage aktualisiseren und dann diese Vorlage auf seine Produktionsdatenbanken anwenden.

    Davor ging die Datenmodel ID des Ausgangsdatenmodels (MuM Eletric) verloren und damit war es mit dem Electric Plugin nicht nutzbar da das Plugin die Fachschale nicht als Electric erkennt.