... |
... |
@@ -2,78 +2,6 @@ |
2 |
2 |
|
3 |
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}}). |
4 |
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 |
|
-[BILD] |
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 8 |
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 |
|
-* Log4J ü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 |
|
- |
73 |
|
- |
74 |
|
- |
75 |
|
-ALT: |
76 |
|
- |
77 |
77 |
== Systemarchitektur ohne Einsatz eines optionalen Frontend-Servers == |
78 |
78 |
|
79 |
79 |
{{figure image="systemarchitektur.png" width="300"}} |