BPM

Iniciar um processo via LSP (G5)

803 views 17/12/2018 14/08/2020 daniel-huebes 5

Imagine que a partir de um evento ocorrido no sistema G5, seja necessário iniciar um processo no BPM.
Este evento pode ser por exemplo, alteração de cargo de um colaborador, desligamento, entre outros.
Identificando o evento que deseja-se iniciar o processo do BPM, é possível executar uma regra LSP e iniciar o processo.

Segue abaixo um exemplo de regra LSP com essa finalidade.
É importante se atentar aos itens destacados em negrito.

@ ############################################################### @
@ Iniciar processo BPM @
@ ############################################################### @

Definir Alfa vHTTP;
Definir Alfa xRetornoLogin;
Definir Alfa xRetornoProcessVersion;
Definir Alfa xRetornoStartProcess;
Definir Alfa xRetornoFormECM;
Definir Alfa xRetornoInstanceID;
Definir Alfa vData;
Definir Alfa xToken;
Definir Alfa xBearerToken;
Definir Alfa xProcessVersion;
Definir Alfa xInstanceID;

vData = “{\”username\”: \”usuario@tenant.com.br\”, \”password\”: \”XXXXXXX\”, \”escopo\”: \”string\”}”;
HttpObjeto(vHTTP);
HttpDesabilitaErroResposta(vHTTP);
HttpAlteraCabecalhoRequisicao(vHTTP, “Content-Type”, “application/json”);

HttpPost(vHTTP, “https://platform.senior.com.br/t/senior.com.br/bridge/1.0/rest/platform/authentication/actions/login”, vData, xRetornoLogin);
HttpLeCodigoResposta(vHTTP, vCodigo);
Se ((vCodigo <> 200) e (vCodigo <> 204)){
  Mensagem(Erro, “Não foi possível efetuar login no Senior-X para solicitar a leitura da nova descrição do cargo”);
}

@ COPIA TOKEN DO JSON DE RETORNO @
PosicaoAlfa(“access_token”, xRetornoLogin, xPOS);
xPOS = xPOS + 17;
CopiarAlfa(xRetornoLogin, xPOS, 32);
xToken = xRetornoLogin;

vData = “{\”processId\”: 63}”; @ ESSE ID VAI MUDAR PARA CADA PROCESSO @
xBearerToken = “Bearer ” + xToken;
HttpAlteraCabecalhoRequisicao(vHTTP, “Authorization”, xBearerToken);
HttpPost(vHTTP, “https://platform.senior.com.br/t/senior.com.br/bridge/1.0/rest/platform/workflow/queries/getContextVariableByProcess”, vData, xRetornoProcessVersion);
HttpLeCodigoResposta(vHTTP, vCodigo);
Se ((vCodigo <> 200) e (vCodigo <> 204)){
  Mensagem(Erro, “Não foi possível iniciar o processo para solicitar a leitura da nova descrição do cargo”);
}
PosicaoAlfa(“processVersion”, xRetornoProcessVersion, xPOSProcessVersion);
xPOS = xPOSProcessVersion + 16;
CopiarAlfa(xRetornoProcessVersion, xPOS, 10);
PosicaoAlfa(“,”, xRetornoProcessVersion, xPOSVirgula);
CopiarAlfa(xRetornoProcessVersion, 0, xPOSVirgula-1);
xProcessVersion = xRetornoProcessVersion;

vData = “”;
HttpPost(vHTTP, “https://platform.senior.com.br/t/senior.com.br/bridge/1.0/rest/platform/workflow/queries/getNextProcessInstanceId”, vData, xRetornoInstanceID);
HttpLeCodigoResposta(vHTTP, vCodigo);
Se ((vCodigo <> 200) e (vCodigo <> 204)){
  Mensagem(Erro, “Não foi possível iniciar o processo para solicitar a leitura da nova descrição do cargo”);
}
PosicaoAlfa(“:”, xRetornoInstanceID, xPOSInstanceID);
xPOS = xPOSInstanceID + 1;
PosicaoAlfa(“}”, xRetornoInstanceID, xPOSInstanceID);
xCountNumero = xPOSInstanceID – xPOS;
CopiarAlfa(xRetornoInstanceID, xPOS, xCountNumero);

AlfaParaInt(xRetornoInstanceID, xNum);
xNum = xNum + 1;
IntParaAlfa(xNum, xInstanceID);

Definir Alfa xDatHisAlfa;
ConverteMascara(3, xDatHis, xDatHisAlfa, “dd/MM/yyyy”);
Definir Alfa xBusinessData;

Definir Alfa xNumEmpAlfa;
IntParaAlfa(xNumEmp, xNumEmpAlfa);
Definir Alfa xTipColAlfa;
IntParaAlfa(xTipCol, xTipColAlfa);
Definir Alfa xNumCadAlfa;
IntParaAlfa(xNumCad, xNumCadAlfa);

@ AQUI DEVEM SER ADICIONADOS OS CAMPOS DO FORMULÁRIO @
xBusinessData = “{\”colaborador\”: \”” + xNomFun + “\”, \”usuario\”: \”” + xNomUsu + “\”, \
   \”empresa\”: ” + xNumEmpAlfa + “, \”tipo_colaborador\”: ” + xTipColAlfa + “, \
   \”cadastro_colaborador\”: ” + xNumCadAlfa + “, \”titulo_do_cargo\”: \”” + xDesRed + “\”, \
   \”data_revisao\”: \”” + xDatHisAlfa + “\”, \”descricao_do_cargo\”: \”” + xTexIte + “\”, \
   \”processinstanceid\”: ” + xInstanceID + “}”;

@ O processId VAI MUDAR PARA CADA PROCESSO @
vData = “{\”processInstanceID\”: ” + xInstanceID + “, \”processId\”: \”63\”, \”processVersion\”: \”” + xProcessVersion+ “\”, \”authorization\”: \”Bearer ” + xToken + “\”, \
   \”businessData\”: \”{\\\”root\\\”: {\\\”colaborador\\\”: \\\”nome.colaborador\\\”, \\\”usuario\\\”:\\\”nome.usuario\\\”}}\”, \
   \”flowExecutionData\”:{\”actionToExecute\”:\”Aprovação\”}}”;

@ Salvo os dados do xBusinessData em um formulário ECM do BPM @
HttpPost(vHTTP, “https://platform.senior.com.br/t/senior.com.br/bridge/odata/platform/ecm_form/descricao_de_cargo”, xBusinessData, xRetornoFormECM);
HttpLeCodigoResposta(vHTTP, vCodigo);
Se ((vCodigo <> 200) e (vCodigo <> 204)){
  Mensagem(Erro, “Não foi possível iniciar o processo para solicitar a leitura da nova descrição do cargo”);
}

@ Inicio o processo @
HttpPost(vHTTP, “https://platform.senior.com.br/t/senior.com.br/bridge/1.0/rest/platform/workflow/actions/startProcess”, vData, xRetornoStartProcess);
HttpLeCodigoResposta(vHTTP, vCodigo);
Se ((vCodigo <> 200) e (vCodigo <> 204)){
  Mensagem(Erro, “Não foi possível iniciar o processo para solicitar a leitura da nova descrição do cargo”);
}

Este artigo foi útil para você?