nsi logo text 1294x200header default 840x180 03

invispix 10x10

Im Februar 2009 wurde die neue FIX Version 4.0.0 freigegeben. Dies ist der zweite Sprung in der ersten Stelle der Versionsnummer innerhalb der letzten Jahre.

Dieser Artikel nimmt das zum Anlass und beschreibt die Änderungen der vergangenen Jahre und wie damit bestehende Anwendungen modernisiert werden können.

Warum modernisieren und nicht neu entwickeln?

"Der Applikationsgenerator FIX und die damit entwickelten Programme sind alt und unmodern!"

So kann man es sehen - wenn man es negativ betrachtet. Positiv betrachtet lässt sich jedoch sagen, dass mit FIX erstellte Programme schon eine sehr lange Zeit im Einsatz sind und sich heute noch im Einsatz befinden. Sie haben damit bewiesen, dass sie sehr stabil und ausgereift sind und den heutigen Anforderungen durchaus gewachsen sind.

Deshalb lohnt es sich, FIX und FIX Programme zu modernisieren.

Eine Neuentwicklung bedeutet einen hohen Kostenfaktor.

Sämtliche Funktionalitäten, Konzepte und Verbesserungen, die über Jahre hinweg in der FIX-Anwendung realisiert wurden, müssen in die Neuentwicklung übertragen werden. Danach ist eine ausgedehnte Test- und Fehlerbehebungsphase notwendig, um die gleiche Stabilität zu erreichen, wie sie die FIX-Anwendung bietet. Als weitere Nebenkosten müssen Schulungen für Entwickler und Anwender sowie Kosten für neue Hardware eingeplant werden. Moderne Entwicklungswerkzeuge sind oft wesentlich komplexer und die damit erstellen Anwendungen haben einen wesentlich höheren Ressourcenbedarf. Dem gegenüber steht eine Anwendung, die zwar nach dem neusten Stand der Technik entwickelt wurde, jedoch keine zusätzliche Funktionalität bietet.

Diese Tatsachen wurden auch von NSI anfangs falsch eingeschätzt. Das hat zu Entwicklungen geführt, die zwar eine wesentlich modernere Oberfläche bieten, bei denen der Anpassungsaufwand in der Anwendung jedoch viel zu hoch war. Diese Ansätze wurden deshalb wieder aufgegeben.

Bei den folgenden Versionen von FIX wurde darauf geachtet, nur Änderungen einzuführen, die wenig Aufwand auf der Anwendungsseite verursachen. In vielen Fällen handelt es sich dabei um Erweiterungen, bei denen gar kein Handlungsbedarf besteht, wenn sie nicht genutzt werden. So beschränkt sich beispielsweise die Migration einer Anwendung von FIX 2.9.5 auf FIX 3.0.0 im Wesentlichen auf das Installieren der Version und das Neukompilieren der Anwendung. Damit bietet sich dem Anwendungsentwickler die Möglichkeit, die neuen Features vorerst in wenigen Modulen einzusetzen und später auf die ganze Anwendung auszudehnen.

Warum überhaupt modernisieren?

Wenn man die EDV-Umwelt aufmerksam beobachtet, kann man sehen, dass es viele Anwendungen gibt, die noch textbasiert sind. Diese Anwendungen werden von ihren Benutzern schnell und sicher bedient, ohne jemals zur Maus zu greifen. Viele kennen die Anwendung so gut, dass sie oft längere Zeit nicht auf den Bildschirm schauen müssen. Das lässt vermuten, dass eine Modernisierung der Software nicht notwendig ist.

Neben diesem Personenkreis, der die Anwendung in dieser Art bedient, gibt es jedoch weitere Personen, die mit der Software zu tun haben. Das sind zum Großteil die Entscheider, die bestimmen, ob eine neue Software eingesetzt wird oder ob die bestehende - eventuell in einer neuen Version - weiter eingesetzt wird. Diese Personen haben ganz andere Erwartungen. Sie legen mehr Wert auf Optik und einheitliche, standardisierte Bedienung. Nicht ohne Grund - denn es gibt noch eine weitere Gruppe. Das sind die Personen, die das Programm noch nicht kennen und sich neu einarbeiten müssen. Dabei profitieren sie davon, wenn die Software Konzepte verwendet, die sie bereits von anderen Programmen kennen.

Durch die Verwendung einer neuen Optik entstehen weitere Vorteile:

  • Die Module werden übersichtlicher. Dadurch ist es möglich, den Informationsgehalt eines Moduls zu steigern.
  • Das hat zur Folge, dass weniger Fehler bei der Erfassung gemacht werden.
  • Letztendlich entsteht eine große Zeitersparnis bei der Nachbearbeitung.

Abgesehen von diesen Tatsachen, darf nicht vergessen werden, dass der Einsatz von neuen Versionen mit "schöneren" Oberflächen zu einer höheren Motivation der Mitarbeiter führt, die tagtäglich mit der Anwendung arbeiten.


Wie kann eine Anwendung modernisiert werden?

Eines der großen Probleme von FIX und FIX-Anwendungen liegt in der Optik, in der sich die Module präsentieren. Ein anderes Problem liegt in der Bedienweise, die sich stark von der von Windows unterscheidet. Windows wird von vielen als Maßstab angesehen, was Optik und Bedienung angeht. Beiden Problemen kann durch den Einsatz der Möglichkeiten, die die Version 4.0.0 bietet, begegnet werden.

Anhand eines Beispiels wird gezeigt, welche Möglichkeiten FIX 4.0.0 bietet. Der folgende Text beschreibt die dazu notwendigen Schritte. Er dient dazu, einen Überblick über die Möglichkeiten von FIX 4.0.0 zu geben.

Wenn Sie detaillierte Informationen dazu benötigen, nehmen Sie bitte Kontakt mit uns auf!

Das folgende Bild zeigt zwei Module einer Anwendung, die mit FIX 2.9.4 entwickelt wurde. (Zum Vergrößern bitte anklicken)

zum Vergrößern bitte anklicken... zum Vergrößern bitte anklicken...
Nach dem Einsatz von FIX 4.0.0 und der Ausnutzung der zur Verfügung stehenden Möglichkeiten sehen die Masken so aus.
zum Vergrößern bitte anklicken...

zum Vergrößern bitte anklicken...


Anhand der folgenden 7 Schritte können Sie sich einen Überblick verschaffen, was verändert wurde.

Schritt 1: Übersetzen

Die Anwendung wurde mit FIX 4.0.0 übersetzt. Dieser Schritt dient eigentlich nur zur Vorbereitung und ist Voraussetzung für die folgenden Schritte. Er zeigt jedoch, dass bereits nach der Übersetzung alle Module ohne größere Änderungen voll funktionsfähig sind.

Schritt 2: Austausch der Semigrafikzeichen

Die mit FIX/Win ausgelieferten Semigrafikzeichen entsprechen dem Stand der Technik von 1995. Durch den Austausch der Bitmaps für diese Zeichen lässt sich eine wesentlich modernere und ansprechendere Optik erzeugen. Diese Änderung bedeutet zwar einen relativ hohen Aufwand, da jede Bitmap neu entworfen werden muss. Andererseits lohnt sich aber dieser Aufwand, da von der Änderung alle Module profitieren, weil jede Maske die gleichen Grafikzeichen verwendet.

Passend zu den Bitmaps wurde die Farbzuordnungstabelle angepasst. Sie besitzt seit der Version 4.0.0 ein neues erweitertes Format, das auch die Definition von Schriftattributen wie "Fett", "Kursiv" oder "Unterstrichen" zulässt.

Schritt 3: Proportionalschrift für Führungstexte

Dieser Schritt benötigt etwas Vorarbeit, die für dieses Beispiel schon bei der Umstellung der Anwendung auf FIX 2.9.4 erledigt wurde: Die Layoutdateien der Maske müssen vom binären (mly) in das textuelle Format (pan) konvertiert werden. FIX bietet dafür ein Werkzeug an.

Danach kann die textuelle Datei mit einem Texteditor bearbeitet werden. Um Führungstexte in Proportionalschrift zu verwenden, müssen lediglich die "Write"-Anweisungen durch "Textlabel" Anweisungen ersetzt werden. Die Parameter müssen nicht geändert werden. Das Ganze beschränkt sich also auf simples Suchen&Ersetzen. Um alle Module der Anwendung zu bearbeiten, kann ein Shellskript mit Hilfe von sed diese Aufgabe erheblich erleichtern.

Durch diese Änderung werden alle Texte in sogenannte Paintareas vom Typ Textlabel umgesetzt. Paintareas sind Zeichenflächen, die vom Frontend mit beliebigem Inhalt gefüllt werden können. Sie besitzen ein Token, das durch sein Breite den Bereich definiert und einen optionalen Text, der von FIX/Win zur Darstellung genutzt werden kann. Paintareas vom Typ Textlabel werden vom Frontend dargestellt, indem der Text in Proportionalschrift gezeichnet wird. Wenn der Text - wie in diesem Fall - nicht angegeben wird, dann wird das Token als Text verwendet.

Der Vorteil bei der expliziten Angabe eines Textes liegt darin, dass der Text wesentlich länger sein darf als das Token. Damit kann die Optik noch weiter verbessert werden. Ein Text in Proportionalschrift benötigt oft weniger Platz. Texte, die früher abgekürzt wurden, können nun ausgeschrieben werden. Oder es besteht die Möglichkeit, die Felder näher an den Texten zu platzieren, um so mehr Platz für weitere Informationen zu haben. Eine weitere Möglichkeit besteht in der Verwendung von Tooltips. Gerade bei Tabellenüberschriften, bei denen immer chronischer Platzmangel herrscht, kann der komplette Bescheibungstext auch als Tooltip zur abgekürzten Beschriftung angegeben werden. Die neue Version des Layouteditors led, die jetzt unter FIX/Win gestartet werden kann und so Mausunterstützung und eine bessere WYSIWYG-Darstellung bietet, stellt dabei eine große Hilfe dar.

zum Vergrößern bitte anklicken...

Alternativ besteht auch die Möglichkeit, die Paintareas programmatisch zu erzeugen. Die Paintareas werden dabei nicht im Layout definiert. Eine Umsetzung in das textuelle Layoutformat ist deshalb nicht notwendig. Stattdessen wird in der Anwendung eine Funktion implementiert, die das Layout nach dem Laden einer Maske analysiert und entsprechende Bereiche durch Paintareas ersetzt.

Schritt 4: Proportionalschrift für Felder

Durch die Definition eines Ressourcewertes in der Datei fix.rc werden alle Felder als Fieldareas dargestellt. Fieldareas arbeiten ähnlich wie Paintareas. Sie werden zur Darstellung von Feldinhalten in Proportionalschrift benutzt. Im Gegensatz zu Paintareas ändert sich der Inhalt einer Fieldarea wesentlich häufiger. Deshalb kommt hier ein leicht abgewandeltes Verfahren zum Einsatz.

Eine Folge der Verwendung von Fieldareas ist, dass FIX/Win in diesem Fall nicht mehr die Feldwert-Erfassung von FIX benutzt. Stattdessen wird eine Feldwert-Erfassung von FIX/Win benutzt, die auf nativen Windows-Feldern (Edit Control) basiert. Die Erfassung wird damit mehr "Windows-like". So ist beispielsweise das Positionieren der Schreibmarke oder das Markieren von Textteilen mit der Maus möglich. Tasten wie Pos1, Ende, Strg-Pfeiltaste sind mit den gleichen Funktionen belegt, wie in anderen Windows-Anwendungen.

Damit auch die übrige Bedienung eine passende Tastenbelegung verwendet, ist es möglich, die Belegung der Tasten, die nicht die Feldwert-Erfassung betreffen, kontextabhängig zu definieren. Auf diese Weise kann beispielsweise, beim Drücken von TAB in einer Maske das Event K_RT gesendet werden und beim Drücken von TAB in einem Menü dieses Event unterbunden werden. Die Belegung der Tasten kann also geändert werden, ohne dass die Logik der Anwendung davon betroffen ist. Dadurch wird ein weiteres Stückchen "Windows-like" erreicht.

Wie bei den Führungstexten ist auch bei Feldern der Einsatz von Feinarbeit möglich, um die Breiten der Felder an den Platzbedarf der Texte anzupassen. In den meisten Fällen sinkt der Platzbedarf durch den Einsatz von Proportionalschrift. Es gibt jedoch auch Fälle, bei denen es notwendig ist, das Feld zu verbreitern. Das trifft z.B. oft bei Feldern zu, die nur Großschrift verwenden. Unbedingt notwendig ist das jedoch nicht, da zum einen abgeschnittene Feldwerte automatisch durch Tooltips vollständig dargestellt werden und zum anderen bei der Erfassung der Feldwert automatisch verschoben wird. Beim Anpassen der Breiten wird immer nur die Anzeigebreite verändert. Die Feldbreite, die die Anzahl Zeichen eines Feldes bestimmt, bleibt davon unberührt.

Schritt 5: Darstellung des Menüs

Über eine Einstellung in der Datei fix.rc kann festgelegt werden, dass alle Menüpunkte Proportionalschrift verwenden. Zur Darstellung werden dann Paintareas verwendet. Um eine noch bessere Optik zu erhalten, wurden die Semigrafikzeichen der Rahmen ausgetauscht. Das Logo im Hintergrund, das in der alten Version einfach durch invertierten Text dargestellt wurde, wurde durch eine Grafik (Siehe Schritt 7) ausgetauscht.

zum Vergrößern bitte anklicken... zum Vergrößern bitte anklicken...

 

Weitere Verbesserungen der Optik lassen sich erreichen, indem im Frontend eine eigene Funktion zur Darstellung der Menüpunkte implementiert wird. Damit ist es beispielsweise möglich, den invertierten Bereich des aktiven Menüpunkts bis zum Rahmen zu füllen oder zu einem Menüpunkt ein Icon zu zeichnen.

Schritt 6: Darstellung von Tabellen und Selos

zum Vergrößern bitte klicken... zum Vergrößern bitte klicken...

Durch den Aufruf einer FIX-Funktion, wird festgelegt, dass alle Selos in Tabellendarstellung gezeichnet werden sollen. Das bewirkt, dass FIX die Überschriften als Tableheader zeichnet und dass FIX/Win die Felder in einer anderen Art und Weise zeichnet.

Um die gleiche Darstellung bei Tabellen zu erreichen, ist eine Funktion zu implementieren, die für jedes Feld festlegt, ob es als Tabellenfeld dargestellt werden soll, oder nicht. Ein erster Ansatz für eine solche Funktion ist eine, die alle Felder, die innerhalb einer Tabelle liegen als Tabellenfelder definiert. Diese Funktion kann dann um Ausnahmen erweitert werden, in denen bestimmte Tabellen ausgelassen werden. Bei der Verwendung von Zeilenvarianten kann es beispielsweise sinnvoll sein, weiterhin die alte Darstellung zu verwenden.

Um die Optik der Tabellen perfekt darzustellen, müssen die Felder einer Tabelle unmittelbar nebeneinander liegen und die Überschriften müssen in Paintareas vom Typ Tableheader umgewandelt werden. Dieser Schritt kann entweder durch die Anpassung des Layouts mittels led vorgenommen werden, oder durch eine intelligente Logik, die die Felder nach dem Laden verschiebt und die Überschriften anpasst.

Schritt 7: Anzeigen von Grafiken

Paintareas lassen sich in vielfältiger Weise nutzen. Sie sind nicht auf die Darstellung von Texten in Proportionalschrift beschränkt. Allgemein gesehen handelt es sich um Flächen, die vom Frontend durch beliebige Zeichenoperationen gefüllt werden können. Sie können deshalb auch zur Darstellung von Grafiken und Bitmaps benutzt werden.

Größere Grafiken werden in einem Bereich dargestellt, der durch mehrere Paintareas untereinander definiert wird. Jede Paintarea enthält zum einen eine Zeileninformation und zum anderen die Information, um welche Grafik es sich handelt. Diese Information kann beispielsweise in einem der privaten longvals, im Token oder im Text der Paintarea untergebracht werden.

In der Benutzerbibliothek von FIX/Win ist eine Funktion zu implementieren, die diese Informationen erkennt, eine entsprechende Grafik konstruiert und den zur Zeile passenden Teil in die entsprechende Paintarea kopiert.

Im Beispiel wurde diese Technik benutzt, um Passbilder von Personen anzuzeigen. Nach dem Lesen eines Satzes wird die ID der Person in die Paintareas eingetragen, die das Passbild aufnehmen sollen.

Auf der Seite von FIX/Win wurden die möglichen Passbilder als Bitmaps zur Verfügung gestellt. Sie werden von der Benutzerbibliothek geladen und in die entsprechenden Paintareas kopiert.

Da es sich hier um ein Beispiel handelt, wurde der Code bewusst einfach gehalten. In einer echten Anwendung müssen einige Detailprobleme gelöst werden. So ist beispielsweise das Format, die Größe und der Speicherort der Bitmaps von zentraler Bedeutung. Windows bietet eine Funktion an, die Bitmaps in den Formaten *.bmp, *.gif, und *.jpg lesen kann. FIX besitzt eine Funktion, mit der binäre Daten zum Frontend übertragen werden können. Damit ist es möglich, die Bilder in der Datenbank abzulegen. Um den Netzwerkverkehr zu minimieren, sollte dann jedoch über einen Cache-Mechanismus nachgedacht werden. Auch die Tatsache, dass mehrere Bitmaps gleichzeitig sichtbar sein können, muss durch eine entsprechende Verwaltung behandelt werden.


Die vorhergehenden Artikel haben anhand eines Beispiels die wichtigsten Möglichkeiten gezeigt, um mit FIX 4.0.0 eine Anwendung zu modernisieren. Darüber hinaus bestehen aber noch weitere Möglichkeiten, die hier nur kurz aufgezählt werden sollen.

  • Vergrößern des Bildschirm über die Größe von 80x25 Zeichen hinaus.
  • Verwendung von Reitern zur Darstellung von Maskenvarianten.
  • Buttons zur Steuerung des Maskenablaufs.
  • Kontextmenüs zu Feldern.
  • Tooltips zu Feldern und Texten.
  • Verwendung von Unicode.

Ausblick

Die Modernisierung von FIX und den FIX-Anwendungen in den vergangenen Jahren hat gezeigt, dass es sich lohnt:

  • Das in der Software enthaltene Know-How, das einen beachtlichen Wert darstellt, kommt auch in zukünftigen Versionen weiter zum Einsatz.
  • Die Darstellung und Bedienung geht weiter in Richtung Windows, was besonders Anfängern den Einstieg in die Software erleichtert.
  • Die Darstellung ist übersichtlicher geworden. Deshalb sind größere Module mit mehr Feldern möglich, ohne dass die Maske unübersichtlich erscheint.
  • Der höhere Informationsgehalt führt zu weniger Fehlern bei der Erfassung. Daraus resultiert eine Zeitersparnis bei der Nacharbeit.

Deshalb wird die eingeschlagene Richtung weiter beibehalten. Für die nächsten Versionen von FIX sind weitere Verbesserungen geplant:

  • Mit der Maus verschiebbare Masken, Selos und Choices
  • Verwendung von Windows Controls wie Checkboxen und Comboboxen.
  • Buttons in Selos und Choices.
  • Suchfelder in Selos.
  • Scrollbars zum Verschieben von Tabelleninhalten.