Graphische Bedienoberfläche

Bei der Gestaltung von GUIs hat sich in der Serverprogrammierung das MVC-Modell durchgesetzt (Model-View-Controller), das eine effiziente Trennung von Ablaufsteuerung, Datenmodell und der dem Nutzer präsentierten Oberfläche erlaubt. Der Ablauf des GUI-Managers entspricht dem MVC-Modell. Wir beschreiben hier den Zusammenhang zwischen der Anwendung und dem dem Nutzer präsentierten Bildschirm.

Die Nutzeroberfläche wird in Form von HTML-Seiten konfiguriert. Diese können beispielsweise mit CSS und Javascript beliebig konfiguriert und bedientechnisch gesteuert werden, ohne dass dies Auswirkungen auf die Anwendung hat. Bis auf Textmarken, die von anwendungsspezifischen Daten ersetzt werden, sind die Inhalte der Seiten statisch. Eine Internationalisierung auf dieser Stufe wird in der Regel dadurch erreicht, dass verschiedene Versionen einer Seite in den jeweiligen Sprachen erstellt und vom Server anhand der im HTTP-Aufruf angegebenen Nutzersprache selektiert werden. Dies ist vorgesehen, aber noch nicht realisiert.

Für die Verlinkung der Seiten ist lediglich notwendig, dass der Server die HTML-Dateien findet und im Controllerteil weiß, welche Seiten mit welchen variablen Daten zu füllen sind. Die Positionen, an denen variable Daten eingefügt werden sollen, sind durch Textmarken gekennzeichnet:

<body lang="de-DE" dir="ltr">
   <h1>Erzeugung neuer Zertifikate</h1>
   <p><br/>
   <!--EI_STEP_INFO-->
      <br/>
   </p>
   <!--EI_FORM_LIST-->

     <br/>
     <br/>

Die Textmarken “EI_STEP_INFO” und “EI_FORM_LIST”sollen durch controllerspezifische Daten ersetzt werden. Möglicherweise werden nicht alle Informationen tatsächlich erzeugt, weshalb die Marken als HTML-Kommentar ausgeführt sind. Die Kommentarzeichen werden beim Austausch entfernt. Grundsätzlich können die Marken an beliebigen Stellen platziert werden, auch innerhalb von Tags, um beispielsweise die Darstellungseigenschaften zu beeinflussen.

Programmintern werden die auszutauschenden Daten in einer unsortierten String-Map gesammelt. Die String-Map enthält die Marke als Schlüsselbegriff und die darzustellenden Daten als HTML-Text, d.h. einschließlich HTML-Steuersequenzen. Die Textmarke ist in beiden Fällen der reine Text ohne die HTML-Kommentarzeichen, die bei Austausch der Daten automatisch entfernt werden.

Da der Text HTML-Steuerzeichen enthält, ist eine zweite Abstraktionsstufe notwendig. Diese besteht aus einer XML-Datei, die die HTML-Teile des Austauschtextes enthält:

<site url="/import_cert_single">
  <tag name="EI_HTML_INFO">
      <text i="1" language="DE">
          Wählen Sie eine Zertifikatdatei (Dateiendung .crt)
          zum Hochladen aus. Wenn der private Schlüssel ebenfalls zur Verfügung steht
          (Dateiendung .pk8), <br/> wählen Sie diese Datei ebenfalls aus und geben Sie
          das Kennwort zum Entschlüsseln des privaten Schlüssels an.
      </text>

Das Tag <site> gibt die HTML-Datei an, das Tag <tag> die Textmarke, mit <text> können nach bedarf unterschiedliche Texte in unterschiedlichen Sprachen abgerufen werden. Mit diesem Modell kann auch iterativ gearbeitet werden. Das Einfügen einer Liste unbekannter Länge kann mit zwei XML-Einträgen erledigt werden:

<tag name="EI_FORM_LIST">
    <text i="01" language="DE">
        <input type="radio" name="cert" value="I_S0" />Familienkennung: I_S1 / Generation: I_S2 / Siblig I_S3 <br/>
            Owner: I_S4 <br/> Beschreibung: I_S5 <br/><br/>
    </text>
    <text i="02" language="DE">
        <form action="/create_certificate" method="post">
            I_LIST <br/>
            <input type="radio" name="cert" value="new" checked="checked"/>neue Familie erzeugen<br/><br/>
            <input type="submit" name="type" value="Parallelzertifikat erzeugen"/>
            <input type="submit" name="type" value="Neue Generation erzeugen"/>
        </form>
    </text>

Text “02” wird in die String-Map eingefügt, Text “01” in der notwendigen Anzahl vervielfältigt, bis alle Zeilen vorliegen, und anschließend ebenfalls an die String-Map angehängt. Da die Map unsortiert ist und die Elemente in der Reihenfolge des Eintrags ausgetauscht werden, wird zunächst EI_FORM_LIST substituiert und anschließend die durch den Eintrag erzeugte zweite Marke I_LIST. Die interne Marke I_LIST darf allerdings nicht als HTML-Kommentar eingefügt werden, da das XML-Auswertungssystem Kommentare entfernt.