Como iniciar processo recorrente por dataset?

Algumas vezes é necessário criar processos de forma automatizada dentro do fluig, para isso você tem diversas opções, uma delas é utilizando a sincronização do dataset do fluig.

O objetivo desse utilizar dataset sincronizado no Fluig é para que você possa sincronizar tabelas de bancos de dados distintos.

Podemos utilizar esse recurso para que o sistema sempre retorne um único valor, que será o log da execução do dataset.

Desse modo iremos fazer com que dentro do próprio sistema seja criado uma rotina, mais conhecido como jobs, que irá executar o nosso código abaixo.

Uma das formas de se criar processos de forma automatizada no fluig é utilizando o mecanismo de sincronização de dataset.

Ao criar um dataset no fluig você tem a opção de criar datasets sincronizados.

No exemplo abaixo iremos registrar na coluna Log o resultado dos erros, caso ocorra.

function onSync(lastSyncDate) {	
	var datasetlog = DatasetBuilder.newDataset();
	datasetlog.addColumn("log");
	
	var PROCESS_NAME="processo_teste";  // nome do processo a ser iniciado
	var URL = "/process-management/api/v2/processes/"+PROCESS_NAME+"/start" ; 

	try{
		var clientService = fluigAPI.getAuthorizeClientService();
		var data = {
		    companyId : getValue("WKCompany") + '',
		    serviceCode : 'fluig_rest', // serviço rest criado no fluig.
		    endpoint : URL,
		    method : 'post', // 'delete', 'patch', 'put', 'get'     
		    timeoutService: '100', // segundos
		    params : {
		        'targetState' : '5', // atividade do fluig a ser iniciada
		        'targetAssignee' : 'fluig', // usuário do fluig que receberá a atividade.
		        'subProcessTargetState' : '0',
		        'comment' : 'Solicitação iniciada com sucesso.', // comentário que será adicionado a solicitação quando ela for iniciada.
		        'formFields' :{
		                	'txt_nome': 'Lucas Oliveira de Souza'	// campos do formulário que serão preenchidos, juntamente com seus respectivos valores. 
		                }
		        },
		    options : {
		        encoding : 'UTF-8',
		        mediaType: 'application/json',
		        useSSL : true
		    },
		    headers: {
		        'Content-Type': 'application/json;charset=UTF-8'
		    }
		}
		                                                             
		var vo = clientService.invoke(JSON.stringify(data));
		 
		if(vo.getResult()== null || vo.getResult().isEmpty()){
		    throw new Exception("Retorno está vazio");
		}else{
		    datasetlog.addRow(new Array(vo.getResult()));
		    log.info(vo.getResult());
		}
	} catch(err) {
		datasetlog.addRow(new Array(err));
	}
		    
	return datasetlog;
}