BOT - Manual do Usuário > Integrações > Integração com o BPM

Integração com o BPM

Atualmente é possível integrar o BPM com o BOT via API. Para isso é necessário que exista um serviço mapeando os parâmetros enviados pelo pelo BOT para o padrão aceito pelo BPM.

O snippet de código abaixo apresenta o exemplo de uma lambda na AWS que realiza um início de processo no BPM com base nos valores enviados pelo BOT. Para realizar a configuração, sendo possível configurar um serviço externo no BOT de dois modos:

const axios = require('axios')

const createResponse = (statusCode, message, processInstanceId) =& gt; ({

statusCode,

body: JSON.stringify({ type: 'PLAINTEXT', text: [message], processInstanceId: processInstanceId })

});

const execute = async event =& gt; {

const auth = event.headers['Authorization'];

if (!auth) {

return createResponse(401, 'No authorization provided.');

}

console.log(event.body);

console.log(JSON.parse(event.body));

const {

processId,

action,

nextResponsible,

outputMessage,

...data

} = JSON.parse(event.body || '{}');

if (!processId) {

return createResponse(400, 'processId is required.');

}

const config = {

headers: {

'Content-Type': 'application/json',

'Authorization': auth

}

}

console.log('antes de getFormAccessProperties');

const getFormAccessPropertiesParams = {

processId,

processState: 'New',

authorization: auth

};

const { data: { accessPropertiesResponse } } = await axios.get(`${process.env.PLATFORM_URL}/rest/platform/workflow/queries/getFormAccessProperties`, {

params: getFormAccessPropertiesParams,

...config,

});

console.log('antes de getNextProcessInstanceId');

const { data: { processInstanceID } } = await axios.get(`${process.env.PLATFORM_URL}/rest/platform/workflow/queries/getNextProcessInstanceId`, config);

console.log('antes de ecm_form');

if (accessPropertiesResponse.performerURI === 'com.senior.wfe.EcmForm') {

const ecmConfig = JSON.parse(accessPropertiesResponse.performerData);

const createEcmRecordParam = {

...data,

processInstanceId: processInstanceID

}

console.log(createEcmRecordParam);

await axios.post(`${process.env.PLATFORM_URL}/odata/platform/ecm_form/${ecmConfig.entityName}`, createEcmRecordParam, config);

}

const startProcessParams = {

processInstanceID,

processId,

businessData: JSON.stringify({ root: data }),

authorization: auth,

flowExecutionData: {

actionToExecute: action,

nextSubject: nextResponsible || null

}

};

console.log('antes de startProcess');

await axios.post(`${process.env.PLATFORM_URL}/rest/platform/workflow/actions/startProcess`, startProcessParams, config);

console.log(`Process instance with id ${processInstanceID} started.`);

return createResponse(200, outputMessage || 'Processo iniciado.', processInstanceID);

}

exports.lambdaHandler = async(event) =& gt; {

console.log(event);

try {

return await execute(event);

} catch (err) {

console.log(err);

const errorStatusCode = (err.response & amp;& amp; err.response.status) || 500;

const errorMsg = (err.data & amp;& amp; err.data.message) || 'ERROR';

return createResponse(errorStatusCode, errorMsg);

}

};

O serviço acima espera quatro parâmetros: processId, action, nextResponsible, outputMessage.

O processId é o identificador do processo que será iniciado. A action é qual ação será executada no processo (ex.: Prosseguir). O nextResponsible será o responsável pela tarefa. O outputMessage será a mensagem a ser exibida pelo BOT quando a solicitação for iniciada.

Os dados do formulário podem ser repassados então como os parâmetros adicionais do serviço. Por exemplo, se o formulário tiver o campo_1 e campo_2, podem ser adicionados à configuração conforme exemplo abaixo:

Este artigo ajudou você?