2019.06
2020.06
Struktur einer Anwendung
Eine MyCoRe-Anwendung gliedert sich in den Kern- und Modulbereich von MyCoRe sowie den Anwendungs- und Modulbereich der Applikation, als Beispiel DocPortal. Die gedachte Aufteilung wird im folgenden näher beschrieben.
MyCoRe
Die vollständige Funktionalität von MyCoRe ist im Kern. Damit ist MyCoRe an sich keine lauffähige Anwendung,
sondern nur ein Rahmenwerk für solche. Alles was der Anwendungsentwickler an Funktionen in seiner eigenen
Anwendung verwenden kann, und zu 99% nicht anfassen bzw. ändern muss, ist Teil des Kerns.
Definitionen
-
Algemeiner Bestandteile
sind die Teile des MyCoRe-Kerns, welche von vielen/allen Komponenten und Modulen verwendet werden und
die elementaren Grundfunktionalitäten von MyCoRe bereitstellen. U. a. beinhaltet dies die APIs zur
Speicherung der Daten, Klassifikationen, der ACLs und Nutzer, Store-Zugriffe und Klassen, die
allgemeiner Natur sind und als API-Funktionalitäten bereitgestellt werden (MCRServlet, XML-Parser
usw.).
-
Komponenten
sind Teile des MyCoRe-Kerns welche als Funktionalität in sich abgrenzbar sind. Sie bauen auf den
Allgemeinen Bestandteilen
auf und enthalten alle zur Funktionalität gehörenden Klassen und Dateien. Alle Komponenten haben eine
fest vorgegebene Struktur (siehe unten) und können über ein Property ausgeschaltet werden (wie bisher
bei den Modulen des Kerns). Die in den Komponenten enthaltenen Vorlagen (Templates) können durch
anwendungsseitige Dateien überschrieben werden. Komponenten werden vom Entwickler-Team bereitgestellt
und sind Bestandteil von mycore.jar. Komponenten werden über einen automatischen Prozess in die
Anwendung integriert, wenn sie nicht explizit deaktiviert wurden.
-
Module
sind austauschbare/abschaltbare Teile der Nutzeranwendung, welche alle wichtigen Dinge zur Gestaltung
konkreter Anwendungen enthalten, die nicht als generisch anzusehen sind (Datenmodelle, statische
Seiten, Layouts usw.). Module werden von den Anwendern entwickelt und bauen auf dem mycore.jar auf.
Module können auch Komponeten überschreiben bzw. ergänzen. Die Dateibaumstruktur vom Modulen und
Komponenten soll analog zueinander sein.
Struktur des mycore-Verzeichnisses
Der mycore-Verzeichnisbaum ist ein Projektbereich, aus welchem die für die Anwendung relevante Datei
mycore.jar erzeugt wird. Alle Teile unterstützen nur die Sprachen Englisch und Deutsch. mycore hat
nachfolgende Struktur:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
mycore
|
\ build (mit ant generierte Daten)
| \ classes (Java-Klassen)
| \ javadocs (generierte JavaDocs)
| \ lib (Download-Bereich der externen Jars)
\ components (alle Komponenten gemäß Definition von oben
(exkl. Module und inkl. Migration))
\ config (alle generischen Konfigurationen)
\ resources (werden nicht übersetzt, sondern so wie sie sind nach
build/classes kopiert - z.B. Hibernate-Mappings)
\ schema (generische DTD- und XSD-Schema-Dateien)
\ sources (Common parts - Sources)
\ tests (JUnit Test Sources)
\ xsl (alle generischen Stylesheets)
| Dateien build.xml, changelog.txt, license.txt
|
Module
Module in MyCoRe können in mehreren Arten auftreten:
-
Einfache Module
sind klar gekapselte funktionelle Einheiten, deren Bestandteile bis auf anzupassene Konfigurationen im Kern
bereits vorhanden sind. Für die Konfiguration gibt es bereits Standardvorgaben. Die Module können über den
Konfigurations- bzw. build-Prozess der Anwendung einfach integriert werden. Einfache Module werden im Kern
automatisch mit compiliert.
-
Nicht installierte Module
haben den selben Umfang wie einfache Module, sie müssen aber auf Grund von Lizenzbestimmungen erst bei der
Erstellung der konkreten Anwendung im Kern durch Nutzung von ANT-Targets mit aktiviert werden. Nicht
installierte Module werden im Kern erst automatisch mit compiliert, wenn sie aktiviert wurden.
-
Anwendungsmodule
bezeichnen alle Module, die ausschließlich in einer speziellen Anwendung benutzt werden. Dazu gehört i.d.R.
ein Modul, welches das konkrete Datenmodell von der Basisanwendung abgrenzt. Weiterhin können auch andere,
nur in der Anwendung genutzte spezielle Funktionalitäten in einem Modul platziert werden.
Die nachfolgenden Festlegungen sind für jeden Modul umzusetzen:
- Ein Module beinhaltet eine abgeschlossene Funktionseinheit, die auf dem Kern basiert und die bei Bedarf
abgeschaltet bzw. nicht genutzt werden kann.
-
Die Auswahl der Module und deren Reihenfolge erfolgt über das Property
MCR.Modules.MyCoRe für den Kern und MCR.Modules.Application
für die Anwendung.
-
Alle Module stehen sowohl im Kern als auch in der Anwendung im Verzeichnis
modules. Jedes Modul befindet sich dort in einem Verzeichnis mit dem entsprechenden Modulnamen.
-
Unterhalb dieses Ordners sind folgende Verzeichnisnamen festgelegt:
config |
Konfigurationsdaten |
lib |
zusätzliche Bibliotheken |
sources |
Java-Quellcode |
webpages |
statische Web-Seiten |
xsl |
XSLT-Stylesheets |
-
System-Properties sind immer einzutragen unter
config
in die Datei mycore.MODULNAME.properties. Alle Properties haben den Anfang MCR.MODULNAME...= .
I18N-Properties beginnen immer mit MODULNAME....
-
Eine erforderliche web.xml steht zudem immer unterconfig.
- Alle Funktionalitäten sind im Programmer Guide zu dokumentieren.
- Das Modul ist möglichst in die Beispielanwendung DocPortal zu integrieren.
- Eine *.txt-Datei sollte die notwendigen nicht automatischen Konfigurationsschritte zur Integration des
Moduls in eine Anwendung beschreiben.