Technologie Bestellsystem für Großhandelsware künftig auf Basis Java Technologieerneuerung bei Pharmahändler Sanacorp Von Sven Braun Von der Modernisierung ihres Bestellsystems auf Basis einer Java-/Applikationsserverlösung verspricht sich die Sanacorp eine Prozessoptimierung: So sollen beispielsweise Bestellvorgänge effizienter abgewickelt werden, der Beschaffungsprozess automatisiert und die Datenpflege weniger aufwändig werden. Bei der Entwicklung der neuen Anwendung unterstützt MaK DATA SYSTEM unter Einsatz des Editor Frameworks der Firma Karneim. Dieses ermöglicht die einfache Handhabung komplexer Oberflächen. Durch das Framework werden Datenmodell, Präsentation und Programmsteuerung gemäß dem MVCAnsatz (Model View Controller) sauber getrennt. Die Sanacorp ist ein führendes Unternehmen im pharmazeutischen Großhandel. Seit mehr als acht Jahrzehnten ist die Kernkompetenz die flächendeckende und wirtschaftliche Versorgung von Apotheken mit Arzneimitteln und Healthcareprodukten. Mit Hilfe modernster Logistik und einem eingespielten Liefersystem versorgt das viertgrößte deutsche pharmazeutische Großhandelsunternehmen aus bundesweit 14 Niederlassungen bis zu viermal täglich ca. 7.000 Apotheken. Damit leistet die Sanacorp einen wichtigen Beitrag, damit zu jeder Zeit und überall in Deutschland Patienten auf die notwendigen Medikamente zurückgreifen können. Um diesen Aufgaben auch in Zukunft gerecht zu werden, hat sich die Sanacorp dazu entschlossen, das derzeitige Bestellsystem für Großhandelsware durch eine neue Anwendung abzulösen. Die technologische Entscheidung fiel für eine Plattform auf Basis einer Java-/Applikationsserverlösung. MaK DATA SYSTEM ist unterstützend bei der Entwicklung dieser Lösung tätig. Die neue Anwendung soll folgenden Zielen gerecht werden: ■ Verbesserte Effizienz des Bestellvorganges 30 MaK DATA \ News ■ Optimaler Aufbau von Dialogen bzw. Dialogfolgen, um den Beschaffungsprozess für Handelsware integriert abwickeln zu können ■ Unterstützung des Mehrniederlassungseinkaufs ■ Die Bearbeitung der Disposition muss von jeder Stelle im Unternehmen möglich sein ■ Automatisierung des Beschaffungsprozesses ■ Optimierung der Bestellmengen bezogen auf die gesamte Unternehmung ■ Alle für den Disponenten relevanten Informationen sollen am Disponentenarbeitsplatz verfügbar sein ■ Der Aufwand zur Datenpflege soll verringert werden ■ Hochverfügbares Bestellwesen Architektur der Java-Anwendung Die Architektur der Java-Applikation enthält die Schichten: ■ Präsentation, ■ Logik und ■ Persistenz. Eine mehrschichtige Architektur steigert die Modularität der Software, da zwischen den Schichten definierte Schnittstellen verwendet werden. Die Implementierung dieser Schnittstellen kann dann von den anderen Schichten unabhängig erfolgen. Die Schichtenarchitektur der JavaAnwendung der Sanacorp enthält folgende Elemente: Präsentationsschicht: ■ GUI Elemente ■ Editoren Logikschicht: ■ Session Beans ■ Data Access Objects Persistenzschicht: ■ Hibernate Beans ■ Datenbanktabellen Kurze Entwicklungszeiten mit Karneim-Framework Auf Clientseite kommt das Editor Framework der Firma Karneim zum Einsatz. Das Editor Framework ist einfach zu bedienen und ermöglicht dem Entwickler sich auf die Implementierung der Fachlogik in den Editoren zu konzentrieren. Der Editor kapselt aus Sicht der Oberfläche Daten und Zustand der Anwendung. Die Funktionalität der Oberflächenkomponenten wird damit reduziert auf eine reine Präsentation der Information. Auf diesem Weg wird eine saubere Trennung gemäß den Grundla- April 2006 / 24 Fotos: Sanacorp Hauptverwaltung der Sanacorp AG in Planegg bei München gen des MVC-Ansatzes gewährleistet. In der Folge können Editor-Instanzen leicht (mehrfach) in variierenden Kontexten in der Oberfläche verwendet werden – so kann die Konsistenz und Aktualisierung von Informationen über mehrere Panels bzw. Dialoge in der Oberfläche sichergestellt werden. Grundsätzlich gibt es zwischen Fenstern auf Clientseite und Session Beans auf Serverseite eine 1:1 Abbildung. Das Session Bean fungiert dabei als serverseitiges Modell und als Controller (siehe MVC) für das clientseitige Fenster. Für jedes Session Bean gibt es ein spezielles Data Transfer Object (DTO), das alle notwendigen Nutzdaten für den Inhalt des Fensters enthält. Auf der Clientseite nimmt der Editor einerseits das DTO entgegen und befüllt die Fenster. Der Editor reagiert andererseits auch auf die Aktionen des Benutzers und übernimmt Aufgaben wie beispielsweise die clientseitige Validierung von Eingaben und eventuell Aufrufe von weiteren Aktionen der Session Beans. Wartung und Test des Systems Um die Wartbarkeit des erstellten Codes zu vereinfachen, wird dieser mittels des Tools CheckStyle gegen von der Sanacorp vorgegebene Code-Richtlinien geprüft. Weiterhin sind diverse JUnit-Tests entwickelt wor- April 2006 / 24 den, um die funktionale Sicherheit ständig zu überprüfen. Die Ausführung der Tests und das Prüfen der Coderichtlinien wurden durch den Einsatz von Cruise Control automatisiert. Cruise Control übernimmt nicht nur das Ausführen der Prüfungen und der Tests, sondern führt alle zwei Stunden einen kompletten Build und das Deployment der gesamten Anwendung durch, sofern innerhalb des CVS Änderungen vorgenommen wurden. Sollten hierbei Fehler aufgetreten sein, so werden automatisch alle relevanten Entwickler per eMail benachrichtigt und sind angehalten, die Fehler zu korrigieren. Die Verteilung der Anwendung auf die Clients erfolgt über Java Web Start. ◆ www.makdata.de/OO Weitere Informationen: Michael Voelkel Telefon: 0431-3993-531 eMail: voelkel @makdata.de Technische Begriffe: Session Bean: Session Beans gehören zu den Enterprise Java Beans. Sie bilden vor allem Vorgänge ab, die der Nutzer mit dem System durchführt. Hibernate: Hibernate ist ein Object/Relational Mapping (ORM) Tool für Java. ORM ist eine Technik, die Daten von Objektmodellen auf relationale Datenstrukturen mittels SQL abzubildet. MVC: Der Begriff Model-View-Controller (MVC) bezeichnet ein Architekturmuster zur Trennung von Softwaresystemen in die drei Einheiten Datenmodell (engl. Model), Präsentation (engl. View) und Programmsteuerung (engl. Controller). Ziel des Modells ist ein flexibles Programmdesign. So werden spätere Erweiterungen einfach möglich; einzelne Komponenten können wieder verwendet werden. Ein weiterer Vorteil besteht bei großen Anwendungen in der Übersichtlichkeit und Ordnung, da die Komplexität reduziert wird. JUnit: JUnit ist ein Framework zum Testen von Java-Programmen. Insbesondere ist es für automatisierte Unit-Tests einzelner Units (meist Klassen oder Methoden) geeignet. MaK DATA \ News 31