Entendendo a API do beneficio
Para o exemplo vamos simular um beneficio chamado “Dummy Saúde”, a Dummy Saúde possui uma API com os seguintes recursos:POST /customer/- Cria um novo clientePOST /customer/{:id}/plan- Adiciona um novo cliente no plano de saudeGET /customer/:cpf- Recupera os dados de um clienteDELETE /customer/{:id}/plan- Remove um cliente do plano de saudeDELETE /customer/{:id}- Deleta um cliente
Criando o projeto
RequerimentosNode 22
Instalação
npm i -g @benup/bensdk
Criando o projeto
ben init teste-app
Será gerado uma pasta chamada teste-app
Abra a pasta com o edito de código de sua preferencia
Definindo o beneficio
Abra o arquivobenefit-definition.ts dentro da pasta src, esse arquivo é responsavel por informar ao Integrador como seu benAPP será executado, vamos entender ele abaixo.
O benefitID é o identificador único do seu beneficio, você receberá o seu quando iniciar a integração
availableActions define quais ações o benAPP manipula, podendo ser GRANT, REVOKE, RECHARGE, como o nosso beneficio “Dummy Saúde” é um plano de saúde apenas o GRANT e o REVOKE já é o suficiente.
Configurando a máquina de estado
Um benAPP é composto por uma sequencia de funções chamada handlers que são executadas em uma ordem pré definida. Essa ordem é definida dentro dobenefit-definition.ts em um campo chamado stateMachine e é o ponto mais importante da nossa integração.
O projeto já gerou ela pra gente como está abaixo, vamos adaptar para nosso cenário:
Fluxo de GRANT
Conforme a API do nosso “Dummy Saúde” para realizar um GRANT precisamos:- Verificar se o cliente existe realizando um
GET /customer/:cpf - Caso o cliente exista encerra o fluxo.
- Caso o cliente não exista,
- Criamos um novo cliente em
POST /customer/ - Adicionamos o cliente no plano em
POST /customer/:id/plan - Encerramos o fluxo
- Criamos um novo cliente em
Fluxo de REVOKE
ParaREVOKE temos o seguinte fluxo:
- Verificar se o cliente existe realizando um
GET /customer/:cpf - Caso não exista, encerra o fluxo.
- Caso o cliente exista:
- Removemos o funcionario do plano em:
DELETE /customer/{:id}/plan - Desativamos o cliente em:
DELETE /customer/{:id} - Encerramos o fluxo
- Removemos o funcionario do plano em:
Importante Para cada requisição na API do beneficio, deve ser criado um novo estado
Desenvolvendo seu benApp
Declarando logs
Para cada estado que criamos, vamos criar um esquema de logs, os logs são importantes para auditoria, investigação de problemas e histórico.Gerando seus handlers
Agora, iremos criar uma pasta chamadahandlers dentro do src e para cada estado na maquina que não seja os iniciais e os finais iremos gerar um arquivo,
Porem não precisamos fazer isso manualmente, basta executar npm run generate na pasta raiz do nosso test-app, se o nosso benefit-definition.ts estiver configurado configurado corretamente, os arquivos serão gerados.
Primeira integração
Configurando o contexto
A primeira coisa que vamos fazer é mockar a API do nosso “Dummy Saúde”, para isso vamos abrir o arquivocontext.config.ts e colocar o seguinte trecho após a declaração do apiMocks.ts.
Importante
Caso você queria rodar em um ambiente de staging ou homologação, pode fazer isso mudando a benefitsAPI para uma instancia real do Axios.
O context.config.ts é completamente ignorado pelo Integrador, ele é nosso Playground, o Integrador irá preencher ele com informações reais
E onde está a autenticação?
A autenticação é feita pelo integrador e não precisamos nos preocupar com isso dentro de um benApp, essa etapa será feita durante a revisão do seu beneficio.Modificando o handler
Vamos começar a alterar nosso handlersync_existing_grant.handler.ts !
Vamos buscar o funcionario na API, perceba que a API do nosso beneficio “Dummy Saúde” já existe no contexto, pois o Integrador ja fez isso.
Trabalhando com contexto
O contexto são variáveis que são passadas entre a execução dos handlers. As variáveis do contexto são declaradas nobenefit-definition.ts dentro do actions vamos modificar o campo ctx adicionando o funcionarioId
request_create_employee.handler.ts
request_add_plan.handler.ts vamos precisar saber qual o ID do funcionario, como ele ja foi preenchido no step anterior, vamos apenas recuperar ele:
Testando
O projeto do benSDK ja contem uma ferramenta de desenvolvedor integrada. Para executar basta rodar o comandonpm start.
Na seção State machine, selecione GRANT e em seguida clique em run.