Caso de uso do Bridge: conectar-se a bancos de dados remotos usando o Bridge

Caso de uso do Bridge: conectar-se a bancos de dados remotos usando o Bridge

A maioria das organizações protege seus bancos de dados remotos usando firewalls. Se você estiver procurando uma maneira de navegar por esses firewalls para acessar bancos de dados remotos, o Bridge pode ser útil. 

Vamos tentar resolver um caso de negócios em tempo real em que o Bridge é usado para acessar um banco de dados MySQL dentro de uma rede privada. 

Cenário de negócios

A Zylker Corp mantém todos os seus dados em um banco de dados MySQL dentro de sua rede privada segura. Eles usam Qntrl para automatizar diferentes fluxos de trabalho. Em um desses fluxos de trabalho, Aprovação de licença, eles procuram obter o saldo de licença restante dos funcionários para o ano atual e exibi-lo no Qntrl. Se o saldo de licenças for suficiente, o cartão será enviado ao gerente do funcionário para aprovação. Caso contrário, se o saldo de licenças for nulo ou menor do que o número solicitado de licenças, o cartão deverá ser rejeitado automaticamente.
 
Além disso, uma vez que a licença é aprovada no Qntrl, o saldo restante da licença também deve ser atualizado no banco de dados MySQL do cliente, mantendo assim dados uniformes durante todo o processo.
 

Solução

Esse caso de negócios pode ser resolvido usando a combinação de Bridge e função personalizada.
 

Etapa 1: configurar Bridge

O Bridge é um aplicativo java instalável que é executado na rede local do cliente para facilitar a comunicação entre a instância do Qntrl e o aplicativo do cliente dentro do firewall.
 
Crie um Bridge e configure o agente do Bridge a partir da máquina do Windows ou do Linux. Conheça o processo passo a passo para executar um Bridge a partir de nossa documentação de ajuda.
 

Etapa 2: criar mensagens no Bridge

Crie 2 mensagens no Bridge para manter detalhes básicos, como módulo usado, consulta de banco de dados, valores de bridge etc. Posteriormente, usaremos essas mensagens para nos comunicar com o banco de dados.
 
Mensagem 1: buscar detalhes do funcionário


Mensagem 2: atualizar as licenças restantes


Etapa 3 - criar uma função personalizada

Codifique as funções personalizadas para
  1. Buscar dados do servidor MySQL e

  2. Atualizar dados no servidor MySQL


Aqui está o código de exemplo para buscar detalhes do funcionário do banco de dados SQL:
  1. //Fetching selected employee details from local database
  2. params = Map();
  3. data = '{"task_name": "db_task","credential": {"name": "mssql1"},"task_details": {"database": "Employee","db_query": 
  4. "SELECT * FROM Employee where Employee_id =' + "'" + emp_id + "'" + '","port": 1433,"query_timeout": 10000,"host": 
  5. "localhost","sql_type": 3,"connection_timeout": 10000,"allow_multiple_columns": true}}';
  6. params.put("data",data);
  7. resp = invokeurl
  8. [
  9.  url :" https://core.qntrl.com/blueprint/api/spacebugs/message/2403000000770088"
  10.  type :POST
  11.  parameters:params
  12.  connection:"<connection_name>"
  13. ];
  14. info resp;
  15. response = resp.get("response_to").getJSON("results");
  16. //Updating employee details in the current job
  17. if(response != null)
  18. {
  19.  d = response.get(0);
  20.  job_params = Map();
  21.  name = d.get(1);
  22.  job_params.put("customfield_shorttext24",name);
  23.  email = d.get(2);
  24.  job_params.put("customfield_shorttext26",email);
  25.  remaining_leaves = toNumber(d.get(3));
  26.  job_params.put("customfield_integer10",remaining_leaves);
  27.  r = invokeurl
  28.  [
  29.   url :" https://core.qntrl.com/blueprint/api/spacebugs/job/" + job_id
  30.   type :POST
  31.   parameters:job_params
  32.   connection:"<connection_name>"
  33.  ];
  34.  //check for leave count. if leave count exceeds available leaves then 'Rejected' transition will be performed.
  35.  leave_days = daysBetween(from_date,to_date);
  36.  if(leave_days > remaining_leaves)
  37.  {
  38.   trans_params = Map();
  39.   trans_params.put("transition_id","2403000000763175");
  40.   trans_params.put("is_form","true");
  41.   trans_params.put("content","Leave count exceeded.");
  42.   r = invokeurl
  43.   [
  44.    url :" https://core.qntrl.com/blueprint/api/spacebugs/job/transition/" + job_id
  45.    type :POST
  46.    parameters:trans_params
  47.    connection:"<connection_name>"
  48.   ];
  49.  }
  50. }

Aqui está o código de exemplo para atualizar os detalhes do funcionário no banco de dados SQL:

  1. leave_days = daysBetween(from_date,to_date);
  2. remaining_days = remaining_leaves.toLong() - leave_days +1;
  3. params = Map();
  4. data = '{"task_name": "db_dml_task","credential": {"name": "mssql1"},"task_details": {"database": "Employee","db_query": {"update":["UPDATE Employee set Remaining_leaves = ' + "'" + remaining_days + "'" + ' where Employee_id =' + "'" + emp_id + "'" + '"]},"port": 1433,"query_timeout": 10000,"host": "localhost","sql_type": 3,"connection_timeout": 10000}}';
  5. params.put("data",data);
  6. resp = invokeurl
  7. [
  8. //Upadte org name and message ID here
  9. url :" https://core.qntrl.com/blueprint/api/<org-name>/message/<message_ID>"
  10. type :POST
  11. parameters:params
  12. connection:"<connection_name>"
  13. ];
  14. info resp;
  15. job_params = Map();
  16. job_params.put("<parameter-for-custom-field-remaining leaves>",remaining_days);
  17. r = invokeurl
  18. [
  19. //Upadte org name here
  20. url :" https://core.qntrl.com/blueprint/api/<org-name>/job/" + job_id
  21. type :POST
  22. parameters:job_params
  23. connection:"<connection_name>"
  24. ];
  25. info r;

Ao criar uma conexão, use os seguintes escopos:
  1. Orchestly.job.ALL
  2. Orchestly.message.CREATE
  3. Orchestly.message.UPDATE

Etapa 4: criar um cartão na orquestração de solicitação de licença

Este é o formulário de solicitação de licença criado pela Zylker.



O cartão Leave Request (Solicitação de licença) contém campos como "Employee ID" (ID do funcionário), "Date from" (Data de), "Date to" (Data até) e "Reason for leave" (Motivo da licença). Quando o ID funcionário é preenchida, outros detalhes do funcionário são extraídos automaticamente do banco de dados.
 
Ao preencher os campos "Data de" e "Data até", a diferença entre eles é calculada e validada com o campo "Licenças restantes". Se a diferença for menor ou igual às licenças restantes, o cartão será enviado ao gerente para aprovação. Caso contrário, o cartão será rejeitado automaticamente.



Depois que o gerente aprova o cartão, o campo Licenças restantes é atualizado e, além disso, a segunda função personalizada é acionada para atualizar o mesmo valor no banco de dados do cliente.