Um tutorial simples está disponível no nosso GitHub, a ideia deste repositório é indicar os primeiros passos para criação de um aplicativo e suas principais funcionalidades. Através dos commits do repositório é possível verificar como as funcionalidades foram desenvolvidas e liberadas.
Neste tutorial estamos usando o Laravel 5.7 e recomendamos a sua utilização no desenvolvimento de aplicativos. Lembrando como trata-se de um aplicativo externo não existe exigência das tecnologias usadas apenas que a comunicação deve ser via API REST.
No primeiro commit é feito apenas a instalação da framework. No segundo o pacote engine-laravel-helper é instalado, este pacote possui uma série de funcionalidades que auxiliam na integração. O terceiro commit instala o pacote engine-phpsdk que também possui funcionalidade para auxiliar no processo de integração.
Genesis
O processo de Genesis acontece quando a aplicação solicita que um novo acesso seja criado no aplicativo. Esse processo inicia quando a aplicação envia um POST para o aplicativo com a informação do novo acesso, o pacote instalado na framework já lida com o cadastro inicial.
Observa-se aqui que algumas rotas são tratadas pelo pacote, entre elas a responsável pelo Genesis. Após o pacote finalizar o processo um evento é disparado, este pode ser "ouvido" por listeners do aplicativo. O evento disparado é Betalabs\LaravelHelper\Events\GenesisCompleted e um exemplo de aplicação pode ser conferido aqui.
Neste commit também é possível observar exemplos de criação de workflows e campos extras durante o genesis.
Controller
O commit seguinte cria uma rota e um controller para essa rota. Note que, no controller, é necessário autenticar o usuário. A autenticação acontece utilizando o model de Tenant que é autenticável. Neste exemplo a autenticação acontece direto no controller mas nada impede que seja feita no middleware ou em outro ponto da execução.
Ainda neste exemplo é feita uma requisição GET para a aplicação.
Model
Um exemplo de model pode ser encontrado neste commit, no caso a tabela do banco de dados possui uma coluna que indica que o registro é relacionado àquele tenant. Para facilitar a manipulação dos dados um escopo global é associado ao model, assim apenas os registros daquele tenant serão retornados. Ainda assim, em todas as operações de escrita é necessário informar o tenant.
A forma apresentada é apenas um exemplo, o desenvolvedor pode utilizar a abordagem que preferir.
Gerenciamento do repositório
O repositório possui integração com um Continuous Integration, assim toda a vez que um commit for disponibilizado os testes automáticos serão executados. Perceba que, na página de branches, existem os "checks" verdes indicando que os testes naquele branch foram executados com sucesso.
Além disso o branch master é protegido e só pode ser atualizado a partir de um pull request que seja aprovado por algum membro do repositório e rode todos os testes com sucesso. Um exemplo pode ser visto aqui, onde os testes automatizados passaram mas ainda não teve aprovação de nenhum membro assim o merge no master está travado.
Comentários
0 comentário
Por favor, entre para comentar.