| ... | 
        ... | 
                @@ -2,6 +2,78 @@ | 
      
              
                    | 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 | 
          + | 
        
              
                    | 5 | 
          5 | 
           == Systemarchitektur ohne Einsatz eines optionalen Frontend-Servers == | 
        
              
                    | 6 | 
          6 | 
            | 
        
              
                    | 7 | 
          7 | 
           {{figure image="systemarchitektur.png" width="300"}} |