Saltar al contenido principal
pdf?stylesheet=default
Blackboard Help

Automatización del archivo de instantánea sin formato

Un aspecto integral de una integración SIS infalible es la capacidad de automatizar y supervisar el flujo de los datos que llega a Learn tal como los presenta la integración. Learn 9.1 SP 12 ofrece dos nuevas capacidades que facilitan este proceso:

1. Los resultados de las URL del método POST de la integración contienen un UID de proceso de conjunto de datos. Por ejemplo:

Tarea completada correctamente: archivo de introducción de datos cargado.  Use el código de referencia afc3d6e84df84f51944a06cccee8f59a para rastrear estos registros en los archivos de registro.

2. SP12 incluye una nueva URL de estado de conjunto de datos que, cuando se le envía el ID de proceso del conjunto de datos, devuelve un bloque xml que contiene detalles sobre el estado del conjunto de datos. Recuerde que esto puede suceder un tiempo después de la publicación original por el método POST del archivo de datos.

https:// ... /webapps/bb-data-integration-flatfile-BBLEARN/endpoint/dataSetStatus/afc3d6e84df84f51944a06cccee8f59a

que devuelve algo como esto:

<dataSetStatus>
    <completedCount>5</completedCount>
    <dataIntegrationId type="blackboard.platform.dataintegration.DataIntegration">_123_1</dataIntegrationId>
    <dataSetUid>afc3d6e84df84f51944a06cccee8f59a</dataSetUid>
    <errorCount>0</errorCount>
    <lastEntryDate>2013-03-20T10:45:48-05:00</lastEntryDate>
    <queuedCount>0</queuedCount>
    <startDate>2013-03-20T10:45:48-05:00</startDate>
    <warningCount>0</warningCount>
</dataSetStatus>

Estas adiciones facilitan la supervisión por secuencias de comandos de las integraciones de archivos automatizados de instantánea sin formato.

Este tema ofrece una descripción general sobre cómo automatizar y supervisar una integración de archivo de instantánea sin formato. Los ejemplos incluidos se han escrito para una plataforma de Linux/Oracle usando CRON para la automatización y el lenguaje BASH de secuencias de comandos del shell de Unix, pero los conceptos se pueden aplicar a cualquier lenguaje capaz de realizar operaciones POST/GET, analizar cadenas y fechas, efectuar consultas de bases de datos y enviar correo electrónico. Por lo tanto, PERL, JAVA, PHP y Ruby son tan adecuados para el desarrollo como lo son otros lenguajes shell o bash.

El objetivo es ofrecer una implementación de referencia funcional para desarrollar una integración SIS supervisada y automatizada usando Archivo de instantánea sin formato. Contendrá dos componentes: automatización y supervisión. La implementación de referencia está disponible a través del enlace que hay al final de esta página.

Actualmente, la inclusión de mensajes de error registrados a través de la implementación de referencia presentada solo es compatible con los sistemas autoalojados. Esta capacidad se describe en la secuencia de comandos y requiere eliminar los comentarios del código para su uso en entornos autoalojados. Los clientes de Managed Hosting seguirán usando la interfaz de registro del marco de trabajo SIS de Learn para acceder a los mensajes de error. Próximamente, incluiremos en este documento un medio para acceder a estos mensajes de registro desde la propia secuencia de comandos.

Caso de uso: automatizar el procesamiento del archivo sin formato de SIS

El siguiente caso de uso es una base para la implementación de referencia y una guía para su propio desarrollo.

Resumen: 

automatizar el procesamiento de los informes de correo electrónico y datos del archivo de instantánea sin formato que genera SIS para los administradores indicados. La solución debería determinar periódicamente la presencia de nuevos archivos de datos y el origen de los datos y los objetos, así como presentar los datos en Learn. Los archivos posteriores al procesamiento deben archivarse en otro directorio. La solución también tiene que dar la opción de procesar manualmente los archivos de datos. En todos los casos, los administradores deben recibir un correo electrónico de estado donde se les informe de si la operación se ha completado correctamente o no. Este correo debe contener los datos disponibles sobre el proceso y los posibles mensajes de error.

Actores:

SIS, programador del sistema operativo, Learn

Condiciones previas:

SIS genera y almacena en un directorio especificado archivos de texto formateados del Archivo de instantánea sin formato para los objetos de Learn siguientes: Usuarios, Cursos, Inscripciones y Actividades del personal.

Descripción:

  1. El SIS suministra archivos de instantánea sin formato a un directorio de datos especificado en una secuencia de comandos.
  2. El programador del sistema operativo (CRON) inicia la secuencia de comandos sis_snpshtFF_auto.
  3. La secuencia de comandos sis_snpshtFF_auto comprueba el directorio de datos para ver si hay algún archivo.
  4. La secuencia de comandos sis_snpshtFF_auto determina el tipo de objeto de Learn al que corresponde cada archivo.
  5. La secuencia de comandos sis_snpshtFF_auto llama a la secuencia de comandos sis_snpshtFF_manual como corresponde, y lo hace en la jerarquía de objetos: Usuarios, Cursos, Afiliaciones.
  6. La secuencia de comandos sis_snpshtFF_manual publica los datos en Learn por el método POST y determina el estado de finalización.
  7. Si hay errores y se ha configurado para ello, sis_snpshtFF_manual consulta los registros de integración para ver si hay mensajes de error.
  8. La secuencia de comandos sis_snpshtFF_manual elabora un correo electrónico que contiene información de estado y lo envía a las direcciones de correo configuradas.
  9. Los pasos del 5 al 8 se repiten por cada archivo de datos.
  10. Al completar el procesamiento de todos los archivos de datos, la secuencia de comandos sis_snpshtFF_auto envía un correo electrónico de estado a las direcciones de correo configuradas.

Condiciones posteriores:

Los datos que proporcionan los archivos sin formato generados por SIS son secuenciales por objetos de datos añadidos a Learn, y los archivos originales se archivan con la marca de tiempo de procesamiento añadida al nombre de archivo original. Los administradores configurados en la secuencia de comandos reciben correos electrónicos de estado por archivo procesado y un correo de estado global que informa sobre la tarea de procesamiento completa.

La solución

Dejando de lado la generación de archivos de datos por el SIS (tema que no abarca este documento), existen tres componentes en el problema de la automatización: determinar cuándo ejecutar el procesamiento de los datos proporcionados, qué objetos de datos y orígenes de datos cubren esos datos proporcionados y cómo se procesan y supervisan los datos. Con el caso de uso anterior, podemos crear un conjunto de secuencias de comandos configurables que determinen si existe un archivo de datos (en el caso de que esta tarea haga algo) y a qué tipo de objeto se aplican esos datos, llamar a una secuencia de comandos de procesamiento con los parámetros adecuados para satisfacer las metas de integración y, al finalizar el procesamiento, archivar el archivo de datos. Primero responderemos al "qué", luego al "cómo" y, por último, al "cuándo". Poniendo en práctica los tres aspectos lograremos un proceso automatizado y que se puede supervisar para mover los datos SIS a Learn a través del tipo de integración Archivo de instantánea sin formato.

La secuencia de comandos BASH tiene muchos comentarios, así que no la pondremos aquí. Lo que haremos será centraremos en el flujo global y los detalles del procesamiento.

El "cómo": usar las secuencias de comandos sis_snpshtFF_auto.sh y sis_snpshtFF_manual

Basándonos en el caso de uso anterior, la secuencia de comandos bash que se ve abajo (sis_snpshtFF_auto.sh) realiza las operaciones siguientes:

  • Comprueba si hay archivos en el directorio especificado.
  • Determina el tipo de objeto y la operación según la información de encabezado que hay en el archivo.
  • Ordena el procesamiento para que los archivos se procesen en el orden correcto. Por ejemplo: primero Usuarios, luego Cursos y después Afiliaciones.
  • Llama a una subsecuencia de comandos (sis_snpshtFF_manual.sh) para el procesamiento, la supervisión y la notificación administrativa por correo electrónico del estado del procesamiento.
  • Archiva el archivo de datos al finalizar el procesamiento.
  • Procesa el siguiente archivo de datos si existe.
  • Y, por último, envía un informe por correo indicando el resultado acumulativo de la llamada a la secuencia de comandos de automatización.

Esto proporciona el siguiente flujo general que se muestra en la Ilustración 1:

SSFFAutoProcessFlow.png

Ilustración 1: Flujo general de automatización del procesamiento de archivo de instantánea sin formato como se demuestra en la solución de referencia proporcionada.

Para el desglose más detallado de la parte con secuencias de comandos del proceso, tenemos dos secuencias de comandos sis_snpshtFF_auto.sh (representada en la mitad izquierda de la Ilustración 2) y sis_snpshtFF_manual.sh (representada en la mitad derecha de la Ilustración 2).

SSFFAutoProcessingFlow.png

Ilustración 2.  Flujo de trabajo detallado

Los comentarios en cada secuencia de comandos acerca de la implementación de referencia de la automatización describen en detalle las operaciones que figuran en la Ilustración 2. 

WHAT: sis_snpshtFF_auto.sh

En un nivel superior, la secuencia de comandos sis_snpsht_auto carga los archivos encontrados en el directorio de datos configurado y, analizando el encabezado de los datos del archivo, determina el tipo de objeto al que se hace referencia. Luego agrega el archivo a la lista correspondiente para su posterior procesamiento.  Este análisis de los encabezados determina el tipo de objeto al que hace referencia el archivo y, por consiguiente, el orden que ocupa en la cola de procesamiento de instantáneas. Esta ordenación basada en el encabezado permite un único punto de descarga para los archivos sin formato generados por SIS.

Cuando se han analizado todos los archivos y se han agrupado en listas de su tipo de objeto, estas se procesan en el orden lógico de usuarios, cursos y afiliaciones enviando los archivos a la secuencia de comandos sis_snpshtFF_manual para el procesamiento (que se puede ejecutar por separado desde la línea de comandos) junto con los argumentos apropiados por cada tipo de objeto. La secuencia de comandos sis_snpshtFF_manual toma los argumentos entrantes y, después de comprobar si son válidos para su uso, usa la URL apropiada para publicar el archivo de datos en Learn por el método POST. Después de publicar, la secuencia de comandos introduce un bucle de supervisión y, al finalizar, elabora un informe, lo envía por correo electrónico a la lista configurada de destinatarios y luego vuelve a la secuencia de comandos sis_snpsht_auto, que envía el siguiente archivo para su procesamiento: esto se repite hasta que se procesan todos los archivos. Cuando se han procesado todos los archivos, sis_snpshtFF_auto envía un informe final por correo electrónico a la lista de destinatarios configurados.

El "cuándo": usar CRON para programar instantáneas

La base de la automatización es la capacidad de ejecutar la secuencia de comandos establecida sin intervención humana. Unix proporciona esta capacidad con CRON : una aplicación de programación integrada. Un proceso de sistema, CRON, consulta regularmente el crontab del sistema: un archivo de sistema que contiene una lista de comandos y ajustes sobre cuándo se deben ejecutar. Luego, las entradas recogidas se evalúan para ver si se deben ejecutar en ese momento o si se deben omitir para más tarde, tal como se indica en la entrada de crontab.

Al definir las entradas de crontab, hay que tener en cuenta la frecuencia de los trabajos de cron  y los tiempos de procesamiento, ya que las operaciones de actualización pueden tardar más que las de guardado. El procesamiento de los datos de actualización y de guardado se puede controlar a través de entradas de crontab independientes y de directorios de orígenes de datos distintos en los argumentos de secuencias de comandos si se usa la secuencia de comandos indicada abajo.

Expresiones CRON para entradas Crontab
Formato

CRON utiliza un formato muy específico para programar datos. Se basa en una lista separada por espacios de cinco campos de datos obligatorios:

Campo Descripción Valor permitido
MIN Campo de minutos 0 a 59
HOUR Campo de hora 0 a 23
DOM Día del mes 1-31
LUN Campo de mes 1-12
DOW Día de la semana 0-6
CMD Comando Cualquier comando que se quiera ejecutar.

En la práctica, este formato se puede complicar o simplificar todo lo que uno quiera.

Ejemplos simples:

Un ejemplo de entrada simple de crontab sería ejecutar una tarea al inicio de cada hora:

0 * * * * /usr/local/blackboard/apps/snapshot/scripts/sis_snpshtFF_auto.sh

  • 0 – Minuto 0
  • * – Cada hora
  • * – Cada día
  • – Cada mes
  • * – Todos los días de la semana

o todos los días a medianoche:

0 0 * * * /usr/local/blackboard/apps/snapshot/scripts/sis_snpshtFF_auto.sh

  • 0 – Minuto 0
  • 0 – Cada hora
  • * – Cada – día
  • – Cada mes
  • * – Todos los días de la semana
Ejemplos complejos:

Ejecutar una tarea dos veces al día durante la semana laboral:

0 11,16 * * 1-5 /usr/local/blackboard/apps/snapshot/scripts/sis_snpshtFF_auto.sh

  • 0 – Minuto 0 (inicio de la hora)
  • 11,16 – 11:00 y 16:00
  • * – Cada día
  • * – Cada mes
  • 1-5 – De lunes a viernes

o cada dos horas de lunes a viernes:

0 */2 * * Mon-Fri /usr/local/blackboard/apps/snapshot/scripts/sis_snpshtFF_auto.sh

  • 0 – Minuto 0 (inicio de la hora)
  • */2 – Cada hora par, 12, 2, 4, 6, 8, 10, 12, 14, etc., o cada dos horas.
  • * – Cada día
  • * – Cada mes
  • Mon-Fri – De lunes a viernes

Una referencia sobre CRON:

http://en.wikipedia.org/wiki/Cron

También puede ver la página del manual de su sistema a través de la línea de comandos:

$ man 5 crontab

Añadir un crontab

Con los ajustes de cron anteriores, podemos añadir una entrada de crontab para programar cuándo queremos ejecutar la tarea de instantánea.

Para editar su archivo raíz de crontab, escriba el siguiente comando como usuario raíz en el símbolo del sistema del shell UNIX/Linux:

$ crontab -e

La -e lo lleva a un editor vi.

Para ejecutar la secuencia de comandos de procesamiento automatizado del archivo sin formato todos los días a medianoche, añada lo siguiente a la lista de tareas:

root@dev$ crontab -e

escriba i: esto lo lleva al modo de insertar y editar

escriba la línea siguiente

0 0 * * * /usr/local/blackboard/apps/snapshot/scripts/sis_snpshtFF_auto.sh

presione escape: así saldrá del modo de edición

escriba :wq: con esto guarda los cambios y sale del editor

Agradecimientos

Quiero dar las gracias por sus ideas, aportaciones y sugerencias en la elaboración de la implementación de referencia BASH a:

Kelt Dockins Por su implementación basada en BASH para el análisis de contenido de Archivo de instantánea sin formato: http://www.keltdockins.com/2/post/20...tegration.html
Ross Brown y Jerald Todd Por detectar precozmente algunos problemas en la primera versión de la implementación de referencia.

Archivos

Este archivo (zip) descargable SIS_SnpshtFF_Bash_Scripts contiene código funcional y comentado en el que se observan los conceptos presentados en este tema.