Plannamenvalidierungsregeln aktualisieren

Aus DiPlanung

Version vom 6. Juni 2025, 11:41 Uhr von Diplanung (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „Für die Validierung der Plannamen werden Regex ausgeführt, wenn diese als Validierungsregeln hinterlegt aus. Regex sehen beispielsweise aus wie folgt und kö…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

Für die Validierung der Plannamen werden Regex ausgeführt, wenn diese als Validierungsregeln hinterlegt aus. Regex sehen beispielsweise aus wie folgt und können je Planart vergeben werden:

ImagePlannamenvalidierungXML.png

Erläuterung der Regex aus dem Beispiel, die pro Planart vergeben werden können:

  • "[A-Z]{1}" = Ein Großbuchstabe (Eckige Klammern enthalten das, worum es geht; geschweifte Klammern geben an, wie viel.)
  • "[a-z&&[^öüäß ]]" = direkt anschließend Kleinbuchstaben mit Ausnahme von Umlauten, "ß" und Leerzeichen
  • "+" = Kombination mehrerer Vorgaben in eckigen Klammern "[beliebiger Inhalt]"
  • "[0-9]{1,3}" = direkt anschließend 1 bis 3 Zahlen
  • "[-]{1}" = Bindestrich bzw. Minus z.B. zur Verbindung mehrerer ORT-Angaben

Zur Vertiefung[Bearbeiten | Quelltext bearbeiten]

Generelles[Bearbeiten | Quelltext bearbeiten]

Folgende Zeichen sind unkritisch und im Plannamen verwendbar:

  • Groß- und Kleinbuchstaben
  • Zahlen

Zusätzlich Sonderzeichen, die im EfA DiPlanCockpit nun möglich sind:

  • Umlaute als Groß- und Kleinbuchstaben wie "Öäß"
  • Weitere Zeichen: ",:§" und Römische Ziffern

Zeichen mit besonderer Bedeutung in Regex:

  • .()^*/
  • Diese Zeichen müssen mit einen vorangestellten \ maskiert werden, um sie von ihrer Sonderrolle zu entbinden.

Details zur Konfiguration des Plannamenvalidators[Bearbeiten | Quelltext bearbeiten]

Die Default-Konfiguration beinhaltet keine Validatorregeln, d.h. der Planname wird in diesem Fall nicht validiert.

<?xml version="1.0" encoding="UTF-8"?>
  <plannamenValidatorKonfiguration>
<!--Definition der plannameSyntaxRegel(n)-->  
  </plannamenValidatorKonfiguration>

Enthält die XML-Konfigurationsdatei Validatorregeln, muss das zu prüfende Verfahren mindestens einer Validatorregel entsprechen, andernfalls wird der Planname als ungültig abgelehnt.

Die Validatorkonfiguration wird in XML beschrieben und basiert auf einem XML-Schema:

ImagePlannamenValidatorSchema.png

Innerhalb der XML-Datei können mehrere Validatoren konfiguriert werden. Ein Validator wird durch eine Planname-Syntax-Regel beschrieben. Dieses Element besteht aus 1-n Bedingungen und 1-n regulären Ausdrücken (Regex). Die Bedingungen beziehen sich auf Verfahrenseigenschaften und dienen dazu, den gültigen Validator für den Plannamen eines Verfahrens zu ermitteln. Folgende Verfahrenseigenschaften lassen sich in den Bedingungen abbilden:

  • planart ** Planart des Verfahrens ** Datentyp: string
  • hatBeschlussBuergerschaftSenatssitzungFnp ** optionale Zusatzprüfung für FNP-Verfahren: *** Sitzung "senatssitzung" hat stattgefunden UND politisches Sitzungsergebnis ist zugestimmt *** Sitzung "beschlussBuergerschaft" hat stattgefunden UND politisches Sitzungsergebnis ist zugestimmt ** Datentyp: boolean
  • hatBeschlussBuergerschaftLapro ** optionale Zusatzprüfung für LaPro-Verfahren: *** Sitzung "beschlussBuergerschaft" hat stattgefunden UND politisches Sitzungsergebnis ist zugestimmt ** Datentyp: boolean

Die einzelnen Bedingungen einer Planname-Syntax-Regel sind ODER-verknüpft, d.h. bezogen auf das Verfahren muss mindestens eine Bedingung erfüllt sein, um den entsprechenden Validator anzuwenden. Der Planname wird dann anhand der regulären Ausdrücke geprüft. Diese regulären Ausdrücke sind ebenfalls ODER-verknüpft, d.h. der Planname ist valide, wenn seine Syntax mindestens einem regulären Ausdruck entspricht.

Beispiel:

<plannameSyntaxRegel>
    <bedingung>
        <planart>Baustufenplan</planart>
    </bedingung>
    <regex>[B]{1}[S]{1}[A-Z]{1}[a-z&amp;&amp;[^öüäß ]]+</regex>
    <regex>[B]{1}[S]{1}[A-Z]{1}[a-z&amp;&amp;[^öüäß ]]+[-]{1}[A-Z]{1}[a-z&amp;&amp;[^öüäß ]]+</regex>
</plannameSyntaxRegel>
<plannameSyntaxRegel>
    <bedingung>
        <planart>EinfacherBebauungsplan</planart>
    </bedingung>
    <bedingung>
        <planart>QualifizierterBebauungsplan</planart>
    </bedingung>
    <regex>[A-Z]{1}[a-z&amp;&amp;[^öüäß ]]+[0-9]{1,3}</regex>
    <regex>[A-Z]{1}[a-z&amp;&amp;[^öüäß ]]+[-]{1}[A-Z]{1}[a-z&amp;&amp;[^öüäß ]]+[0-9]{1,3}</regex>
    <regex>[A-Z]{1}[a-z&amp;&amp;[^öüäß ]]+[0-9]{1,3}[-]{1}[A-Z]{1}[a-z&amp;&amp;[^öüäß ]]+[0-9]{1,3}</regex>
    <regex>[A-Z]{1}[a-z&amp;&amp;[^öüäß ]]+[-]{1}[A-Z]{1}[a-z&amp;&amp;[^öüäß ]]+[0-9]{1,3}[-]{1}[A-Z]{1}[a-zA-Z&amp;&amp;[^öüäß]]+[0-9]{1,3}</regex>
    <regex>[A-Z]{1}[a-z&amp;&amp;[^öüäß ]]+[A-Z]{1}[a-z&amp;&amp;[^öüäß ]]+[0-9]{1,2}</regex>
</plannameSyntaxRegel>