Plannamenvalidierungsregeln aktualisieren

Aus DiPlanung

Per Default sind im DiPlanCockpit keine Validierungsregeln für Plannamen hinterlegt, so dass keine Überprüfung während des Uploads und Downloads von Planwerken stattfindet. Der Plannamenvalidator ist jedoch per XML konfigurierbar.

Der folgende Screenshot zeigt einen Auszug aus einer beispielhaften XML-Datei zur Konfiguration:

ImagePlannamenvalidierungXML2.png

Die Validierungsregeln werden jeweils pro Kombination aus Planart und Verfahrensart definiert und als Regex formuliert.

Bei Regex gilt, dass in eckigen Klammern steht, um welche Zeichen es geht, und in geschweiften Klammern, wie viele dieser Zeichen genutzt werden dürfen.

Die erste Regex aus dem Beispiel sieht folgendermaßen aus: [B]{1}[S]{1}[A-Z]{1}[a-z&&[^öüäß ]]

Das bedeutet: Der Planname muss aus einem "B" bestehen, gefolgt von einem "S", anschließen ein weiterer Großbuchstabe zwischen A und Z und anschließend beliebig viele Kleinbuchstaben, die keine Umlaute, "ß" oder Leerzeichen sein dürfen.

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 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 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.

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
  • verfahrensart
    • Verfahrensart 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>6_3_EinfacherBPlan</planart>
        <verfahrensart>Baustufenplan_NormalesVerfahren</verfahrensart>
    </bedingung>
    <bedingung>
        <planart>6_3_EinfacherBPlan</planart>
        <verfahrensart>Baustufenplan_VereinfachtesVerfahren</verfahrensart>
    </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>