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.
● ...
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 Ma...
6
Relevante Portal-Spezifikationen
● JSR 168: Portlet Specification, JSR 286: Portlet Specification 2.0
● Spezifiziert Sch...
7
photo credit: tim.md via photopin
8
Probleme von Portalen
● Schwergewichtig
● Nach Möglichkeit alles integrieren
● Unterstützung von Standards durch Portalh...
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...
11
Groovy
● Dynamische typisierte Sprache
● Basiert auf JVM
● Zusätzliche Features zu Java
def names = ["Peter", "Manuel",...
12
Rapid development
Der Standard-Weg ist konfiguriert, aber Änderungen sind möglich
● Convention over Configuration (CoC)...
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 erfol...
16
CoC-Beispiel anhand von Services
● SpringBeans als einfache POJOs
● Einfacher Zugriff über DI
● Management von Transakt...
17
Controller und Views
● Controller
● Direkter Zugriff auf Services
● Standardmethoden wie render()
● Groovy Server Pages...
18
Full-Stack und Continuous Integration
● Test
● Testdaten (Fixtures, Build Test Data Plugin)
● JUnit, Spock
● Build
● Ga...
19
Integrationsbeispiele
● JSON-Slurper
● File-Handling
def jsonText = '''{
"message": {
"header": { "from": "bud@spencer....
20
JEE-Integration
Application Server
DB
Dokumenten-
Management-
System
EJB-Aufruf
grails war ejb ear
dms_if.jardms_if.jar...
21
Was ist cool an Grails?
http://www.morguefile.com/archive/display/196579
● Runterladen und loslegen
● Groovy macht viel...
22
Was ist bei Grails zu beachten?
● Unsauberer Code ist schnell produziert
● Schichtentrennung
● Schwergewichtige Taglibs...
23
Warum Grails für ein Portal einsetzen?
● Einfache Integration von Drittsystemen
● Schnelle Umsetzung neuer Anforderunge...
24
Agenda
Überblick Portale
Grails als Basistechnologie
Umsetzung von Portal-Modulen
Portal Anpassungen
25
Tagging
● Kennzeichnung / Kategorisierung verschiedener Themen
● Funktionsübergreifendes Tagging
● Blog Posts, Dokument...
26
Tagging
27
Enterprise Suche
● Suche über mehrere fachliche Komponenten
● Unterschiedliche Darstellung je nach Inhaltstyp
• Bild mi...
28
Enterprise Suche
29
Content / Document Management System
● Verschiedene Inhaltstypen
● Unstrukturiert (WYSIWYG Editor), Strukturiert und Te...
30
Content / Document Management System
31
Web 2.0 Funktionalitäten
● Blog
● Wiki
● Micro Messages
● Activity Stream
● Teilen von Dokumenten
● Kommentieren von In...
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,...
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ü...
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 Po...
39
Fazit
● Schnelle Entwicklung dank Grails
● Grails ist Enterprise fähig
● Tragfähigkeit in der Praxis erprobt
● Reduzier...
Vielen Dank!
exensio Gesellschaft für Informationstechnologie mbH
Am Rüppurrer Schloß 12
76199 Karlsruhe
http://www.exensi...
Nächste SlideShare
Wird geladen in …5
×

Enterprise 2.0 Portale mit Grails. Geht das?

1.590 Aufrufe

Veröffentlicht am

Vortrag auf dem Java-Forum Stuttgart am 04.07.13

Veröffentlicht in: Technologie
  • Als Erste(r) kommentieren

Enterprise 2.0 Portale mit Grails. Geht das?

  1. 1. Enterprise 2.0 Portale mit Grails. Geht das? Java Forum Stuttgart 04.07.2013 Manuel Breitfeld, Tobias Kraft
  2. 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. 3 Agenda Überblick Portale Grails als Basistechnologie Umsetzung von Portal-Modulen Portal Anpassungen
  4. 4. 4 Was sind Portale? Portlets
  5. 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. 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. 7 photo credit: tim.md via photopin
  8. 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. 9 Agenda Überblick Portale Grails als Basistechnologie Umsetzung von Portal-Modulen Portal Anpassungen
  10. 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. 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. 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. 13 Aufbau eines Grails-Projektes ● Vordefinierte Projektstruktur
  14. 14. 14 Grails Aufbau
  15. 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. 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. 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. 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. 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. 20. 20 JEE-Integration Application Server DB Dokumenten- Management- System EJB-Aufruf grails war ejb ear dms_if.jardms_if.jar dms_ejb.jar
  21. 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. 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. 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. 24 Agenda Überblick Portale Grails als Basistechnologie Umsetzung von Portal-Modulen Portal Anpassungen
  25. 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
  26. 26. 26 Tagging
  27. 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
  28. 28. 28 Enterprise Suche
  29. 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. 30 Content / Document Management System
  31. 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
  32. 32. 32 Web 2.0 Funktionalitäten
  33. 33. 33 Web 2.0 Funktionalitäten
  34. 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. 35 Agenda Überblick Portale Grails als Basistechnologie Umsetzung von Portal-Modulen Portal Anpassungen
  36. 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. 37 Portalseiten und Portlets Template Positionen im Template Portlet-Instanzen
  38. 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. 39 Fazit ● Schnelle Entwicklung dank Grails ● Grails ist Enterprise fähig ● Tragfähigkeit in der Praxis erprobt ● Reduzierte Komplexität
  40. 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

×