Una biblioteca de acciones de servidor es un archivo .mtd que contiene uno o más grupos de acciones. Su funcionalidad se limita a procesar estos grupos de acciones. En tiempo de ejecución, una solución puede enviar a una biblioteca de acciones de servidor una llamada con o sin parámetros. La biblioteca de acciones de servidor procesa el grupo de acciones indicado y devuelve el resultado a la solución que emite la llamada.
Como las bibliotecas de acciones de servidor operan independientemente de la solución (emisora) principal, se pueden modificar fuera de la solución. Esto presenta varias ventajas:
•no es necesario modificar el diseño de la solución principal;
•por lo tanto, no hay necesidad de implementar (y así actualizar) en el servidor una solución principal que se haya modificado;
•tampoco es necesario que los dispositivos cliente descarguen la solución modificada;
•si modifica una biblioteca de acciones de servidor, todo lo que necesita es implementarla en el servidor para que sobrescriba la antigua. Esta implementación no afecta al flujo de trabajo general en tiempo de ejecución.
Sin embargo, tenga en cuenta que los costes operativos (en potencia de procesamiento y tiempo) son mayores si el grupo de acciones se usa en una biblioteca de acciones de servidor que si se usa en la solución principal. Por tanto, las bibliotecas de acciones de servidor solo deben usarse si su característica principal (que se modifica y ejecuta independientemente de la solución) proporciona una ventaja clara frente al uso de ese grupo de acciones en la solución principal.
Las bibliotecas de acciones de servidor se pueden implementar en MobileTogether Server Advanced Edition, pero no en la edición estándar de MobileTogether Server.
Por ejemplo, considere una situación en la que se obtienen datos de una estructura de datos que está fuera d su control y que cambia de forma arbitraria y a intervalos irregulares. Puede resultar difícil modificar e implementar una solución principal nueva y actualizar soluciones ya descargadas cada vez que esa estructura de datos cambia. Sin embargo, una biblioteca de acciones de servidor podría trabajar con los datos modificados de la estructura de datos fuera de la solución principal, procesar la estructura de datos modificada y devolver datos a la solución principal de forma que estos encajen en la estructura que la solución espera.
Las ventajas están claras:
•El propósito de la biblioteca de acciones de servidor es limitado, por lo que esta es de menor tamaño y más sencilla que la solución principal, y puede modificarse de forma rápida y fácil.
•La estructura de datos externa que se modifica se puede procesar por completo dentro de la biblioteca de acciones de servidor de forma que se obtengan datos de externa la estructura externa de datos y se envíen a la solución principal en una estructura que use la solución principal.
•La biblioteca de acciones de servidor modificada se puede implementar en el servidor fácilmente. La solución principal, que también se implementa en el servidor, no hay que modificarla en absoluto. Las soluciones que ya se hayan descargado los clientes tampoco hay que actualizarlas.
En la descripción que hacemos en esta sección de las bibliotecas de acciones de servidor usamos el ejemplo de una biblioteca de acciones de servidor simple que lee contenido de una carpeta indicada con la acción Leer carpeta de MobileTogether. Esta acción de la biblioteca de acciones de servidor lee información sobre cada uno de los elementos de la carpeta, subcarpeta o archivo y almacena información sobre ese elemento en una estructura XML de la biblioteca de acciones de servidor. Después la estructura de datos se envía desde la biblioteca de acciones de servidor a la solución principal como valor de retorno de la biblioteca de acciones de servidor.
En nuestro ejemplo el problema que queremos resolver es cómo indicar qué carpeta es la que hay que leer. Digamos que la solución principal funciona con tres conjuntos de datos fijados (estáticos y que no cambian) que se basan en colecciones de verdad. En la solución principal, el usuario selecciona una de las tres carpetas (books, films o music), que es la que debe leer la solución principal. Si se modifica cualquiera de las colecciones subyacentes, los conjuntos de datos fijados que usa la solución principal quedan obsoletos. Un cambio puede ser: (i) contenido nuevo o modificaciones en el contenido de una carpeta, (ii) modificaciones en una estructura de datos o (iii) una ubicación de carpeta distinta.
En nuestro ejemplo el cambio es una ubicación de carpeta nueva. Si decide actualizar los conjuntos de datos fijados en la solución principal, tendrá que volver a implementar esa solución actualizada en el servidor MobileTogether Server y volver a descargarla en todos los dispositivos cliente afectados. Este es el momento en que puede usar la biblioteca de acciones de servidor para indicar las (nuevas) ubicaciones de carpeta, de forma que que la solución principal no gaste recursos en buscar la ubicación de la carpeta. De esta forma la solución se ocupa directamente de los datos de la carpeta correspondiente, que le llega desde la biblioteca de acciones de servidor. Las actualizaciones se pueden llevar a cabo en la biblioteca de acciones de servidor y no es necesario modificar la solución principal. Ahora la solución principal llamaría a un grupo de acciones de la biblioteca de acciones de servidor. El grupo de acciones leería los datos de la carpeta relevante, almacenaría los datos de la carpeta en un nodo de la estructura y devolvería estos datos a la solución principal. Si cambia la ubicación de la carpeta, la solución principal obtendrá los datos nuevos sin que tenga que modificarla.
En la imagen siguiente puede ver una acción de control de la solución principal. La acción ejecuta una llamada a un grupo de acciones llamado ScanFolder (que se define en la biblioteca de acciones de servidor ServerLibrary.mtd) La llamada contiene un único parámetro llamado $FolderToScan cuyo valor se obtiene de un nodo de fuente de página de la solución (emisora) principal. Este valor lo selecciona el usuario: el tipo de colección (books, films o music) que quiere examinar. Si se hace grupo de acciones una llamada en tiempo de ejecución, el grupo de acciones se ejecuta en la acciones biblioteca de servidor (fuera de la solución) y los datos sobre la carpeta que se quiere examinar se devuelven a la solución principal y se almacenan en una variable de la solución llamada $FolderReadout. Esta variable, que contiene los datos de la carpeta examinada, reemplaza el contenido de la fuente de página $XML1 en la solución principal (para lo que usa la acción Reemplazar nodos). Ahora los datos que contiene $XML1 son la información actualizada de la carpeta examinada.
Tenga en cuenta los puntos siguientes sobre realizar una llamada a una biblioteca de acciones de servidor y sobre la imagen anterior. Para ver la configuración relevante puede abrir el archivo del tutorial MainSolution.mtd que está en la carpeta ServerActionLibraries de la carpeta Tutorials. Para examinar una carpeta real durante una simulación deberá indicar en el archivo de la biblioteca de acciones de servidor (ServerLibrary.mtd) las rutas a las carpetas reales de su sistema (véase Crear una biblioteca de acciones de servidor para más detalles).
•En la imagen anterior se puede ver el cuadro de diálogo Acciones de la acción AlTerminarDeEditar del único control de cuadro combinado de la solución principal.
•La opción que haya elegido el usuario en este cuadro combinado, que puede ser Books, Films o Music, se almacena en el nodo $PERSISTENT/Root/UserSelection.
•Debe agregar las bibliotecas de acciones de servidor a las que quiera acceder desde la solución principal a las bibliotecas de acciones de servidor de la solución principal en el panel Archivos.
•Una vez se ha añadido una biblioteca de acciones de servidor a una solución (véase punto anterior) se habilitan automáticamente todos los grupos de acciones de esa biblioteca de acciones de servidor, que puede encontrar en los diálogos de acción de la solución (véase la sección Grupos de acciones de la imagen anterior).
•En la solución principal, por lo general, una acción Permitir se usa para llamar a un grupo de acciones de la acción biblioteca de servidor (imagen anterior). Eso es debido a que la variable de la acción Permitir ($FolderReadout en la imagen anterior) se puede configurar fácilmente para que reciba el valor de retorno del grupo de acciones (imagen anterior).
•Cuando se realiza una llamada a un grupo de acciones, los parámetros de ese grupo de acciones, que se definen en la biblioteca de acciones de servidor, aparecen dentro de la definición de la acción Permitir. El grupo de acciones ScanFolder de la imagen anterior contiene un parámetro llamado $FolderToScan. Ahora puede definir el valor que quiere que tenga este parámetro cuando se llame al grupo de acciones. En nuestro ejemplo este parámetro lo selecciona el usuario desde el cuadro combinado de la solución y se almacena en el nodo $PERSISTENT/Root/UserSelection como el valor de la variable $FolderToScan.
•La acción Reemplazar nodos reemplaza los datos de la fuente de página $XML1 en la solución principal con los datos de la variable $FolderReadout, que son los datos que se devuelven desde la biblioteca de acciones de servidor.