javantura zagreb 2014 - alfresco-neo4j integracija - damir murat

17
Alfresco – Neo4j integracija Nova vrsta CMS aplikacija Damir Murat IT Arhitekt, CROZ

Category:

Technology


2 download

DESCRIPTION

Konferencija Javantura Zagreb 2014 by HUJAK Alfresco – Neo4j integracija – nova vrsta CMS aplikacija by Damir Murat Graph baze imaju mnoge primjene, a jedna od njih je obogaćivanje i novi način pretraživanja i korištenja postojećih podataka. Ako prateći tu ideju povežemo CMS sustav Alfresco (www.alfresco.com) i graph bazu podataka Neo4j (www.neo4j.org), otvara se mogućnost kreiranja nove vrste CMS aplikacija. Dodamo li u mješavinu još i tehnologije kao što su Ext JS, D3.js i Grails, rezultat može biti vrlo atraktivan za krajnjeg korisnika.

TRANSCRIPT

Page 1: Javantura Zagreb 2014 - Alfresco-Neo4j integracija - Damir Murat

Alfresco – Neo4j integracija Nova vrsta CMS aplikacija

Damir Murat

IT Arhitekt, CROZ

Page 2: Javantura Zagreb 2014 - Alfresco-Neo4j integracija - Damir Murat

Alfresco • Java baziran Enterprise Content Management (ECM) sustav

• Document Management (DMS) je samo jedna od funkcionalnosti ECM-a

• DMS uključuje funkcionalnosti kao što su kontrola pristupa sadržaju, verzioniranje sadržaja, check in/out, document workflow, full-text pretraživanje, Office i Google Docs integracija, online previews itd.

• Alfrescov interni metamodel definira dodatne informacije o pohranjenom sadržaju. Metamodel se može po potrebi proširivati.

• Prilikom izvođenja metapodaci su pohranjeni unutar građevnih blokova kao što su node, node properties i asocijacije.

• Interna organizacija Alfresco metamodela zapravo predstavlja graf strukturu, no ona se ipak pohranjuje u relacijsku bazu

• Proširivanje metamodela radi se na statičkom ("type level") nivou. Definiranje metamodela nije moguće na nivou pojedinačnih instanci nodeova ili asocijacija. Drugim riječima, definicija metamodela određena je shemom, slično poput strukture tablica u relacijskim bazama.

• Proširivanje i redefinicija modela zahtijeva restart poslužitelja.

Page 3: Javantura Zagreb 2014 - Alfresco-Neo4j integracija - Damir Murat

Graph baze i property graph model - 1 • Graph baze podataka pohranjuju informacije u propertyje koji su smješteni

unutar nodeova i relacija (property graph model).

• Neo4j proširuje model dodavanjem neograničenog broja node labela

name: Some Cofounded: 1900

industry: IT

name: Marija name: Iva name: Josip

name: Luka name: Ana

Company

Person

Person

Person Person

Person

Employee

Employee

Employee

worksFor

role: d

eveloper

hired: 1

.1.2010

worksFor

role

: ad

min

istr

atio

n

hir

ed: 2

5.1

0.2

00

5

worksForrole: manager

hired: 17.5.2008

friendsince: 2000

friendsince: 2002

share: [books, movies]

worksWith

knows

Page 4: Javantura Zagreb 2014 - Alfresco-Neo4j integracija - Damir Murat

Graph baze i property graph model - 2 • Relacije povezuju nodeove i daju im dodatno značenje i organizaciju

• Nema unaprijed definirane sheme, pa se podaci na pojedinim nodeovima i relacijama istog logičkog tipa mogu razlikovati

• I relacije i nodeovi imaju svoje tipove. Pojedinačna relacija uvijek mora imati samo jedan tip, dok ih node može imati neograničen broj (labele)

• Prirodno (whiteboard friendly) modeliranje podataka. Značajno reduciranje ili potpuno uklanjanje tradicionalne strukturne neusklađenosti (impedance mismatch) između aplikativnog i podatkovnog modela

• Visoke performanse upita preko relacija

• Tipične primjene: društvene mreže, sustavi preporuka (recommendation engines), geolokacija, master data management, IT infrastructure management, security (ACL), CMS sustavi

• Generalna primjena: međusobno gusto povezani polustrukturirani podaci

Page 5: Javantura Zagreb 2014 - Alfresco-Neo4j integracija - Damir Murat

Neo4j • Java bazirana graph baza koja koristi prošireni property graph model

• ACID transakcije

• performanse: custom native graph storage engine

• skalabilnost: milijarde nodeova/relacija/propertyja

• visoka dostupnost kada se distribuira preko više računala

• lako korištenje: izvrsni i čitljivi deklarativni graph query jezik - Cypher (za CROZ, vjerojatno najvažniji pojedinačni kriterij odabira Neo4j graph baze)

• Embeddable

• REST sučelje

• Java API traversal framework

• 10 godina u produkciji

• Stalni razvoj i unapređivanje

• Komercijalna i besplatna podrška

Page 6: Javantura Zagreb 2014 - Alfresco-Neo4j integracija - Damir Murat

Alfresco/Neo4j - zašto, kako, ciljevi? • U CROZ-u je Alfresco strateška platforma za razvoj CMS aplikacija

• Alfrescov interni model (metamodel) konceptualno je sličan graph bazi

• Uspješna integracija omogućila bi izvođenje graph operacija povrh Alfresco metamodela što otvara nove mogućnosti i uklanja određena ograničenja

• Osnovna ideja nije zamijeniti Alfrescov mehanizam pohrane metapodataka, već dodati novi (graph) koji se sa originalom drži u sinkronizaciji

• Krajnji cilj jest mogućnost razvoja nove generacije Alfresco CMS aplikacija koje imaju veće i fleksibilnije mogućnosti, bolje performanse te su jednostavnije i brže za razvoj

• Neke nove funkcionalnosti uključuju:

• obogaćivanje Alfresco metapodataka novim ad-hoc informacijama

• dodavanje propertyja na relacije

• korištenje graph operacija i Cypher jezika za istraživanje Alfresco metapodataka

• vizualizacija podataka koja otkriva nove odnose i informacije

Page 7: Javantura Zagreb 2014 - Alfresco-Neo4j integracija - Damir Murat

POC – poslovna domena • Polazna točka je jedan od postojećih CROZ projekata baziranih na Ext JS,

Grails i Alfresco tehnologijama

• Osiguravateljska kuća, sa podružnicama, koja želi koristiti Alfresco za upravljanje dokumentacijom o štetama i policama

• Dokumentacija uključuje slike, dokumente u Office ili PDF formatu, skenirane dokumente i sl.

• Dokumentacija se klasificira prema prilagođenoj poslovnoj shemi

• Vizualizacija grafa bila je jedan od glavnih ciljeva POC-a, pri čemu ta vizualizacija ne bi smjela biti previše vezana uz odabranu poslovnu domenu, već bi se trebala moći primijeniti i na bilo koji drugi slučaj ili poslovnu domenu

Page 8: Javantura Zagreb 2014 - Alfresco-Neo4j integracija - Damir Murat

POC arhitektura

Page 9: Javantura Zagreb 2014 - Alfresco-Neo4j integracija - Damir Murat

Arhitektura – Ext JS / Grails

• Standardna polazna CROZ arhitektura ("platforma") za nove projekte

• Objedinjuje Ext JS i Grails u skladnu okolinu s osnovnim ciljem ubrzavanja i pojednostavljenja razvoja atraktivnih Rich Client Enterprise aplikacija

• Neke funkcionalnosti:

• Generator inicijalnih aplikacija

• Integrirani JavaScript DI kontejner, napredne validacije i forme, nove i unaprijeđene Ext JS komponente, klijentske notifikacije, pojednostavljeno upravljanje pogreškama …

• Generički modul za održavanje šifarnika i njihove povijesti

• Modul za skeniranje, višestruki upload

• Automatska XSS i CSRF zaštita, "Security aware" GUI

• …

Page 10: Javantura Zagreb 2014 - Alfresco-Neo4j integracija - Damir Murat

Arhitektura – Ext JS / Grails / Alfresco

• Proširenje standardne CROZ platforme kada su potrebne ECM funkcije

• Grails Alfresco proxy prosljeđuje klijentske zahtjeve namijenjene Alfrescu. Između ostalog, proxy osigurava sigurnost (Spring Security) i validaciju (Grails commands) zahtjeva.

• Koristi se role-based security uporabom Spring Security mehanizama. Pri tome Alfresco odrađuje autentikaciju korisnika čime se osigurava i ispravna autorizacija prilikom pristupa sadržaju.

• Na Grails strani, role-based security određuje prava za izvođenje pojedinih klijentskih zahtjeva.

• Alfresco MVC modul omogućava razvoj Alfresco funkcionalnosti primjenom Spring MVC koncepata poput kontrolera, servisa itd. umjesto uporabe kompliciranijeg i nespretnijeg Alfresco Web Scripts API-a

Page 11: Javantura Zagreb 2014 - Alfresco-Neo4j integracija - Damir Murat

POC arhitektura – Neo4j

• Real-time sync module odgovoran je za inicijalni import podataka u Neo4j te za održavanje Alfresca i Neo4j baze u real-time sinkronizaciji

• Real-time sinkronizacija koristi Alfresco behaviours mehanizam koji osluškuje promjene u Alfresco metapodacima te ih dojavljuje Neo4j bazi koristeći Spring Integration biblioteku i Neo4j REST API za postavljanje Cypher upita ili zahtjeva prema posebno razvijenim Neo4j ekstenzijama

• D3 graph komponenta je generička komponenta za vizualizaciju grafa, tj. rezultata izvođenja Neo4j Cypher upita. Temelji se na D3.js JavaScript biblioteci

Page 12: Javantura Zagreb 2014 - Alfresco-Neo4j integracija - Damir Murat

Alfresco/Neo4j integracijski modul

• Inicijalna import procedura izvodi se ako Neo4j ne sadrži Alfresco podatke (prilikom pokretanja Alfresca ili slanje HTTP zahtjeva na Neo4j). Za svaku Alfresco transakciju kreira se Spring Integration poruka koju procesira Neo4j Connector što rezultira slanjem REST zahtjeva u Neo4j

• Za održavanje sinkronizacije Alfresco i Neo4j baze, koristi se Alfresco behaviours mehanizam. Behaviours je grupa listenera koji se "okidaju" kod svake interne promjene podataka u Alfrescu. U tom trenutku ponovno se kreira Spring Integration poruka koja rezultira REST zahtjevom prema Neo4j bazi i konačnim ažuriranjem podataka u grafu

Page 13: Javantura Zagreb 2014 - Alfresco-Neo4j integracija - Damir Murat

D3 graph component

• Bazirana na D3.js JavaScript biblioteci

• Funkcionalnosti:

• Pan & zoom, node selection, hiding, filtering, properties, styling

• Node expand/collapse, partial node group expand

• Relationships type rendering

• Layouts: force, hierarchy, radial

• Graph analysis: degree in/out, closeness, betweenness

• Predefined queries

• …

Page 14: Javantura Zagreb 2014 - Alfresco-Neo4j integracija - Damir Murat

Demo

Page 15: Javantura Zagreb 2014 - Alfresco-Neo4j integracija - Damir Murat

POC - TODO • Poboljšanje detekcije potrebe za procedurom inicijalnog importa podataka

• Poboljšanje performansi inicijalnog importa i implementacija alternativnih mehanizama

• Sinkronizacija nakon što jedna od komponenti prestane s radom:

• Event bus + persistent queue or (No)SQL database

• Event sourcing + CQRS

• Dodatne vizualizacijske funkcionalnosti usmjerene prema većoj iskoristivosti od strane krajnjeg korisnika

• …

Page 16: Javantura Zagreb 2014 - Alfresco-Neo4j integracija - Damir Murat

Potencijalne primjene • Alternativni Alfresco Node browser

• "Poboljšanje" Alfresco meta podataka

• Vizualna analiza Alfresco meta podataka i interaktivno otkrivanje "skrivenih" informacija

• Interaktivni i personalizirani dashboard graf/tablični paneli

• Alternativne non-graph vizualizacije (za inspiraciju pogledajte http://d3js.org/)

• Napredni ACL

• Povezivanje Alfresco podataka sa drugim neovisnim izvorima podataka

• …

Page 17: Javantura Zagreb 2014 - Alfresco-Neo4j integracija - Damir Murat

Pitanja i odgovori Dodatne informacije i detalji:

www.croz.net/eng/alfresco-and-neo4j