SlideShare ist ein Scribd-Unternehmen logo
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

Weitere ähnliche Inhalte

Was ist angesagt?

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)
Go Fullstack: Webanwendungen mit Java EE 6 bauen (W-JAX 2011)
Michael Kurz
 
Zend Framework 2 feat. MongoDB
Zend Framework 2 feat. MongoDBZend Framework 2 feat. MongoDB
Zend Framework 2 feat. MongoDB
Ralf Eggert
 
WebGL - 3D im Browser - Erfahrungsbericht mit BabylonJS
WebGL - 3D im Browser - Erfahrungsbericht mit BabylonJSWebGL - 3D im Browser - Erfahrungsbericht mit BabylonJS
WebGL - 3D im Browser - Erfahrungsbericht mit BabylonJS
Oliver Hader
 
JavaServer Faces 2.2 (Herbstcampus 2013)
JavaServer Faces 2.2 (Herbstcampus 2013)JavaServer Faces 2.2 (Herbstcampus 2013)
JavaServer Faces 2.2 (Herbstcampus 2013)
Michael Kurz
 
Metadatenbasierte Validierung
Metadatenbasierte ValidierungMetadatenbasierte Validierung
Metadatenbasierte Validierung
os890
 
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...
Vor- und Nachteile von Web Components mit Polymer gegenüber AngularJS ohne P...
Oliver Hader
 
Web Components
Web ComponentsWeb Components
Web Components
Oliver Hader
 
Ü̈ber Ant und Maven zu SBT und Gradle
Ü̈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 AG
 
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)
Vaadin - Yet another Java Web Framework? (Google DevFest Karlsruhe 2012)
Christian Janz
 
Progressive Web Apps mit Angular
Progressive Web Apps mit AngularProgressive Web Apps mit Angular
Progressive Web Apps mit Angular
Jens Binfet
 
Our way to 19c - DOAG 2020
Our way to 19c - DOAG 2020Our way to 19c - DOAG 2020
Our way to 19c - DOAG 2020
Torsten Kleiber
 
JSF und JPA effizient kombinieren (W-JAX 2011)
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 Kurz
 
Verteilte Anwendungen bei Azure mit Docker und Kubernetes
Verteilte Anwendungen bei Azure mit Docker und KubernetesVerteilte Anwendungen bei Azure mit Docker und Kubernetes
Verteilte Anwendungen bei Azure mit Docker und Kubernetes
Gregor Biswanger
 
JSF vs. GWT? JSF und GWT!
JSF vs. GWT? JSF und GWT!JSF vs. GWT? JSF und GWT!
JSF vs. GWT? JSF und GWT!
Christian Kaltepoth
 
OSMC 2009 | NagVis 1.4 - What´s new by Lars Michaelsen
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
NETWAYS
 
JAX 2015 - Continuous Integration mit Java & Javascript
JAX 2015 - Continuous Integration mit Java & JavascriptJAX 2015 - Continuous Integration mit Java & Javascript
JAX 2015 - Continuous Integration mit Java & Javascript
dzuvic
 
Web-GUIs mit Vaadin
 Web-GUIs mit Vaadin Web-GUIs mit Vaadin
Web-GUIs mit Vaadin
gedoplan
 
Electron.NET: Cross-Platform Desktop Software mit ASP.NET Core
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 Biswanger
 

Was ist angesagt? (20)

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)
Go Fullstack: Webanwendungen mit Java EE 6 bauen (W-JAX 2011)
 
Zend Framework 2 feat. MongoDB
Zend Framework 2 feat. MongoDBZend Framework 2 feat. MongoDB
Zend Framework 2 feat. MongoDB
 
WebGL - 3D im Browser - Erfahrungsbericht mit BabylonJS
WebGL - 3D im Browser - Erfahrungsbericht mit BabylonJSWebGL - 3D im Browser - Erfahrungsbericht mit BabylonJS
WebGL - 3D im Browser - Erfahrungsbericht mit BabylonJS
 
JavaServer Faces 2.2 (Herbstcampus 2013)
JavaServer Faces 2.2 (Herbstcampus 2013)JavaServer Faces 2.2 (Herbstcampus 2013)
JavaServer Faces 2.2 (Herbstcampus 2013)
 
Metadatenbasierte Validierung
Metadatenbasierte ValidierungMetadatenbasierte Validierung
Metadatenbasierte Validierung
 
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...
Vor- und Nachteile von Web Components mit Polymer gegenüber AngularJS ohne P...
 
Web Components
Web ComponentsWeb Components
Web Components
 
Ü̈ber Ant und Maven zu SBT und Gradle
Ü̈ber Ant und Maven zu SBT und GradleÜ̈ber Ant und Maven zu SBT und Gradle
Ü̈ber Ant und Maven zu SBT und Gradle
 
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)
Vaadin - Yet another Java Web Framework? (Google DevFest Karlsruhe 2012)
 
Query Result Caching
Query Result CachingQuery Result Caching
Query Result Caching
 
Progressive Web Apps mit Angular
Progressive Web Apps mit AngularProgressive Web Apps mit Angular
Progressive Web Apps mit Angular
 
Our way to 19c - DOAG 2020
Our way to 19c - DOAG 2020Our way to 19c - DOAG 2020
Our way to 19c - DOAG 2020
 
JSF und JPA effizient kombinieren (W-JAX 2011)
JSF und JPA effizient kombinieren (W-JAX 2011)JSF und JPA effizient kombinieren (W-JAX 2011)
JSF und JPA effizient kombinieren (W-JAX 2011)
 
Verteilte Anwendungen bei Azure mit Docker und Kubernetes
Verteilte Anwendungen bei Azure mit Docker und KubernetesVerteilte Anwendungen bei Azure mit Docker und Kubernetes
Verteilte Anwendungen bei Azure mit Docker und Kubernetes
 
JSF vs. GWT? JSF und GWT!
JSF vs. GWT? JSF und GWT!JSF vs. GWT? JSF und GWT!
JSF vs. GWT? JSF und GWT!
 
OSMC 2009 | NagVis 1.4 - What´s new by Lars Michaelsen
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
 
GWT
GWTGWT
GWT
 
JAX 2015 - Continuous Integration mit Java & Javascript
JAX 2015 - Continuous Integration mit Java & JavascriptJAX 2015 - Continuous Integration mit Java & Javascript
JAX 2015 - Continuous Integration mit Java & Javascript
 
Web-GUIs mit Vaadin
 Web-GUIs mit Vaadin Web-GUIs mit Vaadin
Web-GUIs mit Vaadin
 
Electron.NET: Cross-Platform Desktop Software mit ASP.NET Core
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
 

Andere mochten auch

Lass Dich Verzaubern
Lass Dich VerzaubernLass Dich Verzaubern
Lass Dich VerzaubernSylvi O.
 
Fundamentos de la teria de la agencia. 1 semana
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 Molina
 
Jesus quellen-neu
Jesus quellen-neuJesus quellen-neu
Jesus quellen-neu
candymen
 
Presentación patrocinio 19ª Edición LESGAICINEMAD
Presentación patrocinio 19ª Edición LESGAICINEMADPresentación patrocinio 19ª Edición LESGAICINEMAD
Presentación patrocinio 19ª Edición LESGAICINEMAD
CONSULTOR
 
biw info amtsblattmissbrauch
biw info amtsblattmissbrauchbiw info amtsblattmissbrauch
biw info amtsblattmissbrauchWandelBarCamp
 
Forum 2003 Thyssen Krupp Presta
Forum 2003  Thyssen Krupp PrestaForum 2003  Thyssen Krupp Presta
Forum 2003 Thyssen Krupp Presta
WandelBarCamp
 
Dn12 3 era_eval_presentacion_sgaa
Dn12 3 era_eval_presentacion_sgaaDn12 3 era_eval_presentacion_sgaa
Dn12 3 era_eval_presentacion_sgaa
Aaron Alexis Soto Gomez
 
Taller diagrama web 2.0
Taller diagrama web 2.0Taller diagrama web 2.0
Taller diagrama web 2.0
ledazas
 
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...
Prototipado y testing de usabilidad rápido - @ThinkLeanEdu / Universidad de P...
Guillermo Ermel
 
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...
Xybermotive Bewährte ERP und EDI Technologie - leichtgewichtig und auf Knopfd...
Hans-Chr. Brockmann
 
Las finanzas y el director financiero primera semana
Las finanzas y el director financiero   primera semanaLas finanzas y el director financiero   primera semana
Las finanzas y el director financiero primera semana
Alexander Molina
 
Presentacion trabajo segundo_corte
Presentacion trabajo segundo_cortePresentacion trabajo segundo_corte
Presentacion trabajo segundo_corte
katherinr966
 
Negocio innovador y con futuro 2012 Site Talk
Negocio innovador y con futuro 2012 Site TalkNegocio innovador y con futuro 2012 Site Talk
Negocio innovador y con futuro 2012 Site Talk
Mari Carmen López
 
Camstudio
CamstudioCamstudio
Camstudio
Evangelinadelc
 
10. poesía posterior a 1939. 4º
10. poesía posterior a 1939. 4º10. poesía posterior a 1939. 4º
10. poesía posterior a 1939. 4º
rafernandezgon
 
Tecnología
TecnologíaTecnología
Fortaleciendo mi cuerpo
Fortaleciendo mi cuerpoFortaleciendo mi cuerpo
Fortaleciendo mi cuerpo
ConsuBer
 
El afiche
El aficheEl afiche
El afiche
ecs167
 

Andere mochten auch (20)

Lass Dich Verzaubern
Lass Dich VerzaubernLass Dich Verzaubern
Lass Dich Verzaubern
 
Fundamentos de la teria de la agencia. 1 semana
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
 
Jesus quellen-neu
Jesus quellen-neuJesus quellen-neu
Jesus quellen-neu
 
Presentación patrocinio 19ª Edición LESGAICINEMAD
Presentación patrocinio 19ª Edición LESGAICINEMADPresentación patrocinio 19ª Edición LESGAICINEMAD
Presentación patrocinio 19ª Edición LESGAICINEMAD
 
biw info amtsblattmissbrauch
biw info amtsblattmissbrauchbiw info amtsblattmissbrauch
biw info amtsblattmissbrauch
 
Forum 2003 Thyssen Krupp Presta
Forum 2003  Thyssen Krupp PrestaForum 2003  Thyssen Krupp Presta
Forum 2003 Thyssen Krupp Presta
 
Dn12 3 era_eval_presentacion_sgaa
Dn12 3 era_eval_presentacion_sgaaDn12 3 era_eval_presentacion_sgaa
Dn12 3 era_eval_presentacion_sgaa
 
Taller diagrama web 2.0
Taller diagrama web 2.0Taller diagrama web 2.0
Taller diagrama web 2.0
 
Ostereier
OstereierOstereier
Ostereier
 
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...
Prototipado y testing de usabilidad rápido - @ThinkLeanEdu / Universidad de P...
 
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...
Xybermotive Bewährte ERP und EDI Technologie - leichtgewichtig und auf Knopfd...
 
Las finanzas y el director financiero primera semana
Las finanzas y el director financiero   primera semanaLas finanzas y el director financiero   primera semana
Las finanzas y el director financiero primera semana
 
Presentacion trabajo segundo_corte
Presentacion trabajo segundo_cortePresentacion trabajo segundo_corte
Presentacion trabajo segundo_corte
 
Negocio innovador y con futuro 2012 Site Talk
Negocio innovador y con futuro 2012 Site TalkNegocio innovador y con futuro 2012 Site Talk
Negocio innovador y con futuro 2012 Site Talk
 
Camstudio
CamstudioCamstudio
Camstudio
 
10. poesía posterior a 1939. 4º
10. poesía posterior a 1939. 4º10. poesía posterior a 1939. 4º
10. poesía posterior a 1939. 4º
 
Tecnología
TecnologíaTecnología
Tecnología
 
Buchstabe b
Buchstabe bBuchstabe b
Buchstabe b
 
Fortaleciendo mi cuerpo
Fortaleciendo mi cuerpoFortaleciendo mi cuerpo
Fortaleciendo mi cuerpo
 
El afiche
El aficheEl afiche
El afiche
 

Ähnlich wie Enterprise 2.0 Portale mit Grails. Geht das?

Skalierbare Flutter Architektur - eine Einführung
Skalierbare Flutter Architektur - eine EinführungSkalierbare Flutter Architektur - eine Einführung
Skalierbare Flutter Architektur - eine Einführung
Markus Kühle
 
Drupal Austria Roadshow in Klagenfurt
Drupal Austria Roadshow in KlagenfurtDrupal Austria Roadshow in Klagenfurt
Drupal Austria Roadshow in Klagenfurt
dasjo
 
Enterprise UI
Enterprise UIEnterprise UI
Enterprise UI
gedoplan
 
Notes Sharepoint Migration
Notes Sharepoint MigrationNotes Sharepoint Migration
Notes Sharepoint Migration
innocate solutions GmbH
 
TDD für Testmuffel
TDD für TestmuffelTDD für Testmuffel
TDD für Testmuffel
Hendrik Lösch
 
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?
Wozu Portlets – reichen HTML5 und Rest nicht aus für moderne Portale?
adesso AG
 
Icinga 2009 at Nagios Workshop
Icinga 2009 at Nagios WorkshopIcinga 2009 at Nagios Workshop
Icinga 2009 at Nagios Workshop
Icinga
 
XML Director - the technical foundation of onkopedia.com
XML Director - the technical foundation of onkopedia.comXML Director - the technical foundation of onkopedia.com
XML Director - the technical foundation of onkopedia.com
Andreas Jung
 
MEAN SCS in der Cloud
MEAN SCS in der CloudMEAN SCS in der Cloud
MEAN SCS in der Cloud
Torsten Fink
 
comundus Kundenportal mit Liferay
comundus Kundenportal mit Liferaycomundus Kundenportal mit Liferay
comundus Kundenportal mit Liferay
Stefan Hilpp
 
C2 Teamwork Portal Mit Web Sphere 6.0
C2 Teamwork Portal Mit Web Sphere 6.0C2 Teamwork Portal Mit Web Sphere 6.0
C2 Teamwork Portal Mit Web Sphere 6.0
Andreas Schulte
 
Yes zu NoSQL mit MongoDB für .NET-Entwickler
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 Biswanger
 
JavaScript-Erweiterungen für UI und UX
JavaScript-Erweiterungen für UI und UXJavaScript-Erweiterungen für UI und UX
JavaScript-Erweiterungen für UI und UX
Kai Donato
 
2007 - Basta!: Nach soa kommt soc
2007 - Basta!: Nach soa kommt soc2007 - Basta!: Nach soa kommt soc
2007 - Basta!: Nach soa kommt soc
Daniel Fisher
 
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...
Developer Best Practices (Robotic Enterprise Framework REF) – Anwendung und d...
Cristina Vidu
 
Portalserver Meets SOA: State of the Portal Art
Portalserver Meets SOA:  State of the Portal ArtPortalserver Meets SOA:  State of the Portal Art
Portalserver Meets SOA: State of the Portal Art
adesso AG
 
Microsoft Azure Cloud mit der Sitecore Experience Platform
Microsoft Azure Cloud mit der Sitecore Experience PlatformMicrosoft Azure Cloud mit der Sitecore Experience Platform
Microsoft Azure Cloud mit der Sitecore Experience Platform
comspace GmbH & Co. KG
 
SharePoint 2013 Search Driven websites
SharePoint 2013 Search Driven websitesSharePoint 2013 Search Driven websites
SharePoint 2013 Search Driven websites
David Schneider
 
HTML5 - presentation at W3C-Tag 2009
HTML5 - presentation at W3C-Tag 2009HTML5 - presentation at W3C-Tag 2009
HTML5 - presentation at W3C-Tag 2009
Felix Sasaki
 

Ähnlich wie Enterprise 2.0 Portale mit Grails. Geht das? (20)

Skalierbare Flutter Architektur - eine Einführung
Skalierbare Flutter Architektur - eine EinführungSkalierbare Flutter Architektur - eine Einführung
Skalierbare Flutter Architektur - eine Einführung
 
Drupal Austria Roadshow in Klagenfurt
Drupal Austria Roadshow in KlagenfurtDrupal Austria Roadshow in Klagenfurt
Drupal Austria Roadshow in Klagenfurt
 
Enterprise UI
Enterprise UIEnterprise UI
Enterprise UI
 
Notes Sharepoint Migration
Notes Sharepoint MigrationNotes Sharepoint Migration
Notes Sharepoint Migration
 
TDD für Testmuffel
TDD für TestmuffelTDD für Testmuffel
TDD für Testmuffel
 
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?
Wozu Portlets – reichen HTML5 und Rest nicht aus für moderne Portale?
 
Icinga 2009 at Nagios Workshop
Icinga 2009 at Nagios WorkshopIcinga 2009 at Nagios Workshop
Icinga 2009 at Nagios Workshop
 
XML Director - the technical foundation of onkopedia.com
XML Director - the technical foundation of onkopedia.comXML Director - the technical foundation of onkopedia.com
XML Director - the technical foundation of onkopedia.com
 
MEAN SCS in der Cloud
MEAN SCS in der CloudMEAN SCS in der Cloud
MEAN SCS in der Cloud
 
comundus Kundenportal mit Liferay
comundus Kundenportal mit Liferaycomundus Kundenportal mit Liferay
comundus Kundenportal mit Liferay
 
C2 Teamwork Portal Mit Web Sphere 6.0
C2 Teamwork Portal Mit Web Sphere 6.0C2 Teamwork Portal Mit Web Sphere 6.0
C2 Teamwork Portal Mit Web Sphere 6.0
 
Yes zu NoSQL mit MongoDB für .NET-Entwickler
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
 
JavaScript-Erweiterungen für UI und UX
JavaScript-Erweiterungen für UI und UXJavaScript-Erweiterungen für UI und UX
JavaScript-Erweiterungen für UI und UX
 
2007 - Basta!: Nach soa kommt soc
2007 - Basta!: Nach soa kommt soc2007 - Basta!: Nach soa kommt soc
2007 - Basta!: Nach soa kommt soc
 
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...
Developer Best Practices (Robotic Enterprise Framework REF) – Anwendung und d...
 
Portalserver Meets SOA: State of the Portal Art
Portalserver Meets SOA:  State of the Portal ArtPortalserver Meets SOA:  State of the Portal Art
Portalserver Meets SOA: State of the Portal Art
 
Microsoft Azure Cloud mit der Sitecore Experience Platform
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
SharePoint 2013 Search Driven websitesSharePoint 2013 Search Driven websites
SharePoint 2013 Search Driven websites
 
imatics FormEngine
imatics FormEngineimatics FormEngine
imatics FormEngine
 
HTML5 - presentation at W3C-Tag 2009
HTML5 - presentation at W3C-Tag 2009HTML5 - presentation at W3C-Tag 2009
HTML5 - presentation at W3C-Tag 2009
 

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