...
O fluxo de contingência é criado anexando um evento intermediário de captura de erro à atividade de serviço (o evento deve ser colocado em cima da atividade). Esse fluxo de saída será utilizando quando todas as tentativas de integração falharem.
** imagem de uma modelagem básica de uma tarefa de serviço do tipo Automática. **
| Painel |
|---|
|
| Estado |
|---|
| |
|---|
| subtle | true |
|---|
| title | Exemplo de uso |
|---|
|
Em um processo de Xxxxxxxxxxxx
|
...
| Painel |
|---|
|
| Estado |
|---|
| |
|---|
| subtle | true |
|---|
| title | Exemplo de uso |
|---|
|
Em um processo de Aprovação de contrato, o solicitante preenche um formulário solicitando a criação do contrato com informações como o nome do fornecedor, o tipo e o número do contrato, a validade do contrato, dentre outras. Em seguida, o contrato passa por algumas etapas de aprovação e, depois de aprovado, precisa ser armazenado no recurso Documentos. É nesse ponto que pode ser incluído o componente atividade de serviço, para que uma pasta seja criada automaticamente para armazenar o contrato e os documentos relacionados.
Desta forma, quando a última etapa de aprovação for concluída, a solicitação seguirá para uma atividade de serviço que, utilizando as APIs da plataforma, criará a pasta no recurso Documentos com base nas informações fornecidas e nas permissões de acesso definidas no formulário, garantindo que a pasta será única para cada contrato. Um exemplo de código que poderia ser utilizado como script na atividade de serviço é: | Nota |
|---|
| Esse é um exemplo que fica disponível no repositório SAMPLES e, por isso, ele pode ser atualizado lá a qualquer momento. Para ver sua versão mais recente e sempre atualizada, acesso-o a partir do repositório clicando aqui. |
| Bloco de código |
|---|
| function servicetask9(attempt, message) {
//Variáveis globais com os dados do formulário
var FOLDER_NAME = hAPI.getCardValue("txtFolderName");
var PARENT_FOLDER_CODE = hAPI.getCardValue("txtFolderCode");
var GROUP_CODE = hAPI.getCardValue("txtGroupCode");
var INHERIT_SECURITY = hAPI.getCardValue("cbxInheritSecurity") == "true";
//Tipo de documento pasta
var DOCUMENT_TYPE_FOLDER = "1";
//Usuário logado
var USER_LOGGED = getValue("WKUser");
//Número da solicitação para comentário uso na descrição da pasta criada
var REQUEST_NUMBER = getValue("WKNumProces");
// Descrição da pasta criada
var ADDITIONAL_COMMENTS = "This folder was created automatically from fluig BPM - request ";
//Atribuições de segurança
var USER_ATTRIBUTION_TYPE = 1;
var GROUP_ATTRIBUTION_TYPE = 2;
var ALL_USER_ATTRIBUTION_TYPE = 3;
//Níveis de segurança
var READING = 0;
var RECORDING = 1;
var MODIFICATION = 2;
var ALL = 3;
try {
//Instancia um novo documento e define as propriedades básicas
var dto = docAPI.newDocumentDto();
dto.setDocumentDescription(FOLDER_NAME);
dto.setAdditionalComments(ADDITIONAL_COMMENTS + REQUEST_NUMBER);
dto.setDocumentType(DOCUMENT_TYPE_FOLDER);
dto.setParentDocumentId(parseInt(PARENT_FOLDER_CODE));
dto.setInheritSecurity(INHERIT_SECURITY);
/*
Como é possível definir várias permissões, é necessário criar um array com todas as permissões
que serão aplicadas. Cada item do array é uma permissão ou restrição
*/
var dtosSecurity = new Array();
//Definindo permissão total para grupo
var dtoGroupSecurity = docAPI.newDocumentSecurityConfigDto();
dtoGroupSecurity.setAttributionType(GROUP_ATTRIBUTION_TYPE);
dtoGroupSecurity.setAttributionValue(GROUP_CODE);
dtoGroupSecurity.setPermission(true);
dtoGroupSecurity.setShowContent(true);
dtoGroupSecurity.setSecurityLevel(ALL);
//Definindo permissão total para usuário
var dtoUserSecurity = docAPI.newDocumentSecurityConfigDto();
dtoUserSecurity.setAttributionType(USER_ATTRIBUTION_TYPE);
dtoUserSecurity.setAttributionValue(USER_LOGGED);
dtoUserSecurity.setPermission(true);
dtoUserSecurity.setShowContent(true);
dtoUserSecurity.setSecurityLevel(ALL);
//Definindo permissão de modificação para todos os usuários
var dtoAllUsersSecurity = docAPI.newDocumentSecurityConfigDto();
dtoAllUsersSecurity.setAttributionType(ALL_USER_ATTRIBUTION_TYPE);
dtoAllUsersSecurity.setAttributionValue(""); //Para todos os usuários deve-se passar vazio
dtoAllUsersSecurity.setPermission(true);
dtoAllUsersSecurity.setShowContent(true);
dtoAllUsersSecurity.setSecurityLevel(MODIFICATION);
//Definindo restrição para usuário
var dtoGroupRestrictionSecurity = docAPI.newDocumentSecurityConfigDto();
dtoGroupRestrictionSecurity.setAttributionType(GROUP_ATTRIBUTION_TYPE);
dtoGroupRestrictionSecurity.setAttributionValue(GROUP_CODE);
dtoGroupRestrictionSecurity.setPermission(false);
dtoGroupRestrictionSecurity.setShowContent(true);
dtoGroupRestrictionSecurity.setSecurityLevel(MODIFICATION);
//Definindo restrição para todos os usuários
var dtoAllUsersRestrictionSecurity = docAPI.newDocumentSecurityConfigDto();
dtoAllUsersRestrictionSecurity.setAttributionType(ALL_USER_ATTRIBUTION_TYPE);
dtoAllUsersRestrictionSecurity.setAttributionValue("");
dtoAllUsersRestrictionSecurity.setPermission(true);
dtoAllUsersRestrictionSecurity.setShowContent(true);
dtoAllUsersRestrictionSecurity.setSecurityLevel(RECORDING);
//Adicionando permissões no array de segurança
dtosSecurity.push(dtoGroupSecurity);
dtosSecurity.push(dtoUserSecurity);
dtosSecurity.push(dtoAllUsersSecurity);
//Adicionando restrições no array de segurança
dtosSecurity.push(dtoGroupRestrictionSecurity);
dtosSecurity.push(dtoAllUsersRestrictionSecurity);
var FOLDER = docAPI.createFolder(dto, dtosSecurity, null);
log.info("Folder successfully createad: ID :" + FOLDER.getDocumentId());
} catch (e) {
log.error("Could not create folder: \n" + e);
}
} |
** imagem ** |
Configurar componente Atividade de serviço – Rest
01. No diagrama do processo, clique no componente Atividade de serviço
Image Removed que deseja configurar com um serviço do tipo Rest.
...
No contexto do componente Atividade de serviço, os headers (cabeçalhos) geralmente representam informações adicionais ou metadados que são enviadas junto com a requisição de um serviço. Eles são usados para fornecer contexto ou parâmetros extras que o serviço ou a operação que está sendo chamada pode precisar para processar a requisição.
Esses headers podem ser usados para várias finalidades, dependendo do tipo de serviço e da operação. Alguns exemplos típicos de headers são:
Autenticação e autorização: pode ser um token de autenticação, uma chave de API ou credenciais de um usuário.
| Painel |
|---|
|
Chave: Authorization Valor: Bearer token_de_acesso |
Informações de rastreio: dados sobre a requisição que podem ser usados para monitoramento ou rastreamento da chamada do serviço.
| Painel |
|---|
|
Chave: X-Request-ID Valor: 12345 |
Informações de contexto: dados que definem o contexto da requisição, tais como o idioma, a localidade ou a versão da API.
| Painel |
|---|
|
Chave: Accept-Language Valor: pt-BR |
Formato dos dados: definição sobre como os dados devem ser interpretados ou enviados, como o tipo de conteúdo (Content-Type) ou a versão da API.
| Painel |
|---|
|
Chave: Content-Type Valor: application/json |
Os headers são frequentemente usados em chamadas de APIs REST ou SOAP e permitem adicionar informações cruciais para a comunicação entre sistemas. Cada chave/valor tem um propósito específico e a definição correta desses headers pode ser fundamental para o sucesso da integração com o serviço. Eles são importantes porque permitem personalizar ou configurar as requisições e, muitas vezes, podem ser obrigatórios para que o serviço funcione corretamente.
Configurar componente Atividade de serviço – Rest
...
01. No diagrama do processo, clique no componente Atividade de serviço
Image Added que deseja configurar com um serviço do tipo Rest.
| Painel |
|---|
| Painel |
|---|
| borderColor | #f2f2f2 |
|---|
| bgColor | #f2f2f2 |
|---|
|
As configurações disponíveis são exibidas na lateral direita. |
...
| Painel |
|---|
| borderColor | #f2f2f2 |
|---|
| bgColor | #f2f2f2 |
|---|
|
Título Nome da etapa que representa uma consulta de dados de um serviço externo. O nome também pode ser alterado diretamente no componente, clicando sobre seu nome atual e depois em Editar – localizado no lado direito. | Painel |
|---|
| | Estado |
|---|
| |
|---|
| subtle | true |
|---|
| title | Exemplo de uso |
|---|
|
Em um processo de Aprovação de contrato, o componente poderia receber o nome Criar pasta, visto que ele servirá para criar uma pasta específica para armazenar esse contrato no recurso Documentos.
|
Selecione o serviço Serviço que será utilizado para fazer a consulta de dados externos. É possível selecionar serviços do tipo Rest que já existem no recurso Serviços do Painel de controle. Tipo de execução Forma como a consulta aos dados requisição do serviço externo será executada. As opções disponíveis são: - Automatizado: a consulta aos dados requisição é executada de forma assíncrona. Deve ser utilizado quando a execução não necessita de um retorno imediato sobre a operação ter sido ou não executada com êxito;
Tentativas Número de vezes que o componente deve tentar executar o script antes que seja encaminhado para o evento intermediário de captura de erro. Esse campo somente é exibido ao selecionar o tipo de execução Automatizado. A cada Intervalo que o componente deve considerar entre uma tentativa e outra de execução. Esse campo somente é exibido ao selecionar o tipo de execução Automatizado. Frequência Unidade de tempo que o componente deve considerar para fazer os intervalos e as tentativas de execução. Esse campo somente é exibido ao selecionar o tipo de execução Automatizado. As opções disponíveis são: | Painel |
|---|
| | Estado |
|---|
| |
|---|
| subtle | true |
|---|
| title | Exemplo de configuração de tentativas |
|---|
|
→ O componente deve tentar executar o script por 10 vezes, tentando 1 vez a cada hora. Sendo assim, a configuração deve ser feita como:
| Tentativas | A cada | Frequência |
|---|
| 10 | 1 | Hora |
|
Mensagem Mensagem que será exibida na conclusão da execução do script de consulta ao serviço. |
...
| Painel |
|---|
| borderColor | #f2f2f2 |
|---|
| bgColor | #f2f2f2 |
|---|
|
Selecione a ação (operação) Método correspondente à ação que será feita a partir da integração com o serviço selecionado. Defina o tempo de resposta Tempo que a requisição pode aguardar para obter resposta do serviço selecionado. Ativar conexão segura (SSL) Quando ativada, determina que a comunicação com o serviço será segura e evitará que terceiros acessem os dados trocados durante a integração. |
0605. Em Header, clique em Adicionar header para adicionar as informações necessárias adicionar parâmetros adicionais à requisição do serviço.
| Painel |
|---|
| borderColor | #f2f2f2 |
|---|
| bgColor | #f2f2f2 |
|---|
|
Os headers ou cabeçalhos são informações adicionais ou metadados que são enviados juntos com a requisição do serviço para que a integração funcione corretamente. Mais detalhes e exemplos podem ser obtidos em Headers. |
06. Insira os dados necessários para cada parâmetro.
| Painel |
|---|
| borderColor | #f2f2f2 |
|---|
| bgColor | #f2f2f2 |
|---|
|
Chave Chave de identificação do headerparâmetro. Valor Valor atribuído à chave do headerque deve ser atribuído ao parâmetro. | Painel |
|---|
| Chave: Content-Type Valor: application/json |
Veja mais exemplos em Headers. |
07. Xxxxxxxxxxxxxxx
| Painel |
|---|
| borderColor | #f2f2f2 |
|---|
| bgColor | #f2f2f2 |
|---|
|
|
...