# OpenSAGA

OpenSAGA ist eine Java-basierte lizenzkostenfreie Open-Source-Plattform, die sich der strategischen Umsetzung SAGA-konformer Webanwendungen verschrieben hat.
OpenSAGA ist Bestandteil des Open-Source-Business-Alliance-Open-Source-Stacks.

## Überblick

SAGA beschreibt Standards und Architekturen für die Erstellung moderner E-Government-Anwendungen. OpenSAGA ist damit das erste Java-basierte Entwicklungsframework, das eine möglichst weitreichende Unterstützung der dort definierten Vorgaben anstrebt und sich somit insbesondere als Plattform für die öffentliche Verwaltung positioniert. OpenSAGA bietet ein modellbasiertes und deklaratives Entwicklungsframework, mit dem Webanwendungen und Portale auf einem weitgehend technologieunabhängigen und anforderungsorientierten Niveau modelliert werden können. Ein Generator erzeugt aus den XML-basierten Modellen ein lauffähiges System, in das programmierte Komponenten und Erweiterungen flexibel eingewoben werden können. Auch eine Unterstützung für Eclipse wird angeboten.

## Geschichte

OpenSAGA wurde Mitte 2007 von der QuinScape GmbH und der BALVI GmbH initiiert, zunächst mit dem Ziel, eine auf dem Softwareproduktlinienansatz basierende Plattform für die Entwicklung von Produkten für die amtliche Lebensmittelüberwachung sowie den behördlichen Verbraucherschutz zu erstellen. Die allgemeine Anwendbarkeit des technologischen Ansatzes sowie die bislang von keinem anderen Framework vorgenommene Fokussierung auf die besonderen Anforderungen behördlicher IT-Projekte (manifestiert in Standards und Definitionen wie SAGA oder der BITV) führten 2009 bei der QuinScape GmbH zu der Entscheidung, die Quellen der Plattform offenzulegen. Am 30. April 2010 wurde OpenSAGA 1.0.0 unter einer dualen Lizenz sowohl unter der GPL v2 als auch für kommerzielle Nutzung unter einer proprietären Lizenz mit einer Reihe von Kompatibilitätsklauseln freigegeben, die weitere Entwicklung erfolgt kontinuierlich:
* 26. Mai 2010: OpenSAGA 1.1
* 19. November 2010: OpenSAGA 1.5 mit wichtigen Neuerungen wie einem deutlich erweiterten Rechtesystem, Personalisierungsfunktionen über Portlets und erweiterte Möglichkeiten zur deklarativen Datenintegration von Fremdsystemen.
* 15. Dezember 2010: OpenSAGA 1.5.1 mit einer Reihe von Detailverbesserungen und Bugfixes
* 13. März 2013: OpenSAGA 3.0.0M1 freigegeben
Weitere Versionen werden gegenwärtig aktiv entwickelt. Parallel dazu arbeitet ein Partnernetzwerk aus Hochschulen, Unternehmen und Einrichtungen der öffentlichen Hand, um die Entwicklung der Plattform gemeinsam voranzutreiben.

## Funktionen

OpenSAGA bietet ein Entwicklungsframework für die komponentenbasierte Modellierung moderner Webanwendungen. Der Fokus liegt dabei auf der Modellierung und Umsetzung komplexer Fachverfahren und formularbasierter Vorgänge. Besondere Eigenschaften sind:
* die weitgehend technologieunabhängige Modellierung von Fachverfahren und Anwendungen, die Fachverfahren, Prozesse und Geschäftslogik in den Mittelpunkt der Entwicklung stellen
* barrierefreie Webkomponenten, die alle Vorgaben der BITV berücksichtigen und bei vorhandenem JavaScript eine moderne und reaktive Oberfläche ermöglichen, gleichzeitig aber bei deaktiviertem JavaScript alle Funktionen beibehalten – ohne dass dafür Zusatzaufwand anfällt
* flexible Integrationsmechanismen für verteilte Datenquellen inklusive der Möglichkeit, Daten aus verschiedenen Quellen transparent miteinander zu verbinden
* Mechanismen, um Webservices und REST-Services anzubieten und zu konsumieren
* umfangreiche Integrationsmechanismen für Fremddaten (JDBC, HQL, Excel, Batch, Web Services usw.)

## Technische Spezifikation

OpenSAGA setzt auf die Wiederverwendung existierender und bewährter Frameworks und Bibliotheken. Technisch basiert OpenSAGA auf Servlets und läuft daher auf allen Java-Serverumgebungen von Apache Tomcat bis zu den großen Application-Servern. Die folgenden essentiellen Frameworks bzw. Bibliotheken werden verwendet:
* Die Umsetzung der Webkomponenten erfolgt über JavaServer Faces (JSF).
* Die Workflows und Geschäftsprozesse werden über Spring Webflow abgebildet.
* Die Gesamtarchitektur basiert auf dem Framework Spring.
* Zur Standardintegration von Datenbanken werden Hibernate und JPA verwendet, es gibt aber viele weitere Zugriffsmechanismen, deren Implementierung meist über von Spring bereitgestellte Basisfunktionen erfolgt.
* jQuery wird für die JavaScript-Funktionalitäten benutzt.
* Die Programmierung von Geschäftslogik kann in Java oder einer Vielzahl von Scriptingsprachen (Groovy, Jython, JRuby, BeanShell) erfolgen, wobei Groovy gegenwärtig besonders stark unterstützt wird. Ab Version 1.5 werden auch annotationsbasierte Erweiterungsmöglichkeiten für Java-Entwickler angeboten.
* OpenSAGA verfügt über einen komponentenbasierten Auto-Discovery-Mechanismus, bei dem Basisfunktionen durch sogenannte Extensions erweitert werden können, die in Spring-Kontexten neue Module durch bloße Konfiguration bereitstellen und dann automatisch in das Gesamtsystem eingewoben und überall verwendet werden können.
* Die in OpenSAGA angebotenen Portlets basieren gegenwärtig weder auf JSR-168 noch auf JSR-286, sondern verwenden eine eigene technische Implementierung zur Realisierung von Personalisierungsbausteinen. Für Version 2 ist eine Integration von WSRP geplant.