SlideShare a Scribd company logo
1 of 17
Download to read offline
Alfresco – Neo4j integracija
Nova vrsta CMS aplikacija
Damir Murat
IT Arhitekt, CROZ
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.
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
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
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
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
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
POC arhitektura
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
• …
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
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
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
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
• …
Demo
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
• …
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
• …
Pitanja i odgovori
Dodatne informacije i detalji:
www.croz.net/eng/alfresco-and-neo4j

More Related Content

What's hot

Vert.x - asinkroni skalabilni i poliglotni framework nove generacije
Vert.x - asinkroni skalabilni i poliglotni framework nove generacijeVert.x - asinkroni skalabilni i poliglotni framework nove generacije
Vert.x - asinkroni skalabilni i poliglotni framework nove generacijeMihovil Rister
 
JavaCro14: Pakiranje i instalacija JEE rješenja
JavaCro14: Pakiranje i instalacija JEE rješenjaJavaCro14: Pakiranje i instalacija JEE rješenja
JavaCro14: Pakiranje i instalacija JEE rješenjaMiroslav Resetar
 

What's hot (9)

JavaCro'15 - API as a new architecture - Miroslav Rešetar
JavaCro'15 - API as a new architecture - Miroslav RešetarJavaCro'15 - API as a new architecture - Miroslav Rešetar
JavaCro'15 - API as a new architecture - Miroslav Rešetar
 
JavaCro'15 - Enterprise service bus - Juraj Ćutić
JavaCro'15 - Enterprise service bus - Juraj ĆutićJavaCro'15 - Enterprise service bus - Juraj Ćutić
JavaCro'15 - Enterprise service bus - Juraj Ćutić
 
HUJAK skupština 2014
HUJAK skupština 2014HUJAK skupština 2014
HUJAK skupština 2014
 
Vert.x - asinkroni skalabilni i poliglotni framework nove generacije
Vert.x - asinkroni skalabilni i poliglotni framework nove generacijeVert.x - asinkroni skalabilni i poliglotni framework nove generacije
Vert.x - asinkroni skalabilni i poliglotni framework nove generacije
 
JavaCro'14 - JavaScript single-page applications i JEE, can they fit together...
JavaCro'14 - JavaScript single-page applications i JEE, can they fit together...JavaCro'14 - JavaScript single-page applications i JEE, can they fit together...
JavaCro'14 - JavaScript single-page applications i JEE, can they fit together...
 
JavaCro'15 - Java parallelization - Zlatko Sirotić
JavaCro'15 - Java parallelization - Zlatko SirotićJavaCro'15 - Java parallelization - Zlatko Sirotić
JavaCro'15 - Java parallelization - Zlatko Sirotić
 
JavaCro14: Pakiranje i instalacija JEE rješenja
JavaCro14: Pakiranje i instalacija JEE rješenjaJavaCro14: Pakiranje i instalacija JEE rješenja
JavaCro14: Pakiranje i instalacija JEE rješenja
 
JavaCro'14 - Auditing of user activity through NoSQL database – Kristijan Duv...
JavaCro'14 - Auditing of user activity through NoSQL database – Kristijan Duv...JavaCro'14 - Auditing of user activity through NoSQL database – Kristijan Duv...
JavaCro'14 - Auditing of user activity through NoSQL database – Kristijan Duv...
 
JavaCro'15 - BOOTylicious Spring - Karlo Novak
JavaCro'15 - BOOTylicious Spring - Karlo NovakJavaCro'15 - BOOTylicious Spring - Karlo Novak
JavaCro'15 - BOOTylicious Spring - Karlo Novak
 

Viewers also liked (8)

Javantura Zagreb 2014 - Sencha Touch - Denis Jajčević
Javantura Zagreb 2014 - Sencha Touch - Denis JajčevićJavantura Zagreb 2014 - Sencha Touch - Denis Jajčević
Javantura Zagreb 2014 - Sencha Touch - Denis Jajčević
 
Javantura Zagreb 2014 - Google Dart - Željko Kunica
Javantura Zagreb 2014 - Google Dart - Željko KunicaJavantura Zagreb 2014 - Google Dart - Željko Kunica
Javantura Zagreb 2014 - Google Dart - Željko Kunica
 
Javantura Zagreb 2014 - WildFly 8 - Tomaž Cerar
Javantura Zagreb 2014 - WildFly 8 - Tomaž CerarJavantura Zagreb 2014 - WildFly 8 - Tomaž Cerar
Javantura Zagreb 2014 - WildFly 8 - Tomaž Cerar
 
Javantura Zagreb 2014 - universAAL - Andrej Grgurić
Javantura Zagreb 2014 - universAAL - Andrej GrgurićJavantura Zagreb 2014 - universAAL - Andrej Grgurić
Javantura Zagreb 2014 - universAAL - Andrej Grgurić
 
Javantura Zagreb 2014 - Groovy-SQL - Dinko Srkoč
Javantura Zagreb 2014 - Groovy-SQL - Dinko SrkočJavantura Zagreb 2014 - Groovy-SQL - Dinko Srkoč
Javantura Zagreb 2014 - Groovy-SQL - Dinko Srkoč
 
Javantura Zagreb 2014 - Nashorn - Miroslav Rešetar
Javantura Zagreb 2014 - Nashorn - Miroslav RešetarJavantura Zagreb 2014 - Nashorn - Miroslav Rešetar
Javantura Zagreb 2014 - Nashorn - Miroslav Rešetar
 
Javantura Zagreb 2014 - Vaadin - Peter Lehto
Javantura Zagreb 2014 - Vaadin - Peter LehtoJavantura Zagreb 2014 - Vaadin - Peter Lehto
Javantura Zagreb 2014 - Vaadin - Peter Lehto
 
Nemanja Čedomirović - PHP Srbija
Nemanja Čedomirović - PHP SrbijaNemanja Čedomirović - PHP Srbija
Nemanja Čedomirović - PHP Srbija
 

Similar to Javantura Zagreb 2014 - Alfresco-Neo4j integracija - Damir Murat

Microsoft WinDays16 Technology Dynamics AX 7 Cloud ERP.PPTX
Microsoft WinDays16 Technology Dynamics AX 7 Cloud ERP.PPTXMicrosoft WinDays16 Technology Dynamics AX 7 Cloud ERP.PPTX
Microsoft WinDays16 Technology Dynamics AX 7 Cloud ERP.PPTXIvan Kaselj
 
Microsoft WinDays16 Technology Dynamics AX 7 Cloud ERP.PPTX
Microsoft WinDays16 Technology Dynamics AX 7 Cloud ERP.PPTXMicrosoft WinDays16 Technology Dynamics AX 7 Cloud ERP.PPTX
Microsoft WinDays16 Technology Dynamics AX 7 Cloud ERP.PPTXAndrej Ko?i?
 
Oracle information age co croz-neos v2.2.
Oracle information age co croz-neos v2.2.Oracle information age co croz-neos v2.2.
Oracle information age co croz-neos v2.2.Oracle Hrvatska
 
Zašto nam treba PaaS u Srcu?
Zašto nam treba PaaS u Srcu?Zašto nam treba PaaS u Srcu?
Zašto nam treba PaaS u Srcu?Denis Kranjčec
 
White paper - Migracija IT rješenja u Cloud Hrvatskog Telekoma
White paper - Migracija IT rješenja u Cloud Hrvatskog TelekomaWhite paper - Migracija IT rješenja u Cloud Hrvatskog Telekoma
White paper - Migracija IT rješenja u Cloud Hrvatskog TelekomaHrvatski Telekom
 
Vert.x - Mihovil Rister, Javantura
Vert.x - Mihovil Rister, JavanturaVert.x - Mihovil Rister, Javantura
Vert.x - Mihovil Rister, JavanturaFive
 
Hp ra za oracle grid final.
Hp ra za oracle grid   final.Hp ra za oracle grid   final.
Hp ra za oracle grid final.Oracle Hrvatska
 
Mean Stack JavaCro 2014
Mean Stack JavaCro 2014Mean Stack JavaCro 2014
Mean Stack JavaCro 2014Nenad Pecanac
 
Osb studija slucaja sgsb-a.ppt [compatibility m
Osb studija slucaja sgsb-a.ppt [compatibility mOsb studija slucaja sgsb-a.ppt [compatibility m
Osb studija slucaja sgsb-a.ppt [compatibility mOracle Hrvatska
 
MSNetwork 4 - Enterprise funkcionalnosti u malim tvrtkama sa Office 365
MSNetwork 4 - Enterprise funkcionalnosti u malim tvrtkama sa Office 365MSNetwork 4 - Enterprise funkcionalnosti u malim tvrtkama sa Office 365
MSNetwork 4 - Enterprise funkcionalnosti u malim tvrtkama sa Office 365Tomislav Lulic
 
Data WareHose
Data WareHoseData WareHose
Data WareHoseKruno Ris
 
eZ Publish intro
eZ Publish introeZ Publish intro
eZ Publish introivrdoljak
 
Mihovil Rister nerelacijaka sadašnjost, budućnost i primjene rev 1.4
Mihovil Rister  nerelacijaka sadašnjost, budućnost i primjene rev 1.4Mihovil Rister  nerelacijaka sadašnjost, budućnost i primjene rev 1.4
Mihovil Rister nerelacijaka sadašnjost, budućnost i primjene rev 1.4Mihovil Rister
 
Mob Ellposs - projektna dokumentacija
Mob Ellposs - projektna dokumentacijaMob Ellposs - projektna dokumentacija
Mob Ellposs - projektna dokumentacijaSlaven Brumec
 
Kako izvuci (naj)vise iz vaseg share pointa 2013
Kako izvuci (naj)vise iz vaseg share pointa 2013Kako izvuci (naj)vise iz vaseg share pointa 2013
Kako izvuci (naj)vise iz vaseg share pointa 2013Matija Blagus
 
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 9.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 9. [TVZ računarstvo] Dinamičke web aplikacije, predavanje 9.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 9. Stipe Predanic
 
GraphQL & Laravel - Efikasni API servisi
GraphQL & Laravel - Efikasni API servisiGraphQL & Laravel - Efikasni API servisi
GraphQL & Laravel - Efikasni API servisiPedja Jevtic
 

Similar to Javantura Zagreb 2014 - Alfresco-Neo4j integracija - Damir Murat (20)

Microsoft WinDays16 Technology Dynamics AX 7 Cloud ERP.PPTX
Microsoft WinDays16 Technology Dynamics AX 7 Cloud ERP.PPTXMicrosoft WinDays16 Technology Dynamics AX 7 Cloud ERP.PPTX
Microsoft WinDays16 Technology Dynamics AX 7 Cloud ERP.PPTX
 
Microsoft WinDays16 Technology Dynamics AX 7 Cloud ERP.PPTX
Microsoft WinDays16 Technology Dynamics AX 7 Cloud ERP.PPTXMicrosoft WinDays16 Technology Dynamics AX 7 Cloud ERP.PPTX
Microsoft WinDays16 Technology Dynamics AX 7 Cloud ERP.PPTX
 
Oracle information age co croz-neos v2.2.
Oracle information age co croz-neos v2.2.Oracle information age co croz-neos v2.2.
Oracle information age co croz-neos v2.2.
 
Zašto nam treba PaaS u Srcu?
Zašto nam treba PaaS u Srcu?Zašto nam treba PaaS u Srcu?
Zašto nam treba PaaS u Srcu?
 
White paper - Migracija IT rješenja u Cloud Hrvatskog Telekoma
White paper - Migracija IT rješenja u Cloud Hrvatskog TelekomaWhite paper - Migracija IT rješenja u Cloud Hrvatskog Telekoma
White paper - Migracija IT rješenja u Cloud Hrvatskog Telekoma
 
Vert.x - Mihovil Rister, Javantura
Vert.x - Mihovil Rister, JavanturaVert.x - Mihovil Rister, Javantura
Vert.x - Mihovil Rister, Javantura
 
Hp ra za oracle grid final.
Hp ra za oracle grid   final.Hp ra za oracle grid   final.
Hp ra za oracle grid final.
 
Mean Stack JavaCro 2014
Mean Stack JavaCro 2014Mean Stack JavaCro 2014
Mean Stack JavaCro 2014
 
Osb studija slucaja sgsb-a.ppt [compatibility m
Osb studija slucaja sgsb-a.ppt [compatibility mOsb studija slucaja sgsb-a.ppt [compatibility m
Osb studija slucaja sgsb-a.ppt [compatibility m
 
MSNetwork 4 - Enterprise funkcionalnosti u malim tvrtkama sa Office 365
MSNetwork 4 - Enterprise funkcionalnosti u malim tvrtkama sa Office 365MSNetwork 4 - Enterprise funkcionalnosti u malim tvrtkama sa Office 365
MSNetwork 4 - Enterprise funkcionalnosti u malim tvrtkama sa Office 365
 
RSII_P6_2017_18.pdf
RSII_P6_2017_18.pdfRSII_P6_2017_18.pdf
RSII_P6_2017_18.pdf
 
Data WareHose
Data WareHoseData WareHose
Data WareHose
 
eZ Publish intro
eZ Publish introeZ Publish intro
eZ Publish intro
 
eZ publish intro
eZ publish introeZ publish intro
eZ publish intro
 
Mihovil Rister nerelacijaka sadašnjost, budućnost i primjene rev 1.4
Mihovil Rister  nerelacijaka sadašnjost, budućnost i primjene rev 1.4Mihovil Rister  nerelacijaka sadašnjost, budućnost i primjene rev 1.4
Mihovil Rister nerelacijaka sadašnjost, budućnost i primjene rev 1.4
 
SQL Azure
SQL AzureSQL Azure
SQL Azure
 
Mob Ellposs - projektna dokumentacija
Mob Ellposs - projektna dokumentacijaMob Ellposs - projektna dokumentacija
Mob Ellposs - projektna dokumentacija
 
Kako izvuci (naj)vise iz vaseg share pointa 2013
Kako izvuci (naj)vise iz vaseg share pointa 2013Kako izvuci (naj)vise iz vaseg share pointa 2013
Kako izvuci (naj)vise iz vaseg share pointa 2013
 
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 9.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 9. [TVZ računarstvo] Dinamičke web aplikacije, predavanje 9.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 9.
 
GraphQL & Laravel - Efikasni API servisi
GraphQL & Laravel - Efikasni API servisiGraphQL & Laravel - Efikasni API servisi
GraphQL & Laravel - Efikasni API servisi
 

More from HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association

More from HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association (20)

Java cro'21 the best tools for java developers in 2021 - hujak
Java cro'21   the best tools for java developers in 2021 - hujakJava cro'21   the best tools for java developers in 2021 - hujak
Java cro'21 the best tools for java developers in 2021 - hujak
 
JavaCro'21 - Java is Here To Stay - HUJAK Keynote
JavaCro'21 - Java is Here To Stay - HUJAK KeynoteJavaCro'21 - Java is Here To Stay - HUJAK Keynote
JavaCro'21 - Java is Here To Stay - HUJAK Keynote
 
Javantura v7 - Behaviour Driven Development with Cucumber - Ivan Lozić
Javantura v7 - Behaviour Driven Development with Cucumber - Ivan LozićJavantura v7 - Behaviour Driven Development with Cucumber - Ivan Lozić
Javantura v7 - Behaviour Driven Development with Cucumber - Ivan Lozić
 
Javantura v7 - The State of Java - Today and Tomowwow - HUJAK's Community Key...
Javantura v7 - The State of Java - Today and Tomowwow - HUJAK's Community Key...Javantura v7 - The State of Java - Today and Tomowwow - HUJAK's Community Key...
Javantura v7 - The State of Java - Today and Tomowwow - HUJAK's Community Key...
 
Javantura v7 - Learning to Scale Yourself: The Journey from Coder to Leader -...
Javantura v7 - Learning to Scale Yourself: The Journey from Coder to Leader -...Javantura v7 - Learning to Scale Yourself: The Journey from Coder to Leader -...
Javantura v7 - Learning to Scale Yourself: The Journey from Coder to Leader -...
 
JavaCro'19 - The State of Java and Software Development in Croatia - Communit...
JavaCro'19 - The State of Java and Software Development in Croatia - Communit...JavaCro'19 - The State of Java and Software Development in Croatia - Communit...
JavaCro'19 - The State of Java and Software Development in Croatia - Communit...
 
Javantura v6 - Java in Croatia and HUJAK - Branko Mihaljević, Aleksander Radovan
Javantura v6 - Java in Croatia and HUJAK - Branko Mihaljević, Aleksander RadovanJavantura v6 - Java in Croatia and HUJAK - Branko Mihaljević, Aleksander Radovan
Javantura v6 - Java in Croatia and HUJAK - Branko Mihaljević, Aleksander Radovan
 
Javantura v6 - On the Aspects of Polyglot Programming and Memory Management i...
Javantura v6 - On the Aspects of Polyglot Programming and Memory Management i...Javantura v6 - On the Aspects of Polyglot Programming and Memory Management i...
Javantura v6 - On the Aspects of Polyglot Programming and Memory Management i...
 
Javantura v6 - Case Study: Marketplace App with Java and Hyperledger Fabric -...
Javantura v6 - Case Study: Marketplace App with Java and Hyperledger Fabric -...Javantura v6 - Case Study: Marketplace App with Java and Hyperledger Fabric -...
Javantura v6 - Case Study: Marketplace App with Java and Hyperledger Fabric -...
 
Javantura v6 - How to help customers report bugs accurately - Miroslav Čerkez...
Javantura v6 - How to help customers report bugs accurately - Miroslav Čerkez...Javantura v6 - How to help customers report bugs accurately - Miroslav Čerkez...
Javantura v6 - How to help customers report bugs accurately - Miroslav Čerkez...
 
Javantura v6 - When remote work really works - the secrets behind successful ...
Javantura v6 - When remote work really works - the secrets behind successful ...Javantura v6 - When remote work really works - the secrets behind successful ...
Javantura v6 - When remote work really works - the secrets behind successful ...
 
Javantura v6 - Kotlin-Java Interop - Matej Vidaković
Javantura v6 - Kotlin-Java Interop - Matej VidakovićJavantura v6 - Kotlin-Java Interop - Matej Vidaković
Javantura v6 - Kotlin-Java Interop - Matej Vidaković
 
Javantura v6 - Spring HATEOAS hypermedia-driven web services, and clients tha...
Javantura v6 - Spring HATEOAS hypermedia-driven web services, and clients tha...Javantura v6 - Spring HATEOAS hypermedia-driven web services, and clients tha...
Javantura v6 - Spring HATEOAS hypermedia-driven web services, and clients tha...
 
Javantura v6 - End to End Continuous Delivery of Microservices for Kubernetes...
Javantura v6 - End to End Continuous Delivery of Microservices for Kubernetes...Javantura v6 - End to End Continuous Delivery of Microservices for Kubernetes...
Javantura v6 - End to End Continuous Delivery of Microservices for Kubernetes...
 
Javantura v6 - Istio Service Mesh - The magic between your microservices - Ma...
Javantura v6 - Istio Service Mesh - The magic between your microservices - Ma...Javantura v6 - Istio Service Mesh - The magic between your microservices - Ma...
Javantura v6 - Istio Service Mesh - The magic between your microservices - Ma...
 
Javantura v6 - How can you improve the quality of your application - Ioannis ...
Javantura v6 - How can you improve the quality of your application - Ioannis ...Javantura v6 - How can you improve the quality of your application - Ioannis ...
Javantura v6 - How can you improve the quality of your application - Ioannis ...
 
Javantura v6 - Just say it v2 - Pavao Varela Petrac
Javantura v6 - Just say it v2 - Pavao Varela PetracJavantura v6 - Just say it v2 - Pavao Varela Petrac
Javantura v6 - Just say it v2 - Pavao Varela Petrac
 
Javantura v6 - Automation of web apps testing - Hrvoje Ruhek
Javantura v6 - Automation of web apps testing - Hrvoje RuhekJavantura v6 - Automation of web apps testing - Hrvoje Ruhek
Javantura v6 - Automation of web apps testing - Hrvoje Ruhek
 
Javantura v6 - Master the Concepts Behind the Java 10 Challenges and Eliminat...
Javantura v6 - Master the Concepts Behind the Java 10 Challenges and Eliminat...Javantura v6 - Master the Concepts Behind the Java 10 Challenges and Eliminat...
Javantura v6 - Master the Concepts Behind the Java 10 Challenges and Eliminat...
 
Javantura v6 - Building IoT Middleware with Microservices - Mario Kusek
Javantura v6 - Building IoT Middleware with Microservices - Mario KusekJavantura v6 - Building IoT Middleware with Microservices - Mario Kusek
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
  • 13. 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 • …
  • 14. Demo
  • 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 • …
  • 17. Pitanja i odgovori Dodatne informacije i detalji: www.croz.net/eng/alfresco-and-neo4j