Modello (VisusScript)

 

La realizzazione dell’applicazione avviene attraverso la definizione di un modello astratto che un interprete (il nucleo di Visus) esegue in tempo reale.
VisusScript e’ il linguaggio (il DSL) per la definizione di questo modello.
Il formato utilizzato per rappresentare VisusScript è l’XML.
Lo stile utilizzato per l’XML fa largo uso di attributi anzichè utilizzare più correttamente gli elementi: è una scelta voluta per agevolare una scrittura maggiormente contratta e leggibile.

Diversamente dai linguaggi di sviluppo tradizionali la ‘scrittura’ dell’applicazione non è di tipo procedurale ma essenzialmente dichiarativa: non si implementano procedure ma si forniscono informazioni (meta-informazioni) relative ai dati e ai processi da informatizzare.
Questa metodologia consente di lavorare ad un livello di astrazione superiore distogliendo l’attenzione dagli innumerevoli dettagli e problemi della programmazione e delle tecnologie, concentrandosi sugli aspetti applicativi, vero oggetto dell’attività di sviluppo.

Tutto ciò che viene dichiarato nel modello è rilevante e può costituire anche la documentazione tecnica (specifica) dell’applicazione.
Anche chi non ha specifiche competenze tecniche comprendere immediatamente la struttura e il funzionamento dell’applicazione e può facilmente apportare correzioni, miglioramenti e integrazioni.

Il modello è costituito da una struttura composta di elementi che ne racchiudono altri.
Gli elementi rappresentano le informazioni e i processi, cioè la “sostanza” dell’applicazione.
Le relazioni tra i vari elementi sono definite ed espresse attraverso il contenimento di un elemento (figlio o Child) in un altro (padre o Parent) gerarchicamente superiore.
Ogni elemento ha una serie di attributi, alcuni comuni a tutti, altri specifici per la sua tipologia.

Gli elementi base per la definizione del modello sono:

  • Frame: definiscono la struttura e le sezioni dell’applicazione;
  • DataSet: definiscono le informazioni e le loro relazioni;
  • Action: definiscono i processi e le operazioni sulle informazioni;

I DataSet, definendo i dati, rappresentano l’elemento centrale dell’applicazione; possono essere di vario tipo, a seconda della forma e della provenienza dei dati stessi.
I principali sono:

  • jdbc: tabelle di database;
  • Domino: database IBM Lotus Domino;
  • XML: flussi XML;
  • Text: flussi di testo;
  • Html: pagine html;
  • Image: immagini;
  • Directory: file-system;

Relativamente ai DataSet di tipo tabellare (tabelle di database, flussi XML) esistono altri tre elementi:

  • Field: definiscono i campi (colonne) della tabella;
  • View: definiscono sottoinsiemi di record (righe) e campi (colonne) che soddisfano specifici criteri;
  • Block: definiscono insiemi di campi (colonne) raggruppati per essere trattati in blocco;

Esistono inoltre:

  • Variables: sono semplicemente un modo per dare maggiore ordine al modello evitando le ripetizioni (ad es. per definire parametri applicativi comuni);
  • Settings: sono le ‘leve’ attraverso le quali si governa il modo in cui viene ‘prodotta’ l’applicazione e se ne modifica il comportamento predefinito.
    In generale la loro variazione non ha effetto sulla logica applicativa ma solo sull’interfaccia.

Per rendere la scrittura semplice e flessibile sono implementati tre meccanismi:

  • Ereditarietà: le impostazioni definite ad un livello (da un punto di vista gerarchico) sono ereditate da tutti gli elementi sottostanti;
  • Predefinizione: sono richieste solo le informazioni strettamente necessarie, tutte le altre sono opzionali avendo un valore di default o ereditato.
    Questa caratteristica permette all’applicazione di funzionare comunque e immediatamente: in un secondo tempo e solo se necessario si varieranno gli opportuni valori al fine di ottenere un risultato maggiormente soddisfacente.
    Tecnicamente risponde al principio ‘Convention over configuration’ che è una delle chiavi dei sistemi di sviluppo rapido.
  • Derivazione: gli elementi simili, anziché essere ridefiniti, possono essere derivati ed eventualmente adattati per differenza, evitando ridondanze;

Come precedentemente detto nel modello vengono definiti aspetti riguardanti la “sostanza” dell’applicazione; nulla viene detto riguardo la sua “forma”, cioè l’aspetto che avrà sul dispositivo utilizzato dall’utente finale per accedervi.
Nel caso di applicazioni per client Web tali elementi sono forniti attraverso i CSS (fogli stile).