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:

            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:

  1. 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.
  2. 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.
  3. 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:

  1. Ein Module beinhaltet eine abgeschlossene Funktionseinheit, die auf dem Kern basiert und die bei Bedarf abgeschaltet bzw. nicht genutzt werden kann.
  2. 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.
  3. 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.
  4. Unterhalb dieses Ordners sind folgende Verzeichnisnamen festgelegt:

    config Konfigurationsdaten
    lib zusätzliche Bibliotheken
    sources Java-Quellcode
    webpages statische Web-Seiten
    xsl XSLT-Stylesheets
  5. 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....
  6. Eine erforderliche web.xml steht zudem immer unterconfig.
  7. Alle Funktionalitäten sind im Programmer Guide zu dokumentieren.
  8. Das Modul ist möglichst in die Beispielanwendung DocPortal zu integrieren.
  9. Eine *.txt-Datei sollte die notwendigen nicht automatischen Konfigurationsschritte zur Integration des Moduls in eine Anwendung beschreiben.