Erro "Is not defined" na atividade do fluxo de trabalho

Alan Carvalho
Tera Contributor

Olá comunidade!

 

Estou elaborando um fluxo de trabalho que precisa ser revertido caso a segunda tarefa encerrada como "Sem sucesso" no campo Código de fechamento. Essa condição encontra-se na atividade "Se" e quando o fluxo atinge a mesma o erro abaixo é apresentado.

AlanCarvalho_0-1680707446571.png

 

Segue o script da cláusulo "Se":

answer = ifScript();

function ifScript() {
var grScTask = new GlideRecord('sc_task');

if (current.u_codigo_de_fechamento != u_sem_sucesso) {
return 'yes';
}else {
return 'no';
}
}

 

Além de me ajudarem com a análise desse erro, podem checar se o script acima irá atender a minha necessidade ou se está faltando alguma linha de código?

 

Desde já muito obrigado.

3 REPLIES 3

Elicio_Junior
Tera Contributor

Se o código for literalmente esse, tente colocar isso: "u_sem_sucesso"

Está faltando as aspas na string de comparação.

Camilo Moraes
Kilo Guru

Boa tarde Alan,

 

Partindo da premissa que sua condição esteja correta. Posso contribuir com os pontos abaixo.

 

O problema ocorre por que você está tentando fazer uma comparação no "if" do script com algo que não foi declarado em seu código. Como está fora das aspas é considerado como uma variável e não como string.

 

CamiloMoraes_1-1680710419581.png

 

Caso você tenha criado um campo customizado na tabela "sc_task" você deve salvar o Sys ID da tarefa em uma variável no scratchpad do workflow para realizar a consulta na atividade "Se".

 

1. Salvando o Sys ID da task no campo "Advanced Script" da atividade da tarefa.

CamiloMoraes_0-1680709778822.png

 

2. Script da atividade "Se" para obter o valor do campo da tarefa. Recomenda-se usar o ".getValue()" em consultas GlideRecord:

 

answer = ifScript();

function ifScript() {
    var resp = 'no';
    var idTask = workflow.scratchpad.sys_id_task;

    var grScTask = new GlideRecord('sc_task');
    grScTask.get(idTask);
    if (grScTask.isValidRecord()) {
        if (grScTask.getValue("u_codigo_de_fechamento ") != "u_sem_sucesso") {
            resp = 'yes';
        }
    }

    return resp;
}

Caso o campo que você está tentando consultar na tarefa seja uma variável do item de catálogo, o script da atividade "Se" fica um pouco diferente.

answer = ifScript();

function ifScript() {
    var resp = 'no';
    var idTask = workflow.scratchpad.sys_id_task;

    var grScTask = new GlideRecord('sc_task');
    grScTask.get(idTask);
    if (grScTask.isValidRecord()) {
        if (grScTask.variables.u_codigo_de_fechamento.getValue() != "u_sem_sucesso") {
            resp = 'yes';
        }
    }

    return resp;
}

 

Espero ter ajudado.

 

Att,

Camilo M.

Alan Carvalho
Tera Contributor

Olá comunidade!

 

Atualizando vocês sobre esse tema, decidi elaborar esse fluxo pelo Flow Designer e utilizei a lógica "Fazer o seguinte até" para solucionar a minha necessidade.