Jasmine: istruzioni per l'uso di Michela Portesani - Open Team (Milano) La tecnologia dei database object oriented è particolarmente adatta per la gestione di strutture di dati complesse e di grandi quantità di dati necessaria per le attuali applicazioni multimediali. A differenza dei BLOB (Binary Large Objects) non strutturati che venivano aggiunti indiscriminatamente ai database relazionali, un sistema ad oggetti riconosce la struttura intrinseca degli oggetti di grandi dimensioni quali video, immagini e audio, e offre funzioni per l'analisi e l'elaborazione dei dati. L’importanza dell’essere object-oriented è chiara: quanto gli oggetti possono essere realizzati un'unica volta e riutilizzati nel tempo, consentendo così la rapida creazione e distribuzione di applicazioni altamente flessibili e sempre più sofisticate. Jasmine è un database di tipo object oriented e come tale è dotato di tutte le funzionalità previste nella programmazione object oriented: ereditarietà multipla, proprietà di istanza e di classe, metodi di istanza e di classe. I metodi vengono definiti in un linguaggio object oriented con sintassi nativa per l'elaborazione degli oggetti del database e la ricerca nei database. Questo elimina qualsiasi barriera tra la programmazione e il database: i metodi infatti operano all'interno del database stesso. Jasmine supporta i metodi scritti in C o C++ e in Java sfruttando il know-how preesistente e consentendo il riutilizzo della logica esistente. Jasmine fornisce il supporto integrale ad altri database, compresi sistemi relazionali quali CA-OpenIngres, Oracle, Sybase, Informix e SQLServer, oltre a database per mainframe come CA-IDMS, CADatacom e DB2. Presentando i dati sotto forma di oggetti, tale integrazione consente ai metodi degli oggetti Jasmine di correlarsi in modo semplice e diretto ai dati utilizzati nelle applicazioni aziendali preesistenti, garantendo così la possibilità di utilizzare le nuove applicazioni senza dover reingegnerizzare l'intero sistema informativo aziendale. La classe SQL di Jasmine verrà trattata, come sopra accennato, in uno dei prossimi articoli. Jasmine rappresenta una soluzione adatta per sviluppatori che necessitino di creare le applicazioni riutilizzabili facilmente via Internet e Intranet. Le applicazioni sviluppate con Jasmine sono accessibili da qualsiasi punto grazie ad un ambiente run-time multi-piattaforma su World Wide Web Il server è disponibile per UNIX e Windows NT, mentre l'ambiente di sviluppo è disponibile sia in Windows 95 che in Windows NT.
L’installazione del prodotto Gli sviluppatori possono ottenere una copia gratuita del database e dell'ambiente di amministrazione e sviluppo in modo da poterlo testare prima di deciderne l'acquisto (http://www.cai.com/registration/cd_jasmine.htm). Questo CD permette di sviluppare robuste applicazioni multimediali immediatamente. Contiene inoltre applicazioni di esempio che dimostrano la potenza e le vaste possibilità di Jasmine. L’evaluation copy consente solo la connessione in locale al db. I requisiti di sistema per installare Jasmine sono: PC multimediale con un processore
Pentium. 32 MB RAM (64 MB raccomandati). 200 MB di spazio su disco (300 MB raccomandati).
Microsoft Windows NT 4.0. Per procedere all’installazione, infine, occorre avere diritti di amministratore (o almeno: "act as operating system", "logon as batch job", "logon as service"). Il setup wizard guida ad una installazione completamente automatica di tutti i componenti di Jasmine. Terminata l’installazione, sul desktop appaiono le icone "Jasmine startup" e "Jasmine Studio". Lanciando Jasmine startup appare la finestra:
A questo punto cliccare su "Start" e, quando appare il messaggio "Jasmine is running", iconizzare (non chiudere!!) la finestra. È necessario ora stabilire una connessione; questo si può fare lanciando Jasmine studio o utilizzando l’utility Jasmine Connections Utility run CONNMAN.EXE:
Utilizzando il bottone "New Connection" appare la finestra: dove, in particolare, il "Liste Address" in Windows NT è S1.
L'ambiente di sviluppo applicativo L’argomento principale di questo articolo è Jasmine Studio che fornisce un ambiente di authoring e sviluppo applicativo intuitivo e completamente multimediale. Sono in esso contenuti strumenti per progettare e creare, in modo estremamente rapido, sofisticate applicazioni multimediali. L'ambiente di sviluppo è utilizzabile su workstation Windows (Windows 95 o Windows NT). Se utilizzate il CD di valutazione, potete usarlo solo su NT in quanto l’evaluation copy consente solo la connessione al db in locale. Il sistema offre strumenti per il browsing e l'editing delle classi (Class Browser e Class Property Inspector) e degli oggetti (Object Property Inspector) del database, la generazione di query (Query Editor), la gestione delle applicazioni (Application Manager) e un Canvas per la creazione e l’editing delle scene che compongono le applicazioni). Il Class Browser definisce, modifica e rappresenta graficamente tutte le classi nel database, nonché le relative ereditarietà, proprietà e metodi. L’editor dei metodi definisce i programmi che appartengono ad una classe e vengono eseguiti sul server. I metodi sono caratterizzati da un ricco linguaggio di programmazione object oriented che fornisce tutte le funzionalità richieste in un moderno sistema di sviluppo, come la possibilità di navigare in raccolte di oggetti. L'Object Property Inspector controlla, definisce e modifica gli oggetti nel database. Tutte le proprietà di un oggetto, compresi i riferimenti agli altri oggetti, vengono visualizzate; in particolare, gli oggetti multimediali vengono rappresentati graficamente. L'Object Browser di Jasmine semplifica il compito di memorizzare complesse risorse multimediali mediante la sua interfaccia drag-and-drop. Il sistema di authoring applicativo multimediale di Jasmine Studio è completamente visuale: all'interno di un'applicazione è possibile creare scene (videate dell'applicazione stessa) disponendo oggetti multimediali attraverso la tecnica del drag-and-drop. Gli utenti possono quindi interagire con questi oggetti, che a loro volta possono generare suoni, proiettare video e animazioni nonché permettere di passare da una scena ad un'altra. Grazie alle loro proprietà e ai loro comportamenti, questi oggetti possono operare sia sul client che sul server. Oltre a posizionare oggetti specifici, Jasmine Studio consente di inserire un segnaposto per una classe o una query in una scena. Questa caratteristica è utile in situazioni dinamiche in cui un'applicazione deve mostrare gli oggetti definiti nel corso dell'esecuzione. Jasmine Studio definisce l'interattività e il comportamento degli oggetti per mezzo di una semplice metafora evento - azione che non richiede scripting. Gli eventi comprendono tutto, dai clic del mouse, al lingering dei cursori, ai timer, all'inizio o alla fine di animazioni e video, ai messaggi inviati da altri oggetti. Visualizzare immagini grafiche, far girare animazioni, attivare l'audio o far partire un video, cambiare la scena, inviare messaggi ad altri oggetti: ecco alcune delle azioni che gli oggetti possono svolgere. Una semplice applicazione Per cominciare ad apprezzare la potenza di Jasmine Studio, cominciamo con il costruire una semplice applicazione, utilizzando gli oggetti contenuti nella classe CAStore, fornita con il CD. Questa classe è utilizzata per l’applicazione dimostrativa, Fashion Boutique, di cui consigliamo la visione. Dopo aver lanciato Jasmine, facciamo partire Jasmine Studio, selezioniamo l’applicazione Fashion Boutique, in modo da visualizzare le scene da cui è composta (click sul "+") e scegliamo la scena SignOn; con un doppio click la apriamo e, di nuovo dall'Application Manager, scegliamo Tools…Run. Per collegarsi nell’applicazione, si utilizza come userid "DE JAMES" e come password "fashion". L’Application Manager è la finestra principale di Jasmine Studio; da qui è possibile gestire le applicazioni e le scene che le compongono, fare il debug di un’applicazione, compilare scene e creare eseguibili o file HTML. Nell’applicazione che ci apprestiamo a costruire, utilizziamo, come detto, la Class Family CAStore, per cui è opportuno cominciare a vedere cosa contiene. Dall’Application Manager scegliamo File...Database Administrator; un click sulla freccia della list box Class Family fa apparire le Class family già definite nel database. Selezioniamo CAStore e questo è quello che appare:
Nella parte destra è possibile selezionare quello che vogliamo vedere della classe selezionata: gli oggetti, le query, i moduli o la gerarchia che determina l’ereditarietà della classe stessa. Se selezioniamo un oggetto e lo apriamo con un doppio click possiamo visualizzarne le proprietà. Ritorniamo ora al nostro obiettivo principale, la creazione di un’applicazione; chiudiamo quindi il Class browser e, dall'Application Manager scegliamo File...New...Application. Diamo un nome all’applicazione (di seguito la chiameremo MiaApp); selezioniamola e, ancora dal menu File, scegliamo New...Scene; di nuovo diamo un nome (ad esempio Scena1) e selezioniamola; con il bottone destro del mouse facciamo apparire un menu contestuale da cui possiamo cambiare i principali parametri della scena appena creata, come ad esempio la dimensione:
Ora con un click selezioniamo la scena; ne cambiamo il colore e cominciamo ad inserire alcuni oggetti che la comporranno. Per cambiare il colore del background, visualizzare il menu contestuale con il tasto destro del mouse e selezionare Property Ispector; espandere la gerarchia delle sottoclassi Backgroun Object...Widge Properties... Backgroud e selezionare Color. Si procede poi in maniera del tutto intuitiva. L’obiettivo è quello di posizionare sulla scena le immagini degli indumenti autunnali della collezione CAStore. Apriamo quindi la Class Browser e selezioniamo CAStore; espandiamo la gerarchia delle sottoclassi in questo ordine: CAComposite...ActiveObject...Piece...Garment. Evidenziamo quest’ultima e selezioniamo, nel pannello di destra, la scheda Queries; con un right click, New Query dal menu. Appare la seguente videata:
Per specificare le condizioni fate scorrere la lista dei campi fino a trovare season, selezionate Like() e il radio botton Constant, scrivendo poi "*Fall*" nel box.
Per verificare l’esistenza di oggetti che verificano questa condizione, selezionare Results nel pannello destro. Nel pannello sinistro cambiate il nome della query con un right click e con la voce Rename dal menu contestuale. Ora dobbiamo posizionare la query nella scena creata precedentemente; chiudiamo quindi il query editor e semplicemente trasciniamo la query nella scena. Apparirà un nuovo oggetto, chiamato Query Anchor. Con un right click apriamo il menu contestuale e selezioniamo New Display Placeholder. Ripetiamo l’operazione altre quattro volte e posizioniamo i placeholder nella finestra. Essi contengono al momento un elemento random della classe Garment. Selezioniamoli tutti e, nel solito menu contestuale che appare al right click, scegliamo Space Evenly...Horizontal e successivamente, Align/To Topmost per posizionarli ordinati nella finestra. Possiamo ora provare l’applicazione: dall’Application Manager, dopo aver salvato la scena, selezionare File...Run. Ora dobbiamo aggiungere un bottone che ci permetta di fa scorrere gli oggetti della classe nei placeholder. Visualizziamo la Class Browser ed espandiamo le sottoclassi Resource...Control; selezioniamo la classe Button e con un click-and-drag portiamo due oggetti qualsiasi sulla finestra. Dobbiamo assegnare un "comportamento" a questi oggetti: selezioniamone uno e dal menu contestuale scegliamo Behevior; apparirà questa finestra:
selezionare la prima riga; con un click sotto la voce Message sul pulsante del menu pull down appare il menu dal quale si deve selezionare, sotto la voce Mouse, la scelta Left Click; allo stesso modo, sotto la voce Action,selezionare SendMessage (sotto Message Action). In pratica, stiamo chiedendo che, quando viene cliccato il bottone selezionato, questo mandi un messaggio alla query per visualizzare altri oggetti della classe Garment. Per questo, nel box Item, scegliete Jasmine-Query e nel box Message, General Purpose1. Fate la stessa cosa per il secondo bottone(utilizzando il messaggio GeneralPurpose2). Ora selezioniamo l’ancora della query e nel menu scegliamo di nuovo Behavior. Selezioniamo la prima riga, sotto la voce Message scegliamo General Purpose1 e sotto la voce Action Scroll (sotto Jasmine Action); scegliete il tipo di scroll che preferite e utilizzate il bottone Apply; selezionate la seconda riga e ripetete l’operazione per il GeneralPurpose2. Cliccate ora su OK per chiudere la finestra. Rivisualizzate l’Application Manager, salvate a scena e provate a lanciarla. |