CHAPTER 1: EDWARD BOND’S THEORY OF DRAMA:
1.2 Identifying the basic direction of Edward Bond’s theory and practice
1.2.3 The role of drama
Las operaciones offline que se ejecutan en el dispositivo y se envían hacia el MCM, tienen un formato adecuado para que se puedan ejecutar correctamente, Para cada operación que se envía al MCM, se agrega una etiqueta con el nombre de la operación y una para el tipo de elemento, esto es con el fin de que el MCM pueda saber que tipo de operación realizar y a que elemento (colección o documento) aplicarle la operación. El formato del documento XML que representa las operaciones offline y que es almacenado en el RMS del dispositivo (Syn_Commands) tiene la sintaxis siguiente (Figura 3.18):
<Sync>
Lista de operaciones Offline </Sync>
Figura 3.18 Formato del documento XML de operaciones offline
Las operaciones offline que necesitan sincronizarse desde el dispositivo hacia el MCM son: Create Collection, Delete Collection, Move Collection, Create Document Text, Delete Document, Copy Document, Email document, Set Collection MetadataSet, Update Document Metadata, Set Collection Permission y Set Document Permission.
1. Create Collection: Para crear colecciones, se crean las etiquetas <Create><Collection>, y se crean los elementos necesarios para que el MCM pueda ejecutar esta operación correctamente. Estos elementos son: El identificador de la biblioteca en la que se creará la colección <LibId></LibId> tomado del RMS LibraryId, el identificador temporal de la colección <CollId></CollId> (en este trabajo se optó por asignarle el identificador de la colección padre, la colección home siempre tiene el identificador 1), identificador de la colección padre <ParentId></ParentId>, estos identificadores deben contener el mismo valor, sin embargo cuando al servidor le llegue esta operación, se le asignará un nuevo identificador a la colección, de igual manera se requiere el path o ruta de la colección padre <Path></Path>, el nombre que tendrá la colección <Name> </Name> el cual es introducido por el usuario, el conjunto de metadatos que tendrá la colección <MetadataSet></MetadataSet> (por default se le asigna el número 3) y por último se crean las etiquetas de los permisos que se le asignará a esa colección <Permission> </Permission> el cual es introducido por el usuario. Cada colección se crea con un
identificador único (CollId), al usuario móvil cuando realiza esta operación offline se le asigna un valor para este identificador, pero es el servidor el que le asigna el valor final, es decir, el cliente no tiene control sobre este identificador, esto se realizó con el fin de que no haya problemas de colecciones duplicadas, por lo tanto, pueden existir colecciones con el mismo nombre y el mismo path pero con distintos identificadores y esto los hace ser colecciones diferentes. La sintaxis de esta operación se muestra en la figura 3.19. <Create> <Collection> <LibId></LibId> <CollId></CollId> <ParentId></ParentId> <Path></Path> <Name> </Name> <MetadataSet></MetadataSet> <Permission> </Permission> </Collection> </Create>
Figura 3.19 Sintaxis de la operación Create Collection
2. Delete Collection: En el caso de eliminar colecciones se crean las etiquetas <Delete><Collection> y se crea el identificador de la biblioteca <LibId></LibId> tomado del RMS LibraryId y el path o ruta de la colección <Path></Path>. La sintaxis de esta operación se muestra en la figura 3.20.
<Delete> <Collection> <LibId></LibId> <Path></Path> </Collection> </Delete>
Figura 3.20 Sintaxis de la operación Delete Collection
3. Move Collection: Para mover colecciones se crean las etiquetas <Move><Collection> y se crea el y se crea el identificador de la biblioteca <LibId></LibId> tomado del RMS LibraryId y el path o ruta de la colección fuente (colección a mover) <PathSrc></PathSrc>, y el path o ruta de la colección destino (colección donde se va mover) <PathTarget></PathTarget>. La sintaxis de esta operación se muestra en la figura 3.21.
<Move> <Collection> <LibId></LibId> <PathSrc></PathSrc > <PathTarget></PathTarget> </Collection> </Move>
Figura 3.21 Sintaxis de la operación Move Collection
4. Create Document Text: En la sección 3.4 se mencionó que se pueden crear documentos de texto, para realizar esto, se crean las etiquetas <Create><Document>, y se crean los elementos que le sirven al MCM para ejecutar correctamente esta operación, estos elementos son: El identificador de la biblioteca en donde se creará el documento <LibId></LibId>, el identificador de la biblioteca es tomado del RMS LibraryId; el identificador de la colección en la cual se creará el documento <CollId></CollId>, este identificador de colección es tomado de los datos del esqueleto; identificador temporal del documento <DocId></DocId>, este identificador temporal que se le asigna es el identificador de la colección de este documento; nombre que tendrá el documento <Name></Name>, el nombre es una cadena de caracteres que el usuario introduce cuando crea los metadatos; y el contenido del documento <Content></Content>, es la información de tipo texto que contendrá el documento, el cual le sirve al usuario para generar documentos como tipo notas, el contenido de este documento es introducido por el usuario. Para crear documentos se tiene que definir sus metadatos, por lo tanto, al crear un documento, se crean las etiquetas de los metadatos del documento, esto se realiza con la etiqueta <Metadata></Metadata>, posteriormente, se crean cada una de las etiquetas que contendrán los metadatos, <Title></Title>, <Topic> </Topic>, <Author></Author>, <Abstract></Abstract>, <Language></Language>, <Publisher></Publisher>, <Date></Date> y <Type></Type>, toda la información de
estas etiquetas son introducidas por el usuario. La sintaxis de esta operación se muestra en la figura 3.22.
<Create> <Document> <LibId></LibId> <CollId></CollId> <DocId></DocId> <Name> </Name> <Content> </Content> <Metadata> <Title> </Title> <Topic> </Topic> <Author> </Author> <Abstract> </Abstract> <Language> </Language> <Publisher> </Publisher> <Date> </Date> <Type> </Type> </Metadata> </Document> </Create>
Figura 3.22 Sintaxis de la operación Create Document
5. Delete Document: Para eliminar documentos se crean las etiquetas <Delete><Document> y se crean las etiquetas para que el MCM ejecute estas operaciones, estas etiquetas son: el identificador de la biblioteca <LibId></LibId> tomado del RMS LibraryId; el identificador de la colección que contiene al documento <CollId></CollId> el cual es tomado del esqueleto; y por último el identificador del documento <DocId></DocId> también obtenido del esqueleto. La sintaxis de esta operación se muestra en la figura 3.23.
<Delete> <Document> <LibId></LibId> <CollId></CollId> <DocId></DocId> </Document> </Delete>
Figura 3.23 Sintaxis de la operación Delete Document
6. Copy: Para copiar un documento de una colección a otra dentro de la misma biblioteca se crean las etiquetas <Copy><Document>. También se crean las etiquetas para que el MCM ejecute estas operaciones, estas etiquetas son: el identificador de la biblioteca <LibId></LibId> tomado del RMS LibraryId; el path o ruta (ruta de la colección) donde se encuentra el documento <Path></Path>; el identificador del documento a copiar <DocId></DocId> tomado del esqueleto de la librería y el nuevo path (ruta de la coleccion) en donde se copiará este documento. El nuevo path se selecciona de una lista de todas las colecciones existentes en el esqueleto, si ya no existe en el servidor ese path la operación simplemente falla, no se copia el documento y se le avisa al cliente móvil de la operación fallida. La sintaxis de esta operación se muestra en la figura 3.24.
<Copy> <Document> <LibId></LibId> <Path></Path> <DocId></DocId> <NewPath></NewPath> </Document> </Copy>
Figura 3.24 Sintaxis de la operación Copy Document
7. Email document: Para mandar un documento vía Email a un usuario que no sea usuario de PDLib, se crean las etiquetas <Email><Document>. También se crean las etiquetas para que el MCM ejecute estas operaciones, estas etiquetas son: el identificador de la biblioteca <LibId></LibId> tomado del RMS LibraryId; el path o ruta (ruta de la colección) donde se encuentra el documento <Path></Path>; el identificador del documento a enviar <DocId></DocId> tomado del esqueleto de la biblioteca; y los valores que normalmente se conocen para el envío de un email común <From></From>, <To></To>, <CC></CC>, <BCC></BCC>, <Subject></Subject>, además se crea la etiqueta que define el servidor de correo <Server></Server>, y el formato del Email <Type><Type> el cual puede ser formato tipo texto o html, todos estos datos son introducidos por el usuario. El usuario puede optar por enviar también los metadatos de los documentos esto se hace con la etiqueta <Meta></Meta> que contiene los valores booleanos true si se envían los metadatos y false si no se hace. Si el usuario opta por enviar los metadatos se crea también las etiquetas de los metadatos del documento. <Metadata><Metadata> con sus etiquetas <Title></Title>, <Topic> </Topic>, <Author></Author>, <Abstract></Abstract>, <Language></Language>, <Publisher></Publisher>, <Date></Date> y <Type></Type>. La sintaxis de esta operación se muestra en la figura 3.25
<Email> <LibId></LibId> <Path></Path> <DocId></DocId> <From></From> <To></To> <CC></CC> <BCC></BCC> <Server></Server> <Subject></Subject> <Type></Type> <Meta></ Meta> <Metadata> <Title></Title> <Topic> </Topic> <Author></Author> <Abstract></Abstract> <Language></Language> <Publisher></Publisher> <Date></Date> <Type></Type> </Metadata> </Email>
Figura 3.25 Sintaxis de la operación Email
8. Set Collection MetadataSet: En la operación de asignar un conjunto de metadatos a una colección () se definen las etiquetas <Set><MetadataSet> introduciendo el nuevo tipo de conjunto de metadatos que tendrá la colección y el identificador de la colección a la cual se va aplicar el conjunto de datos. La sintaxis de esta operación se muestra en la figura 3.26.
<Set>
<MetadataSet></MetadataSet> <ColId></ColId>
</Set>
Figura 3.26 Sintaxis de la operación Set Collection MetadataSet
9. Update Document Metadata: En la operación de actualizar los metadatos de los documentos se definen las etiquetas <Update><Meta>, además se crean las etiquetas: identificador de la biblioteca <LibId></LibId> tomado del RMS LibraryId, el identificador de la colección donde está el documento con sus metedato <ColId></ColId> tomado del esqueleto y desde luego los metadatos con los nuevos valores. La sintaxis de esta operación se muestra en la figura 3.27.
<Update> <Meta> <LibId></LibId> <CollId></CollId> <Metadata> <Title> </Title> <Topic> </Topic> <Author> </Author> <Abstract> </Abstract> <Language> </Language> <Publisher> </Publisher> <Date> </Date> <Type> </Type> </Metadata> </Meta> </Update>
Figura 3.27 Sintaxis de la operación Create Document
10. Set Collection Permission y Set Document Permission: En las operaciones de asignar permisos se crean las etiquetas <Set><Permission>, el tipo de permiso que se otorga <Type></Type> y que es introducido por el usuario; y el elemento al cual se le va dar el permiso, tomado del esqueleto. Si es una colección a la que se le asigna el permiso se necesita el identificador de la colección <ColId></ColId> y para los documentos se necesita el identificador del documento <DocId> ambos tomados del esqueleto. Estas dos operaciones se muestran en la figura 3.28. Los permisos como se mencionaron anteriormente, se definen como Personal, Shared, Incoming, Outgoing, Update.
<Set> <Permission> <Type></Type> <ColId></ColId> </Permission> </Set> <Set> <Permission> <Type></Type> <DocId></DocId> </Permission> </Set>
3.8 Resumen
En este capítulo se presentó los diferentes tipos de sincronización entre los clientes móviles y el servidor de datos. Se describieron las distintas operaciones del proyecto PDLib y se identificaron cuales de esas operaciones se pueden realizar de manera offline, se proporcionaron algunos escenarios en el manejo de las operaciones offline, y el modelo de las operaciones describiendo su arquitectura. Se describieron los documentos XML que interactúan con el cliente y el MCM (Skeleton.xml y Sync_Commands) y por último, se mostró el procedimiento de las ejecuciones de las operaciones offline y las necesidades de las mismas para poder llevarse a cabo correctamente. En el siguiente capítulo se describirá a detalle la implementación del modelo, proporcionando las diversas pantallas del prototipo con el que interactuará el usuario.