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.
Javantura v6 - Building IoT Middleware with Microservices - Mario Kusek
Javantura Zagreb 2014 - Alfresco-Neo4j integracija - Damir Murat
1. Alfresco – Neo4j integracija
Nova vrsta CMS aplikacija
Damir Murat
IT Arhitekt, CROZ
2. 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.
3. 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
Company
name: Some Co
founded: 1900
wo
industry: IT
r
Fo er
rks velop 10
0
wo e
rol rk
hir e: m sFo
r
a
ed
: 1 nage
7. 5
r
.20
08
sin
hired: 25.10.2005
worksFor
name: Marija
Person
Employee
role: administration
d 1.2
.
le:
ro d: 1
ire
h
name: Iva
Person
Employee
fri
en
d
ce
:
20
00
w
W
ks
or
ith
name: Luka
Person
Employee
knows
friend
since: 2002
share: [books, movies]
name: Ana
Person
name: Josip
Person
4. 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
5. 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
6. 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
7. 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
9. 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
• …
10. 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
11. 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
12. 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
15. 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
• …
16. 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
• …