Wiki-Quellcode von Systemarchitektur
Zeige letzte Bearbeiter
author | version | line-number | content |
---|---|---|---|
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 | ||
4 | |||
5 | |||
6 | |||
7 | == Laufzeitumgebung == | ||
8 | 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. | ||
9 | |||
10 | == Überblick der Modularisierung == | ||
11 | |||
12 | {{figure image="Systemarchitektur_Überblick.png" width="300"}} | ||
13 | Überblick der Modularisierung von {{formcycle case="dat"/}}. | ||
14 | {{/figure}} | ||
15 | |||
16 | {{formcycle/}} basiert auf einer hoch-modulare Anwendungs-Architektur welche sich in die folgenden Teile gruppieren lässt: | ||
17 | |||
18 | === Commons === | ||
19 | |||
20 | Innerhalb der Commons Module stehen die in der kompletten Anwendung verwendeten Model- und Entitäts-Klassen zur Verfügung. | ||
21 | |||
22 | === DAO === | ||
23 | |||
24 | 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. | ||
25 | |||
26 | === Logik === | ||
27 | |||
28 | Innerhalb der einzelnen Logik-Module ist die eigentliche Business-Logik von {{formcycle/}} gekapselt. Die relevantesten Funktionalitäten einzelner Module sind hierbei folgende: | ||
29 | |||
30 | * Durchführung der Workflow-Verarbeitung (Abarbeiten der konfigurierten Aktionen) | ||
31 | * Das Integrieren und Ausführen von installierten Plugins | ||
32 | * LDAP-Anbindung an Fremdsysteme (UnboundID LDAP SDK) | ||
33 | * Cluster-Kommunikation mehrerer {{formcycle/}}-Server (JGroups) | ||
34 | * Das Ausführen zeitgesteuerter Aufgaben (Quartz) | ||
35 | |||
36 | === Formular-Designer === | ||
37 | |||
38 | 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. | ||
39 | |||
40 | === APIs === | ||
41 | |||
42 | 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. | ||
43 | |||
44 | === Verwaltungs-Frontend === | ||
45 | |||
46 | 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. | ||
47 | |||
48 | === Formular-Frontend === | ||
49 | |||
50 | 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. | ||
51 | |||
52 | == Verwendete Technologien/Bibliotheken == | ||
53 | |||
54 | Innerhalb von {{formcycle/}} kommen unter anderem folgende Bibliotheken und Technologien zum Einsatz: | ||
55 | |||
56 | * Java ab Version 11 | ||
57 | * JSF inkl. Primefaces und Omnifaces | ||
58 | * HTML, CSS und JavaScript | ||
59 | * Aspose Word, Apache PDFBox, Apache POI | ||
60 | * div. Apache Commons Bibliotheken | ||
61 | * JPA, Hibernate ORM, HikariCP, JDBC | ||
62 | * Liquibase | ||
63 | * Hibernate Validator | ||
64 | * JavaMail | ||
65 | * Log4j2 über SLF4J | ||
66 | * Quartz | ||
67 | * EHCache | ||
68 | * JGroups | ||
69 | * SIMON, MINA | ||
70 | * UnboundID LDAP SDK | ||
71 | * SimpleXML, fastjson | ||
72 | * Xalan XSLT processor | ||
73 | * Mozilla Rhino | ||
74 | * pac4j | ||
75 | |||
76 | == Systemarchitektur beim Einsatz eines optionalen Frontend-Servers == | ||
77 | |||
78 | {{figure image="systemarchitektur2.png" width="300"}} | ||
79 | Architektur von {{formcycle case="dat"/}}, wenn sowohl ein Master-Server als auch ein Frontend-Server genutzt wird. | ||
80 | {{/figure}} | ||
81 | |||
82 | Der Einsatz eines [[Frontend-Servers>>doc:Formcycle.SystemSettings.UserInterface.FrontendServer]] ist sinnvoll bei: | ||
83 | |||
84 | * Netzwerkübergreifende Installation (etwa lokales Intranet + DMZ) | ||
85 | * Lastverteilung | ||
86 | * Regionale Aufteilung (Jeder Mandant hat einen eigenen Frontend-Server mit eigenen Formularen) | ||
87 | * Kundenspezifische Erweiterungen (Integration in vorhandene Systemumgebung, eigene Verwaltungsoberflächen) | ||
88 | |||
89 | {{table dataTypeAlpha="0" preSort="0-asc" colWidth="200-500"}} | ||
90 | |=Modul|=Beschreibung | ||
91 | |Frontend|Informationen zum Status des Servers, eigene Oberflächen. | ||
92 | |API (RPC)|Ermöglicht den Zugriff auf Vorgänge, Status, Aktionsverarbeitungen, Aktionen und vieles mehr. | ||
93 | |Common|Schichtenübergreifende Funktionalitäten. | ||
94 | |BSV|Bidirektionale Socket-Verbindung zur Kommunikation zwischen Master-Server und Frontend-Server. | ||
95 | {{/table}} |