das Java­basierte CMS für komplexe Webprojekte Mit wachsender Komplexität eines Webprojektes steigen auch die Anforderungen an Stabilität und Wartbarkeit, sowohl in der Entwicklung wie im späteren Betrieb. Ebenso ist ein flexibles Framework notwendig, welches den Entwicklern die nötige Freiheit und Effizienz bietet. Das von insign initiierte open­source play­cms baut auf dem Play High Velocity Web Framework [ https://www.playframework.com/ ] auf und ergänzt dieses um Content Management, Benutzer­ und Rechteverwaltung etc. Der Fokus liegt dabei auf der einfachen und effizienten Realisierung von individuellen Webprojekten. Java für komplexe Projekte Java­basierte Lösungen bieten in komplexen Projekten klare Vorteile gegenüber dynamischen Programmiersprachen wie PHP: Die starke Typisierung verhindert viele Fehler schon in der Entwicklungsphase, Code­Wartung und spätere Anpassung sind weniger risikobehaftet, der gesamte Toolstack sowie die verfügbare Libraries sind von hoher Qualität und Stabilität. Stabilität und Wartbarkeit Bei vielen anderen CMS­Lösungen werden die Projektkomponenten als Plugins oder Add­ons “ums CMS herum” entwickelt. Die Architektur der Lösung wird durch die gebotenen Erweiterungspunkte eingeschränkt. Bei Updates des CMS kommt es leicht zu Fehlern in diesen Plugins, welche oft erst zur Laufzeit festgestellt werden. Beim play­cms steht dagegen die Gesamtlösung im Zentrum, projektspezifische Entwicklungen integrieren die benötigten CMS­Komponenten, und die strenge Typisierung verhindert, dass eine Lösung mit nicht zusammenpassenden Teilen überhaupt kompiliert werden kann. Projekt­Vorlage Zum play­cms gehört ein Beispiel­Projekt, welches als Schnellstart­Vorlage für neue Projekte dient. Alle Ingredienzien moderner Webprojekte sind bereits integriert ­ inklusive einem vollständigen Continuous Integration Setup, DevOps Funktionen und Container­Deployment mit Docker. Die Entwicklung kann sofort beginnen, die üblichen und aufwändigen Projekt­Bootstrapping­Arbeiten entfallen. Features Benutzerverwaltung Die flexible Benutzerverwaltung umfasst ein komfortables Backend zur Verwaltung der Benutzer, Zuweisung von Rollen etc. Sowohl die Benutzer­Eigenschaften sowie deren Verwaltung im Backend können beliebig individualisiert werden. Die Authentifizierung ist vollständig den Unternehmensanforderungen anpassbar. Lokal, via Active­Directory / LDAP, oder über einen externen Single­Sign­on / Identity­Provider. Zugriffssteuerung play­cms bringt eine sehr starke Zugriffssteuerung mit, welche für alle Ressourcen im Projekt (CMS­Inhalte, Applikations­Funktionen, aber auch alle projektspezifischen Objekte) eingesetzt werden kann. Die Rechtevergabe erfolgt rollenbasiert und mit ACLs. Die Lösung basiert auf auf dem bekannten Sicherheits­Framework Apache Shiro. [ http://shiro.apache.org/ ] Content Management Das CMS bietet alle gängigen Funktionen moderner CMS­Lösungen, ohne dabei überladen zu wirken. Inhalte können bis auf Block­Ebene mit Lese­/Schreib­Rechten versehen werden. Zeitgesteuerte Ein­/Ausblendung erfolgt ebenfalls bis auf Blockebene. Die Seiten­Hierarchie sowie auch die Inhaltsblocks jeder Seite können mit Drag­and­Drop umstrukturiert werden. Zur Medienverwaltung kommt standardmässig MoxieManager [ http://www.moxiemanager.com/ ] zum Einsatz, alternativ können problemlos vorhandene Mediendatenbanken angebunden werden. Daten aus Applikationen können auf viele Arten ins CMS eingebunden werden: Als eigenständige Seiten, als beliebig durch den Admin platzierbare Inhaltsblöcke, oder auch direkt im Fliesstext mit Widgets. Suche play­cms bietet starke Suchfunktionen, welche über Content­ sowie Applikationsinhalte suchen kann. Such­Provider können beliebig ergänzt oder ersetzt werden. Der integrierte Such­Provider verwendet einen Elastic Search [ https://www.elastic.co/ ] Server. Formulare verwalten Als optionale Formular­Lösung integriert play­cms den Formulardienst [ http://www.jotform.com/ ]. Formulare können sehr komfortabel auf der Jotform­Plattform erstellt werden. Die fertigen Formulare können dann direkt im CMS als Inhaltsblock frei platziert werden. Eingegangene Formular­Submissionen werden ebenfalls direkt im play­cms Backend verwaltet. Integrierte Task­Engine Zur Abarbeitung asynchroner Aufgaben (z.B. Schnittstellen) steht dem Entwickler eine integrierte Task­Engine mit vielfältigen Steuerungs­ und Eskalations­Mechanismen zur Verfügung. Die zugehörige Benutzeroberfläche ermöglicht den Administratoren jederzeit den vollständigen Einblick und Eingriff in das Geschehen. DevOps und Continuous Integration play­cms wurde für effiziente Softwareentwicklung ausgelegt. Das zugehörige play­cms­demo Starter­Projekt bringt deshalb bereits ein vollständiges DevOps Setup mit, welches Continuous Integration (Jenkins), automatisierte Tests, Container Management (Docker) und Orchestration der Serverumgebungen (Ansible) umfasst. Performance Das zugrunde liegende Play Framework [ https://www.playframework.com/ ] mit seinem auf Akka [ http://akka.io/ ] basierenden asynchronen I/O Modell ist auf sehr hohe Performance und Skalierbarkeit ausgelegt. play­cms baut auf diesen Komponenten auf. Dank flexiblem und adaptivem Multi­Layer Caching wird eine sehr gute Performance out­of­the­box ohne zusätzliche Front Proxies oder CDNs erreicht. play­cms Webprojekte können nach Bedarf beliebig skaliert werden. Monitoring Die verwendeten Java Logging­Mechanismen erlauben eine vielfältige und feingranulare Konfiguration. Log­Ereignisse können gezielt an ein externes Monitoring­System (standardmässige Anbindung für Graylog [ https://www.graylog.org/ ] im Demoprojekt vorhanden) weitergeleitet werden.