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 |
---|
language | javascript |
---|
linenumbers | true |
---|
|
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 |
---|
language | javascript |
---|
linenumbers | true |
---|
|
//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 |
---|
language | none |
---|
linenumbers | true |
---|
|
#-------------------------------------------#
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 |
---|
language | javascript |
---|
firstline | 13 |
---|
linenumbers | true |
---|
|
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 + ']');
}
} |