Stato attuale
Attualmente le mappe di join vengono utilizzate nell'ambito di una singola Base Extension. Infatti nell'interfaccia della classe BaseExtension e' presente la propertie joinMap, che non e' altro che un Vector di oggetti JoinMap. Questo attributo puo' quindi essere pensato come una matrice in cui, per ogni coppia di classi locali della base extension, viene indicato se e' possibile effettuare il join e, in caso affermativo, quali attributi da utilizzare in questa operazione.
Il Query Manager utilizza queste informazione per effettuare, nel processo di ricostruzione della risposta globale, le operazioni di Ricostruzione di ogni base extension e di Fusione delle base extension.
Per realizzare cio' il modulo Query Manager necessita di conoscere, non solo le mappe di join relative alla singola base extension, ma le mappe di join dell' intera classe globale cui le base extension appartengono.
Da un punto di vista prettamente teorico, il fatto di associare le mappe dei join all'intera classe globale e non solo alla singola base extension, e' comprensibile nel fatto che la generazione e la gestione delle base extension e' finalizzata all'ottimizzazione della generazione delle query locali.
Qualora pero' si decidesse di "disattivare" questa attivita', il sistema mediatore deve essere ancora in grado di riconoscere istanze, facenti riferimento alla stessa entita' del mondo reale, e di fonderle oppotunamente tra loro.
In funzione di questi ragionamenti si e' deciso di definire la seguente struttura dati.La classe JoinTable
La classe JoinTable e' una struttura dati che permette di realizzare una lista di mappe di join facente riferimento ad una classe globale, la Join Table appunto.
Infatti l'interfaccia della suddetta classe prevede, tra le altre, la propertie setJoinMap e la propertie gClassName.
setJoinMap implementa una lista di oggetti JoinMap, che rappresentano l'insieme delle mappe di join dell'intera classe globale.
Al fine di popolare tale "lista", l'interfaccia della classe in questione e' munita del metodo addJoinMap(), che permette di aggiungere al Vector l'oggetto JoinMap passato per parametro.
Inoltre vi e' anche il metodo getJoinMap(), che permette di ricavare l'oggetto JoinMap corrispondente alle due classi passate per parametro.
La propertie gClassName, come e' immediato dedurre, contiene una stringa indicante il nome della classe globale di appartenenza della Join Table.
Ovviamente si e' provveduto a modificare opportunamente l'interfaccia della classe GlobalClass.
Tale modifica riguarda solamente l'aggiunta tra le properties della variabile joinTable che implementa l'oggetto JoinTable corrispondente alla classe globale.
Sviluppi futuri
Realizzare l'interfaccia grafica per il modulo di SIDesigner, joinMap.
Tale interfaccia deve agevolare e guidare il progettista nella creazione delle Join Table delle varie classi globali generate nelle fasi precedenti del processo di integerazione degli schemi.