Wiki-Quellcode von Systemarchitektur


Zeige letzte Bearbeiter
1 {{content/}}
2
3 {{formcycle/}} ist einer reine Java-Anwendung und basiert auf einer modularisierten und schichtenorientierten Komponenten-Architektur, die sich mit jedem Java-fähigen Betriebssystem unter einem Anwendungsserver (Tomcat, JBOSS) nutzen lässt. Der Datenbankzugriff basiert vollständig auf der //Java Database Connectivity API// ({{smallcaps}}Jdbc{{/smallcaps}}). Im folgenden werden bestimmte Komponenten und Eigenschaften genauer beschrieben.
4
5 == Laufzeitumgebung ==
6 Für den Betrieb von {{formcycle/}} ist Java in mindestens der Version 11 sowie ein entsprechender Servlet-Container (z.B. Tomcat) nötig. Ferner wird für die Daten-Persistenz eine relationale Datenbank benötigt. FORMCYCLE unterstützt hierbei MySQL, MS SQL, PostgreSQL und Oracle.
7
8 == Überblick der Modularisierung ==
9
10 {{figure image="Systemarchitektur_Überblick.png" width="300"}}
11 Überblick der Modularisierung von {{formcycle case="dat"/}}.
12 {{/figure}}
13
14 {{formcycle/}} basiert auf einer hoch-modulare Anwendungs-Architektur welche sich in die folgenden Teile gruppieren lässt:
15
16 === Commons ===
17
18 Innerhalb der Commons Module stehen die in der kompletten Anwendung verwendeten Model- und Entitäts-Klassen zur Verfügung.
19
20 === DAO ===
21
22 Innerhalb der DAO-Module ist die Logik für die Daten-Persistenz gekapselt. Hierbei kommt Hibernate als JPA-Implementierung zum Einsatz und ist für die entsprechenden CRUD-Operationen der einzelnen Entitäten verantwortlich. Die Kommunikation mit der verwendeten Datenbank wird mittels HikariCP und den jeweiligen JDBC-Treibern realisiert.
23
24 === Logik ===
25
26 Innerhalb der einzelnen Logik-Module ist die eigentliche Business-Logik von {{formcycle/}} gekapselt. Die relevantesten Funktionalitäten einzelner Module sind hierbei folgende:
27
28 * Durchführung der Workflow-Verarbeitung (Abarbeiten der konfigurierten Aktionen)
29 * Das Integrieren und Ausführen von installierten Plugins
30 * LDAP-Anbindung an Fremdsysteme (UnboundID LDAP SDK)
31 * Cluster-Kommunikation mehrerer {{formcycle/}}-Server (JGroups)
32 * Das Ausführen zeitgesteuerter Aufgaben (Quartz)
33
34 === Formular-Designer ===
35
36 Die Module des Formular-Designers sind neben dem eigentlichen Design-Prozess auch für das Rendern bestehender Formulare sowie das Validieren von eingegebenen Daten innerhalb eines Formular-Aufrufs verantwortlich.
37
38 === APIs ===
39
40 Basierend auf den Logik- bzw. Formular-Designer-Modulen setzten mehrere Schnittstellen auf welche es ermöglichen die entsprechenden Funktionalitäten zu nutzen. So steht neben einer Java-API basierend auf RPC (SIMON/MINA) auch eine REST-Schnittstelle zur Verfügung. Ebenso lassen sich hierrüber die CRUD-Operationen der DAO-Schicht aufrufen.
41
42 === Verwaltungs-Frontend ===
43
44 Das Frontend zur Verwaltung und Konfiguration von {{formcycle/}} besteht aus mehreren Modulen welche mittels entsprechender Beans (JSF) sowohl DAO, Logik oder auch entsprechende API-Module ansteuert und dem Benutzer die dazu benötigten Web-Oberflächen bereitstellt.
45
46 === Formular-Frontend ===
47
48 Beim Formular-Frontend handelt es sich um Module welche für die Auslieferung und Verarbeitung der Formulare verantwortlich sind. Hierfür wird neben der RPC-API zum Aufruf des eigentlichen Renderns des entsprechenden HTML-Codes (inkl. CSS, JavaScript) auch die REST-API benutzt um weitere Daten oder Dateien innerhalb der Ausführung im Client-Browser bereitzustellen. Ferner werden über die RPC-API auch weitere Funktionalitäten wie z.B. die Benutzer-Authentifizierung oder das Ausführen von Plugins realisiert.
49
50 == Verwendete Technologien/Bibliotheken ==
51
52 Innerhalb von {{formcycle/}} kommen unter anderem folgende Bibliotheken und Technologien zum Einsatz:
53
54 * Java ab Version 11
55 * JSF inkl. Primefaces und Omnifaces
56 * HTML, CSS und JavaScript
57 * Aspose Word, Apache PDFBox, Apache POI
58 * div. Apache Commons Bibliotheken
59 * JPA, Hibernate ORM, HikariCP, JDBC
60 * Liquibase
61 * Hibernate Validator
62 * JavaMail
63 * Log4j2 über SLF4J
64 * Quartz
65 * EHCache
66 * JGroups
67 * SIMON, MINA
68 * UnboundID LDAP SDK
69 * SimpleXML, fastjson
70 * Xalan XSLT processor
71 * Mozilla Rhino
72 * pac4j
73
74 == Systemarchitektur beim Einsatz eines optionalen Frontend-Servers ==
75
76 {{figure image="systemarchitektur2.png" width="300"}}
77 Architektur von {{formcycle case="dat"/}}, wenn sowohl ein Master-Server als auch ein Frontend-Server genutzt wird.
78 {{/figure}}
79
80 Der Einsatz eines [[Frontend-Servers>>doc:Formcycle.SystemSettings.UserInterface.FrontendServer]] ist sinnvoll bei:
81
82 * Netzwerkübergreifende Installation (etwa lokales Intranet + DMZ)
83 * Lastverteilung
84 * Regionale Aufteilung (Jeder Mandant hat einen eigenen Frontend-Server mit eigenen Formularen)
85 * Kundenspezifische Erweiterungen (Integration in vorhandene Systemumgebung, eigene Verwaltungsoberflächen)
86
87 {{table dataTypeAlpha="0" preSort="0-asc" colWidth="200-500"}}
88 |=Modul|=Beschreibung
89 |Frontend|Informationen zum Status des Servers, eigene Oberflächen.
90 |API (RPC)|Ermöglicht den Zugriff auf Vorgänge, Status, Aktionsverarbeitungen, Aktionen und vieles mehr.
91 |Common|Schichtenübergreifende Funktionalitäten.
92 |BSV|Bidirektionale Socket-Verbindung zur Kommunikation zwischen Master-Server und Frontend-Server.
93 {{/table}}