The CreatorCon Call for Content is officially open! Get started here.

Carlos Camacho
Mega Sage
Mega Sage

Scratchpad é tipo um biscoito OREO né... Oi?!

find_real_file.png

 

Sabe a deliciosa parte branca que une as duas partes de chocolate do biscoito OREO?

Sim, com certeza você já experimentou.

 

E você sabe que relação isso poderia ter com programação Low-Code?

 

Nesse artigo vamos investigar as semelhanças entre esse delicioso recheio branco e o funcionamento do objeto Scratchpad.

 

 

 

 

Primeiro suponha que as duas partes de chocolate do biscoito são: o lado do cliente (Front-End) e o lado do Servidor (Back-End).

 

A parte da frente do chocolate é o Front-End, ou seja, são as coisas nas quais o usuário final interage para usar o Aplicativo. Aqui estamos falando, por exemplo, de formulários e listas.

 

A parte de trás do chocolate é o Back-End. É onde podemos estabelecer conexão com o banco de dados e recuperar registros de uma tabela.

 

O Scratchpad – a deliciosa parte branca que une os dois chocolates – fica alí no meio e faz com que o Front-End não tenha contato direto com o Back-End. Em outras palavras, um formulário não pode acessar diretamente os registros de uma tabela. É aí que o Scratchpad se mostra um recurso poderoso.

 

Cenário de Caso de Uso:

 

O requisito é que ao abrir um Formulário, seja gravado o cargo do usuário logado em um campo chamado Cargo que é do tipo String.

 

Passo 1) Vamos criar uma Business Rule que recupera essa informação da tabela de Usuários e “pendura” essa informação no objeto Scratchpad.

Passo 2) Vamos criar um Client Script para recuperar a informação no carregamento do formulário (evento onLoad) e armazenar no nosso campo Cargo. Vamos lá?!

 

 

Passo 1) Codificando a Business Rule.

 

/*
When: Display
Query: Yes
*/

(function executeRule(current, previous /*null when async*/) {


     //Get User Title and make it available on Client side

     var currentUserId = gs.getUserID();
     var grUser = new GlideRecord('sys_user');
     grUser.addQuery('sys_id',currentUserId);
     grUser.query();
     if (grUser.next()) {

          g_scratchpad.meuCargo = grUser.title;

     }


})(current, previous);
 

Passo 2) Codificando o Client Script para recuperar a informação assim que o formulário for aberto.

function onLoad() {

   g_form.setValue('cargo', g_scratchpad.meuCargo);

}
 

 

Outro de Caso de Uso:

 

Outro dia um dev perguntou se ele podia tornar um campo do formulário somente-leitura caso o usuário logado não fizesse parte de um grupo específico. Adivinha de quem eu lembrei? Sim! Do objeto Scratchpad!

 

Primeiramente basta criar a Business Rule (Display) para armazenar uma variável do tipo verdadeiro/falso que vai conter se o usuário pertence a um grupo:

g_scratchpad.grp = gs.getUser().isMemberOf('Nome do Grupo');

Depois a gente consegue fazer esse teste em um Client Script:

function onLoad() {

  if (!g_scratchpad.grp){
      g_form.setReadOnly('nome_do_campo', true);
  }

}




 

________________________

Carlos Camacho
https://www.linkedin.com/in/camachojunior

 

Comments
Katia Andrade
Tera Contributor

Legal, @Camacho . Esses códigos prontos são uma "mão na roda" pra quem não é programador. Show!

Version history
Last update:
‎09-30-2021 09:32 AM
Updated by: