El Adaptador del LIS implementa controladores que el IPSIS utiliza para iniciar invocaciones a servicios del LIS alojados por el SIS. Cada uno de los controladores son específicos del LIS, pero utilizan una interfaz de controlador de la Plataforma del IPSIS.
Acerca de la interfaz IBulkCancelRequestHandler
BulkManager utiliza la interfaz de complemento para IBulkCancelRequestHandler a fin de admitir la producción de una solicitud cancelBulkDataExchange o ignoreBulkDataExchange.
La implementación de la interfaz es D2L.IM.IPSIS.Bulk.Handlers.IBulkCancelRequestHandler.
La siguiente lista de configuración ofrece un punto de partida para la implementación de LIS:
Plantilla: Cancelación por volumen (LIS)
- D2L.IM.IPSIS.LIS.BDEMS.Default.CancelBulkDataExchangeHandler (Orden de clasificación = 10)
CancelBulkDataExchangeHandler
Implementación
D2L.IM.IPSIS.LIS.BDEMS.Default.CancelBulkDataExchangeHandler
Comportamiento esperado
El controlador realiza las siguientes tareas:
- Comprueba el BulkJobStatus del objeto de IBulkCancelRequest para determinar si se debe recurrir a cancelBulkDataExchange o ignoreBulkDataExchange (a través del cliente proxy).
- Si (BulkRequested || BulkRequestSent), el controlador invoca Cancelar. De lo contrario, el controlador invoca Ignorar.
- Envía la solicitud correspondiente (Cancelar o Ignorar).
- Verifica que la respuesta sea correcta. Si la respuesta no es correcta, el controlador actualiza el estado del trabajo por volumen a Error.
- Adopta el sistema de origen de BulkMode (establecido como Habilitado).
Acerca de la interfaz IBulkFileProcessor
BulkManager usa la interfaz de complemento del IBulkFileProcessor para analizar un archivo por volumen recibido, pasar solicitudes individuales a los adaptadores para su procesamiento y pasar resultados a un generador de informes.
La implementación de la interfaz es D2L.IM.IPSIS.Bulk.Handlers.IBulkFileProcessor.
La siguiente lista de configuración ofrece un punto de partida para la implementación de LIS:
Plantilla: Procesador de archivos por volumen (LIS)
- D2L.IM.IPSIS.LIS.BDEMS.Default.BulkFileProcessor (Orden de clasificación = 10)
BulkFileProcessor
El BulkFileProcessor analiza y procesa archivos de entrada individuales y pasa los resultados a un generador de informes.
Implementación
D2L.IM.IPSIS.LIS.BDEMS.Default.BulkFileProcessor
Comportamiento esperado
El controlador realiza las siguientes tareas:
- El BulkFileProcessor se ejecuta después de que el archivo se ha descargado localmente, y se pasa en una IBulkFileUrl con la ubicación del archivo.
- Si el objeto del resultado pasado o el ReportGenerator son nulos, las instancias se crean durante el preprocesamiento.
- Al principio del proceso, el estado del archivo se actualiza a Procesamiento. El archivo se analiza como un flujo, no como un documento XML único. No analizar todo el archivo en un solo momento permite ahorrar memoria y potencia de procesamiento.
- Si un archivo se procesa parcialmente y se descubre un error, D2L no revertirá las transacciones ya procesadas.
- Los encabezados BDEMS se analizan con código personalizado y no se autogeneran.
- Una vez que se identifica el tipo de transacción, se fuerza el cuerpo de la transacción en el namespace de la versión en tiempo real y se deserializa con el código proxy autogenerado.
- El mensaje deserializado se ajusta en encabezados falsos y se pasa a los adaptadores del servicio en tiempo real.
- Los resultados se pasan al reportGenerator.
- El estado del archivo se actualiza a Completado.
Comportamiento de error
- Si se produce un error durante el procesamiento de una transacción, con un adaptador en tiempo real:
- El código de error se guarda en el reportGenerator normalmente.
- El procesamiento continúa con la transacción siguiente.
- Si se produce un error en el FileProcessor:
- Se registra un error en la base de datos.
- El procesador establece el estado del archivo como Error.
- Genera una devolución inmediatamente (con el código de retorno = false), sin procesar entradas adicionales.
Registro
- Depure el registro cada vez que PreProcess cree un objeto faltante en la solicitud.
- Depure el registro al inicio y al final del proceso principal.
- Depure una vez por transacción.
- El error se registra en cada excepción elevada durante el procesamiento.
Acerca de la interfaz IBulkRequestDataHandler
BulkManager usa la interfaz de complemento de IBulkRequestDataHandler para respaldar la generación de una solicitud requestBulkDataExchange.
La implementación de la interfaz es D2L.IM.IPSIS.Bulk.Handlers.IBulkRequestDataHandler.
La siguiente lista de configuración ofrece un punto de partida para la implementación de LIS:
Plantilla: Solicitud por volumen (LIS)
D2L.IM.IPSIS.LIS.BDEMS.Default.RequestBulkDataExchangeHandler (Orden de clasificación = 10)
RequestBulkDataExchangeHandler
Implementación
D2L.IM.IPSIS.LIS.BDEMS.Default.RequestBulkDataExchangeHandler
Comportamiento esperado
El controlador realiza las siguientes tareas:
- Valida el extremo y configura el cliente.
- Comprueba los BulkEntityTypeFilters en la solicitud entrante y agrega un FilterRuleType para cada uno en la solicitud de salida.
- Si alguno de los EntityTypes no coinciden con el vocabulario de FilterType por volumen (véase la especificación BDEMS para la definición del vocabulario), el controlador arroja una KeyNotFoundException.
- Valida que el punto de suspensión sea del formato correcto según lo que define la especificación. Todos los extremos que se pasan deben ser idénticos y tener el formato "AAAA-MM-DDTHH:MM:SS.NNN". T es la letra T y NNN, milisegundos.
- Si cualquiera de estas condiciones falla, el controlador genera una excepción InvalidRequestDataException.
- Agrega un FilterRuleType a la solicitud de salida para el punto de suspensión.
- Envía la solicitud requestBulkDataExchange utilizando el cliente y examina la respuesta.
- Si la respuesta es correcta, el controlador pone el sistema de origen en modo BulkMode (si todavía no estaba en dicho modo). Devuelve True.
- Si la respuesta es un error, el controlador desactiva el modo BulkMode del sistema de origen. El estado del trabajo se actualiza a Error y se registra el error. Devuelve false.
Acerca de la interfaz IBulkSendReportHandler
BulkManager usa la interfaz de complemento de IBulkSendReportHandler para respaldar la generación de una solicitud reportBulkDataExchange.
La implementación de la interfaz es D2L.IM.IPSIS.Bulk.Handlers.IBulkSendReportHandler.
La siguiente lista de configuración ofrece un punto de partida para la implementación de LIS:
Plantilla: Informe por volumen (LIS)
- D2L.IM.IPSIS.LIS.BDEMS.Default.ReportBulkDataExchangeHandler (Orden de clasificación = 10)
ReportBulkDataExchangeHandler
Implementación
D2L.IM.IPSIS.LIS.BDEMS.Default.ReportBulkDataExchangeHandler
Comportamiento esperado
El controlador realiza las siguientes tareas:
- Valida el extremo y configura el cliente.
- Obtiene el BulkBlockReportType desde el generador de informes.
- Si el informe es nulo, se crea y usa un informe básico que cumple con los requisitos mínimos de la especificación de LIS y se registra un error.
- El controlador crea la solicitud reportBulkDataExchangeRequest con el informe.
- La solicitud reportBulkDataExchangeRequest se envía a través del cliente.
- Se examina la respuesta.
- Si la respuesta es correcta, devuelve true.
- Si la respuesta es un error. el estado del trabajo se actualiza a Error y se registra el error. Devuelve false.
- Se desactiva el modo BulkMode en el sistema de origen.
Acerca de la interfaz IPushGradesHandler
IpsisManager usa la interfaz de complemento de IPushGradesHandler para respaldar el proceso de envío de calificaciones a un SIS con las siguientes solicitudes: replaceLineItem y replaceResultsForLineItem.
La implementación de la interfaz es D2L.IM.IPSIS.Grades.Handlers.IPushGradesHandler.
La siguiente lista de configuración ofrece un punto de partida para la implementación de LIS:
Plantilla: Reemplazo de resultados (LIS)
D2L.IM.IPSIS.LIS.OMS.Default.ReplaceLineItemHandler (Orden de clasificación = 10)
ReplaceLineItemHandler
Implementación
D2L.IM.IPSIS.LIS.OMS.Default.ReplaceLineItemHandler
Comportamiento esperado
El controlador realiza las siguientes tareas:
- Valida los extremo de resultados y configura los dos clientes responsables de enviar las solicitudes.
- LineItemManagerSyncPortTypeClient: debe utilizarse el extremo de resultados para el LineItemManagerSyncPortTypeClient.
- ResultManagerSyncPortTypeClient debe utilizarse el extremo Outcome2 en el ResultManagerSyncPortTypeClient.
- El controlador obtiene la información necesaria para enviar la solicitud replaceLineItem.
- Esta información proviene de la solicitud IReplaceGradesRequest y se utiliza para obtener:
- lineItemSourcedId
- sisOrgUnitIdentifier
- orgUnitType (p. ej., CourseSection)
- lineItemTypeVocabulary
- lineItemTypeLanguage
- gradeType (p. ej., Final)
- El controlador envía la solicitud replaceLineItem mediante LineItemManagerSyncPortTypeClient.
- El controlador obtiene el conjunto de registros de resultados con los traductores ITranslateReadResultIdsForLineItemWithLineItemTypeResponse y el ReadGradesResult desactivado de la IReplaceGradesRequest.
- La solicitud replaceResultsForLineItem se envía con el ResultManagerSyncPortTypeClient, y se pasa el conjunto de registros de resultados obtenido en la etapa anterior.
- El controlador obtiene los códigos de estado de los resultados de la respuesta a la solicitud replaceResultsForLineItem.
- El controlador establece los códigos de estado de los resultados en la IReplaceGradesResult en los códigos obtenidos durante la etapa anterior.
- Devuelve True.
Comportamiento de error
Si falla la comunicación con el SIS (p. ej., error de red, tiempo de espera, etc.), el controlador reintenta hasta tres veces. El siguiente comportamiento se aplica a los reintentos:
- Se registra una advertencia antes de un reintento.
- Se registra un error si la comunicación falla después de tres reintentos.
- Se genera una pequeña demora entre cada intento:
- 5 segundos en el primer intento;
- 10 segundos en el segundo intento;
- 15 segundos en el último intento.
Los reintentos solo se producen en CommunicationExceptions y TimeoutExceptions. Otras excepciones producen fallas como un error.
De lo contrario, si existe un problema durante el procesamiento, se arroja una excepción, junto con información lo más detallada posible.