Enterprise 2.0 Portale mit Grails. Geht das?

  • 806 views
Uploaded on

Vortrag auf dem Java-Forum Stuttgart am 04.07.13

Vortrag auf dem Java-Forum Stuttgart am 04.07.13

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
806
On Slideshare
0
From Embeds
0
Number of Embeds
4

Actions

Shares
Downloads
4
Comments
0
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 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
  • 4. 4 Was sind Portale? Portlets
  • 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
  • 14. 14 Grails Aufbau
  • 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() } }
  • 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 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
  • 26. 26 Tagging
  • 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 Enterprise Suche
  • 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
  • 32. 32 Web 2.0 Funktionalitäten
  • 33. 33 Web 2.0 Funktionalitäten
  • 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