Rules
Conceito
As rules por padrão são definidas usando JsonLogic, com objetivo de transformação de dados e/ou atribuição de regras ou condições de negocios em um determinado passo.
Estrutura
[
{
"idRule": "nome_da_rule",
"rule": "json logic",
"type": "mandatory",
"regexp": [
{
"expression": "aplicar expressão regular",
"method": "aplica funções do go",
"param": "parametro a ser passado no method"
}
],
"returnType": "define o tipo do retorno",
"generic": {
"function": "função generica",
"params": [
"parametro a ser passado na função"
]
},
"description": "descreva pra que serve ou o que essa rule faz"
}
]- idRule: nome da rule a ser ultilizada, separar com underscore se necessario (campo obrigatório);
- rule: json logic que será usado na tratativa dessa rule (campo obrigatório);
- type: define o tipo da rule, altualmente os tipos disponivels são (campo obrigatório):
- mandatory: executa a rule antes das internal e retorna "true" ou "false" pode determinar se um passo vai ser executado ou não;
- internal: indica que o retorno dela pode sofrer alteração no valor do campo onde ela é chamada;
- regexp: possibilida aplicar expressão regular:
- expression: campo onde deve ser informado a expressão regular;
- method: indica o metodo a ser aplicado na expressão, atualmente temos disponivel o replaceAllString . Se este campo for vazio será executado um findString por padrão;
- param: parametro a ser passado no method;
- returnType: define o tipo do retorno da rule (int, string, float ou datetime);
- function: informe a função desejada ;
- params: informe os parametros necessarios de acordo com a função selecionada;
- description: usado para documentar a rule;
Exemplos de Rules
Mandatória
O exemplo a seguir demostra uma rule cuja objetivo é validar se o retorno de um passo anterior "busca-pedido" é diferente de vazio, se for é retornado um "true", se não for é retornado um "falso".

Por ser mandatória, essa rule determina se o passo vai ser executado ou não.
Interna
Rules usada para transformação de dados.
O exemplo a seguir verifica qual a situação do pedido e com isso, seta um valor no campo onde ela esta sendo referênciada no de/para:

Usando regexp
No exemplo a seguir é aplicado um regexp no valor retornado pelo produto.codigo

Usando returnType e generic
No exemplo a seguir é usado o returnType para determinar o tipo do retorno e o generic, passando a função ManipulateDate para formatar a data do valor retornado pelo args.last_modified_date para um tipo RFC3339:
{
"idRule": "args_last_modified_date",
"rule": "{ \"var\" : \"args.last_modified_date\" }",
"type": "internal",
"description": "Converte data de encerramento para datetime ou null se for vazio",
"returnType": "datetime",
"generic": {
"function": "ManipulateDate",
"params": [
"$parse: YYYY-MM-DD HH:mm", "$format: RFC3339"
]
}
}