Un aspecto integral de una integración SIS sin inconvenientes es la capacidad de automatizar y supervisar el flujo de los datos que llega a Learn tal como los presenta la integración. Hay dos recursos nuevos 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:

    Success: Feed File Uploaded. Use the reference code afc3d6e84df84f51944a06cccee8f59a to track these records in the logs.

  2. Se agregó una nueva URL de estado del conjunto de datos. Cuando se comunica con el ID de proceso del conjunto de datos, la URL devuelve un bloque XML que incluye detalles específicos relacionados con el estado del conjunto de datos. Tenga en cuenta que es posible que esto suceda después de que la operación del método POST para el archivo de datos original se haya completado.

    https:// ... /webapps/bb-data-integration-flatfile-[YOUR ID]/endpoint/dataSetStatus/afc3d6e84df84f51944a06cccee8f59a

    que devuelve:

    <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>

    Obtenga más información sobre los identificadores de base de datos en las implementaciones de SaaS

Estas adiciones facilitan la supervisión por secuencias de comandos de las integraciones automatizadas de los archivos 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 escribieron para una plataforma de UNIX o Linux con el uso de 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, ejecutar consultas de bases de datos y enviar correos electrónicos. 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 la eliminación de los comentarios del código para que pueda utilizarse en entornos alojados en el servidor del usuario final. 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

Automatice el procesamiento de los informes de correo electrónico y los 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 la fuente de datos y los objetos, así como presentar los datos en Learn. Los archivos procesados 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 los archivos de texto formateados del archivo de instantánea sin formato para los objetos de Learn, como los usuarios, los cursos, las inscripciones y las 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 en función de la jerarquía del objeto: usuarios, cursos, asociaciones
  6. La secuencia de comandos sis_snpshtFF_manual usa el método POST para enviar los datos a Learn 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 en busca de 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 del procesamiento añadida al nombre de archivo original. Los administradores configurados en la secuencia de comandos reciben correos electrónicos del estado por archivo procesado y un correo de estado global que informa sobre la tarea de procesamiento completa.


La solución

Además de los archivos de datos que genera SIS, que están fuera del alcance de este documento, hay tres componentes del problema de la automatización:

  • "Cuándo": determina el momento en el que se ejecuta el procesamiento de los datos proporcionados.
  • "Qué": qué objetos de datos y orígenes de datos abarcan dichos datos proporcionados.
  • "Cómo": la manera de procesar y supervisar esos 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.

En las secciones siguientes se abarcan estos tres componentes. 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 se ha comentado ampliamente, por lo que no se incluirá aquí. En cambio, nos centraremos en los detalles generales del flujo y el procesamiento

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

Sobre la base del 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 los usuarios, luego los cursos y después las 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 en el que se indica el resultado acumulativo de la llamada a la secuencia de comandos de automatización.

"Qué": 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, analiza el encabezado de los datos del archivo para determinar el tipo de objeto al que se hace referencia y 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 permite un único punto de descarga para los archivos sin formato generados por SIS.

Después de que todos los archivos se hayan analizado y agrupado en listas de tipos de objetos, se procesan estas listas en el orden lógico de usuarios, cursos y asociaciones. Cada archivo se envía a la secuencia de comandos sis_snpshtFF_manual para su procesamiento, que también se puede ejecutar desde la línea de comandos, junto con los argumentos correspondientes para cada tipo de objeto. La secuencia de comandos sis_snpshtFF_manual toma los argumentos entrantes y usa la URL apropiada para publicar el archivo de datos en Learn por el método POST. Una vez completada, la secuencia de comandos introduce una repetición de monitoreo y, luego, crea un informe y lo envía por correo electrónico a la lista de destinatarios configurada. El archivo se devuelve a la secuencia de comandos sis_snpsht_auto, la cual envía el próximo archivo para procesar. Este proceso se repite hasta finalizar con el último archivo. Cuando se han procesado todos los archivos, sis_snpshtFF_auto envía un informe final por correo electrónico a la lista de destinatarios configurada.

"Cuándo": usar CRON para programar instantáneas

El objetivo 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. El proceso CRON verifica periódicamente el crontab del sistema, un archivo del sistema que incluye una lista de los comandos y las configuraciones del momento en el que se deben ejecutar. Se analiza cuándo se deben ejecutar las entradas (ahora o más adelante) según lo indicado en la entrada 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 de crontab

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

CampoDescripciónValor permitido
MINCampo de minutos0 a 59
HOURCampo de hora0 a 23
DOMDía del mes1 a 31
LUNCampo de mes1 a 12
DOWDía de la semana0 a 6
CMDComandoCualquier comando que se quiera ejecutar.

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

Ejemplos:

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

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

Más información sobre CRON

También puede ver la página del manual de su sistema a través de la línea de comandos con el comando $ 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.

  1. 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.

  2. 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:

    [email protected]$ crontab -e

  3. Escriba i para acceder al modo de edición, a continuación escriba:

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

  4. Presione la tecla Escape para salir del modo de edición.
  5. Escriba :wq para guardar la edición y salir del editor.

Referencias

Las personas a continuación colaboraron con ideas, aportaciones y sugerencias para la implementación de referencia BASH:

Kelt Dockins colaboró con su implementación basada en BASH para el análisis de contenido del archivo de instantánea sin formato (ya no se encuentra disponible en línea).

Ross Brown y Jerald Todd detectaron algunos problemas iniciales en la primera versión de la implementación de referencia.


Archivos

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


Más información

Descripción general del marco de trabajo SIS

Descripción general de la clave de origen de datos