Estrutura do Código que Processa a Sincronização da Matrícula
Nesta seção, exploraremos a estrutura do código responsável pela sincronização da matrícula. O objetivo é apresentar as classes, funções e o encadeamento entre elas que realizam essa tarefa de replicação das inscrições. Para começar, será exibido o código da plataforma Badiu.Net. Em seguida, abordaremos o código da plataforma Moodle, mais especificamente a do plugin Badiu Webservice.
1 - Classe e Funções do Badiu.Net que Gerenciam Sincronização da Matrícula
Nesta parte vamos apresentar um conjunto de classes e funções, limitando as classes que são mais importantes para processar o cadastro e sincronização de matrícula. Não entraremos no detalhe de código. O foco é orientar o desenvolvimento caso seja necessário fazer alguma customização ou identificar algum ponto a ser alterado em caso de erro.
A lista a seguir apresenta as classes mais importantes para o processamento de cadastro de matrícula e sincronização:
Classe controller
-
BADIUNET_DIR_INSTALL/Badiu/Ams/OfferBundle/Model/OfferEnrolFormController.php
-
BADIUNET_DIR_INSTALL/Badiu/Ams/OfferBundle/Model/Discipline/DisciplineEnrolFormController.php
-
BADIUNET_DIR_INSTALL/Badiu/Ams/OfferBundle/Model/Classe/ClasseEnrolFormController.php
Classe de gestão do banco de dados
-
BADIUNET_DIR_INSTALL/Badiu/Ams/EnrolBundle/Model/OfferData.php
-
BADIUNET_DIR_INSTALL/Badiu/Ams/EnrolBundle/Model/DisciplineData.php
-
BADIUNET_DIR_INSTALL/Badiu/Ams/EnrolBundle/Model/ClasseData.php
Classe de gestão da lógica de negócio
-
BADIUNET_DIR_INSTALL/Badiu/Ams/EnrolBundle/Model/Lib/Offer.php
-
BADIUNET_DIR_INSTALL/Badiu/Ams/EnrolBundle/Model/Lib/Discipline.php
-
BADIUNET_DIR_INSTALL/Badiu/Ams/EnrolBundle/Model/Lib/Classe.php
-
BADIUNET_DIR_INSTALL/Badiu/Ams/EnrolBundle/Model/Lib/ManageSyncMoodle.php
-
BADIUNET_DIR_INSTALL/Badiu/Admin/ServerBundle/Model/Lib/ManageServerSyncUser.php
Os arquivos das classes estão divididos em três grupos: Controller, gestão de banco de dados e lógica de negócios. O primeiro grupo, formado pelos controladores, é responsável por receber os dados digitados nos formulários e realizar o tratamento necessário. Após isso, os dados são encaminhados para o segundo grupo, que processa a inserção no banco de dados. Em seguida, o terceiro grupo é acionado para realizar operações específicas, como a replicação de matrículas em outras instâncias e na plataforma Moodle.
Os padrões de arquivos seguem uma lógica de processamento. Para exemplificar isso, vamos utilizar arquivos e classes que realizam o processamento das turmas. Os arquivos ClasseEnrolFormController.php, ClasseData.php e Classe.php processam toda a operação, desde o controle até a utilização da biblioteca de replicação, referente às matrículas na turma. Essa mesma lógica se aplica aos demais arquivos relacionados à oferta e disciplina.
Os arquivos OfferEnrolFormController.php, DisciplineEnrolFormController.php e ClasseEnrolFormController.php são classes responsáveis por captar os dados dos formulários de cadastro de matrículas e processá-los, invocando as classes de manipulação de banco de dados, além de outras classes que executam lógicas adicionais, como a replicação de matrícula. Essas classes herdam as características da classe principal localizada em BADIUNET_DIR_INSTALL/Badiu/System/CoreBundle/Model/Functionality/BadiuFormController.php. É nessa classe principal que estão definidas as funções save e edit, responsáveis por capturar os dados dos formulários e encaminhá-los para as classes que realizam a inserção no banco de dados.
Os arquivos OfferData.php, DisciplineData.php e ClasseData.php são classes que realizam operações de manipulação do banco de dados, como inserção e edição de registros. Essas classes herdam suas configurações da classe-mãe BADIUNET_DIR_INSTALL/Badiu/System/CoreBundle/Model/Functionality/BadiuDataBase.php, que centraliza as operações de inserção e alteração de registros por meio das funções insertNativeSql e updateNativeSql. Trata-se de uma classe geral que processa operações de inserção, edição, exclusão e recuperação de registros na base de dados. Cada uma das classes filhas possui funções específicas, como existEnrol, checkStatus e getEnrolId, responsáveis, respectivamente, por verificar se a matrícula existe, checar o status e recuperar o ID de uma matrícula.
Na biblioteca de classes responsáveis por processamento lógico adicional, há dois grupos principais. O primeiro grupo realiza operações relacionadas à matrícula em trilhas, versão das disciplinas e turmas. São os arquivos Offer.php, Discipline.php e Classe.php. O segundo grupo é formado pelos arquivos que realizam a sincronização de dados com a plataforma Moodle: ManageSyncMoodle.php e ManageServerSyncUser.php.
No primeiro grupo de classes, destacam-se duas funções importantes: add e replicate. A função add faz a inserção da matrícula na base de dados definindo parâmetros específicos, enquanto a função replicate efetua a replicação da matrícula em diversas camadas, incluindo a plataforma Moodle. Essa replicação é acionada pelas classes controladoras durante o processamento de uma matrícula. A função replicate, por sua vez, invoca a classe ManageSyncMoodle.php para realizar a sincronização da matrícula, executando a função processWParmConf.
Já o arquivo da classe ManageServerSyncUser.php é acionado para replicar os usuários, pré-requisito essencial para a replicação de matrículas na plataforma Moodle. Esse processo ocorre durante a execução da função processWParmConf na classe ManageSyncMoodle.php.
2 - Classe e Funções do Moodle que Gerenciam Sincronização da Matrícula
Toda a parte lógica de replicação de matrícula na plataforma Moodle é realizada pelo plugin Badiu Webservice, um conector cuja finalidade é processar as requisições da plataforma Badiu.Net.
A classe que processa a matrícula no plugin Badiu Webservice é local_badiuws_webservice_enrol, localizada no arquivo MOODLE_DIR_INSTALL/local/badiuws/webservice/enrol/enrol.php. Nessa classe, a função add recebe a requisição, processa e devolve a resposta.
A função add utiliza a biblioteca da classe local_badiuws_lib_enrol(localizada em MOODLE_DIR_INSTALL/local/badiuws/webservice/enrol/lib/enrollib.php) para processar a inserção de dados nas tabela mdl_role_assignments e mdl_user_enrolments do banco de dados do Moodle.
O Moodle dispõe de uma API que efetua o cadastro de inscrição a partir dos parâmetros que recebe, porém esta não foi utilizada para garantir mais flexibilidade.