intern SOFTWARE-DESIGN Software-Design <IGAC> Autor: ras OE: Datum: 06.03.2008 Verteiler: Version: 0.1 Status: Ersetzt: RIN IKD KE2 Fertig Klassifizierung: intern Ablage: 68615912 14.05.2016 Seite 1/16 Software-Design IGAC INHALTSVERZEICHNIS 1. DOKUMENT-HISTORY .......................................................................................................................... 4 2. MANAGEMENT-SUMMARY .................................................................................................................. 4 3. ÜBERBLICK: FACHLICHE UND TECHNISCHE GEGEBENHEITEN AUS DEM UMFELD ................ 4 3.1. FACHLICHER KONTEXT..................................................................................................................... 4 3.1.1. Zweck ................................................................................................................................... 4 3.1.2. Fachliche Codes / Regeln / Konventionen ........................................................................... 4 3.2. TECHNISCHER KONTEXT .................................................................................................................. 5 3.2.1. Systemlandschaft / Umfeld ................................................................................................... 5 3.2.2. Technische Codes / Regeln / Konventionen aus dem Umfeld ............................................. 5 4. STRATEGIE ........................................................................................................................................... 6 4.1. HTTP GET URL SYNTAX ................................................................................................................ 6 4.1.1. Vorgeschriebene Parameter ................................................................................................ 6 4.1.2. „environment“ Parameter...................................................................................................... 6 4.1.3. Kommando Parameter ......................................................................................................... 6 4.1.4. HTTP GET URL Response .................................................................................................. 6 4.2. IGAC KOMMANDOS IMPLEMENTIERUNG ............................................................................................ 7 4.2.1. Syrius Kommandos .............................................................................................................. 7 4.2.2. LPC Kommandos ................................................................................................................. 7 4.2.3. Vision Kommandos ............................................................................................................... 7 4.3. AUSFÜHRUNG DER KOMMANDO ........................................................................................................ 7 4.3.1. Aus JAVA Applikationen (Syrius und LPC) .......................................................................... 7 4.3.2. Aus Windows Applikation (Vision) ........................................................................................ 7 4.4. PROZESS KONTROLLE ..................................................................................................................... 7 4.5. PORT STRATEGIE ............................................................................................................................ 7 4.6. START DER CLIENT ANWENDUNGEN ................................................................................................. 8 4.6.1. Start von IGAC Tray ............................................................................................................. 8 4.6.2. Start von Anwendung Icon ................................................................................................... 8 4.6.3. Start durch IGAC Kommando ............................................................................................... 8 5. ARCHITEKTUR ...................................................................................................................................... 9 6. KOMPONENTEN ................................................................................................................................... 9 6.1. SUPPORT – IGAC ........................................................................................................................... 9 6.1.1. IGAC Start Skript .................................................................................................................. 9 6.1.2. Start des IGAC ..................................................................................................................... 9 6.1.3. Sicht der Ausführung der Kommando ................................................................................ 10 6.1.4. IGAC Servlet ....................................................................................................................... 10 6.1.5. Command Execution Manager ........................................................................................... 10 6.1.6. Window ToFront Manager .................................................................................................. 11 6.1.7. Syrius, LPC und Vision Commands ................................................................................... 11 6.1.8. Syrius und LPC RMI Commands ....................................................................................... 11 6.1.9. Syrius, LPC und Vision Applications .................................................................................. 11 6.2. SUPPORT - IGAC STARTER ........................................................................................................... 11 6.3. MAVEN.......................................................................................................................................... 11 6.4. SERVICE LAYER............................................................................................................................. 12 6.5. JDIC ............................................................................................................................................ 12 6.6. COROUTINE................................................................................................................................... 12 6.7. HYPERIC SIGAR ........................................................................................................................... 12 7. ABLAUFBEZOGENE UMSETZUNGSSTRATEGIEN ......................................................................... 13 7.1. SYRIUS UND LPC VERSIONEN MIT MAVEN ...................................................................................... 13 7.1.1. Syrius und LPC Versionen als POM Dateien ..................................................................... 13 7.1.2. Shares Maven Repositories ............................................................................................... 13 7.1.3. Java Classpath Generator .................................................................................................. 13 7.1.4. Start Syrius und LPC .......................................................................................................... 13 68615912 14.05.2016 Seite 2/16 Software-Design IGAC 8. GLOBALS ............................................................................................................................................ 14 8.1. 8.2. 9. IGAC AUF DESKTOP W ORKSTATION ............................................................................................... 14 IGAC AUF TERMINAL SERVER ........................................................................................................ 14 EVENT- UND EXCEPTIONHANDLING ............................................................................................... 14 10. KONFIGURATIONEN UND PROPERTIES ..................................................................................... 15 10.1. 10.2. 11. SCHNITTSTELLEN .......................................................................................................................... 15 11.1. 12. IGAC.PROPERTIES .......................................................................................................................... 15 LOG4J.PROPERTIES ....................................................................................................................... 15 RMI SCHNITTSTELLEN ................................................................................................................... 15 DATENHALTUNG ............................................................................................................................ 15 12.1. 12.2. TEST SHARE ................................................................................................................................. 15 REFERENZ SHARE ......................................................................................................................... 15 13. HARDWARE UND BETRIEBSSYSTEM ......................................................................................... 15 14. KOMMUNIKATION IN VERTEILTEN SYSTEMEN ......................................................................... 15 15. ORGANISATION / HILFSMITTEL ................................................................................................... 16 16. ANHANG .......................................................................................................................................... 16 16.1. 16.2. 16.3. 68615912 BEGRIFFE UND ABKÜRZUNGEN ....................................................................................................... 16 REFERENZDOKUMENTE .................................................................................................................. 16 CHECKLISTE .................................................................................................................................. 16 14.05.2016 Seite 3/16 Software-Design IGAC 1. DOKUMENT-HISTORY Das Dokument weist folgende Geschichte auf: Dok. Vers Datum Status 0.1 0.1 27.02.08 06.03.08 In Arbeit Fertig Bemerkung Ersatzhinweis Verfasser Freigabe: Datum / Stelle ras ras 2. MANAGEMENT-SUMMARY Der „Inter GUI Application Commands“, kurz IGAC, ermöglicht Kommunikation zwischen Visana GUI Applikationen (Syrius, LPC und Vision-CRM). In diesem Sinn ist IGAC also verantwortlich für die Einrichtung und für den Start der GUI Applikationen auf den Desktop Workstations. Dieses Dokument beleuchtet die wichtigsten Aspekte und das technische Designs des IGAC. Der IGAC ist in Java 5 implementiert. 3. ÜBERBLICK: FACHLICHE UND TECHNISCHE GEGEBENHEITEN AUS DEM UMFELD 3.1. Fachlicher Kontext 3.1.1. Zweck Seit dem OK Projekt verfügen Visana Services AG über 3 GUI Anwendungen: Syrius, LPC und Vision-CRM. Diese Anwendungen, die unabhängig sind eine der anderen, IGAC liefert ein allgemeines Transportprotokoll, um Kommando (Beispiel: OPEN_BO) zwischen ihnen zu senden. 3.1.2. Fachliche Codes / Regeln / Konventionen Um diese Kommunikation zwischen den Anwendungen zu erlauben müssen diese zentral durch IGAC gestartet werden. 68615912 14.05.2016 Seite 4/16 Software-Design IGAC 3.2. Technischer Kontext 3.2.1. Systemlandschaft / Umfeld 3.2.2. Technische Codes / Regeln / Konventionen aus dem Umfeld Alle Anwendungen einschliesslich des IGAC müssen auf den Desktop Workstations installiert werden. Die Versionen der verschiedenen Anwendungen werden auf Shares (FTP-Server) gesetzt, die durch IGAC gelangt sind, um regelmässige Aktualisierungen zu erlauben. Referenz FTP-Server ist auf die Maschine a0vbrn51. Die Anwendungen, Skripte, Icons, usw. werden auf jede Desktop Workstations unter „C:\Program Files\visapp“ gesetzt. Für die JAVA Anwendungen (Syrius und LPC), wird MAVEN als Behälter benutzt. Die verschiedenen Regionen von der Schweiz verfügen über ihre Share (Kopie der Referenz), um die Zugangsüberladung zu vermeiden. 68615912 14.05.2016 Seite 5/16 Software-Design IGAC 4. STRATEGIE Theoretisch könnten IGAC Kommandos von einer anfragenden Applikation über verschiedene Protokolle an IGAC verschickt werden. Jedoch für eine einfache und klare Definition ist HTTP GET URL implementiert worden. IGAC hat also einen HTTP Server, wo die Kommandos der verschiedenen Applikationen gesendet werden. 4.1. HTTP GET URL Syntax 4.1.1. Vorgeschriebene Parameter HTTP IGAC Kommando muss mindestens 4 Parameter haben: appId : Applikation ID (SYRIUS, LPC oder VISION) zu starten cmd : IGAC Kommando (START, OPEN_BO oder OPEN_BO_LIST) mandator : Mandator der Applikation (VISANA, SANA24 oder VIVACARE) zu starten requestingAppID : Applikation ID der anfragenden Applikation Beispiel : http://localhost:{httpPort}/igac?appId=LPC&cmd=OPEN_BO&mandator=VISANA&requestingAp pID=SYRIUS 4.1.2. „environment“ Parameter Wenn der „environment“ Parameter nicht anwesend ist, wird ein Auswahlfenster öffnen. Beispiel mit „environment“ Parameter : http://localhost:{httpPort}/igac?appId=LPC&cmd=OPEN_BO&mandator=VISANA&environment= SUPPORT&requestingAppID=SYRIUS 4.1.3. Kommando Parameter boId : boType : guiTabNumber : partnerId : Business Objekt ID Business Objekt Typ Tabnummer in SYRIUS GUI Partner ID (OPEN_BO) (OPEN_BO) (OPEN_BO) (OPEN_BO_LIST) Beispiel für OPEN_BO_LIST : http://localhost:{httpPort}/igac?appId=LPC&cmd=OPEN_BO_LIST&mandator=VISANA&environ ment=SUPPORT&requestingAppID=SYRIUS&partnerId=1.013.326.08 4.1.4. HTTP GET URL Response HTTP Response ist 200, wenn das Kommando erfolgreich ausgeführt worden ist oder 500, wenn ein Fehler eingetreten ist. 68615912 14.05.2016 Seite 6/16 Software-Design IGAC 4.2. IGAC Kommandos Implementierung 4.2.1. Syrius Kommandos 4.2.2. 4.2.3. 4.3. START OPEN_BO LPC Kommandos START OPEN_BO OPEN_BO_LIST Vision Kommandos START OPEN_BO Ausführung der Kommando IGAC führt die eingegangen Kommandos von zwei Art und Weise aus: 4.3.1. Aus JAVA Applikationen (Syrius und LPC) Beim Start registrieren sich Syrius und LPC auf dem RMI Registry, das durch IGAC kontrolliert wurde. Die Kommandos werden danach durch RMI ausgeführt. 4.3.2. Aus Windows Applikation (Vision) Die Kommandos werden durch „bat“ Dateien ausgeführt. 4.4. Prozess Kontrolle Syrius, LPC und Vorstellung, die von IGAC unabhängige Anwendungen sind, IGAC benutzt eine Implementierung der Prozesskontrolle, um zu bestimmen, wenn die Zielanwendung immer verfügbar ist und nicht bereits vom Benutzer geschlossen worden ist. Diese Kontrollen erfolgen durch die Benutzung der „Hyperic SIGAR library“ (http://www.hyperic.com/products/sigar.html). 4.5. Port Strategie IGAC benötigt zwei Ports auf der Maschine: RMI (Registry) : HTTP (Server) : Wert zwischen 50000 und 50100 Wert zwischen 60000 und 60100 Um zu bestimmen, wenn die gewünschten Ports nicht bereits benutzt werden, IGAC führt eine Forschung mit einer "netstat" Implementierung (SIGAR) durch. 68615912 14.05.2016 Seite 7/16 Software-Design IGAC 4.6. Start der Client Anwendungen 4.6.1. Start von IGAC Tray IGAC ist keine GUI-Anwendung. Der einzige Zugang liefert ist eine Tray Icon, von wo kann man die Anwendungen starten. 4.6.2. Start von Anwendung Icon Die Anwendungen können von den Icon auf dem Büro gestartet werden. Die „environment“ ist automatisch PRODUKTION. 4.6.3. Start durch IGAC Kommando Wenn ein IGAC Kommando von einer Anwendung zu einer Anwendung gesendet wird, die noch nicht gestartet wird (Beispiel: Syrius -> LPC), wird diese automatisch eingeführt. 68615912 14.05.2016 Seite 8/16 Software-Design IGAC 5. ARCHITEKTUR 6. KOMPONENTEN 6.1. Support – IGAC Diese Komponente ist die Basis Library der IGAC Anwendung. 6.1.1. IGAC Start Skript Der IGAC Start Skript ist die Batch Datei „UpdateAndStartIGAC.bat“ unter „C:\Program Files\visapp\IGAC\bin“. Dieses Skript ruft das "igac.cmd" Skript unter „\\{share}\visapp$“, welche die lokale Support-IGAC Version (wenn nötig) auf den neuesten Stand bringt und startet ein IGAC Instanz. 6.1.2. Start des IGAC Wenn die IGAC Anwendung startet, werden mehrere Aktionen ausgeführt: 68615912 initialisiert „log4j“ Logging sucht freien HTTP und RMI Ports start HTTP Server stellt RMI Registry her exportiert die neuen und geänderten Anwendung mit dem „visapp.cmd“ Skript unter „\\{share}\visapp$“ stellt IGAC Tray her 14.05.2016 Seite 9/16 Software-Design IGAC 6.1.3. Sicht der Ausführung der Kommando 6.1.4. IGAC Servlet Dieser Servlet ist die Eingangsstelle für alle Kommandos. Er läuft in einen Jetty eingebetteten Server. Wenn die zwingenden Parameter anwesend sind, wird das Kommando an „Command Execution Manager“ gesendet. Zwei Antworten können zum Kunden zurückgeschickt werden: 200: erfolgreich ausgeführter Kommando 500: Problem bei der Ausführung des Kommando 6.1.5. Command Execution Manager Dieser Bestandteil synchronisiert die Requests und wählt die Implementierung des entsprechenden Kommandos aus. Wenn das Kommando ohne Problem ausgeführt wird, benutzt er "Window ToFront Manager", damit die Zielanwendung dem Benutzer erscheint. 68615912 14.05.2016 Seite 10/16 Software-Design IGAC 6.1.6. Window ToFront Manager Dieser Manager benutzt das „Coroutine“ Library, um die Zielanwendung "TO FRONT" zu verzeichnen. Um sicher zu sein, dass die Zielanwendung für den Benutzer sichtbar ist, werden vier Windows-Methoden von user32.dll ausgeführt: SetWindowPos (mit HWND_TOPMOST) SetWindowPos (mit HWND_NOTOPMOST) SetForegroundWindow ShowWindow 6.1.7. Syrius, LPC und Vision Commands Die allgemeinen Implementierungen der Kommandos für die verschiedenen Anwendungen. Sie kontrollieren, wenn die Anwendung gestartet werden muss Sie führen das entsprechende RMI Request (Syrius und LPC) aus Sie prüfen das Status der Anwendung 6.1.8. Syrius und LPC RMI Commands Beim Start einer Instanz von Syrius oder LPC registriert sich diese auf die "RMI Registry". Die Kommandos werden dann durch die RMI Methoden gesendet, die durch jede Schnittstelle definiert wurden. 6.1.9. Syrius, LPC und Vision Applications Diese Komponenten sind verantwortlich für den Start der Instanzen und von der Ausführung des Kommandos für Vision. 6.2. Support - IGAC Starter Diese Library wird von den Desktop Icons durch Batch Dateien benutzt. Ein HTTP Request wird dann auf IGAC gesendet. 6.3. Maven IGAC benutzt Maven, um JAR Repository aufrechtzuerhalten und um die Classpath Dateien zu erzeugen, die beim Start von Syrius und LPC benutzt wurden. (Punkt 7.1) 68615912 14.05.2016 Seite 11/16 Software-Design IGAC 6.4. Service Layer Der Service Layer bietet Services für den Zugang zu Visana-Daten an, die in LDAP oder Datenbanken gespeichert wurden. IGAC benutzt zwei Services: 6.5. Userinfo Service: starten Config Service: Version, …) authentisiert Username und Kennwort, um einen Instanz zu liefert Informationen über die Instanzen zu starten (Name, JDIC JDesktop Integration Components (JDIC) Mission ist, Desktop/Java Integration zu ermöglichen. Die JDIC Datei "tray.dll" muss im selben Verzeichnis wie die „jar“ Datei gestellt werden. IGAC braucht diese Library um Tray Icon zu generieren. 6.6. Coroutine Diese Library stellt die Einheit für Java zur Verfügung, um externe Funktionen von Windows DLL anzurufen. Die Coroutine Datei "corojdk11.dll" muss im selben Verzeichnis wie die „jar“ Datei gestellt werden. IGAC braucht diese Library um Windows Aufzählung zu kennen und Window ToFront auszuführen. 6.7. Hyperic SIGAR SIGAR ist eine Library zu zugänglich machendem Betriebssystem und Hardwareinformation in Java. Die SIGAR Datei "sigar-x86-winnt.dll" muss im selben Verzeichnis wie die „jar“ Datei gestellt werden. IGAC braucht diese Library um Instanz Prozess und Port Information zu finden. 68615912 14.05.2016 Seite 12/16 Software-Design IGAC 7. ABLAUFBEZOGENE UMSETZUNGSSTRATEGIEN 7.1. Syrius und LPC Versionen mit Maven Um Platz auf der Festplatte einzusparen und um die Installation der neuen Versionen zu verbessern, IGAC arbeitet mit ein „Maven repository“. Dieses Repository enthält alle JAR Dateien, die für die Benutzung der Syrius und LPC Anwendungen notwendig sind. 7.1.1. Syrius und LPC Versionen als POM Dateien Auf den Shares sind die Versionen von Syrius und LPC als "pom.xml" Dateien. Diese Dateien enthalten die notwendigen Informationen (jar dependencies), um eine Anwendung zu benutzen. 7.1.2. Shares Maven Repositories Wenn eine pom.xml Datei auf den Test Share entsteht oder geändert wird, muss die Maven Repository dieses Share mit dem Skript „upd_maven_repository.bat“ "\\a0vbrn56\visapp$\updater" aktualisiert werden. Nach den Tests muss die Maven Repository vom Test Share auf Referenz Share mit dem Skript "copy_maven_repository_on_a0vbrn51.bat" unter "\\a0vbrn56\visapp$\updater" kopiert werden. Die pom.xml Dateien müssen danach manuell vom Test Share auf Referenz Share kopiert werden. 7.1.3. Java Classpath Generator Beim Start von IGAC sind die neue oder geänderte pom.xml Dateien auf Desktop Workstation kopiert. Der IGAC Komponente Classpath Generator schafft danach eine Textdatei mittels des Batches "mvn.bat" unter "C:\Program Files\visapp\maven\bin", die das Java Classpath für diese Version enthält. Die Classpath Datei wird im entsprechenden Version Verzeichnis gespeichert. Die notwendigen JARs werden ebenfalls während dieses Vorgangs im lokal Maven Repository kopiert. 7.1.4. Start Syrius und LPC Diese Classpath Datei wird bei jedem Start von einer von diesen zwei Anwendungen benutzt. 68615912 14.05.2016 Seite 13/16 Software-Design IGAC 8. GLOBALS 8.1. IGAC auf Desktop Workstation IGAC muss immer laufen und ist automatisch beim Start von Desktop Workstation gestartet. Es ist möglich (für Tests), mehrere IGAC Instanzen auf derselben Maschine zu starten. Der zugeteilte Share von jedem Benutzer ist durch die Umgebungsvariable "IGAC" definiert. Die Anwendungen sind von diesem Share aktualisiert. 8.2. IGAC auf Terminal Server IGAC ist automatisch beim Start einer Session auf Terminal Server gestartet. Die Aktualisierung der Anwendungen ist von Betrieb Leute und nicht von einem Share gemacht. 9. EVENT- UND EXCEPTIONHANDLING Alle Fehler, die während der Verwendung von IGAC vorkommen können, werden in einem Fehlerfenster angeschlagen. Dieses Fenster ist in 3 Teilen geteilt: Fehler: Einzelheit: Systemstatus: Fehlertext, der einem Fehlercode entspricht Fehlertext, der Fehler log und/oder Stacktrace entspricht IGAC und Kommando Informationen Ein „Copy" Button ist auch verfügbar, um den Fehler auf Clipboard zu kopieren und die durch E-Mail zu senden. 68615912 14.05.2016 Seite 14/16 Software-Design IGAC 10. KONFIGURATIONEN UND PROPERTIES 10.1. igac.properties IGAC Property Datei ist unter „C:\Documents and Settings\uidxxx“ gespeichert. language=de: httpPort=60000: gewählte Sprache vom Benutzer benutzte HTTP Port der IGAC Web Server ACHTUNG: wenn mehrere IGAC Instanzen auf derselben Maschine vom selben Benutzer gestartet werden, dieser Wert wird jener des letzten gestarteten Web Server sein. 10.2. log4j.properties Log4j Property Datei ist unter „C:\Program Files\visapp\IGAC\conf“ gespeichert. Hier werden die Parameter für Konsole Logging, Log Datei und Error Log Datei definiert. Log und Error Log Dateien werden unter „C:\Program Files\visapp\logs“ gespeichert. 11. SCHNITTSTELLEN 11.1. RMI Schnittstellen Eine RMI Schnittstelle ist für Syrius und für LPC definiert, um die Kommandos auszuführen. 12. DATENHALTUNG 12.1. Test Share Alle Anwendungen, Skripte und andere Dateien werden auf Test Share gesetzt und getestet. Die Adresse dieses Share ist \\a0vbrn56\visapp$. Nach den Tests werden alle Dateien über die Referenz Share kopiert. 12.2. Referenz Share Alle Dateien werden von der Referenz Share auf die anderen Shares verteilt. Die Adresse dieses Share ist \\a0vbrn51\visapp$. Die Verteilung wird von den Betrieb Leuten durchgeführt. 13. HARDWARE UND BETRIEBSSYSTEM 14. KOMMUNIKATION IN VERTEILTEN SYSTEMEN 68615912 14.05.2016 Seite 15/16 Software-Design IGAC 15. ORGANISATION / HILFSMITTEL 16. ANHANG 16.1. Begriffe und Abkürzungen 16.2. Referenzdokumente 16.3. Checkliste 68615912 14.05.2016 Seite 16/16