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.

...

Deck of Cards
idEXECUCAO
historyfalse
effectTypefade
Card
defaulttrue
labelExecução da rotina no Fluig

Para realizar a execução de uma rotina Logix a partir de um evento:

  • Utilize o Dataset customizado LogixExecServiceDS
  • Enviar como constraints para o Dataset:
    1. O código da empresa que será utilizado na regra de negócio;
    2. A rotina 4GL do workflow que será executada; e
    3. Os valores que serão utilizados na rotina*.
  • Recuperar o resultado a execução da rotina através da função getValue do Dataset*.

* Os valores que devem ser enviados e o resultado da rotina obedecem o formato JSON string.


Bloco de código
themeEclipse
languagejavascript
titleExemplo de execução de uma rotina no Fluig
linenumberstrue
function afterProcessFinish(processId) {
    var values, company, c1, c2, c3, dataset, result;

    //Recupera os valores do processo.
    values = {
        "componentes": {
            "cod_empresa": new String(hAPI.getCardValue("cod_empresa")),
            "cod_item_compon": new String(hAPI.getCardValue("cod_item_compon")),
            "cod_grade_1_orig": new String(hAPI.getCardValue("cod_grade_1_orig")),
            "cod_grade_2_orig": new String(hAPI.getCardValue("cod_grade_2_orig")),
            "cod_grade_3_orig": new String(hAPI.getCardValue("cod_grade_3_orig")),
            "cod_grade_4_orig": new String(hAPI.getCardValue("cod_grade_4_orig")),
            "cod_grade_5_orig": new String(hAPI.getCardValue("cod_grade_5_orig")),
            "slct_acao": new String(hAPI.getCardValue("slct_acao")),
            "cod_item_compon_novo": new String(hAPI.getCardValue("cod_item_compon_novo")),
            "cod_grade_1_dest": new String(hAPI.getCardValue("cod_grade_1_dest")),
            "cod_grade_2_dest": new String(hAPI.getCardValue("cod_grade_2_dest")),
            "cod_grade_3_dest": new String(hAPI.getCardValue("cod_grade_3_dest")),
            "cod_grade_4_dest": new String(hAPI.getCardValue("cod_grade_4_dest")),
            "cod_grade_5_dest": new String(hAPI.getCardValue("cod_grade_5_dest")),
            "justificativa": new String(hAPI.getCardValue("justificativa"))
        }
    };

    //Recupera o valor definido para o código da empresa.
    company = values.componentes.cod_empresa;
 
    //Converte o objeto JSON para JSON string.
    values = JSON.stringify(values);

    log.info("[LOGIX][WFMAN002] Valores do formulario recuperados: " + values + ".");
    log.info("[LOGIX][WFMAN002] Iniciando execucao da rotina WFMAN002.");

    c1 = DatasetFactory.createConstraint("company", company, null, ConstraintType.MUST);
    c2 = DatasetFactory.createConstraint("fn", "wfman002_process_finish", null, ConstraintType.MUST);
    c3 = DatasetFactory.createConstraint("values", values, null, ConstraintType.MUST);

    dataset = DatasetFactory.getDataset("LogixExecServiceDS", null, [c1, c2, c3], null);
    result = service.getValue(0, "result");

    log.info("[LOGIX][WFMAN002] Rotina WFMAN002 executada, resultado enviado: " + result + ".");

    //Converte o JSON string para objeto JSON.
    result = JSON.parse(result);

    if (result) {
        if (result.status) {
            log.info("[LOGIX][WFMAN002] " + result.msg);
        } else {
            log.error("[LOGIX][WFMAN002] Nao foi possivel concluir o processo: " + result.msg + ".");
        }
    }
}
Card
labelExecução da Rotina no Logix

O JSON String enviado para a o Dataset deve seguir o formato abaixo:

Bloco de código
themeEclipse
languagejavascript
//Para registros mestres (objeto).
{
    "componentes": {
        "cod_empresa": "24",
        "cod_item_compon": "ITEM-TESTE",
        "cod_grade_1_orig": "BRANCO",
        "cod_grade_2_orig": "",
        "cod_grade_3_orig": "",

Para que seja possível a execução da rotina no Logix algumas regras devem ser seguidas:

  1. A função 4GL não poderá receber parâmetros.
  2. Os valores do processo devem ser recuperados através da função _ADVPL_WfGetParameterValue.
  3. A função deve retornar uma RECORD com no mínimo 2 atributos*:
    • status: do tipo SMALLINT, deverá ter o valor TRUE ou FALSE para indicar se a rotina foi executada com sucesso; e
    • msg: do tipo CHAR, deverá ter uma curta mensagem para que a mesma seja exibida para o usuário no arquivo de LOG do Fluig ou em tela.

* A variável RECORD de retorno poderá ter outros atributos conforme necessidade do processo.

 

Bloco de código
themeEclipse
languagenone
titleExemplo de execução de uma rotina no Logix
linenumberstrue
#-------------------------------------#
FUNCTION wfman002_alterar_componentes()
#-------------------------------------#
    DEFINE lr_return RECORD
        "cod_grade_4_orig": "",
                status SMALLINT"cod_grade_5_orig": "",
        "slct_acao": "1",
        "cod_item_compon_novo": "ITEM-TESTE-NOVO",
       msg    CHAR(300) "cod_grade_1_dest": "PRETO",
        "cod_grade_2_dest": "",
          "cod_grade_3_dest": "",
  END RECORD

    DEFINE lr_comp_orig"cod_grade_4_dest": "",
           lr_comp"cod_grade_5_dest": RECORD"",
        "justificativa": "ALTERACAO DO COMPONENTE ITEM-TESTE BRANCO PARA ITEM-TESTE-NOVO PRETO."
    }
}
 
//Para registros de      cod_item_compon  LIKE estrut_grade.cod_item_compon,detalhes (listas).
{
    "componentes": [
        {
               "cod_grade_comp_1 LIKE estrut_grade.cod_grade_comp_1empresa": "24",
            "cod_item_compon": "ITEM-TESTE",
               "cod_grade_comp1_2 LIKE estrut_grade.cod_grade_comp_2orig": "BRANCO",
            "cod_grade_2_orig": "",
               "cod_grade_comp3_3 LIKE estrut_grade.cod_grade_comp_3orig": "",
            "cod_grade_4_orig": "",
               "cod_grade_comp5_4 LIKE estrut_grade.cod_grade_comp_4orig": "",
            "slct_acao": "1",
               "cod_gradeitem_compcompon_5 LIKE estrut_grade.cod_grade_comp_5novo": "ITEM-TESTE-NOVO",
            "cod_grade_1_dest": "PRETO",
           END RECORD

    DEFINE la_item_pai ARRAY[100] OF RECORD
 "cod_grade_2_dest": "",
            "cod_grade_3_dest": "",
            "cod_grade_4_dest": "",
       cod_item_pai     LIKE estrut"cod_grade.cod_item_pai5_dest": "",
            "justificativa": "ALTERACAO DO COMPONENTE ITEM-TESTE BRANCO PARA ITEM-TESTE-NOVO PRETO."
       cod_grade_1  },
     LIKE estrut_grade.cod_grade_1,
  {
            "cod_empresa": "24",
            "cod_grade_2item_compon": "ITEM-TESTE-NOVO",
           LIKE estrut"cod_grade.cod_grade_21_orig": "PRETO",
              "cod_grade_2_orig": "",
             "cod_grade_3_orig": "",
       LIKE estrut     "cod_grade.cod_grade_34_orig": "",
            "cod_grade_5_orig": "",
            "slct_acao": "1",
     cod_grade_4      LIKE estrut_grade."cod_item_compon_novo": "ITEM-TESTE",
            "cod_grade_41_dest": "BRANCO",
            "cod_grade_2_dest": "",
              "cod_grade_5_3_dest": "",
           LIKE estrut"cod_grade.cod_4_dest": "",
            "cod_grade_5_dest": "",
            "justificativa": "ALTERACAO DO COMPONENTE ITEM-TESTE-NOVO PRETO PARA ITEM-TESTE BRANCO."
        }
    ]
}
Card
labelExecução da Rotina no Logix

Para que seja possível a execução da rotina no Logix algumas regras devem ser seguidas:

  1. A função 4GL não poderá receber parâmetros.
  2. Os valores do processo devem ser recuperados através da função _ADVPL_WfGetParameterValue.
  3. A função deve retornar uma RECORD com no mínimo 2 atributos*:
    • status: do tipo SMALLINT, deverá ter o valor TRUE ou FALSE para indicar se a rotina foi executada com sucesso; e
    • msg: do tipo CHAR, deverá ter uma curta mensagem para que a mesma seja exibida para o usuário no arquivo de LOG do Fluig ou em tela.

* A variável RECORD de retorno poderá ter outros atributos conforme necessidade do processo.

 

Bloco de código
themeEclipse
languagenone
titleExemplo de execução de uma rotina no Logix
linenumberstrue
#-------------------------------------#
FUNCTION wfman002_alterar_componentes()
#-------------------------------------#
    DEFINE lr_return RECORDgrade_5,
                           qtd_necessaria   LIKE estrut_grade.qtd_necessaria,
                           dat_validade_ini LIKE estrut_grade.dat_validade_ini,
                           dat_validade_fim LIKE estrut_grade.dat_validade_fimstatus SMALLINT,
                         msg  num_sequencia    LIKE estrut_grade.num_sequencia
    CHAR(300)
                     END RECORD

    DEFINE l_justificativa CHAR(300)lr_comp_orig,
           llr_comp_acaodest RECORD
         CHAR(001),
           l_altera_item   CHAR(001)

    DEFINE l_ind,
cod_item_compon           lLIKE estrut_grade.cod_item_indcompon,
           l_item_count SMALLINT

    IF  LOG_initApp("MANENG") > 0 THEN
        LET lr_return.status = FALSE
cod_grade_comp_1 LIKE estrut_grade.cod_grade_comp_1,
                LET lr_return.msg    = "Usuário ",p_user CLIPPED," sem permissão para acessar a rotina."
 cod_grade_comp_2 LIKE estrut_grade.cod_grade_comp_2,
         RETURN lr_return
    END IF

    LET lr_comp_orig.cod_item_compon  = _ADVPL_WfGetParameterValue("componentes","cod_item_compon_orig")
    LET lr_comp_orig.cod_grade_comp_13 =LIKE _ADVPL_WfGetParameterValue("componentes","estrut_grade.cod_grade_comp_1_orig")
3,
                           LET lr_comp_orig.cod_grade_comp_24 =LIKE _ADVPL_WfGetParameterValue("componentes","estrut_grade.cod_grade_comp_2_orig")4,
    LET lr_comp_orig.cod_grade_comp_3 = _ADVPL_WfGetParameterValue("componentes","cod_grade_comp_3_orig")
                       LET lr_comp_orig.cod_grade_comp_45 =LIKE _ADVPL_WfGetParameterValue("componentes","estrut_grade.cod_grade_comp_4_orig")5
                        END RECORD

    DEFINE la_item_pai ARRAY[100] OF RECORD
    LET lr_comp_orig.cod_grade_comp_5 = _ADVPL_WfGetParameterValue("componentes","cod_grade_comp_5_orig")

                      LET lr_comp_dest.cod_item_componpai     =LIKE _ADVPL_WfGetParameterValue("componentes","estrut_grade.cod_item_compon_dest")pai,
    LET lr_comp_dest.cod_grade_comp_1 = _ADVPL_WfGetParameterValue("componentes","cod_grade_comp_1_dest")
            LET lr_comp_dest.cod_grade_comp_2 = _ADVPL_WfGetParameterValue("componentes","cod_grade_comp_2_dest")
        LET lr_comp_dest.cod_grade_comp_3 = _ADVPL_WfGetParameterValue("componentes","1      LIKE estrut_grade.cod_grade_comp_3_dest")
1,
     LET lr_comp_dest.cod_grade_comp_4 = _ADVPL_WfGetParameterValue("componentes","cod_grade_comp_4_dest")
                      cod_grade_2      LETLIKE lrestrut_comp_destgrade.cod_grade_comp_5 = _ADVPL_WfGetParameterValue("componentes","cod_grade_comp_5_dest")

2,
                           cod_grade_3      LIKE estrut_grade.cod_grade_3,
          LET l_justificativa = _ADVPL_WfGetParameterValue("componentes","justificativa")
    LET l_acao          = _ADVPL_WfGetParameterValue("componentes","slct_acao")

cod_grade_4      LIKE estrut_grade.cod_grade_4,
               #Verifica os códigos da grade de origem.
    IF  lr_comp_orig.cod_grade_comp_1 IS NULL THEN
5      LIKE   LET lr_comp_origestrut_grade.cod_grade_comp_1 = " "
5,
        END IF

    IF  lr_comp_orig.cod_grade_comp_2 IS NULL THEN
        LET lr_comp_orig.cod_grade_comp_2 = " "
qtd_necessaria   LIKE estrut_grade.qtd_necessaria,
        END IF

    IF  lr_comp_orig.cod_grade_comp_3 IS NULL THEN
        LET lrdat_comp_orig.codvalidade_ini LIKE estrut_grade.dat_comp_3 = " "
validade_ini,
        END IF

    IF  lr_comp_orig.cod_grade_comp_4 IS NULL THEN
        LET lrdat_comp_orig.codvalidade_fim LIKE estrut_grade.dat_comp_4 = " "
validade_fim,
        END IF

    IF  lr_comp_orig.cod_grade_comp_5 IS NULL THEN
        LET lr_comp_orig.cod_grade_comp_5 = " "
num_sequencia    LIKE estrut_grade.num_sequencia
       END IF

    #Verifica os códigos da grade de destino.
    IF  lr_comp_dest.cod_grade_comp_1 IS NULL THEN
   END RECORD

    DEFINE l_justificativa CHAR(300),
     LET lr_comp_dest.cod_grade_comp_1 = " "
  l_acao  END IF

    IF  lr_comp_dest.cod_grade_comp_2 IS NULL THEN
 CHAR(001),
          LET lrl_comp_dest.cod_grade_comp_2 = " "altera_item   CHAR(001)

    END IF

DEFINE l_ind,
    IF  lr_comp_dest.cod_grade_comp_3 IS NULL THEN
  l_item_ind,
      LET lr_comp_dest.cod_grade_comp_3 = " "
    END IFl_item_count SMALLINT

    IF  lr_comp_dest.cod_grade_comp_4 IS NULLLOG_initApp("MANENG") > 0 THEN
        LET lr_comp_dest.cod_grade_comp_4return.status = " "FALSE
    END IF

   LET IF  lr_comp_dest.cod_grade_comp_5 IS NULL THENreturn.msg    = "Usuário ",p_user CLIPPED," sem permissão para acessar a rotina."

        LETRETURN lr_comp_dest.cod_grade_comp_5 = " "return
    END IF

    LET llr_item_ind   = 0
    LET lcomp_orig.cod_item_countcompon  = _ADVPL_WfGetParameterLengthWfGetParameterValue("componentes"item_pai")

    FOR l_ind = 1 TO l_item_count,"cod_item_compon_orig")
        LET l_altera_itemlr_comp_orig.cod_grade_comp_1 = _ADVPL_WfGetParameterValue("item_paicomponentes","altera_item",l_ind)
cod_grade_comp_1_orig")
        IF  l_altera_item = "S" THENLET lr_comp_orig.cod_grade_comp_2 = _ADVPL_WfGetParameterValue("componentes","cod_grade_comp_2_orig")
            LET l_item_ind = l_item_ind + 1

            LET la_item_pai[l_item_ind].cod_item_pai    LET lr_comp_orig.cod_grade_comp_3 = _ADVPL_WfGetParameterValue("componentes","cod_grade_comp_3_orig")
    LET lr_comp_orig.cod_grade_comp_4 = _ADVPL_WfGetParameterValue("item_paicomponentes","cod_item_pai",l_ind)
     grade_comp_4_orig")
       LET lalr_item_pai[l_item_ind]comp_orig.cod_grade_1      comp_5 = _ADVPL_WfGetParameterValue("item_paicomponentes","cod_grade_comp_5_1orig",l_ind)
        
    LET la_item_pai[l_item_ind]lr_comp_dest.cod_gradeitem_2compon      = _ADVPL_WfGetParameterValue("item_paicomponentes","cod_item_gradecompon_2dest",l_ind)
            LET lalr_item_pai[l_item_ind]comp_dest.cod_grade_3      comp_1 = _ADVPL_WfGetParameterValue("item_paicomponentes","cod_grade_3",l_ind)
         comp_1_dest")
   LET la_item_pai[l_item_ind] LET lr_comp_dest.cod_grade_4      comp_2 = _ADVPL_WfGetParameterValue("item_paicomponentes","cod_grade_comp_4",l_ind2_dest")
            LET lalr_item_pai[l_item_ind]comp_dest.cod_grade_5      comp_3 = _ADVPL_WfGetParameterValue("item_paicomponentes","cod_grade_5",l_ind)
     _comp_3_dest")
       LET lalr_item_pai[l_item_ind].qtd_necessaria   comp_dest.cod_grade_comp_4 = _ADVPL_WfGetParameterValue("item_paicomponentes","qtd_necessaria",l_indcod_grade_comp_4_dest")
            LET lalr_item_pai[l_item_ind].dat_validade_inicomp_dest.cod_grade_comp_5 = _ADVPL_WfGetParameterValue("item_paicomponentes","dat_validade_ini",l_ind)
cod_grade_comp_5_dest")

            LET la_item_pai[l_item_ind].dat_validade_fimjustificativa = _ADVPL_WfGetParameterValue("item_paicomponentes","dat_validade_fim",l_indjustificativa")
    LET l_acao       LET la_item_pai[l_item_ind].num_sequencia    = _ADVPL_WfGetParameterValue("item_paicomponentes","num_sequencia",l_indslct_acao")

            #Verifica os códigos da grade dode item paiorigem.
            IF  lalr_item_pai[l_item_ind]comp_orig.cod_grade_comp_1 IS NULL THEN
                LET lalr_item_pai[l_item_ind]comp_orig.cod_grade_comp_1 = " "
            END IF

         IF

    IF  lalr_item_pai[l_item_ind]comp_orig.cod_grade_comp_2 IS NULL THEN
                LET lalr_item_pai[l_item_ind]comp_orig.cod_grade_comp_2 = " "
            END IF

            IF  lalr_item_pai[l_item_ind]comp_orig.cod_grade_comp_3 IS NULL THEN
         NULL THEN
        LET lalr_item_pai[l_item_ind]comp_orig.cod_grade_comp_3 = " "
            END IF

            IF  lalr_item_pai[l_item_ind]comp_orig.cod_grade_comp_4 IS NULL THEN
                LET lalr_item_pai[l_item_ind]comp_orig.cod_grade_comp_4 = " "
         " "
    END IF

    IF  lr_comp_orig.cod_grade_comp_5 IS NULL THEN
       IF LET lalr_item_pai[l_item_ind]comp_orig.cod_grade_comp_5 IS= NULL" THEN"
    END IF

    #Verifica os códigos da grade de destino.
   LET IF  lalr_item_pai[l_item_ind]comp_dest.cod_gradegrade_comp_51 =IS "NULL "THEN
        LET lr_comp_dest.cod_grade_comp_1 = " END IF"
        END IF

    ENDIF FOR

    { lr_comp_dest.cod_grade_comp_2 IS NULL THEN
        Regra de negócio 4GL.
    }

    LET lr_return.status = TRUELET lr_comp_dest.cod_grade_comp_2 = " "
    END IF

    IF LET lr_return.msg    = "Item componente alterado com sucesso."

    RETURN lr_return
END FUNCTION

O JSON string enviado para a o Dataset deve seguir os padrões abaixo:

Bloco de código
themeEclipse
languagejavascript
//Para registros mestres (objeto).
{
    "componentes": {comp_dest.cod_grade_comp_3 IS NULL THEN
        LET lr_comp_dest.cod_grade_comp_3 = " "
    END IF

    IF  lr_comp_dest.cod_grade_comp_4 IS NULL THEN
        "cod_empresa": "24",
  LET lr_comp_dest.cod_grade_comp_4 = " "
    END IF

    IF  "lr_comp_dest.cod_item_compon": "ITEM-TESTE",grade_comp_5 IS NULL THEN
        "LET lr_comp_dest.cod_grade_1_orig": "BRANCO",comp_5 = " "
    END IF

   "cod_grade_2_orig": "",
    LET l_item_ind   = 0
    LET "cod_grade_3_orig": "",l_item_count = _ADVPL_WfGetParameterLength("item_pai")

    FOR l_ind = 1 TO "codl_grade_4_orig": "",
item_count
        LET "cod_grade_5_orig": "",l_altera_item = _ADVPL_WfGetParameterValue("item_pai","altera_item",l_ind)

        "slct_acao": "1",IF  l_altera_item = "S" THEN
        "cod    LET l_item_compon_novo": "ITEM-TESTE-NOVO",
   ind = l_item_ind + 1

     "cod_grade_1_dest": "PRETO",
        "cod_grade_2_dest": "",
 LET la_item_pai[l_item_ind].cod_item_pai      = "cod_grade_3_dest": "",ADVPL_WfGetParameterValue("item_pai","cod_item_pai",l_ind)
        "    LET la_item_pai[l_item_ind].cod_grade_4_dest": "",
1         = _ADVPL_WfGetParameterValue("item_pai","cod_grade_5_dest": "",1",l_ind)
        "justificativa": "ALTERACAO DO COMPONENTE ITEM-TESTE BRANCO PARA ITEM-TESTE-NOVO PRETO."
LET la_item_pai[l_item_ind].cod_grade_2    }
}
 
//Para registros de detalhes (listas).
{
    "componentes": [= _ADVPL_WfGetParameterValue("item_pai","cod_grade_2",l_ind)
        {
    LET la_item_pai[l_item_ind].cod_grade_3      = _ADVPL_WfGetParameterValue("coditem_empresapai": "24,"cod_grade_3",l_ind)
            "cod_item_compon": "ITEM-TESTE",
LET la_item_pai[l_item_ind].cod_grade_4      = _ADVPL_WfGetParameterValue("item_pai","cod_grade_4",l_ind)
             "LET la_item_pai[l_item_ind].cod_grade_1_orig": "BRANCO",
5             = _ADVPL_WfGetParameterValue("item_pai","cod_grade_2_orig": "",
5",l_ind)
            LET la_item_pai[l_item_ind].qtd_necessaria   "cod= _grade_3_orig": "",ADVPL_WfGetParameterValue("item_pai","qtd_necessaria",l_ind)
            "cod_grade_4_orig": "",LET la_item_pai[l_item_ind].dat_validade_ini = _ADVPL_WfGetParameterValue("item_pai","dat_validade_ini",l_ind)
            LET la_item_pai[l_item_ind].dat_validade_fim = "cod_grade_5_orig": "",ADVPL_WfGetParameterValue("item_pai","dat_validade_fim",l_ind)
            "slct_acao": "1",
     LET la_item_pai[l_item_ind].num_sequencia       "cod_item_compon_novo": "ITEM-TESTE-NOVO",
= _ADVPL_WfGetParameterValue("item_pai","num_sequencia",l_ind)

            "cod_grade_1_dest": "PRETO",#Verifica os códigos da grade do item pai.
            "IF  la_item_pai[l_item_ind].cod_grade_2_dest": "",1 IS NULL THEN
            "    LET la_item_pai[l_item_ind].cod_grade_3_dest":1 = " "",
            "cod_grade_4_dest": "",END IF

            "IF  la_item_pai[l_item_ind].cod_grade_5_dest": "",2 IS NULL THEN
            "justificativa": "ALTERACAO DO COMPONENTE ITEM-TESTE BRANCO PARA ITEM-TESTE-NOVO PRETO.LET la_item_pai[l_item_ind].cod_grade_2 = " "
        },    END IF

        {
    IF  la_item_pai[l_item_ind].cod_grade_3 IS NULL THEN
   "cod_empresa": "24",
            "LET la_item_pai[l_item_ind].cod_item_compon": "ITEM-TESTE-NOVO",grade_3 = " "
            "cod_grade_1_orig": "PRETO",END IF

            "IF  la_item_pai[l_item_ind].cod_grade_2_orig": "",
4 IS NULL THEN
                 "LET la_item_pai[l_item_ind].cod_grade_3_orig":4 = " "",
            "cod_grade_4_orig": "",END IF

            "IF  la_item_pai[l_item_ind].cod_grade_5_orig": "",
 IS NULL THEN
                 "slct_acao": "1",LET la_item_pai[l_item_ind].cod_grade_5 = " "
            "cod_item_compon_novo": "ITEM-TESTE",END IF
        END IF
   "cod_grade_1_dest": "BRANCO",
 END FOR

    {
        Regra de  "cod_grade_2_dest": "",negócio 4GL.
    }

    LET lr_return.status = TRUE
    LET "cod_grade_3_dest": "",
lr_return.msg    = "Item componente alterado com sucesso."

    "cod_grade_4_dest": "",
        RETURN lr_return
END FUNCTION

O JSON string de resultado do Dataset virá no padrão abaixo:

Bloco de código
themeEclipse
languagejavascript
{
    "cod_grade_5_destsuccess": ""true|false,
            "justificativamsg": "ALTERACAOMensagem DOretornada COMPONENTE ITEM-TESTE-NOVO PRETO PARA ITEM-TESTE BRANCO."
        }
    ]pela rotina."
}