Exemplo de como criar Workflows utilizando a nova API do SoftExpert Workflow
Este tutorial tem como objetivo fornecer uma breve demonstração de como criar um Workflow no componente SoftExpert Workflow, utilizando uma API REST. Não é um guia abrangente sobre integrações, mas sim uma ilustração prática para a criação de uma requisição.
Apresentação
Neste tutorial, iremos demonstrar como utilizar a nova API do componente
SoftExpert Workflow para criação de instâncias. Essa API foi totalmente
desenvolvida utilizando o padrão REST
, o que significa que podemos utilizá-la
para fazer requisições HTTP e obter respostas no formato JSON.
Com o uso dessa nova API, podemos facilmente automatizar o processo de criação de instâncias, o que pode ser muito útil em cenários em que precisamos criar várias instâncias de um mesmo processo de forma rápida e eficiente.
Além disso, ao utilizar uma API REST, temos a vantagem de poder integrar facilmente com outras ferramentas e sistemas, já que esse padrão é amplamente adotado na indústria de software.
URL do recurso
POST /apigateway/v1/workflow
Exemplo
Neste exemplo de criação de uma instância de Fluxo de Trabalho (Workflow), incluiremos um anexo utilizando a API genérica de upload do SoftExpert Suite.
A API de Upload do SoftExpert Suite permite importar arquivos eletrônicos de diversos tipos (como imagens, planilhas, arquivos de texto, entre outros) para serem carregados no SoftExpert Suite e, geralmente, associados a algum componente específico.
Com o objetivo de ilustrar este tutorial e utilizar as funcionalidades completas da API REST do componente SoftExpert Workflow, demonstraremos como realizar o upload do arquivo eletrônico e, posteriormente, associar seu hash à próxima solicitação.
Importando um arquivo eletrônico para API de Upload
Para importar um anexo utilizando a API de upload de arquivos, primeiro é
necessário enviar uma requisição para a URL /apigateway/v1/file/upload
. Essa
requisição deve incluir o arquivo que desejamos enviar, juntamente com alguns
metadados opcionais, como o nome do arquivo e uma descrição.
GET /apigateway/v1/file/upload
Atributos suportados:
Request Body Parameter | Tipo | Requerido | Descrição |
---|---|---|---|
file | multipart/form-data | Sim | Um único arquivo, fornecido na codificação multipart/form-data. |
Solicitação de exemplo:
curl -X POST 'https://my-domain.softexpert.com/apigateway/v1/file/upload' \
-H 'Authorization: <your_api_token>' \
-F 'file=@"/mnt/c/Users/jsilva/Downloads/DT22.PT0007 - 00 - DOCUMENTATION-2.2-PT_BR-Guia de integração.pdf"'
Após enviar a requisição, a API irá retornar um objeto JSON contendo algumas
informações importantes. Essas informações incluem uma descrição informando que
o arquivo foi enviado com sucesso, um hash
único que identifica o arquivo e o
status da operação.
Exemplo de resposta:
{
"description": "File uploaded successfully.",
"filehash": "2c9280868793d127018793e590790098",
"status": "success"
}
Ao receber essa resposta, podemos utilizar o hash
retornado para referenciar o
arquivo em outras partes da nossa aplicação, como por exemplo, na instancia do
SoftExpert Workflow. É importante lembrar que o hash
é único para cada arquivo
enviado, o que nos garante que sempre teremos uma referência confiável para o
arquivo.
Criando um novo Workflow
Após a criação do Hash
do arquivo eletrônico, é necessário enviar uma
requisição para a API do SoftExpert Workflow com os seguintes parâmetros:
Atributos suportados:
Request Body Parameter | Tipo | Requerido | Descrição |
---|---|---|---|
workflowTypeId | String | Não | Identificador do tipo de workflow (substituir) |
processId | String | Sim | Identificador do Processo |
workflowTitle | String | Sim | Título da instancia do Workflow |
userId | String | Não | Matrícula do usuário |
tables | String | Não | Lista de tabelas |
tables.id | String | Não | Identificador da tabela |
tables.fields.id | String | Não | Identificador do campo da tabela, se passado o objeto tables.fields.type com valor LIST será necessário enviar o identificador do relacionamento. |
tables.fields.value | Não | Valor do campo da tabela | |
tables.fields.type | String | Não | Tipo do campo da tabela "LIST" (opcional) |
attachments | String | Não | Lista de anexos |
attachments.filereference | String | Não | Hash do anexo a ser importado |
attachments.name | String | Não | Nome do anexo |
Possíveis tipos de dados dos campos da tabela:
Ícone | Tipo de dado | Descrição |
---|---|---|
Texto (255) | Texto simples | |
Texto (Ilimitado) | Texto longo | |
Numérico | Número inteiro | |
Decimal | Número decimal | |
Data | Data (YYYY-MM-DD) | |
Hora | Hora (HH:mm) | |
Boolean | Seleção única | |
Lista simples | Lista com opções | |
Grupo de opções | Opções agrupadas |
Exemplo de solicitação:
{
"processId": "Your process identifier",
"workflowTitle": "Your Title Instance",
"userId": "Your Tituser Idle Instance",
"tables": [
{
"id": "Your Table Identifier",
"fields": [
{
"id": "texto1",
"value": "abc"
}
]
}
],
"attachments": [
{
"filereference": "2c94808680f0ee390180f5c5b4c02054",
"name": "testejson"
}
]
}
Exemplo de resposta: