Session V-ACOM

COM-Integration mit AccountView

Casper Haspels
AccountView


COM-Integration mit AccountView

Oder weshalb AccountView Finalist des MS Visual FoxPro Award geworden ist! Während der letzten Devcon in Frankfurt hat AccountView während der Keynote von Microsofts Ralph Machholz in Kürze die Möglichkeiten der COM-Integration demonstriert. Die damals präsentierte Software ist in der Zwischenzeit weiterentwickelt und kann jetzt auch als Entwicklertool von Branchen- und Vertriebspartnern eingesetzt werden. Einer der Gründe weshalb wir als einzige europäische Firma in die Endrunde der MS VFP Awards vorgedrungen sind. Während unserem Vortrag zeigen wir Ihnen: Wie "kinderleicht" die 3-Tier Architektur von AccountView Kopplungen mit VFP und XML Front Ends macht; Wie VFP-Systemhäuser die Standardsoftware von AccountView auf den Gebieten Finanzbuchhaltung, Warenwirtschaft, Projekte, Stunden und Verkaufsinformation mit eigenen Lösungen erweitern können; Welche E-Business Lösungen AccountView anbietet; Aktuelle Branchenbeispiele; Zukünftige Entwicklungen

Die ursprüngliche Situation

AccountView ist seit über 10 Jahren Anbieter paneuropäischer Business Software, die in FoxPro entwickelt wurde. Ausgangspunkt für die Windows-Version war unser aktuelles Produkt: eine mehrsprachige, mehrmandanten- und mehrwährungsfähige Finanzbuchhaltungssoftware mit über 4800 Installationen, vor allem in Deutschland, den Niederlanden und Großbritannien. Seit 1987 haben viel hinzugelernt über die Anforderungen unserer Anwender und zahlreiche neue Entwicklungsziele für die Windows-Version gesteckt. Die Analyse unserer Hotline-Datenbank und vieler Diskussionen mit unseren VARs und Kunden hat zur folgenden Liste geführt:

Beschreibung der Lösung

Es war von Anfang an klar, dass die Isolierung der Geschäftsregeln von der Interface und der Datenbank in AccountView eine 3-Schichten-Architektur erfordern würde. Da die Geschäftsregeln in Form von COM-Komponenten freigegeben sind, kann AccountView einfach mit anderen Windows-Anwendungen integriert werden. Dies fanden wir besonders ansprechend.

Die AccountView-Geschäftsregeln wurden in der mittleren Schicht isoliert. Unsere VARs und größeren Kunden können auf einfache Weise aufgabengerichtete Interfaces in Visual Basic, Delphi oder sogar dem Internet Explorer schreiben.

Zur Zeit speichert AccountView Daten in Visual FoxPro-Tabellen. Auf diese Weise werden die Vorteile des niedrigen Cost of Ownership mit hervorra­gender Leistungs­fähigkeit kombiniert.

Die künftigen Versionen werden SQL Server- und Oracle-Backends unterstützen, um die Datensicherheit zu bieten, die große Unternehmen fordern.

Das interne Objektmodell von AccountView ist dem von vertrauten Microsoft Produkten, z. B. Excel, angeglichen.

Unser Ziel war, die Integration mit AccountView für alle Entwickler, die jemals ein MS Office-Produkt automatisiert haben, zu einem Kinderspiel zu machen. Den Arbeitsmappen von Excel entsprechen zum Beispiel die Mandanten von AccountView, das .ActiveWorkBook von Excel entspricht dem .active_admin von AccountView usw.

Die Code-Auszüge auf der linken Seite demonstrieren, wie der Excel-  und AccountView-COM Server von Visual Basic aus gestartet werden können.

 

Aufgrund der COM Server-Architektur wird AccountView genauso skalierbar wie ein NT Server. Sobald die Nachfrage die Verarbeitungs­kapazität einer COM-Komponente übersteigt, können weitere Instanzen gestartet werden, um die Verarbeitungskapazität zu erhöhen. Durch Auslagerung dieser zusätzlichen Komponenten mit DCOM auf einen anderen Server kann eine weitere Leistungs­steigerung erzielt werden.

AccountView ist eine breit ausgelegte betriebswirtschaftliche Software mit zahlreichen Fenstern und Menüoptionen. Damit die Benutzer schnell durch die häufig benutzten Programmteile navigieren können, haben wir eine Explorer-ähnliche Interface entwickelt, in der Symbole für grundlegende Aufgaben wiedergegeben werden. Obwohl der Explorer von der VFP Component Gallery inspiriert wurde, beruht er auf anderem Code.

Der AccountView Explorer verwendet Symbole, um den Benutzern eine aufgabengerichtete Benutzeroberfläche zu bieten. Dies ergänzt die eher traditionelle "Datei-orientierte" Benutzer­oberfläche des Menüsystems. Die Benutzer können im "Persönlichen Ordner" eigene Ordner und Verknüpfungen hinzufügen. Eine Verknüpfung kann führen zu:

  • Einem Geschäftsobjekt
  • Einer Menüoption in einem Geschäftsobjekt
  • Einer externen Datei
  • Einer URL
  • AccountView Explorer Objekt-Eigenschafte

Die am häufigsten von den Kunden angepassten Objekte sind Rechnungslayouts. Um die Kosten für die Unterstützung der Kunden zu senken, haben wir eine objektorientierte Benutzeroberfläche für den VFP Report Designer entwickelt.

Jeder Kunde kann mit dem Layout-Designer die Gestaltung der Layouts für Rechnungen und Mahnungen einfach verändern. Felder und Abbildungen können mit der Maus in das Layout gezogen werden. MS Office-ähnliche Symbolleisten unterstützen die Benutzer beim Formatieren und Ausrichten von Layoutobjekten.

AccountView zeigt sogar Beispieldaten an, die den Benutzern helfen, das Layout zu visualisieren.

Beim Speichern des Layouts erstellt AccountView automatisch eine .FRX-Datei, die schließlich beim Drucken von Rechnungen verwendet wird.

Mit dem AccountView Business Modeller können die Benutzer das Layout von Fenstern an die Anforderungen ihres Unternehmens anpassen. Die Benutzer können selbst die anzuzeigen Spalten wählen, eine Auswahl unter den Daten treffen und die Sortierung der Daten bestimmen.

 

Mit dem BusinessModeller können AccountView-Benutzer wählen, welche Spalten in welcher Reihenfolge erscheinen sollen.

Die Ansichten können gespeichert werden und werden beim nächsten Öffnen des Objekts automatisch wiederverwendet.

Auswahl und Sortierung sind Standardoptionen jedes Geschäftsobjekts. Wenn der Benutzer diese Bedingungen als Teil der BusinessView speichert, werden sie gemeinsam mit dem Fensteraufbau wiederhergestellt, sobald das Geschäftsobjekt erneut geöffnet wird. Für jedes Geschäftsobjekt können beliebig viele BusinessViews definiert und gespeichert werden.

Die Tabellen können für die Verwaltung von unternehmensspezifischen Daten einfach um neue Felder erweitert werden.

Mit dem BusinessModeller können entsprechend befugte Benutzer neue Felder in vorhandene Geschäftsobjekte einfügen oder neue Geschäftsobjekte anlegen.

Die Benutzer können ihre Felder auf Registerkarten anordnen, denen sie selbst Namen geben. Das Anzeigen von Benutzerfeldern in Listen geschieht mittels dem oben gezeigten Dialogfeld "Spalten anzeigen".

Die Benutzerfelder werden mit der AccountView Data Dictionary definiert. Hier werden die Meta-Daten aller Tabellen, Indizes und Felder angezeigt.

 

Benutzerfelder werden automatisch zu den Stammdatenformularen der Geschäftsobjekte hinzugefügt. Dieses Formular enthält einige Felder, mit denen eine Versicherung wahrscheinlich in ihre Kundentabelle erweitern würde.

Währungs- und Datumfelder werden automatisch mit dem AccountView Taschenrechner bzw. Kalender verbunden. Das Feld “Versicherungstyp” wurde als Benutzerliste definiert. AccountView Listenfelder zeigen außer dem Feldcode auch immer die Beschreibung an.

Benutzerfelder können jedoch auch an AccountView-Tabellen gekoppelt werden. Der Versicherungsgebietscode wurde an eine vorhandene Abteilungs-/Projekttabelle gekoppelt.

Die Benutzerfelder werden mit Standard-AccountView-Klassen implementiert. Die Benutzer können in der DataDictionary ihre eigenen VFP-Klassen definieren, wenn zusätzliche Funktionen benötigt werden sollten.

Benutzermenüs sind eine andere Möglichkeit zur Erweiterung der Funktionalität von AccountView.

Das Anlegen von Benutzermenüs geschieht durch die Erfassung des Objektnamens und des Menüpfades, in das die neue Option eingefügt werden soll.

Die Menü-Aktion kann anhand eines Visual Basic Scripts, Java Scripts oder in Visual FoxPro eingegeben werden. Das VB Script und Java-Interface werden mittels MS Script Control realisiert. FoxPro Code wird in der Laufzeit mit einer Variante von run_code.PRG interpretiert. Vielleicht wird eine kommende Version von VFP es den Benutzern ermöglichen, ihre Scripte in Laufzeit zu kompilieren.

AccountView hat VB Script und Java Script implementiert, um offene Standarde für die Erweiterung der Produktfunktionalität verfügbar zu machen. VB Script ist nach Aussage unserer Kunden eine relativ einfach erlernbare Sprache. Mit VB Script können sie zur Entwicklung und Wartung ihrer Änderungen auf eine große Gruppe von Programmierern zurückgreifen.

 

In diesem Beispiel hat ein Benutzer eine Menüleiste definiert, um die Abonnementsgebühren mit einem Visual Basic Script auf das Verbindlichkeitskonto zu buchen.

Das VB Script erhält einen einzigen Parameter, der auf das AccountView Anwendungsobjekt zugreift, und anschließend zum Zugriff auf den aktiven Mandanten (=das aktuelle Geschäftsjahr) verwendet werden kann.  Danach wird ein Grundbuchobjekt erstellt und werden die Buchungswerte festgelegt. Mit der Methode "table_update()" werden die Änderungen gespeichert und wird die neue Grundbuchseite im Journal und Hauptbuch verbucht.

Die AccountView API bietet zahlreiche Entwickler-Hooks, mit denen VARs zur Entwicklung von kunden- oder branchenspezifischen Add-ins AccountView-Ereignisse abfangen können. Dieses Add-in-System ist mit dem des MS Site Server vergleichbar, bei dem VARs die Kalkulation von Steuer- oder Rabattsätzen mit Hilfe der “Order Pipeline”-Metapher durchführen können.

 

Die VARs können zur Implementierung von kunden- oder branchenspezifischen Anpassungen jedes AccountView-Ereignis abfangen. Die interne Architektur von AccountView macht extensiven Gebrauch von “Template and Hook” Designmustern. Die VARs können auf dieselben Hooks zugreifen, die auch die AccountView-Entwickler zur Realisierung des objektspezifischen Verhaltens nutzen.

Die einfachste Methode zur Einfügung eines API-Konnektors in das AccountView API-Register ist, das API Trace Fenster zu öffnen, in dem anschließend der entsprechende Hook erscheint. Das Beispiel links zeigt einen VAR mit dem Händlercode “Systemintegrator”, der einen API Hook Objekt anlegt, der auf das “form_activate”-Ereignis im Objekt Firmen reagiert.

API-Objekte können mit einer VFP Code-Klasse, einer visuellen VFP-Klasse oder einem COM-Objekt realisiert werden. Die Wahl zwischen der Code-Klasse und visuellen Klasse ist in den meisten Fällen dem Entwickler überlassen. In beiden Fällen erzeugt AccountView eine Stub-Class, um die Lernkurve neuer VARs abzuflachen.

Die Möglichkeit, COM API-Objekte zu erstellen, wurde hinzugefügt, um AccountView für C++- und Visual Basic-Entwickler zugänglich zu machen, die COM-Komponenten bevorzugen. Wir planen, VB- und Java-Scripting für API-Objekte zu einem späteren Zeitpunkt zu ermöglichen.

Die Integrated Test Facility steht nicht nur den AccountView-Entwicklern, sondern auch den AccountView VARs zur Verfügung. Das manuelle Testen der umfassenden Funktionalität von AccountView wäre nicht nur sehr zeitaufwendig, sondern angesichts des knappen Arbeitsmarktes und der Kosten für erfahrene Business Software Entwickler praktisch unmöglich. AccountView hat über 3700 Test Skripte geschrieben, die jede Buchhaltungsfunktion des Programms prüfen: die Eurokonvertierung, länderspezifische Mehrwertsteuervorschriften und die Verarbeitung von Währungen während der Konsolidierung, um nur einige Beispiele für die zahlreichen Tests zu nennen.

Die Testumgebung der Integrated Test Facility bietet eine Übersicht über die Testskripte und ihren aktuellen Erfolgs-/Fehlerstatus. Es gibt die Möglichkeit, Skripte einzeln oder gruppenweise zu markieren und anschließend konsekutiv auszuführen.

Die ITF dokumentiert neben den Testergebnisse und andere interessante Testdaten, wie zum Beispiel die Testdauer (welcher Test braucht überdurchschnittlich lange?), ob die Entwicklungsversion oder Laufzeitversion getestet wird sowie den Namen des Entwicklers. Der Testlauf kann bei einem Fehler wahlweise stoppen oder mit dem nächsten Skript fortfahren.

Unter Verwendung der internen Skriptinterface von AccountView wurden mit der ITF vielfältige Tests entwickelt, wie zum Beispiel Regressions-, Stress-, Leistungs- und Netzwerktests.

Einpacken und verteilen

Zur Vereinfachung der Distribution der AccountView-Addins haben wir einen Installationsassistenten entwickelt.

AccountViews Installationsassistent macht die Distribution der Anpassungen an Kunden zum Kinderspiel. Für die Kundenseite bietet AccountView einen entsprechenden Setup-Assistenten, mit dem die Komponenten des VAR mühelos und sicher installiert werden können. Bei der Installation eines Update von AccountView selbst sorgt die Installation mit Install Shield für den Erhalt aller Anpassungen.

Mit dem Installationsassistenten können die folgenden Anpassungen in beliebigen Zusammensetzungen verteilt werden:

  • Individuelle Tabellen und Felder
  • Benutzermenüs
  • API Hook-Objekte

VARs, die VFP Code-Klassen verwenden, haben die Wahl, nur die kompilierten .FXPs oder sowohl .FXPs als auch .PRGs zu distribuieren.

Weitere Neuerungen

Der AccountView Skript-Server bietet eine Schnittstelle zu Anwendungen auf anderen Plattformen, die nicht auf die AccountView COM-Interface zugreifen können. Der Skript-Server verwaltet ein zentrales Verzeichnis mit Skripten, die von anderen Anwendungen stammen. Sobald ein Skript entdeckt wird, wird es vom Skript-Server interpretiert und umbenannt, um doppelte Ausführung zu vermeiden. Die Änderungen an den AccountView-Daten werden im Audit Trail und Skript-Fehler im AccountView-Ereignis-Logbuch festgehalten.

Typische Benutzer des Skript-Server sind Firmen, bei denen die primären Prozesse auf einem AS400 oder Unix-System laufen. Es wurde jedoch auch zur Verbuchung von Kassenverkäufen in Echtzeit in AccountView verwendet. Im Grunde kann jede Anwendung, die einen ASCII-Skript erzeugen kann und es in einem Netzwerkverzeichnis speichern kann, mit dem Skript-Server kommunizieren.

Darüber hinaus ist auch eine E-Mail-Schnittstelle verfügbar, über die der Skript-Server Skripte verarbeitet, die per E-Mail von anderen Standorten eintreffen.

 

Kleinere Unternehmen verlassen sich meistens auf AccountViews Datensicherungs- und Wiederherstellungsfunktionen, um ihre wertvollen Daten zu sichern. AccountView verwendet eine eingebettete Version von DynaZip zur Komprimierung der Dateien in das weitverbreitete .ZIP-Format. Ein Assistent unterstützt den Benutzer bei dieser wichtigen Tätigkeit.

Die Datensicherungs- und Wiederherstellungfunktionen werden von kleineren Kunden auch oft zum Datenaustausch mit ihrem Steuerberater verwendet.

 

Diagramme machen die Kundendaten des letzten und vorliegenden Geschäftsjahres im nebenstehenden Beispiel anschaulicher. Für jeden Kunden können mehrere Diagramme geöffnet werden. Wenn der Benutzer durch die Kundenliste läuft, werden die Diagramme für den jeweils gewählten Kunden angezeigt.

 

Die AccountView-Benutzer können ihre Daten einfach mit Drag and Drop in andere Windows-Anwendungen, wie zum Beispiel MS Excel ziehen. Eine Pivot-Tabelle mit Daten aus dem Journal kann schnell Aufschluss über Aufwendungen und Erträge nach Kunden oder Lieferanten geben.

Die Drag and Drop-Funktion benutzt alle Eigenschaften der aktiven Business View einschließlich der:

  • angezeigten Spalten und ihrer Reihenfolge
  • Datenauswahl
  • Sortierun

 

Die Datenintegrität ist von sehr großer Bedeutung für jede finanzielle Software. Mit der Audit Trail-Funktion kann AccountView alle Änderungen der Mandantendaten registrieren. Benutzer, Datum und eine Beschreibung der Änderung werden festgehalten. Die Systemverwaltung hat die Möglichkeit, nur Änderungen der Stammdaten oder alle Änderungen zu registrieren, je nachdem, ob Sicherheit oder Leistungsfähigkeit höher gewichtet wird.

 

Einen Serienbrief an 5000 Kunden zu erstellen, war mit AccountView noch nie schwer. Jetzt kann jedoch auch eine einzige Adresse in ein MS Word-Dokument eingefügt werden. Die Benutzer können entweder den Umschlag-Button in das Dokument ziehen (OLE Drag & Drop) oder auf das Button klicken und die Adresse in das Dokument einfügen (_CLIPTEXT).

In beiden Fällen wird eine korrekt formatierte Adresse in das Dokument gefügt. Das richtige Adressenformat wird dem Sprachcode des Kunden entnommen.