Páginas filhas
  • 4.2. Execução de rotinas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

A partir dos eventos de workflow do Fluig é possível efetuar a execução de regras de negócio no Logix permitindo envio de parâmetros e retornos da regra de negócio para o processo.

Nota

As funções de regra de negócio do Logix são executadas via webservices, portanto é necessário que as execuções webservices estejam ligadas no servidor TOTVS Tec.

Funcionamento

Para realizar a execução de uma regra de negócio Logix executar a função Javascript callLogixFunction passando por parâmetro o nome da função 4gl que será executada e o objeto Json com os valores que serão recuperados pela função.

Bloco de código
languagejavascript
linenumberstrue
function afterProcessFinish(processId) {
	var values,
        result;
 
	values = {
		"clientes" : {
			"num_cgc_cpf" : new String(hAPI.getCardValue("num_cgc_cpf")),
			"cod_cliente" : new String(hAPI.getCardValue("cod_cliente")),
			"nom_cliente" : new String(hAPI.getCardValue("nom_cliente"))
		}
	}
 
	result = callLogixFunction('vdp10000_create_clientes', values);
 
	if (result) {
		if (result.status) {
			log.info('[LOGIX] ' + result.msg);
		} else {
			log.info('[LOGIX] Nao foi possivel concluir a criacao de cliente [' + result.msg + ']');
		}
	}
}

O formato do objeto Json enviado para a função callLogixFunction deve seguir os padrões abaixo:

Bloco de código
languagejavascript
linenumberstrue
//Para tabelas mestres (RECORD)
{
	"clientes": {
		"cod_cliente" : "AM",
		"nom_cliente" : "ARINE MORCIANI"
	}
}
 
//Para tabelas detalhes (ARRAY OF RECORD)
{
	"clientes": [
		{
			"cod_cliente" : "AM",
			"nom_cliente" : "ARINE MORCIANI"
		},
		{
			"cod_cliente" : "A1",
			"nom_cliente" : "DIEGO VENTURI"
		}
	]
}

A função 4gl do Logix deve ter o sufixo _wfprocess e não deve receber parâmetros. Para recuperar os valores informados deve-se utilizar a função WfGetParameterValue e o retorno deve ser uma variável RECORD com no mínimo dois atributos: status com a situação da execução da regra de negócio (verdadeiro ou falso) e msg com uma mensagem genérica. Abaixo segue um exemplo de código de uma função 4gl utilizada em um processo workflow:

Bloco de código
languagenone
linenumberstrue
#-------------------------------------------#
FUNCTION vdp10000_create_clientes_wfprocess()
#-------------------------------------------#
    DEFINE lr_return   RECORD
                           status SMALLINT,
                           msg    CHAR(300)
                       END RECORD
 
    DEFINE lr_clientes RECORD
                           num_cgc_cpf LIKE clientes.num_cgc_cpf,
                           cod_cliente LIKE clientes.cod_cliente,
                           numero      INTEGER
                       END RECORD
 
    LET lr_clientes.num_cgc_cpf = _AdvPL_WfGetParameterValue('clientes','num_cgc_cpf')
    LET lr_clientes.cod_cliente = _AdvPL_WfGetParameterValue('clientes','cod_cliente')
 
    ...
 
    LET lr_return.status = TRUE
    LET lr_return.msg    = 'Cliente "',lr_clientes.cod_cliente CLIPPED,'" informado com sucesso.'
 
    RETURN lr_return
END FUNCTION

É possível incluir mais informações de retorno para o workflow além das duas citadas acima. Este retorno é convertido para Json e utilizado da maneira abaixo:

Bloco de código
languagejavascript
firstline13
linenumberstrue
result = callLogixFunction('vdp10000_create_clientes', values);
 
if (result) {
	if (result.status) {
		log.info('[LOGIX] ' + result.msg);
	} else {
		log.info('[LOGIX] Nao foi possivel concluir a criacao de cliente [' + result.msg + ']');
	}
}