enterprise 2.0 portale mit grails. geht das?
DESCRIPTION
Vortrag auf dem Java-Forum Stuttgart am 04.07.13TRANSCRIPT
![Page 1: Enterprise 2.0 Portale mit Grails. Geht das?](https://reader033.vdocuments.mx/reader033/viewer/2022060201/559a5a5a1a28ab204a8b476b/html5/thumbnails/1.jpg)
Enterprise 2.0 Portale mit Grails. Geht das?
Java Forum Stuttgart 04.07.2013
Manuel Breitfeld, Tobias Kraft
![Page 2: Enterprise 2.0 Portale mit Grails. Geht das?](https://reader033.vdocuments.mx/reader033/viewer/2022060201/559a5a5a1a28ab204a8b476b/html5/thumbnails/2.jpg)
2
Redner
● IT-Berater bei exensio GmbH (Karlsruhe)
● Mehrere Jahre Erfahrung mit der Umsetzung von Enterprise-Portalen.
● Neben Java-Technologien kommt mehr das leichtgewichtige Grails-Framework zum Einsatz.
● Aktuelle technische Erkenntnisse und Erfahrungsberichte werden regelmäßig auf http://blog.exensio.de/ veröffentlicht.
Tobias Kraft Manuel Breitfeld
![Page 3: Enterprise 2.0 Portale mit Grails. Geht das?](https://reader033.vdocuments.mx/reader033/viewer/2022060201/559a5a5a1a28ab204a8b476b/html5/thumbnails/3.jpg)
3
Agenda
Überblick Portale
Grails als Basistechnologie
Umsetzung von Portal-Modulen
Portal Anpassungen
![Page 4: Enterprise 2.0 Portale mit Grails. Geht das?](https://reader033.vdocuments.mx/reader033/viewer/2022060201/559a5a5a1a28ab204a8b476b/html5/thumbnails/4.jpg)
4
Was sind Portale?
Portlets
![Page 5: Enterprise 2.0 Portale mit Grails. Geht das?](https://reader033.vdocuments.mx/reader033/viewer/2022060201/559a5a5a1a28ab204a8b476b/html5/thumbnails/5.jpg)
5
Was zeichnet Portale heutzutage aus?
● Personalisierung
● Integration von Backend-Systemen
● Single Sign On
● Content Management
● Content Aggregation
● Navigation
● Theming / Layout
● Enterprise Search
● Social Networking (Enterprise 2.0)
● Collaboration
● Mobile Support
![Page 6: Enterprise 2.0 Portale mit Grails. Geht das?](https://reader033.vdocuments.mx/reader033/viewer/2022060201/559a5a5a1a28ab204a8b476b/html5/thumbnails/6.jpg)
6
Relevante Portal-Spezifikationen
● JSR 168: Portlet Specification, JSR 286: Portlet Specification 2.0 ● Spezifiziert Schnittstellen zwischen Portalen und Portlets.
● Portlet Programmier Modell
● OASIS-Standard WSRP (1.0, 2.0) ● Web Services für Remote Portlets
![Page 7: Enterprise 2.0 Portale mit Grails. Geht das?](https://reader033.vdocuments.mx/reader033/viewer/2022060201/559a5a5a1a28ab204a8b476b/html5/thumbnails/7.jpg)
7
photo credit: tim.md via photopin
![Page 8: Enterprise 2.0 Portale mit Grails. Geht das?](https://reader033.vdocuments.mx/reader033/viewer/2022060201/559a5a5a1a28ab204a8b476b/html5/thumbnails/8.jpg)
8
Probleme von Portalen
● Schwergewichtig
● Nach Möglichkeit alles integrieren
● Unterstützung von Standards durch Portalhersteller
● Portlet-API veraltet
● Teilweise hohe Lizenzkosten
● Testing
![Page 9: Enterprise 2.0 Portale mit Grails. Geht das?](https://reader033.vdocuments.mx/reader033/viewer/2022060201/559a5a5a1a28ab204a8b476b/html5/thumbnails/9.jpg)
9
Agenda
Überblick Portale
Grails als Basistechnologie
Umsetzung von Portal-Modulen
Portal Anpassungen
![Page 10: Enterprise 2.0 Portale mit Grails. Geht das?](https://reader033.vdocuments.mx/reader033/viewer/2022060201/559a5a5a1a28ab204a8b476b/html5/thumbnails/10.jpg)
10
Was ist Grails?
A Full-Stack Web (MVC) Framework
● Install & GO!
● Nahtlose Java Integration, wird auf der Java Virtual Machine (JVM) ausgeführt
● Ursprünglich inspiriert von Ruby on Rails
● Open Source
● Grails Historie ● Projekt-Beginn 2005
● Grails 1.0 (02/2008)
● Grails 2.2.2 (04/2013)
● Basiert auf Groovy
![Page 11: Enterprise 2.0 Portale mit Grails. Geht das?](https://reader033.vdocuments.mx/reader033/viewer/2022060201/559a5a5a1a28ab204a8b476b/html5/thumbnails/11.jpg)
11
Groovy
● Dynamische typisierte Sprache
● Basiert auf JVM
● Zusätzliche Features zu Java
def names = ["Peter", "Manuel", "Tobias"] println names def shortNames = names.findAll { it.size() <= 5 } println shortNames.size() shortNames.each { println it }
Beispiel:
![Page 12: Enterprise 2.0 Portale mit Grails. Geht das?](https://reader033.vdocuments.mx/reader033/viewer/2022060201/559a5a5a1a28ab204a8b476b/html5/thumbnails/12.jpg)
12
Rapid development
Der Standard-Weg ist konfiguriert, aber Änderungen sind möglich
● Convention over Configuration (CoC)
● Don’t repeat Yourself (DRY)
Beispiele:
● Aufbau Projekt-Struktur
● DB-Mapping
● Klassennamen
● Logging
● Autowiring
![Page 13: Enterprise 2.0 Portale mit Grails. Geht das?](https://reader033.vdocuments.mx/reader033/viewer/2022060201/559a5a5a1a28ab204a8b476b/html5/thumbnails/13.jpg)
13
Aufbau eines Grails-Projektes
● Vordefinierte Projektstruktur
![Page 14: Enterprise 2.0 Portale mit Grails. Geht das?](https://reader033.vdocuments.mx/reader033/viewer/2022060201/559a5a5a1a28ab204a8b476b/html5/thumbnails/14.jpg)
14
Grails Aufbau
![Page 15: Enterprise 2.0 Portale mit Grails. Geht das?](https://reader033.vdocuments.mx/reader033/viewer/2022060201/559a5a5a1a28ab204a8b476b/html5/thumbnails/15.jpg)
15
GORM – für die Persistenz
● Hibernate ist der Standard
● Austausch Persistenzschicht ist möglich
● DB-Operationen erfolgen direkt am Domain-Objekt
● Queries einfach und intuitiv
Portlet.findAllByPageAndPortal(‘Home’, portalname)
PortletInst.where{ year(published) == 2013 && right != ‘public’ }
Where-Queries
Dynamic Finders
Portlet.delete() Portlet.save(flush:true)
![Page 16: Enterprise 2.0 Portale mit Grails. Geht das?](https://reader033.vdocuments.mx/reader033/viewer/2022060201/559a5a5a1a28ab204a8b476b/html5/thumbnails/16.jpg)
16
CoC-Beispiel anhand von Services
● SpringBeans als einfache POJOs
● Einfacher Zugriff über DI
● Management von Transaktionen
def portalService
def calculateMenu() { def page = portalService.getHome() ….
}
static transactional = false @Transactional(propagation = Propagation.REQUIRES_NEW) def fooMethod() {…}
![Page 17: Enterprise 2.0 Portale mit Grails. Geht das?](https://reader033.vdocuments.mx/reader033/viewer/2022060201/559a5a5a1a28ab204a8b476b/html5/thumbnails/17.jpg)
17
Controller und Views
● Controller ● Direkter Zugriff auf Services
● Standardmethoden wie render()
● Groovy Server Pages ● Ähnlich JSP’s
● Zusätzliche Tagslibs und Variablen
● Model-Zugriff
● Taglibs
● Integration weiterer Oberflächen-Libraries als Plugins (bspw. Vaadin, …)
![Page 18: Enterprise 2.0 Portale mit Grails. Geht das?](https://reader033.vdocuments.mx/reader033/viewer/2022060201/559a5a5a1a28ab204a8b476b/html5/thumbnails/18.jpg)
18
Full-Stack und Continuous Integration
● Test ● Testdaten (Fixtures, Build Test Data Plugin)
● JUnit, Spock
● Build ● Gant / Ivy
● Gradle
● Analyse-Werkzeuge ● Cobertura
● Codenarc
● Jenkins / Hudson
![Page 19: Enterprise 2.0 Portale mit Grails. Geht das?](https://reader033.vdocuments.mx/reader033/viewer/2022060201/559a5a5a1a28ab204a8b476b/html5/thumbnails/19.jpg)
19
Integrationsbeispiele
● JSON-Slurper
● File-Handling
def jsonText = '''{ "message": { "header": { "from": "[email protected]"}, "body": "Hello Java Forum Stuttgart." } }''' def mail = new JsonSlurper().parseText(jsonText) assert mail.message.body == "Hello Java Forum Stuttgart."
new File('/data/').eachFileMatch( ~".*xml" ) { f -> if ( f.lastModified() <= yesterday ) { f.delete() } }
![Page 20: Enterprise 2.0 Portale mit Grails. Geht das?](https://reader033.vdocuments.mx/reader033/viewer/2022060201/559a5a5a1a28ab204a8b476b/html5/thumbnails/20.jpg)
20
JEE-Integration
Application Server
DB
Dokumenten- Management-
System
EJB-Aufruf
grails war ejb ear
dms_if.jar dms_if.jar
dms_ejb.jar
![Page 21: Enterprise 2.0 Portale mit Grails. Geht das?](https://reader033.vdocuments.mx/reader033/viewer/2022060201/559a5a5a1a28ab204a8b476b/html5/thumbnails/21.jpg)
21
Was ist cool an Grails?
http://www.morguefile.com/archive/display/196579
● Runterladen und loslegen
● Groovy macht vieles kürzer und schneller
● Zahlreiche Plugins steigern die Produktivität
● Full-Stack Unterstützung / Continous Integration ● Testing
● Coverage
● Build
![Page 22: Enterprise 2.0 Portale mit Grails. Geht das?](https://reader033.vdocuments.mx/reader033/viewer/2022060201/559a5a5a1a28ab204a8b476b/html5/thumbnails/22.jpg)
22
Was ist bei Grails zu beachten?
● Unsauberer Code ist schnell produziert ● Schichtentrennung
● Schwergewichtige Taglibs
● Zu viel Logik in Controllern
● Vernachlässigung der Tests (Nicht typisiert)
● Versions-Upgrades detailliert testen
![Page 23: Enterprise 2.0 Portale mit Grails. Geht das?](https://reader033.vdocuments.mx/reader033/viewer/2022060201/559a5a5a1a28ab204a8b476b/html5/thumbnails/23.jpg)
23
Warum Grails für ein Portal einsetzen?
● Einfache Integration von Drittsystemen
● Schnelle Umsetzung neuer Anforderungen
● Enterprise-Fähigkeit
● Einfaches Testing
● CI-Unterstützung
![Page 24: Enterprise 2.0 Portale mit Grails. Geht das?](https://reader033.vdocuments.mx/reader033/viewer/2022060201/559a5a5a1a28ab204a8b476b/html5/thumbnails/24.jpg)
24
Agenda
Überblick Portale
Grails als Basistechnologie
Umsetzung von Portal-Modulen
Portal Anpassungen
![Page 25: Enterprise 2.0 Portale mit Grails. Geht das?](https://reader033.vdocuments.mx/reader033/viewer/2022060201/559a5a5a1a28ab204a8b476b/html5/thumbnails/25.jpg)
25
Tagging
● Kennzeichnung / Kategorisierung verschiedener Themen
● Funktionsübergreifendes Tagging ● Blog Posts, Dokumente, Micro Messages, Wiki,…
● Hierarchie
● Gültigkeitsbereiche ● Blog Post befasst sich mit anderen Themen als das Wiki
● Realisiert ohne „direkte Abhängigkeit“ im Datenmodell ● Entwicklung auf Basis des Taggable-Plugins
![Page 26: Enterprise 2.0 Portale mit Grails. Geht das?](https://reader033.vdocuments.mx/reader033/viewer/2022060201/559a5a5a1a28ab204a8b476b/html5/thumbnails/26.jpg)
26
Tagging
![Page 27: Enterprise 2.0 Portale mit Grails. Geht das?](https://reader033.vdocuments.mx/reader033/viewer/2022060201/559a5a5a1a28ab204a8b476b/html5/thumbnails/27.jpg)
27
Enterprise Suche
● Suche über mehrere fachliche Komponenten ● Unterschiedliche Darstellung je nach Inhaltstyp
• Bild mit Kontaktdaten für Personen
• Vorschau für Dokumente
● Facettensuche, u.a. mit Hierarchie und Date Range
● Highlighting, Autocomplete, Fuzzy Search,…
● Tag Cloud zu passenden Suchbegriffen
● Realisiert mit Apache Solr und Elasticsearch ● Einbindung in Grails über die (angepassten) gleichnamigen Plugins
![Page 28: Enterprise 2.0 Portale mit Grails. Geht das?](https://reader033.vdocuments.mx/reader033/viewer/2022060201/559a5a5a1a28ab204a8b476b/html5/thumbnails/28.jpg)
28
Enterprise Suche
![Page 29: Enterprise 2.0 Portale mit Grails. Geht das?](https://reader033.vdocuments.mx/reader033/viewer/2022060201/559a5a5a1a28ab204a8b476b/html5/thumbnails/29.jpg)
29
Content / Document Management System
● Verschiedene Inhaltstypen ● Unstrukturiert (WYSIWYG Editor), Strukturiert und Templates
● Navigation innerhalb eines Kapitels („Context Navigation“) ● Neben der Portal-Navigation, kann innerhalb von Inhalten eine Navigation aufgebaut
werden
● Workflow ● Freigabe basierend auf dem Vieraugen-Prinzip
● Versionierung
● Inline-Editing innerhalb des Portals
● Realisiert durch eine eigene Lösung (Integration von anderen CMS-Systemen wie Adobe CQ5, o.ä. möglich)
![Page 30: Enterprise 2.0 Portale mit Grails. Geht das?](https://reader033.vdocuments.mx/reader033/viewer/2022060201/559a5a5a1a28ab204a8b476b/html5/thumbnails/30.jpg)
30
Content / Document Management System
![Page 31: Enterprise 2.0 Portale mit Grails. Geht das?](https://reader033.vdocuments.mx/reader033/viewer/2022060201/559a5a5a1a28ab204a8b476b/html5/thumbnails/31.jpg)
31
Web 2.0 Funktionalitäten
● Blog
● Wiki
● Micro Messages
● Activity Stream
● Teilen von Dokumenten
● Kommentieren von Inhalten
● Bewerten von Inhalten (Voting)
● Integration von anderen Diensten wie Twitter
![Page 32: Enterprise 2.0 Portale mit Grails. Geht das?](https://reader033.vdocuments.mx/reader033/viewer/2022060201/559a5a5a1a28ab204a8b476b/html5/thumbnails/32.jpg)
32
Web 2.0 Funktionalitäten
![Page 33: Enterprise 2.0 Portale mit Grails. Geht das?](https://reader033.vdocuments.mx/reader033/viewer/2022060201/559a5a5a1a28ab204a8b476b/html5/thumbnails/33.jpg)
33
Web 2.0 Funktionalitäten
![Page 34: Enterprise 2.0 Portale mit Grails. Geht das?](https://reader033.vdocuments.mx/reader033/viewer/2022060201/559a5a5a1a28ab204a8b476b/html5/thumbnails/34.jpg)
34
Personalisierung und Berechtigungen
● Spring Security als Basis ● Hierarchisches Rollenkonzept
● Anbindung von AD, CMS, DB
● Personalisierung ● Enterprise Suche
● Berechtigungen ● Page-Ebene
● Portlet-Ebene
● Navigation
● Content
![Page 35: Enterprise 2.0 Portale mit Grails. Geht das?](https://reader033.vdocuments.mx/reader033/viewer/2022060201/559a5a5a1a28ab204a8b476b/html5/thumbnails/35.jpg)
35
Agenda
Überblick Portale
Grails als Basistechnologie
Umsetzung von Portal-Modulen
Portal Anpassungen
![Page 36: Enterprise 2.0 Portale mit Grails. Geht das?](https://reader033.vdocuments.mx/reader033/viewer/2022060201/559a5a5a1a28ab204a8b476b/html5/thumbnails/36.jpg)
36
Portalseiten und Portlets
● Navigation und Portalseiten können zur Laufzeit definiert werden
● Templates
● Container für die Portlets
● Instanzen von Portlets werden zu einer Portalseite hinzugefügt
● Positionierung über definierte Container
● Angabe von zusätzlichen Parametern (Portlet Preferences)
![Page 37: Enterprise 2.0 Portale mit Grails. Geht das?](https://reader033.vdocuments.mx/reader033/viewer/2022060201/559a5a5a1a28ab204a8b476b/html5/thumbnails/37.jpg)
37
Portalseiten und Portlets
Template
Positionen im Template
Portlet-Instanzen
![Page 38: Enterprise 2.0 Portale mit Grails. Geht das?](https://reader033.vdocuments.mx/reader033/viewer/2022060201/559a5a5a1a28ab204a8b476b/html5/thumbnails/38.jpg)
38
Umsetzung neuer Anforderungen
● Einfach!
1. Funktionalität in Grails umsetzen (Controller, View, Service,…)
2. Neues Portlet im Admin-Backend definieren
3. Portlet auf gewünschte Seite „ziehen“
![Page 39: Enterprise 2.0 Portale mit Grails. Geht das?](https://reader033.vdocuments.mx/reader033/viewer/2022060201/559a5a5a1a28ab204a8b476b/html5/thumbnails/39.jpg)
39
Fazit ● Schnelle Entwicklung dank Grails
● Grails ist Enterprise fähig
● Tragfähigkeit in der Praxis erprobt
● Reduzierte Komplexität
![Page 40: Enterprise 2.0 Portale mit Grails. Geht das?](https://reader033.vdocuments.mx/reader033/viewer/2022060201/559a5a5a1a28ab204a8b476b/html5/thumbnails/40.jpg)
Vielen Dank!
exensio Gesellschaft für Informationstechnologie mbH Am Rüppurrer Schloß 12 76199 Karlsruhe http://www.exensio.de http://blog.exensio.de http://twitter.com/exensio