Os tradutores do LIS são uma forma de traduzir solicitações do LIS em solicitações genéricas do IPSIS. Isso permite que o IPSIS use sempre um idioma comum para se comunicar com o Brightspace, em vez de fazer o LIS (e outros padrões e soluções proprietárias) interagir diretamente com o Brightspace. Isso também permite um único conjunto de manipuladores que podem ser usados independentemente da solução de integração ao SIS (LIS, SIF, proprietária).
Na maioria dos casos, uma coleção de tradutores é usada em conjunto (chamados de lista de configuração), cada um fazendo sua parte para concluir uma tarefa. Uma vez que cada tradutor faz uma pequena parte, eles podem ser facilmente configurados de diferentes maneiras para fornecer uma variedade bem flexível de alternativas, dependendo da necessidade de negócios específica da instituição.
Os tradutores são implementados usando as convenções de tradutores do LIS, o que ajuda as organizações a entender as diversas opções de tradutores disponíveis.
O adaptador do LIS define uma coleção de interfaces tradutoras que são específicas para os tipos de objetos enviados do SIS via solicitações LIS. Cada interface possui um conjunto de tradutores que implementam a interface para aplicar uma regra específica de tradução/mapeamento. Na maioria dos casos, não há muitos tradutores para escolher porque as regras de mapeamento são genéricas e reutilizáveis (por exemplo, Data de início do curso); no entanto, em outros casos, há muitos tradutores porque a mensagem do LIS contém muitos campos que podem ser apropriados para mapear para um campo do Brightspace (por exemplo, Título do curso).
As interfaces do tradutor são definidas dentro do adaptador do LIS e são usadas pelos serviços do LIS individuais. Cada uma delas tem sua própria documentação contendo descrições dos tradutores disponíveis para a interface, bem como algumas listas de configurações de modelo para os tradutores que representam cenários de configuração comuns.
Convenções de nomeação de tradutor LIS
Os nomes dos tradutores devem ser descritivos e incluir detalhes suficientes para indicar quais campos estão sendo traduzidos e também se o tradutor é obrigatório ou opcional. Na maioria dos casos, os tradutores fazem apenas a quantidade mínima de trabalho para que sejam tão reutilizáveis quanto possível.
Apenas um dos seguintes termos é usado no nome de um tradutor:
- Use Base no nome para indicar que é um tradutor de base (também implica que ele ou um tradutor de base alternativo é necessário)
- Use Obrigatório no nome dos campos obrigatórios
- Use Opcional no nome dos campos opcionais
A estrutura geral do nome de um tradutor é a seguinte:
<request name><mapped to (às vezes usado)><fields translated><base, required ou optional>Tradutor
Exemplos
- CourseSectionRequestBaseTranslator:
- Refere-se a um CourseSectionRequest.
- Esse é o Tradutor base.
- CourseSectionRequestDepartmentRequiredTranslator:
- Refere-se a um CourseSectionRequest.
- Esse tradutor tentará capturar o campo Departamento da solicitação do LIS.
- Esse é um Tradutor obrigatório (ele lançará uma exceção se o campo Departamento não foi preenchido na solicitação LIS).
- CourseSectionRequestSemesterOptionalTranslator:
- Refere-se a um CourseSectionRequest.
- Esse tradutor tentará capturar o campo Semestre da solicitação do LIS.
- Esse é um Tradutor opcional (ele não lançará uma exceção se o campo Semestre não foi preenchido na solicitação LIS).
- CourseOfferingRequestDepOrgNameOptionalTranslator:
- Refere-se a um CourseOfferingRequest.
- Esse tradutor tentará capturar o campo OrgName do solicitação do LIS e mapeá-lo para o campo Departamento no IPSIS.
- Esse é um Tradutor opcional (ele não lançará uma exceção se o campo Semestre não foi preenchido na solicitação LIS).
Convenções dos padrões de design do tradutor LIS
Os tradutores LIS seguem uma separação simples do padrão de design de preocupações. Qualquer tradutor deve apenas mapear seu campo desejado. Um tradutor que mapeia nomes não deve mapear também os endereços. A maioria das solicitações terá uma série de tradutores executados em sucessão, cada qual mapeando uma área diferente de campos. O primeiro da série é um Tradutor base que inicializa o objeto de resultado traduzido e o preenche com elementos de base da solicitação.
Os próximos tradutores devem ser Obrigatórios ou Opcionais. Isso indica se o tradutor lançará ou não um erro se um campo estiver faltando. Por exemplo, o CourseSectionRequestDepartmentRequiredTranslator retornará um erro se nenhum Departamento for transmitido na solicitação. Por outro lado, o CourseSectionRequestSemesterOptionalTranslator0 continuará se movendo apenas se nenhum Semestre for transmitido na solicitação (o campo no resultado permanece não inicializado).