IGAC

Werbung
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
Herunterladen