Enterprise 2.0 Portale mit Grails. Geht das?

T
Tobias KraftIT Consultant
Enterprise 2.0 Portale mit Grails. Geht das?
Java Forum Stuttgart
04.07.2013
Manuel Breitfeld, Tobias Kraft
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 KraftManuel Breitfeld
3
Agenda
Überblick Portale
Grails als Basistechnologie
Umsetzung von Portal-Modulen
Portal Anpassungen
4
Was sind Portale?
Portlets
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
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
7
photo credit: tim.md via photopin
8
Probleme von Portalen
● Schwergewichtig
● Nach Möglichkeit alles integrieren
● Unterstützung von Standards durch Portalhersteller
● Portlet-API veraltet
● Teilweise hohe Lizenzkosten
● Testing
9
Agenda
Überblick Portale
Grails als Basistechnologie
Umsetzung von Portal-Modulen
Portal Anpassungen
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
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:
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
13
Aufbau eines Grails-Projektes
● Vordefinierte Projektstruktur
14
Grails Aufbau
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)
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() {…}
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, …)
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
19
Integrationsbeispiele
● JSON-Slurper
● File-Handling
def jsonText = '''{
"message": {
"header": { "from": "bud@spencer.com"},
"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()
}
}
20
JEE-Integration
Application Server
DB
Dokumenten-
Management-
System
EJB-Aufruf
grails war ejb ear
dms_if.jardms_if.jar
dms_ejb.jar
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
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
23
Warum Grails für ein Portal einsetzen?
● Einfache Integration von Drittsystemen
● Schnelle Umsetzung neuer Anforderungen
● Enterprise-Fähigkeit
● Einfaches Testing
● CI-Unterstützung
24
Agenda
Überblick Portale
Grails als Basistechnologie
Umsetzung von Portal-Modulen
Portal Anpassungen
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
26
Tagging
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
28
Enterprise Suche
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)
30
Content / Document Management System
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
32
Web 2.0 Funktionalitäten
33
Web 2.0 Funktionalitäten
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
35
Agenda
Überblick Portale
Grails als Basistechnologie
Umsetzung von Portal-Modulen
Portal Anpassungen
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)
37
Portalseiten und Portlets
Template
Positionen im Template
Portlet-Instanzen
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“
39
Fazit
● Schnelle Entwicklung dank Grails
● Grails ist Enterprise fähig
● Tragfähigkeit in der Praxis erprobt
● Reduzierte Komplexität
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
1 of 40

Recommended

Kann ich mit Grails Enterprise Applikationen umsetzen? by
Kann ich mit Grails Enterprise Applikationen umsetzen?Kann ich mit Grails Enterprise Applikationen umsetzen?
Kann ich mit Grails Enterprise Applikationen umsetzen?Tobias Kraft
2.1K views32 slides
Grails im Überblick und in der Praxis by
Grails im Überblick und in der PraxisGrails im Überblick und in der Praxis
Grails im Überblick und in der PraxisTobias Kraft
2.4K views56 slides
Informatik Seminar Groovy Und Grails by
Informatik Seminar Groovy Und GrailsInformatik Seminar Groovy Und Grails
Informatik Seminar Groovy Und Grailsschmichri
790 views20 slides
GWT – Google Web Toolkit in der Praxis by
GWT – Google Web Toolkit in der PraxisGWT – Google Web Toolkit in der Praxis
GWT – Google Web Toolkit in der PraxisCenarion Information Systems GmbH
4.5K views41 slides
Eintauchen in MVP mit GWT by
Eintauchen in MVP mit GWT Eintauchen in MVP mit GWT
Eintauchen in MVP mit GWT Cenarion Information Systems GmbH
2.6K views38 slides
GWT: Eintauchen in MVP und Internationalisierung by
GWT: Eintauchen in MVP und InternationalisierungGWT: Eintauchen in MVP und Internationalisierung
GWT: Eintauchen in MVP und InternationalisierungCenarion Information Systems GmbH
2.7K views74 slides

More Related Content

What's hot

Go Fullstack: Webanwendungen mit Java EE 6 bauen (W-JAX 2011) by
Go Fullstack: Webanwendungen mit Java EE 6 bauen (W-JAX 2011)Go Fullstack: Webanwendungen mit Java EE 6 bauen (W-JAX 2011)
Go Fullstack: Webanwendungen mit Java EE 6 bauen (W-JAX 2011)Michael Kurz
1.9K views28 slides
Zend Framework 2 feat. MongoDB by
Zend Framework 2 feat. MongoDBZend Framework 2 feat. MongoDB
Zend Framework 2 feat. MongoDBRalf Eggert
2.6K views33 slides
WebGL - 3D im Browser - Erfahrungsbericht mit BabylonJS by
WebGL - 3D im Browser - Erfahrungsbericht mit BabylonJSWebGL - 3D im Browser - Erfahrungsbericht mit BabylonJS
WebGL - 3D im Browser - Erfahrungsbericht mit BabylonJSOliver Hader
2.8K views23 slides
JavaServer Faces 2.2 (Herbstcampus 2013) by
JavaServer Faces 2.2 (Herbstcampus 2013)JavaServer Faces 2.2 (Herbstcampus 2013)
JavaServer Faces 2.2 (Herbstcampus 2013)Michael Kurz
3.7K views43 slides
Metadatenbasierte Validierung by
Metadatenbasierte ValidierungMetadatenbasierte Validierung
Metadatenbasierte Validierungos890
1.8K views36 slides
Vor- und Nachteile von Web Components mit Polymer gegenüber AngularJS ohne P... by
Vor- und Nachteile von Web Components mit Polymer gegenüber AngularJS ohne P...Vor- und Nachteile von Web Components mit Polymer gegenüber AngularJS ohne P...
Vor- und Nachteile von Web Components mit Polymer gegenüber AngularJS ohne P...Oliver Hader
1.8K views10 slides

What's hot(20)

Go Fullstack: Webanwendungen mit Java EE 6 bauen (W-JAX 2011) by Michael Kurz
Go Fullstack: Webanwendungen mit Java EE 6 bauen (W-JAX 2011)Go Fullstack: Webanwendungen mit Java EE 6 bauen (W-JAX 2011)
Go Fullstack: Webanwendungen mit Java EE 6 bauen (W-JAX 2011)
Michael Kurz1.9K views
Zend Framework 2 feat. MongoDB by Ralf Eggert
Zend Framework 2 feat. MongoDBZend Framework 2 feat. MongoDB
Zend Framework 2 feat. MongoDB
Ralf Eggert2.6K views
WebGL - 3D im Browser - Erfahrungsbericht mit BabylonJS by Oliver Hader
WebGL - 3D im Browser - Erfahrungsbericht mit BabylonJSWebGL - 3D im Browser - Erfahrungsbericht mit BabylonJS
WebGL - 3D im Browser - Erfahrungsbericht mit BabylonJS
Oliver Hader2.8K views
JavaServer Faces 2.2 (Herbstcampus 2013) by Michael Kurz
JavaServer Faces 2.2 (Herbstcampus 2013)JavaServer Faces 2.2 (Herbstcampus 2013)
JavaServer Faces 2.2 (Herbstcampus 2013)
Michael Kurz3.7K views
Metadatenbasierte Validierung by os890
Metadatenbasierte ValidierungMetadatenbasierte Validierung
Metadatenbasierte Validierung
os8901.8K views
Vor- und Nachteile von Web Components mit Polymer gegenüber AngularJS ohne P... by Oliver Hader
Vor- und Nachteile von Web Components mit Polymer gegenüber AngularJS ohne P...Vor- und Nachteile von Web Components mit Polymer gegenüber AngularJS ohne P...
Vor- und Nachteile von Web Components mit Polymer gegenüber AngularJS ohne P...
Oliver Hader1.8K views
Ü̈ber Ant und Maven zu SBT und Gradle by adesso AG
Ü̈ber Ant und Maven zu SBT und GradleÜ̈ber Ant und Maven zu SBT und Gradle
Ü̈ber Ant und Maven zu SBT und Gradle
adesso AG1.8K views
Vaadin - Yet another Java Web Framework? (Google DevFest Karlsruhe 2012) by Christian Janz
Vaadin - Yet another Java Web Framework? (Google DevFest Karlsruhe 2012)Vaadin - Yet another Java Web Framework? (Google DevFest Karlsruhe 2012)
Vaadin - Yet another Java Web Framework? (Google DevFest Karlsruhe 2012)
Christian Janz2.5K views
Progressive Web Apps mit Angular by Jens Binfet
Progressive Web Apps mit AngularProgressive Web Apps mit Angular
Progressive Web Apps mit Angular
Jens Binfet522 views
JSF und JPA effizient kombinieren (W-JAX 2011) by Michael Kurz
JSF und JPA effizient kombinieren (W-JAX 2011)JSF und JPA effizient kombinieren (W-JAX 2011)
JSF und JPA effizient kombinieren (W-JAX 2011)
Michael Kurz1.7K views
Verteilte Anwendungen bei Azure mit Docker und Kubernetes by Gregor Biswanger
Verteilte Anwendungen bei Azure mit Docker und KubernetesVerteilte Anwendungen bei Azure mit Docker und Kubernetes
Verteilte Anwendungen bei Azure mit Docker und Kubernetes
Gregor Biswanger1.4K views
OSMC 2009 | NagVis 1.4 - What´s new by Lars Michaelsen by NETWAYS
OSMC 2009 | NagVis 1.4 - What´s new by Lars MichaelsenOSMC 2009 | NagVis 1.4 - What´s new by Lars Michaelsen
OSMC 2009 | NagVis 1.4 - What´s new by Lars Michaelsen
NETWAYS68 views
JAX 2015 - Continuous Integration mit Java & Javascript by dzuvic
JAX 2015 - Continuous Integration mit Java & JavascriptJAX 2015 - Continuous Integration mit Java & Javascript
JAX 2015 - Continuous Integration mit Java & Javascript
dzuvic756 views
Web-GUIs mit Vaadin by gedoplan
 Web-GUIs mit Vaadin Web-GUIs mit Vaadin
Web-GUIs mit Vaadin
gedoplan1.5K views
Electron.NET: Cross-Platform Desktop Software mit ASP.NET Core by Gregor Biswanger
Electron.NET: Cross-Platform Desktop Software mit ASP.NET CoreElectron.NET: Cross-Platform Desktop Software mit ASP.NET Core
Electron.NET: Cross-Platform Desktop Software mit ASP.NET Core
Gregor Biswanger1.2K views

Viewers also liked

Lass Dich Verzaubern by
Lass Dich VerzaubernLass Dich Verzaubern
Lass Dich VerzaubernSylvi O.
2.3K views16 slides
Fundamentos de la teria de la agencia. 1 semana by
Fundamentos de la teria de la agencia. 1 semanaFundamentos de la teria de la agencia. 1 semana
Fundamentos de la teria de la agencia. 1 semanaAlexander Molina
406 views4 slides
Jesus quellen-neu by
Jesus quellen-neuJesus quellen-neu
Jesus quellen-neucandymen
513 views33 slides
Presentación patrocinio 19ª Edición LESGAICINEMAD by
Presentación patrocinio 19ª Edición LESGAICINEMADPresentación patrocinio 19ª Edición LESGAICINEMAD
Presentación patrocinio 19ª Edición LESGAICINEMADCONSULTOR
763 views18 slides
biw info amtsblattmissbrauch by
biw info amtsblattmissbrauchbiw info amtsblattmissbrauch
biw info amtsblattmissbrauchWandelBarCamp
629 views4 slides
Forum 2003 Thyssen Krupp Presta by
Forum 2003  Thyssen Krupp PrestaForum 2003  Thyssen Krupp Presta
Forum 2003 Thyssen Krupp PrestaWandelBarCamp
1.2K views4 slides

Viewers also liked(20)

Lass Dich Verzaubern by Sylvi O.
Lass Dich VerzaubernLass Dich Verzaubern
Lass Dich Verzaubern
Sylvi O.2.3K views
Fundamentos de la teria de la agencia. 1 semana by Alexander Molina
Fundamentos de la teria de la agencia. 1 semanaFundamentos de la teria de la agencia. 1 semana
Fundamentos de la teria de la agencia. 1 semana
Alexander Molina406 views
Jesus quellen-neu by candymen
Jesus quellen-neuJesus quellen-neu
Jesus quellen-neu
candymen513 views
Presentación patrocinio 19ª Edición LESGAICINEMAD by CONSULTOR
Presentación patrocinio 19ª Edición LESGAICINEMADPresentación patrocinio 19ª Edición LESGAICINEMAD
Presentación patrocinio 19ª Edición LESGAICINEMAD
CONSULTOR763 views
biw info amtsblattmissbrauch by WandelBarCamp
biw info amtsblattmissbrauchbiw info amtsblattmissbrauch
biw info amtsblattmissbrauch
WandelBarCamp629 views
Forum 2003 Thyssen Krupp Presta by WandelBarCamp
Forum 2003  Thyssen Krupp PrestaForum 2003  Thyssen Krupp Presta
Forum 2003 Thyssen Krupp Presta
WandelBarCamp1.2K views
Taller diagrama web 2.0 by ledazas
Taller diagrama web 2.0Taller diagrama web 2.0
Taller diagrama web 2.0
ledazas217 views
Ostereier by Sylvi O.
OstereierOstereier
Ostereier
Sylvi O.151 views
Prototipado y testing de usabilidad rápido - @ThinkLeanEdu / Universidad de P... by Guillermo Ermel
Prototipado y testing de usabilidad rápido - @ThinkLeanEdu / Universidad de P...Prototipado y testing de usabilidad rápido - @ThinkLeanEdu / Universidad de P...
Prototipado y testing de usabilidad rápido - @ThinkLeanEdu / Universidad de P...
Guillermo Ermel950 views
Xybermotive Bewährte ERP und EDI Technologie - leichtgewichtig und auf Knopfd... by Hans-Chr. Brockmann
Xybermotive Bewährte ERP und EDI Technologie - leichtgewichtig und auf Knopfd...Xybermotive Bewährte ERP und EDI Technologie - leichtgewichtig und auf Knopfd...
Xybermotive Bewährte ERP und EDI Technologie - leichtgewichtig und auf Knopfd...
Hans-Chr. Brockmann2.8K views
Las finanzas y el director financiero primera semana by Alexander Molina
Las finanzas y el director financiero   primera semanaLas finanzas y el director financiero   primera semana
Las finanzas y el director financiero primera semana
Alexander Molina471 views
Presentacion trabajo segundo_corte by katherinr966
Presentacion trabajo segundo_cortePresentacion trabajo segundo_corte
Presentacion trabajo segundo_corte
katherinr966155 views
10. poesía posterior a 1939. 4º by rafernandezgon
10. poesía posterior a 1939. 4º10. poesía posterior a 1939. 4º
10. poesía posterior a 1939. 4º
rafernandezgon845 views
Fortaleciendo mi cuerpo by ConsuBer
Fortaleciendo mi cuerpoFortaleciendo mi cuerpo
Fortaleciendo mi cuerpo
ConsuBer356 views
El afiche by ecs167
El aficheEl afiche
El afiche
ecs167323 views

Similar to Enterprise 2.0 Portale mit Grails. Geht das?

Skalierbare Flutter Architektur - eine Einführung by
Skalierbare Flutter Architektur - eine EinführungSkalierbare Flutter Architektur - eine Einführung
Skalierbare Flutter Architektur - eine EinführungMarkus Kühle
177 views57 slides
Drupal Austria Roadshow in Klagenfurt by
Drupal Austria Roadshow in KlagenfurtDrupal Austria Roadshow in Klagenfurt
Drupal Austria Roadshow in Klagenfurtdasjo
1.4K views74 slides
Enterprise UI by
Enterprise UIEnterprise UI
Enterprise UIgedoplan
220 views32 slides
Notes Sharepoint Migration by
Notes Sharepoint MigrationNotes Sharepoint Migration
Notes Sharepoint Migrationinnocate solutions GmbH
1.8K views27 slides
TDD für Testmuffel by
TDD für TestmuffelTDD für Testmuffel
TDD für TestmuffelHendrik Lösch
419 views85 slides
Wozu Portlets – reichen HTML5 und Rest nicht aus für moderne Portale? by
Wozu Portlets – reichen HTML5 und Rest nicht aus für moderne Portale?Wozu Portlets – reichen HTML5 und Rest nicht aus für moderne Portale?
Wozu Portlets – reichen HTML5 und Rest nicht aus für moderne Portale?adesso AG
2.5K views38 slides

Similar to Enterprise 2.0 Portale mit Grails. Geht das?(20)

Skalierbare Flutter Architektur - eine Einführung by Markus Kühle
Skalierbare Flutter Architektur - eine EinführungSkalierbare Flutter Architektur - eine Einführung
Skalierbare Flutter Architektur - eine Einführung
Markus Kühle177 views
Drupal Austria Roadshow in Klagenfurt by dasjo
Drupal Austria Roadshow in KlagenfurtDrupal Austria Roadshow in Klagenfurt
Drupal Austria Roadshow in Klagenfurt
dasjo1.4K views
Enterprise UI by gedoplan
Enterprise UIEnterprise UI
Enterprise UI
gedoplan220 views
Wozu Portlets – reichen HTML5 und Rest nicht aus für moderne Portale? by adesso AG
Wozu Portlets – reichen HTML5 und Rest nicht aus für moderne Portale?Wozu Portlets – reichen HTML5 und Rest nicht aus für moderne Portale?
Wozu Portlets – reichen HTML5 und Rest nicht aus für moderne Portale?
adesso AG2.5K views
Icinga 2009 at Nagios Workshop by Icinga
Icinga 2009 at Nagios WorkshopIcinga 2009 at Nagios Workshop
Icinga 2009 at Nagios Workshop
Icinga872 views
XML Director - the technical foundation of onkopedia.com by Andreas Jung
XML Director - the technical foundation of onkopedia.comXML Director - the technical foundation of onkopedia.com
XML Director - the technical foundation of onkopedia.com
Andreas Jung1.5K views
MEAN SCS in der Cloud by Torsten Fink
MEAN SCS in der CloudMEAN SCS in der Cloud
MEAN SCS in der Cloud
Torsten Fink496 views
comundus Kundenportal mit Liferay by Stefan Hilpp
comundus Kundenportal mit Liferaycomundus Kundenportal mit Liferay
comundus Kundenportal mit Liferay
Stefan Hilpp31 views
C2 Teamwork Portal Mit Web Sphere 6.0 by Andreas Schulte
C2 Teamwork Portal Mit Web Sphere 6.0C2 Teamwork Portal Mit Web Sphere 6.0
C2 Teamwork Portal Mit Web Sphere 6.0
Andreas Schulte918 views
Yes zu NoSQL mit MongoDB für .NET-Entwickler by Gregor Biswanger
Yes zu NoSQL mit MongoDB für .NET-EntwicklerYes zu NoSQL mit MongoDB für .NET-Entwickler
Yes zu NoSQL mit MongoDB für .NET-Entwickler
Gregor Biswanger1.5K views
JavaScript-Erweiterungen für UI und UX by Kai Donato
JavaScript-Erweiterungen für UI und UXJavaScript-Erweiterungen für UI und UX
JavaScript-Erweiterungen für UI und UX
Kai Donato2.7K views
2007 - Basta!: Nach soa kommt soc by Daniel Fisher
2007 - Basta!: Nach soa kommt soc2007 - Basta!: Nach soa kommt soc
2007 - Basta!: Nach soa kommt soc
Daniel Fisher209 views
Developer Best Practices (Robotic Enterprise Framework REF) – Anwendung und d... by Cristina Vidu
Developer Best Practices (Robotic Enterprise Framework REF) – Anwendung und d...Developer Best Practices (Robotic Enterprise Framework REF) – Anwendung und d...
Developer Best Practices (Robotic Enterprise Framework REF) – Anwendung und d...
Cristina Vidu61 views
Portalserver Meets SOA: State of the Portal Art by adesso AG
Portalserver Meets SOA:  State of the Portal ArtPortalserver Meets SOA:  State of the Portal Art
Portalserver Meets SOA: State of the Portal Art
adesso AG1.1K views
Microsoft Azure Cloud mit der Sitecore Experience Platform by comspace GmbH & Co. KG
Microsoft Azure Cloud mit der Sitecore Experience PlatformMicrosoft Azure Cloud mit der Sitecore Experience Platform
Microsoft Azure Cloud mit der Sitecore Experience Platform
SharePoint 2013 Search Driven websites by David Schneider
SharePoint 2013 Search Driven websitesSharePoint 2013 Search Driven websites
SharePoint 2013 Search Driven websites
David Schneider1.4K views
HTML5 - presentation at W3C-Tag 2009 by Felix Sasaki
HTML5 - presentation at W3C-Tag 2009HTML5 - presentation at W3C-Tag 2009
HTML5 - presentation at W3C-Tag 2009
Felix Sasaki718 views

Enterprise 2.0 Portale mit Grails. Geht das?

  • 1. Enterprise 2.0 Portale mit Grails. Geht das? Java Forum Stuttgart 04.07.2013 Manuel Breitfeld, Tobias Kraft
  • 2. 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 KraftManuel Breitfeld
  • 3. 3 Agenda Überblick Portale Grails als Basistechnologie Umsetzung von Portal-Modulen Portal Anpassungen
  • 5. 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
  • 6. 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
  • 7. 7 photo credit: tim.md via photopin
  • 8. 8 Probleme von Portalen ● Schwergewichtig ● Nach Möglichkeit alles integrieren ● Unterstützung von Standards durch Portalhersteller ● Portlet-API veraltet ● Teilweise hohe Lizenzkosten ● Testing
  • 9. 9 Agenda Überblick Portale Grails als Basistechnologie Umsetzung von Portal-Modulen Portal Anpassungen
  • 10. 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
  • 11. 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:
  • 12. 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
  • 13. 13 Aufbau eines Grails-Projektes ● Vordefinierte Projektstruktur
  • 15. 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)
  • 16. 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() {…}
  • 17. 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, …)
  • 18. 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
  • 19. 19 Integrationsbeispiele ● JSON-Slurper ● File-Handling def jsonText = '''{ "message": { "header": { "from": "bud@spencer.com"}, "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() } }
  • 21. 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
  • 22. 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
  • 23. 23 Warum Grails für ein Portal einsetzen? ● Einfache Integration von Drittsystemen ● Schnelle Umsetzung neuer Anforderungen ● Enterprise-Fähigkeit ● Einfaches Testing ● CI-Unterstützung
  • 24. 24 Agenda Überblick Portale Grails als Basistechnologie Umsetzung von Portal-Modulen Portal Anpassungen
  • 25. 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
  • 27. 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
  • 29. 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)
  • 30. 30 Content / Document Management System
  • 31. 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
  • 34. 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
  • 35. 35 Agenda Überblick Portale Grails als Basistechnologie Umsetzung von Portal-Modulen Portal Anpassungen
  • 36. 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)
  • 37. 37 Portalseiten und Portlets Template Positionen im Template Portlet-Instanzen
  • 38. 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“
  • 39. 39 Fazit ● Schnelle Entwicklung dank Grails ● Grails ist Enterprise fähig ● Tragfähigkeit in der Praxis erprobt ● Reduzierte Komplexität
  • 40. 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