O Adaptador do LIS implementa os manipuladores que são usados pelo IPSIS para iniciar chamadas para serviços do LIS hospedados pelo SIS. Cada um desses manipuladores é específico para o LIS, mas usa uma interface de manipulador da Plataforma IPSIS.
Sobre a interface IBulkCancelRequestHandler
A interface de plug-in para IBulkCancelRequestHandler é usada pelo BulkManager para suportar a produção de uma solicitação cancelBulkDataExchange ou ignoreBulkDataExchange.
A implementação da interface é D2L.IM.IPSIS.Bulk.Handlers.IBulkCancelRequestHandler.
A seguinte lista de configuração fornece um ponto de partida para qualquer implementação do LIS:
Modelo – Cancelamento em lote (LIS)
- D2L.IM.IPSIS.LIS.BDEMS.Default.CancelBulkDataExchangeHandler (Ordem de classificação = 10)
CancelBulkDataExchangeHandler
Implementação
D2L.IM.IPSIS.LIS.BDEMS.Default.CancelBulkDataExchangeHandler
Comportamento esperado
O manipulador realiza as seguintes tarefas:
- Verifica o BulkJobStatus do objeto IBulkCancelRequest para determinar se deve chamar cancelBulkDataExchange ou ignoreBulkDataExchange (via cliente proxy).
- Se (BulkRequested || BulkRequestSent), o manipulador chamará cancel. Do contrário, o manipulador chamará ignore.
- Envia a solicitação apropriada (Cancel ou Ignore).
- Verifica se a resposta é um sucesso. Se a resposta não for um sucesso, o manipulador atualiza o status do trabalho em lote para Erro.
- Remove o sistema de origem de BulkMode (configure-o como Ativado).
Sobre a interface IBulkFileProcessor
A interface de plug-in para IBulkFileProcessor é usada pelo BulkManager para analisar um arquivo em lote recebido, transmitir solicitações individuais para os adaptadores para processamento e transmitir resultados para um gerador de relatórios.
A implementação da interface é D2L.IM.IPSIS.Bulk.Handlers.IBulkFileProcessor.
A seguinte lista de configuração fornece um ponto de partida para qualquer implementação do LIS:
Modelo – Processamento de arquivo em lote (LIS)
- D2L.IM.IPSIS.LIS.BDEMS.Default.BulkFileProcessor (Ordem de classificação = 10)
BulkFileProcessor
O BulkFileProcessor analisa e processa um único arquivo de entrada, transmitindo os resultados para um gerador de relatório.
Implementação
D2L.IM.IPSIS.LIS.BDEMS.Default.BulkFileProcessor
Comportamento esperado
O manipulador realiza as seguintes tarefas:
- O BulkFileProcessor é executado depois que o arquivo é baixado localmente e é transmitido em um IBulkFileUrl com o local do arquivo.
- Se o objeto de resultado transmitido ou o ReportGenerator forem nulos, as instâncias serão criadas durante o preProcessing.
- No início do processamento, o status do arquivo é atualizado para Processando. O arquivo é analisado como um fluxo, não como um único documento XML. Não analisar todo o arquivo de uma só vez economiza memória e potência de processamento.
- Se um arquivo for processado parcialmente e um erro for descoberto, a D2L não reverterá as transações já processadas.
- Os cabeçalhos BDEMS são analisados usando código personalizado e não são gerados automaticamente.
- Uma vez identificado o tipo de transação, o corpo da transação é forçado para o namespace para a versão em tempo real e desserializado usando o código de proxy gerado automaticamente.
- A mensagem desserializada é envolvida em cabeçalhos falsos e transmitida para os adaptadores para o serviço em tempo real.
- Os resultados são transmitidos para o reportGenerator.
- O status do arquivo é atualizado para Concluído.
Comportamento de erro
- Se ocorrer um erro ao processar uma transação, usando um adaptador em tempo real:
- O código de falha é salvo normalmente no reportGenerator.
- O processamento continua com a próxima transação.
- Se ocorrer um erro no próprio FileProcessor:
- Um erro é registrado no banco de dados.
- O processador configura o status do arquivo como Falhou.
- Retorna imediatamente (com código de retorno = false), sem processar nenhuma entrada adicional.
Registro
- Log de depuração cada vez que o PreProcess criar um objeto ausente na solicitação.
- Log de depuração no início e no fim do processamento principal.
- Depure uma vez por transação.
- Logs de erro em qualquer exceção levantada durante o processamento.
Sobre a interface IBulkRequestDataHandler
A interface de plug-in para IBulkRequestDataHandler é usada pelo BulkManager para suportar a produção de uma solicitação requestBulkDataExchange.
A implementação da interface é D2L.IM.IPSIS.Bulk.Handlers.IBulkRequestDataHandler.
A seguinte lista de configuração fornece um ponto de partida para qualquer implementação do LIS:
Modelo – Solicitação em lote (LIS)
D2L.IM.IPSIS.LIS.BDEMS.Default.RequestBulkDataExchangeHandler (Ordem de classificação = 10)
RequestBulkDataExchangeHandler
Implementação
D2L.IM.IPSIS.LIS.BDEMS.Default.RequestBulkDataExchangeHandler
Comportamento esperado
O manipulador realiza as seguintes tarefas:
- Valida o ponto de extremidade e configura o cliente.
- Verifica os BulkEntityTypeFilters na solicitação de entrada e adiciona um FilterRuleType para cada um na solicitação de saída.
- Se qualquer um dos EntityTypes não coincidir com o vocabulário FilterType para o lote (consulte a especificação BDEMS para a definição de vocabulário), o manipulador lançará um KeyNotFoundException.
- Valida que o ponto de salvamento está no formato correto, conforme definido pela especificação. Todos os pontos de extremidade transmitidos devem ser idênticos e no formato "AAAA-MM-DDTHH:MM:SS.NNN". T é a letra T e NNN são os milissegundos.
- Se uma dessas condições falhar, o manipulador lançará um InvalidRequestDataException.
- Adiciona um FilterRuleType à solicitação de saída para o savepoint.
- Envia a solicitação requestBulkDataExchange usando o cliente e examina a resposta.
- Se a resposta de retorno for um sucesso, o manipulador colocará o sistema de origem em BulkMode (se ainda não estiver). Retorne true.
- Se a resposta de retorno for um erro, o manipulador removerá o sistema de origem do BulkMode. O status do trabalho é atualizado para Erro e o erro é registrado. Retorna como falso.
Sobre a interface IBulkSendReportHandler
A interface de plug-in para IBulkSendReportHandler é usada pelo BulkManager para suportar a produção de uma solicitação reportBulkDataExchange.
A implementação da interface é D2L.IM.IPSIS.Bulk.Handlers.IBulkSendReportHandler.
A seguinte lista de configuração fornece um ponto de partida para qualquer implementação do LIS:
Modelo – Relatório em lote (LIS)
- D2L.IM.IPSIS.LIS.BDEMS.Default.ReportBulkDataExchangeHandler (Ordem de classificação = 10)
ReportBulkDataExchangeHandler
Implementação
D2L.IM.IPSIS.LIS.BDEMS.Default.ReportBulkDataExchangeHandler
Comportamento esperado
O manipulador realiza as seguintes tarefas:
- Valida o ponto de extremidade e configura o cliente.
- Obtém o BulkBlockReportType do gerador de relatórios.
- Se o relatório for nulo, um relatório básico que satisfaça os requisitos mínimos para a especificação LIS será criado e usado e um erro será registrado.
- O manipulador cria o reportBulkDataExchangeRequest usando o relatório.
- O reportBulkDataExchangeRequest é enviado por meio do cliente.
- A resposta é examinada.
- Se a resposta for um sucesso, retorne true.
- Se a resposta de retorno for um erro, o status do trabalho será atualizado para Erro e o erro será registrado. Retorna como falso.
- O sistema de origem é retirado do BulkMode.
Sobre a interface IPushGradesHandler
A interface de plug-in para IPushGradesHandler é usada pelo IpsisManager para dar suporte o processo de envio de notas para um SIS usando as seguintes solicitações: replaceLineItem e replaceResultsForLineItem.
A implementação da interface é D2L.IM.IPSIS.Grades.Handlers.IPushGradesHandler.
A seguinte lista de configuração fornece um ponto de partida para qualquer implementação do LIS:
Modelo – Substituição do resultado (LIS)
D2L.IM.IPSIS.LIS.OMS.Default.ReplaceLineItemHandler (Ordem de classificação = 10)
ReplaceLineItemHandler
Implementação
D2L.IM.IPSIS.LIS.OMS.Default.ReplaceLineItemHandler
Comportamento esperado
O manipulador realiza as seguintes tarefas:
- Valida o ponto de extremidade de resultados e configura os dois clientes responsáveis pelo envio das solicitações.
- LineItemManagerSyncPortTypeClient – O ponto de extremidade Resultado deve ser usado para o LineItemManagerSyncPortTypeClient.
- ResultManagerSyncPortTypeClient – O ponto de extremidade Outcome2 deve ser usado para o ResultManagerSyncPortTypeClient.
- O manipulador obtém as informações necessárias para enviar a solicitação replaceLineItem.
- Essas informações vêm de IReplaceGradesRequest e são usadas para obter:
- lineItemSourcedId
- sisOrgUnitIdentifier
- orgUnitType (por exemplo, CourseSection)
- lineItemTypeVocabulary
- lineItemTypeLanguage
- gradeType (por exemplo, Final)
- O manipulador envia a solicitação replaceLineItem usando o LineItemManagerSyncPortTypeClient.
- O manipulador obtém o conjunto de registros de resultados usando os tradutores ITranslateReadResultIdsForLineItemWithLineItemTypeResponse e o ReadGradesResult fora do IReplaceGradesRequest.
- A solicitação replaceResultsForLineItem é enviada usando o ResultManagerSyncPortTypeClient, transmitindo o conjunto de registros de resultados obtido na etapa anterior
- O manipulador obtém os códigos de status do resultado da resposta para a solicitação replaceResultsForLineItem.
- O manipulador configura os códigos de status do resultado no IReplaceGradesResult para os códigos obtidos na etapa anterior.
- Retorna como verdadeiro.
Comportamento de erro
Se a comunicação com o SIS falhar (por exemplo, falha de rede, tempo limite etc.), o manipulador tentará novamente até três vezes. O seguinte comportamento se aplica às novas tentativas:
- Um aviso é registrado antes de tentar novamente
- Um erro será registrado se a comunicação falhar após três novas tentativas
- Um pequeno atraso é colocado entre as tentativas:
- 5 segundos na primeira vez
- 10 segundos na segunda vez
- 15 segundos na última vez
As tentativas só ocorrem em CommunicationExceptions e TimeoutExceptions. Outras exceções falham como um erro.
Caso contrário, se houver um problema durante o processamento, uma exceção será lançada, junto com o máximo possível de detalhes.