Eugenio Linux Day2005

27
26/11/2005 – Eugenio Eugenio Prototipazione rapida di applicazioni tramite Plone

description

Presentazione tenuta al Linux Day 2005 di Ancona. Un esempio concreto di applicazione basata su Plone per la gestione collaborativa di informazioni strutturate

Transcript of Eugenio Linux Day2005

Page 1: Eugenio Linux Day2005

26/11/2005 – Eugenio 

Eugenio

Prototipazione rapida di applicazioni tramite Plone

Page 2: Eugenio Linux Day2005

26/11/2005 – Eugenio 

Cos'è Eugenio

● Eugenio è un sistema web di gestione e pubblicazione dati nell'ambito del progetto “didattica dell'Archivistica” 

● Il prof. Federico Valacchi e la dott. Paola Pizzichini hanno ideato e coordinano il progetto nel contesto del Dip. di Scienze storiche, artistiche, documentarie e del territorio dell'Università degli Studi di Macerata

Page 3: Eugenio Linux Day2005

26/11/2005 – Eugenio 

Progetto “didattica dell'Archivistica”

Promosso dalla cattedra di Archivistica dell'Università degli Studi di Macerata, ha come obiettivi:

● il monitoraggio complessivo dell'offerta formativa archivistica nelle università italiane nelle diverse soluzioni adottate nei singoli atenei in base all'autonomia conferita dalla riforma

● la valutazione dell'efficacia dell'offerta formativa in relazione alle nuove esigenze professionali e all'evoluzione della disciplina

Page 4: Eugenio Linux Day2005

26/11/2005 – Eugenio 

Esigenze del progetto

● Superare la scarsa visibilità della disciplina in ambito accademico attraverso uno strumento di consultazione e ricerca dedicato.

● Superare le difficoltà di accesso a dati altrimenti dispersi nei siti delle diverse università e non omogenei, fornendo un canale di consultazione unico attraverso un portale.

● Avere dei dati costantemente aggiornati  e controllati attraverso il diretto intervento dei docenti per l’inserimento e la modifica dei dati.

Page 5: Eugenio Linux Day2005

26/11/2005 – Eugenio 

Il punto di partenza di Eugenio

● Progetto “didattica dell'Archivistica”● analisi di base sintetizzata in una applicazione MS 

Access con schede per l'inserimento organico dei dati.

● le schede principali: docenti e discipline

Page 6: Eugenio Linux Day2005

26/11/2005 – Eugenio 

Obiettivi di Eugenio

● Navigazione più flessibile dei dati

● pubblicazione su web dei dati disponibili nel database  MS Access

● desiderabile: gestione web dei dati (gestione contenuti, workflow di pubblicazione)

(tutto questo in tempi stretti..)

Page 7: Eugenio Linux Day2005

26/11/2005 – Eugenio 

Strumenti

● Zope ­ application server

● SQLite ­ DB relazionale server­less

● Plone ­ content management system

● Archetypes ­ class generator

(tutti gli strumenti proposti sono open source e multi­piattaforma: libertà di scelta in fase di rilascio dell'applicazione)

Page 8: Eugenio Linux Day2005

26/11/2005 – Eugenio 

Cos'è Zope

● Application Server Open Source:– gestione permessi e sicurezza– gestione memorizzazione– gestione protocolli di comunicazione (http, ftp, xml­rpc, ...)

(collante naturale per costruire applicazioni web)

● non si basa su LAMP (Linux, Apache, MySQL, PHP)(per questo a volte può risultare ostico agli addetti ai lavori 

abituati a tale paradigma)

Page 9: Eugenio Linux Day2005

26/11/2005 – Eugenio 

Zope in nuce

● Zope significa Z­object Publishing Environment: gli oggetti sono alla base dell'approccio proposto da Zope

● Zope è scritto in Python (gira su Linux, Windows, Mac OS X, BSD, Solaris) e dispone di un web server e di un database a oggetti “proprietari”

Page 10: Eugenio Linux Day2005

26/11/2005 – Eugenio 

SQLite

● Dati estratti da DB Access e importati in DB SQLite per costruire velocemente navigazione e interfaccia web

● SQLite implementa un motore di database SQL tramite una piccola libreria C autoconsistente (può essere inglobata in applicazioni più vaste)

● SQLite non ha configurazioni “lato server” 

● SQLite, tra l'altro, implementa i DB in un singolo file e supporta le transazioni

Page 11: Eugenio Linux Day2005

26/11/2005 – Eugenio 

Interagire con SQLite

● Implementazione di un servizio python per estrarre dati dal DB relazionale e renderli disponibili in Zope

(Zope dispone del suo DB a oggetti, ma può facilmente pubblicare  dati memorizzati in database relazionali!)

● servizio capace di astrarre il modello a oggetti adottato (atenei, docenti, discipline, ..) sul DB relazionale (per svincolare l'interfaccia dalle “storture relazionali”)

(tenendo a mente l'obiettivo della gestione dati via web, sarà rapido il passaggio dal modello relazionale a quello a oggetti)

Page 12: Eugenio Linux Day2005

26/11/2005 – Eugenio 

Fase 1: prototipo su DB relazionale

Il prototipo basato sui dati disponibili ha permesso una rapida costruzione dell'interfaccia web, favorendo:

● accettazione della struttura dati adottata per la pubblicazione in base al progetto di ricerca iniziale

● accettazione dell'architettura informativa e dell'interfaccia di navigazione web

Page 13: Eugenio Linux Day2005

26/11/2005 – Eugenio 

Fase 1: architettura informativa

● Metafora dei punti di accesso: informazioni navigabili in modo esteso partendo da liste sintetiche compilate per tipo di oggetto (atenei, docenti, discipline)

● schede informative: ogni oggetto viene presentato attraverso una scheda che riporta le informazioni fornite ed i link verso le schede degli oggetti correlati

(es. da una scheda disciplina si risale con un click alla scheda del docente, per ottenere la sintesi di tutte le discipline a lui legate)

Page 14: Eugenio Linux Day2005

26/11/2005 – Eugenio 

Fase 1: verso un CMS

● Il sistema di pubblicazione web può essere alimentato dal software Access di raccolta dati, ma questo modello non può garantire coerenza e non­ridondanza dell'informazione

● l'obiettivo più ambizioso è inoltre quello di offrire direttamente su web lo strumento di raccolta dati agli interessati (lavorando così direttamente sui dati che saranno pubblicati)

Page 15: Eugenio Linux Day2005

26/11/2005 – Eugenio 

Cos'è Plone

● Plone nasce come skin per CMF, Content Management Framework: una raccolta di tool e servizi capace di dare struttura e semplificare la costruzione di CMS basati su Zope

● oggi costituisce un caso di successo nel mondo Zope ed è riconosciuto come uno dei CMS opensource più potenti e versatili in circolazione

(spesso fondamento di intranet e servizi informativi dipartimentali: implementazioni Plone molte valide non hanno visibilità pubblica)

Page 16: Eugenio Linux Day2005

26/11/2005 – Eugenio 

Perchè Plone

● L'avanzata tecnologia di base e la vivace comunità garantiscono un costante miglioramento del prodotto e lo sviluppo di numerose estensioni opensource

● il concetto di framework favorisce la vita degli sviluppatori che hanno necessità di verticalizzare le funzioni basiche

● l'interfaccia nativa è un ottimo punto di partenza per ottenere una presentazione accessibile dei dati

Page 17: Eugenio Linux Day2005

26/11/2005 – Eugenio 

Fase 2: prototipo su Z­Oggetti

● Prossimo obiettivo: editare direttamente via web i dati pubblicati tramite Zope

● gli oggetti informativi attualmente galleggiano tra i dati memorizzati nelle tabelle relazionali e le logiche racchiuse dall'interfaccia di presentazione

● uno Z­Object è un contenitore coerente di logica e dati,  capace di facilitare enormemente il compito degli sviluppatori nel garantire transazionalità delle attività e accesso secondo le logiche opportune

Page 18: Eugenio Linux Day2005

26/11/2005 – Eugenio 

Archetypes:costruire i propri oggetti informativi

● Plone garantisce molte caratteristiche necessarie ad un sistema web di gestione dati (sicurezza, profilazione utenti, workflow di pubblicazione, ricerca, interfaccia, ..)

● l'aspetto più sensibile soggetto a sviluppi ad hoc è dato dall'implementazione degli oggetti informativi 

(Plone non sa cosa siano atenei, docenti e discipline..)● Archetypes sopperisce a tale carenza offrendo un 

meccanismo di generazione classi basato su “schemi”

Page 19: Eugenio Linux Day2005

26/11/2005 – Eugenio 

Definire un oggetto Archetype

Archetypes permette di definire nei dettagli gli oggetti di cui abbiamo bisogno in maniera dichiarativa:

● lo sviluppatore dichiara uno schema, composto da elementi “field” (gli attributi dell'oggetto)

● ogni field ha una proprietà “widget” che definisce il suo comportamento  di interfaccia (visualizzazione, modifica, ricerca)

● la logica specifica dell'oggetto viene generata direttamente nei metodi della classe dell'oggetto

Page 20: Eugenio Linux Day2005

26/11/2005 – Eugenio 

Dichiarare o implementare?

Dichiarare uno schema significa astrarre dai meccanismi di funzionamento legati a quello schema:

● Archetypes gestisce la validazione, la memorizzazione, le logiche di sicurezza dichiarate sui nostri fields

● Archetypes costruisce automaticamente le interfacce standard di visualizzazione e modifica dei nostri oggetti sulla base dei widget dichiarati per ogni attributo

(nel nostro caso abbiamo velocemente adattato l'interfaccia già realizzata grazie all'approccio usato durante la fase 1 del progetto)

Page 21: Eugenio Linux Day2005

26/11/2005 – Eugenio 

Gerarchia degli oggetti principali

Atenei, docenti e discipline possono relazionarsi tra loro in modo molto libero

ateneo 1 ateneo 2

docente 1 docente 2 docente 3

disciplina 1 disciplina 3disciplina 2

Page 22: Eugenio Linux Day2005

26/11/2005 – Eugenio 

References: relazioni tra oggetti

● Sebbene non si disponga dei classici meccanismi dei DB relazionali, Archetypes implementa le relazioni tra oggetti utilizzando i loro id univoci 

(questo è preferibile rispetto a relazioni di tipo posizionale: le relazioni continuano a funzionare anche se si sposta l'oggetto referenziato) 

● Archetypes permette di definire vincoli sui tipi di oggetto ammessi dalla relazione, sulla sua numerosità, etc.

Page 23: Eugenio Linux Day2005

26/11/2005 – Eugenio 

Gerarchia degli oggetti disciplina

Ogni disciplina può essere suddivisa in vari moduli e vivere in diversi contesti didattici

ateneo 1 ateneo 2

docente 1 docente 2

modulo 2modulo 1

contesto 1 contesto 2 contesto 3

disciplina 1

Page 24: Eugenio Linux Day2005

26/11/2005 – Eugenio 

Contenimento: oggetti folderish

● L'oggetto disciplina può contenere oggetti modulo e contesto didattico, semplicemente dichiarandolo come “folderish” (cioè capace di contenere oggetti)

● gli oggetti modulo possono presentare relazioni con uno o più dei contesti della disciplina (solo quelli della disciplina!), inoltre possono relazionarsi con oggetti docente (esterni alla disciplina)

Page 25: Eugenio Linux Day2005

26/11/2005 – Eugenio 

Fase 2: interfacce di ricerca

● Gli sviluppatori possono dichiarare quali fields dello schema Archetypes sono ricercabili e in che modo

● Archetypes offre meccanismi per implementare automaticamente le interfacce di ricerca legate agli specifici tipi di oggetti(l'interfaccia di ricerca specializzata per le discipline presenta campi 

diversi rispetto a quella relativa ai docenti)

Page 26: Eugenio Linux Day2005

26/11/2005 – Eugenio 

Fase 3: verso la collaborazione

● Ogni contributore di Eugenio dispone della sua area in cui creare gli oggetti di cui ha bisogno

● dopo aver completato l'inserimento dati, questi non sono ancora visibili agli altri utenti: ne deve richiedere la pubblicazione

● il manager può approvare la richiesta di pubblicazione, ovvero può respingerla, motivando la sua decisione all'autore

(i contenuti pubblicati sono immediatamente disponibili a tutti gli utenti)

Page 27: Eugenio Linux Day2005

26/11/2005 – Eugenio 

Grazie per l'attenzione!

Eugenio è consultabile all'indirizzo:● http://eugenio.unimc.it

    Maurizio Delmonte  [email protected]

    Zope Italia  www.zope.it