Desarrollo de un sistema de transformación de contenidos, amedida de los usuarios.
A Medida es un proyecto que cuenta con el apoyo del Ministerio de Industria, Turismo y Comercio (Porgrama Profit) y de la Unión Europea
La definició del procés es realitzarà mitjançant el dissenyador de processos, una eina gràfica que generarà una descripció del procés en format XML , encara que es podrien utilitzar alguns dels estàndards existents XPDL, BPML, .... En l'execució del disseny del servidor de transformació, i concretament en la fase d'elecció dels estàndards que s'utilitzaran, es decidirà quin d'ells s'ajusta més als requeriments del projecte.
Un procés és un conjunt seqüencial d'operacions de transformació sobre documents.
La definició del procés tindrà forma de graf dirigit, on els nodes representarien les operacions i cada vèrtex estaria associat a cada una de les possibles respostes de les operacions (token de resposta).
Un procés es pot veure de forma global com un objecte amb estat (iniciat, finalitzat amb error, en execució, etc.), per la qual cosa es definirà una API d'accés que permeti la seva monitorització.
És on s'implementarà tota la lògica de les transformacions. Cada operació rep una informació d'entrada. Aquesta informació pot ser de dos tipus:
Cada operació realitza una sèrie d'accions (Exemples: una transformació XSL, emmagatzemar dades en el sistema de fitxers, etc.) i genera una informació de sortida (dades que serveixen d'entrada a la següent operació i un token de resposta que permet determinar la següent operació que s'executarà mitjançant la definició del procés).
Algunes de les característiques que es podran definir a nivell d'operació des del dissenyador són:
Moltes de les transformacions en els continguts que es manejaran involucraran informació de tipus gràfic, més concretament imatges i vídeo.
La qualitat de les imatges depèn de l'ús que se'ls hi vulgui donar, i per tant, del format en que s'hagin de presentar als usuaris. Un mateix document que contingui imatges ha de poder ser presentat als usuaris d'un curs en línia en format HTML però al mateix temps ha de poder ser presentat als mateixos usuaris, per exemple en format PDF, per a la seva posterior impressió. En el cas que el document s'hagi d'imprimir, la qualitat de les imatges ha de ser molt major que si el document està creat per a ser distribuït en format de pàgina web. Per a aconseguir aquest objectiu s'han de realitzar un conjunt d'operacions sobre les imatges que inclouen l'escalat, la compressió, el format de sortida, els colors de sortida, adaptació a l'ampla de banda. Així doncs cada imatge s'adapta en temps real al format de sortida requerit.
En el cas del vídeo, si es vol presentar un curs que inicialment està en format vídeo digital en format text i imatges pot ser interessant que es captin determinats fotogrames de les diferents seqüències que composen el vídeo i que es capturin com a imatges, després, aquestes imatges es poden incorporar a un document en el format de text adequat.
Per a suportar aquest tipus de funcionalitats s'ha incorporat un mòdul d'adaptació d'imatges la funcionalitat principal del qual és la d'emmagatzemar les imatges en un format d'alta qualitat i servir-les amb una qualitat adaptada al format de presentació. Aquest mòdul va ser desenvolupat per la Fundació IBIT dins del projecte Servidor d'Imatges, finançat en part pel programa PROFIT. Per a reutilitzar dit programari s'hauria d'adaptar a la nova arquitectura, a més d'incorporar noves operacions sobre les imatges.
En cas d'existir una connexió HTTP amb l'usuari (Exemple: el procés s'ha iniciat des d'un HttpListener), aquesta operació permetrà definir un formulari que s'enviarà a l'usuari i s'esperarà a que aquest el completi. Per a la definició de formularis es pot utilitzar Xforms , proposat per W3C pera a la definició de formularis.
Els processos de transformació poden veure's com a serveis. A més, i a causa del plantejament obert del sistema, es fa necessari la definició d'altres serveis (Exemple: la monitorització, el control d'accessos, etc.). que permeten la seva gestió. Així doncs, la millor manera d'orquestrar el conjunt de serveis plantejats és mitjançant la definició d'una arquitectura orientada a serveis. Una arquitectura orientada a serveis és, essencialment, una col·lecció de serveis que es comuniquen entre ells. Aquesta comunicació pot implicar des d'un simple canvi d'informació fins a complexos protocols de coordinació.
Per servei s'entén una funcionalitat ben descrita i autocontinguda, que no depèn de l'estat d'altres serveis. Per a això és necessari fixar:
De fet, l'estructura d'un sistema en serveis duu les mateixes avantatges que la programació orientada a objectes: modularitat, abstracció, etc., i a més aquesta permet que siguin repicables i distribuïbles.
Per a implementar i gestionar aquests elements de forma dinàmica permetent, per exemple, que en un moment de màxima activitat es puguin afegir noves instàncies, es fa necessària una peça més: un Catàleg de Serveis.
Un component que ofereix un determinat servei registra un proxy en un catàleg, de forma que encapsuli els detalls d'accés. Els clients que volen accedir a un servei realitzaran una cerca sobre el catàleg, executant el proxy que serà l'encarregat de comunicar-se amb el servei concret utilitzat, per exemple, missatgeria com a mètode de transport. Una avantatge addicional del catàleg proposat és que, tant en el registre com en la cerca de serveis, es defineixen una sèrie d'etiquetes que identifiquen de forma abstracta la seva funcionalitat. Això permet que d'una manera totalment transparent es puguin canviar unes parts per altres d'equivalents, dotant així d'una gran flexibilitat al sistema. S'optarà per una solució de catàleg redundant, distribuït en varis nodes, i dinàmic, de forma que es pugui saber en temps real quins serveis estan en funcionament. Això permetrà que en cas de no trobar cap servei actiu en el moment de rebre una petició pugui respondre immediatament que el servei no està disponible, sense haver d'esperar un timeout.
En aquest catàleg podrem trobar serveis de diferents tipus com per exemple: