Enterprise 2.0 Portale mit Grails. Geht das?

40
Enterprise 2.0 Portale mit Grails. Geht das? Java Forum Stuttgart 04.07.2013 Manuel Breitfeld, Tobias Kraft

description

Vortrag auf dem Java-Forum Stuttgart am 04.07.13

Transcript of Enterprise 2.0 Portale mit Grails. Geht das?

Page 1: Enterprise 2.0 Portale mit Grails. Geht das?

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?

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?

3

Agenda

Überblick Portale

Grails als Basistechnologie

Umsetzung von Portal-Modulen

Portal Anpassungen

Page 4: Enterprise 2.0 Portale mit Grails. Geht das?

4

Was sind Portale?

Portlets

Page 5: Enterprise 2.0 Portale mit Grails. Geht das?

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?

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?

7

photo credit: tim.md via photopin

Page 8: Enterprise 2.0 Portale mit Grails. Geht das?

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?

9

Agenda

Überblick Portale

Grails als Basistechnologie

Umsetzung von Portal-Modulen

Portal Anpassungen

Page 10: Enterprise 2.0 Portale mit Grails. Geht das?

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?

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?

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?

13

Aufbau eines Grails-Projektes

● Vordefinierte Projektstruktur

Page 14: Enterprise 2.0 Portale mit Grails. Geht das?

14

Grails Aufbau

Page 15: Enterprise 2.0 Portale mit Grails. Geht das?

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?

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?

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?

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?

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?

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?

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?

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?

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?

24

Agenda

Überblick Portale

Grails als Basistechnologie

Umsetzung von Portal-Modulen

Portal Anpassungen

Page 25: Enterprise 2.0 Portale mit Grails. Geht das?

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?

26

Tagging

Page 27: Enterprise 2.0 Portale mit Grails. Geht das?

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?

28

Enterprise Suche

Page 29: Enterprise 2.0 Portale mit Grails. Geht das?

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?

30

Content / Document Management System

Page 31: Enterprise 2.0 Portale mit Grails. Geht das?

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?

32

Web 2.0 Funktionalitäten

Page 33: Enterprise 2.0 Portale mit Grails. Geht das?

33

Web 2.0 Funktionalitäten

Page 34: Enterprise 2.0 Portale mit Grails. Geht das?

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?

35

Agenda

Überblick Portale

Grails als Basistechnologie

Umsetzung von Portal-Modulen

Portal Anpassungen

Page 36: Enterprise 2.0 Portale mit Grails. Geht das?

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?

37

Portalseiten und Portlets

Template

Positionen im Template

Portlet-Instanzen

Page 38: Enterprise 2.0 Portale mit Grails. Geht das?

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?

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?

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