Class: Process

@nginstack/web-framework/lib/process/Process~ Process


new Process(key, id, responseObject, sourceClass)

Processo é um conjunto de interações que são executadas seguindo uma sequência lógica definida pelo usuário. Em cada interação pode ser criada uma interface com o usuário utilizando componentes como grades, atalhos ou relatórios.

Importante: Ao criar um arquivo com a extensão .ip o framework cria automaticamente uma instância de Process, não havendo necessidade de utilizar este construtor diretamente.

Parameters:
Name Type Description
key number

Chave da tabela iVfs que contém o código fonte do processo.

id string

Id único do processo que será criado.

responseObject Object

Objeto que recebe a saída do processo.

sourceClass number | DBKey

Chave da classe onde o processo está localizado.

Extends

  • ServerComponent

Members


bodyClassName :string

Classe CSS do elemento body da página utilizada pelo processo.

Type:
  • string

canExport :boolean

Indica se os SimpleLayouts do processo podem ser exportados.

Type:
  • boolean

canWriteScripts :boolean

Indica se o processo pode escrever tags <script>, utilizadas no sincronismo e pelos Widgets.

Em determinadas situações, como o direcionamento da saída de um processo para um Email, as tags <script> devem ser desligadas.

Type:
  • boolean

cssFiles :Array

Arquivos CSS que devem ser carregados por este processo. É importante que seja sempre avaliada a possibilidade de criação de um novo tema em detrimento do uso dessa funcionalidade.

Type:
  • Array

currentInteraction :Interaction

Objeto que contêm informações sobre a atual interação.

Type:
  • Interaction

currentTabId :number

O identificador da aba do processo.

Type:
  • number

disableSaveInputAsDefault :boolean

Indica se o recurso saveInputAsDefault de todos os field será desabilitado.

Type:
  • boolean
Deprecated:
  • Yes

enabledActions

Equivalente à propriedade enabledButtons.

Deprecated:
  • Utilize a propriedade enabledButtons.
See:
  • Process#enabledButtons

enabledButtons :Array.<(Button|string)>

Define quais botões estão habilitados na interação corrente.

Type:
See:
  • Process#visibleButtons
Example
this.enabledActions = ["Botão 1", "Botão 2"]

environment :Environment

Objeto que representa o ambiente Web Framework.

Type:
  • Environment

gridToFocus :Grid

Grade que deve receber o foco. Não deve ser utilizada diretamente pelo desenvolvedor. O seu uso é restrito para as APIs internas do Web Framework.

Type:
  • Grid

help :Record.<*, *>|string

Ajuda descrevendo a utilização do processo para o usuário final.

A ajuda pode ser um texto livre ou um objeto estruturado conforme exemplo abaixo.

Type:
  • Record.<*, *> | string
Example
this.help = {
  overview: "Explicação sobre o funcionamento do processo.",
  buttons: {
    executar: "Explicação sobre o botão executar na visão do processo."
  },
  grids: {
    vars: "Ajuda da grade de variáveis na visão do processo."
  },
  ler: {
    overview: "Texto explicativo sobre a interação Ler.",
    buttons: {
      executar: "Sobre o botão executar na visão da interação Ler.",
      abortar: "Sobre o botão abortar na visão da interação Ler."
    },
    grids: {
      itens: "Ajuda da grade itens no contexto da interação Ler."
    }
  },
  gravar: {
    overview: "Texto explicativo sobre a interação Gravar.",
    grids: {
      itens: "Ajuda da grade itens no contexto da interação Gravar."
    }
  }
};

id :string

Identificador único do processo. Um mesmo processo pode ter várias instâncias dele abertas ao mesmo tempo e o id faz a distinção entre elas.

Type:
  • string

immediateRedirectEnabled :boolean

Indica se o processo pode ser interrompido e redirecionado para a interação indicada pela última execução do método #setNextInteraction.

A interrupção da execução do processo ocorre quando quando o método #redirectIfInteractionWasChanged é chamado. Este método é chamado em momentos oportunos pelo Web Framework. Por exemplo: logo após a execução de eventos é verificado se foi solicitado um redirecionamento.

Type:
  • boolean

key :number

Chave da tabela iVfs que contém o código fonte do processo.

Type:
  • number

lastInteraction :Interaction

Última interação que foi executada pelo processo.

Type:
  • Interaction

Caminho do processo no menu principal.


name :string

Nome do processo.

Type:
  • string

permissionKeyWords :Array

Array de strings disponibilizado pelo processo para a validação de permissões. Deve ser utilizado da seguinte forma.

  1. O desenvolvedor ao fazer um processo pode estar publicando algumas permissões para o processo, como por exemplo: this.permissions = ['podeAprovar', 'podeCalcular', ...]
  2. O administrador do sistema vai ter essas permissões disponíveis durante a configuração das permissões dos processos e relatórios, podendo assim defini-las para os usuários/grupos;
  3. Com o uso do método this.hasPermission(permissionKeyWord) será possível checar se o administrador concedeu a permissão publicada para o usuário corrente.
Type:
  • Array
See:
  • Process#hasPermission

pId :string

Identificador único do processo. Um mesmo processo pode ter várias instâncias dele abertas ao mesmo tempo e o id faz a distinção entre elas.

Type:
  • string
Deprecated:
  • Utilize a propriedade #id.

response :Object

Objeto que o processo usará para enviar as respostas.

Importante: o objeto informado deve obrigatoriamente ter o método "write" implementado. Por padrão serão escritas tags <script> para o response informado. Caso o destino não suporte a execução de scripts, a propriedade canWriteScripts deve ser desativada.

Type:
  • Object
See:
  • Process#canWriteScripts

simpleLayoutOutputHandler :Object

Objeto que será responsável por tratar a saída gerada pelos SimpleLayouts criados através do método getSimpleLayout. O objeto informado deverá implementar os métodos write e writeln. Se o valor desta propriedade for null, será utilizado o processo como responsável pela saída do SimpleLayout, comportamento padrão do sistema.

Type:
  • Object

sourceClass :DBKey

Diretório da Virtual File System onde está localizado o processo. Será nulo caso o código-fonte do processo não seja definido na Virtual File System.

Type:
  • DBKey

status :string

Apresenta para o usuário uma mensagem com o estado do processo.

Indica qual ação o processo está executando no momento.

Type:
  • string
See:
Example
this.status = 'Mensagem';

title :string

Título do processo. Um vez definido esse nome aparecerá na aba referente ao processo.

Type:
  • string
Example
this.title = 'Título do process referente';

uri :string

O caminho do processo.

Type:
  • string

useLayoutManager :boolean

Indica se o layout do processo será gerenciado por um LayoutManager.

LayoutManager é o objeto responsável pela disposição dos elementos. Habilitando o LayoutManager você habilita o uso da propriedade column do elemento.

Type:
  • boolean
Example
var grid = this.grid( "TituloDaGrid" )
grid.column = 0

userKeyToValidatePermissions :number

Indica a chave do usuário que deve ser usada para validação de permissões.

Type:
  • number

visibleActions :Array.<(Button|string)>

Equivalente à propriedade visibleButtons.

Type:
Deprecated:
  • Utilize a propriedade visibleButtons.
See:
  • Process#visibleButtons

visibleButtons :Array.<(Button|string)>

Define quais botões estão visíveis na interação corrente. A ordem dos botões será alterada para refletir a ordem informada nesta propriedade.

Type:
See:
  • Process#enabledButtons
Example
this.visibleButtons = ["Botão 1", "Botão 2"]

workloadType :string

Indica para o banco de dados qual o comportamento da aplicação que está requisitando os dados. Valores possíveis:

  • "olap" (Online Analytical Processing): Indicado para relatórios ou processos de consulta. Normalmente interagem com uma massa de dados média ou elevada. Prioridade de atendimento média;
  • "oltp" (Online Transaction Processing): Indicado para processos que realizam a leitura ou gravação de poucos registros. Prioridade de atendimento alta;
  • "dw" (Data Warehouse): Indicado para processos que consolidam grandes massas de dados para pesquisas posteriores. Prioridade de atendimento baixa;
Type:
  • string
Default Value:
  • "olap"

Methods


action()

Equivalente ao método button.

Deprecated:
  • Utilize o método button.
See:
  • Process#button

activity(name, func [, opt_permKeyWord] [, opt_exitFunc])

Cria ou redefine uma atividade. Atividade é um conjunto de instruções que não retornam saída visual para o usuário.

Não ocorre nenhuma interação com o usuário. Ao final da execução de uma atividade, o fluxo de execução irá continuar e a próxima interação ou atividade será executada, caso queira definir a próxima interação a ser executada utilize o método setNextInteraction.

Parameters:
Name Type Argument Description
name string

Nome da atividade.

func function

Função de definição da atividade. Pode-se declarar a função no próprio parâmetro.

opt_permKeyWord string <optional>

Palavra chave de permissão. Indica que permissão o usuário precisa ter acesso para a execução da atividade.

opt_exitFunc function <optional>

Evento disparado ao ser fechado a interação corrente.

See:
  • Process#setNextInteraction
  • Process#hasPermission
  • Process#permissionKeyWord
  • Process#interaction
Returns:

A atividade identificada por name.

Type
Interaction
Example
this.activity("Nome da atividade", function () {
       .
   }, "String de permissão")

alert(message)

Mensagem de alerta exibida ao usuário.

Parameters:
Name Type Description
message string

Mensagem de alerta.

Example
this.alert('Alerta');

authenticateUser(label)

Exibe uma janela de autenticação solicitando o nome e a senha de um usuário do sistema. Pode ser utilizado em operações onde é necessária a confirmação do usuário logado ou para autenticar um usuário com privilégios que o usuário corrente não possui.

Não é possível autenticar usuários utilizando provedores de identidade externos que não permitem a coleta das credenciais dos usuários, como o Google, pois o fluxo de autenticação desses provedores exige que o usuário seja redirecionado para uma página externa ao sistema, encerrando a sessão do usuário. O uso deste método também exige a presença física do autorizador, o que inviabiliza fluxos de autorização remota. Por esses motivos, deve ser dada preferência a outros fluxos de autorização, como a gravação de operações com estado pendente de aprovação e interfaces de aprovação dessas operações.

Parameters:
Name Type Description
label string

Mensagem indicando o propósito da autenticação.

Returns:

Chave do usuário autenticado ou -1 caso a autenticação falhe com as credenciais informadas. Será retornado null caso o usuário cancele o diálogo ou se for atingido o tempo máximo de espera.

Type
number | null
Example
const userKey = this.authenticateUser('Mensagem de autenticação');

beep()

Emite um beep padrão do sistema.

Importante: Esse componente utiliza um recurso do HTML5 (tag

See:
  • uwi.audio.Audio

button(name, target [, order] [, processKey] [, newTab])

Cria um botão no processo se não existir um com o nome informado. Caso exista, será retornada a instância criada anteriormente.

Parameters:
Name Type Argument Description
name string

Nome do botão. O valor informado também será utilizado como o texto do botão, caso a propriedade label do botão não seja informada.

target string | function

Poderá ser informado:

  • nome de uma interação;
  • nome de uma atividade;
  • função que será atribuída ao evento onClick do botão. Se "target" for uma string vazia e o parâmetro "processKey" for informado, será considerado como destino a primeira interação do processo destino.
order number <optional>

Ordem do botão na barra de botões. Prefira utilizar a propriedade Process.visibleButtons.

processKey number <optional>

Indica a chave do processo que contém a atividade ou interação informada no parâmetro "target". Será considerado o processo corrente quando não for informado.

newTab boolean <optional>

Indica se deve ser criada uma nova aba para exibir a interação ou atividade informada em "target". Considerado "false" quando não for informado.

See:
  • Process#Button
Returns:
Type
Button
Example
this.button( "Exibir mensagem", function (bt){
    bt.process.alert("Olá!")
   })

clearActions()

Equivalente ao método clearButtons.

Deprecated:
  • Utilize clearButtons.
See:
  • Process#clearButtons

clearButtons()

Remove os botões declarados no processo.


clearHistory()

Limpa o histórico do botão voltar, impossibilitando que o usuário volte a uma interação anterior.

Um cenário comum de uso deste método são os processos que são realizados em etapas e se deseja que o usuário não volte para uma etapa anterior caso ele tenha concluído o processo. Nesses casos, pode ser utilizado o clearHistory na última interação, garantindo que o usuário não retorne para as anteriores, e na primeira, necessário para o caso do usuário reiniciar o processo, não permitindo que ele volte para a última interação.

Importante: a limpeza do histórico deve ser realizada no início da definição da interação, antes da escrita dos componente visuais e das execuções do método write.

Example
this.interaction('finish', function () {
  this.clearHistory();
});

close()

Este método existe para contornar um bug do contador de referência dos objetos no ambiente JavaScript quando ocorre referência circular.


closeTab( [opt_targetTabId])

Fecha a aba que contém o processo, e o processo em si.

Parameters:
Name Type Argument Description
opt_targetTabId number <optional>

Identificador da aba a ser selecionada após o fechamento da aba atual.


confirm(msg [, opt_noAsDefault])

Exibe uma janela solicitando confirmação do usuário.

Parameters:
Name Type Argument Description
msg string

Mensagem com a pergunta a ser exibida para o usuário.

opt_noAsDefault boolean <optional>

Determina se a resposta padrão é "não".

Example
var resposta = this.confirm ('Mensagem', true);

deleteGrid(name)

Exclui uma grade criada anteriormente pelo método grid. As grades detalhes também serão excluídas.

Parameters:
Name Type Description
name string

Nome da grade a ser excluída.

See:
  • Process#grid
Returns:

True se localizou e apagou a grade informada e todas as suas grades detalhes.


download(files [, options])

Realiza uma operação de download dos arquivos.

Quando informado mais de um arquivo, esse método irá compactá-los em um arquivo zip com todos os arquivos informados.

Poderão ser informados arquivos de diferentes fontes de armazenamentos, como o sistema de arquivos do sistema operacional, a Virtual File System, a Union File System ou a LobStorage.

Parameters:
Name Type Argument Description
files string | number | DBKey | Array.<(string|number|DBKey)>

Arquivos que serão descarregados pelo usuário.

options DownloadOptions | Record.<*, *> <optional>

Opções da operação do download. Ver DownloadOptions para mais detalhes.

See:
Examples
process.download(filePath);
process.download([filePath, vfsKey, lobKey], {
  fileName: 'Anexos da operação'
});

Cria uma âncora para uma consulta automatizada.

Parameters:
Name Type Argument Description
name string

Nome da âncora.

dsvKey number

Chave da consulta automatizada.

opt_newTab boolean <optional>

True para abrir o processo referenciado pela âncora em uma nova aba.

Returns:

Âncora para uma consulta automatizada

Type
Object

getFileId(filePathOrVfsKey)

Retorna um identificador para um arquivo do sistema operacional ou da Virtual File System, para que possa ser utilizado em uma operação de download via API Link.prototype.srcId.

O uso desta API não é mais recomendado, pois a sessão do usuário é bloqueada enquanto o arquivo é descarregado. Prefira utilizar o método Process.prototype.download.

Parameters:
Name Type Description
filePathOrVfsKey

Path do arquivo ou chave do script na ivfs

See:
Returns:

Id para o arquivo

Type
string

Obtém um mapa dos links criados no processo. O mapa associa o nome do link à instância criada.

Returns:
Type
Record.<string, Link>

getSimpleLayout()

Cria uma instância do SimpleLayout.

Returns:

Instância do SimpleLayout.

Type
SimpleLayout

grid(name [, opt_ds] [, opt_classKey] [, opt_masterGrid])

Cria ou retorna uma grade previamente definida.

Parameters:
Name Type Argument Description
name string

Nome da grade.

opt_ds DataSet <optional>

Se informado, teremos uma grade de registros se não, teremos uma grade de variáveis.

opt_classKey number <optional>

Chave da classe que terá definição de campos da grade, somente utilizado para grades de registros. A classe de definição dos campos é um arquivo x-class onde todas as configurações, assim como os campos, estão definidos.

opt_masterGrid Grid <optional>

Define quem é a grade mestre, fazendo assim um relação de masterDetail.

Essa relação é automaticamente criada quando, na definição dos campos da grade, define-se um campo do tipo "grid".

Returns:
Type
Grid
Example
this.ds = classes.getCachedDataSet(-2090000000);
   var grid = this.grid("exemplo", this.ds);

handleHistoryNavigation(direction)

Trata uma requisição de navegação no histórico do processo.

Parameters:
Name Type Description
direction string

Direção da solicitação de navegação no histórico, pode ser back ou forward.


hasButton(name)

Indica se um botão com o nome informado já existe no processo.

Parameters:
Name Type Description
name string

Nome do botão a ser verificado.

Returns:

True se existir um botão com o nome informado.

Type
boolean

hasPermission(permissionKeyWord)

Verifica se o usuário tem determinada permissão previamente configurada pela propriedade permissionKeyWords.

Parameters:
Name Type Description
permissionKeyWord string

Palavra chave de permissão. Indica que permissão o usuário precisa ter acesso para a execução da interação.

Returns:
Type
boolean
Example
// Definindo a permissão.
   this.permissionKeyWords.push('podeAprovar')
   //Durante a execução de uma atividade está sendo verificado a permissão.
   this.activity('executa', function () {
    ...
    if (this.hasPermission('podeAprovar')) {
     ...
    }
    ...
   })

interaction(name, func [, opt_permKeyWord] [, opt_exitFunc])

Cria ou redefine uma interação. Interação se trata de um conjunto de instruções que retornam uma saída visual para o usuário. Ao final de uma interação o fluxo de execução para esperando a interação com o usuário.

Parameters:
Name Type Argument Description
name string

Nome da interação.

func function

Função de definição da interação.

opt_permKeyWord string <optional>

Palavra chave de permissão. Indica que permissão o usuário precisa ter acesso para a execução da interação.

opt_exitFunc function <optional>

Evento disparado ao ser fechado a interação corrente.

See:
  • Process#hasPermission
  • Process#permissionKeyWord
  • Process#activity
Returns:

A interação identificada por name.

Type
Interaction
Example
// No Exemplo abaixo está sendo definida uma interação que só pode ser
   // executada
   // pelos usuários que possuem a permissão can_calculate

   this.interaction('calculate', function () {
       //
   }, "can_calculate")

label(name [, opt_text])

Objeto utilizado para escrita de mensagens na tela.

Parameters:
Name Type Argument Description
name string

Nome do label, se não for definido o texto a ser escrito na tela, o texto exibido será o definido pelo parâmetro name.

opt_text string <optional>

Conteúdo a ser exibido pelo label.

Returns:

Objeto que deve ser utilizado para escrever mensagens na tela do usuário.

Type
module:@nginstack/web-framework/lib/label/Label~Label
Example
var label = this.label("labelName", "Selecione uma opção acima.")
   label.write()

Cria uma âncora que quando clicada direciona o usuário para uma Interação, Atividade ou Executa uma função desejada.

Parameters:
Name Type Argument Description
name string

Nome da âncora.

nextInteractionNameOrFunction string | function <optional>

Nome da interação, atividade ou função para onde o usuário será direcionado.

processKey number <optional>

Chave do processo.

newTab boolean <optional>

Indica se deve ser criada uma nova aba para a Interação ou Atividade seguinte.

Returns:

Objeto que representa uma âncora e que pode ser escrita utilizando o método write.

Type
Link
Example
var lnk =  this.link("Nome do link","Interação")
lnk.write()

lookup(field)

Dispara grade lookup em campos da grade que estejam relacionados com registros de uma tabela.

Parameters:
Name Type Description
field GridField

Campo que possui a propriedade lookup definida.


prompt(label, answers [, opt_verticalAlign] [, opt_defaultOptionIndex] [, opt_escapeIndex])

Exibe uma janela de pergunta com opções de resposta para o usuário.

Parameters:
Name Type Argument Description
label string

Mensagem com a pergunta a ser exibida para o usuário.

answers Array.<Array>

Array com pares (pergunta, valor de retorno) de respostas a serem exibidas para o usuário. Ex: [['Pergunta 1', valorRetorno1], ['Pergunta 2', valorRetorno2]].

opt_verticalAlign number <optional>

Alinhamento vertical da janela.

opt_defaultOptionIndex number <optional>

Índice do array answers que será a opção pré-selecionada.

opt_escapeIndex number <optional>

Índice do array Answers que será a resposta assumida caso o usuário utilize a tecla de escape.

Returns:

Valor da opção selecionada pelo usuário ou do item indicado por opt_escapeIndex caso o usuário pressione a tecla ESC.

Type
*
Example
const result = process.prompt('Mensagem', [
 ['Pergunta 1 ', 1],
 ['Pergunta 2', 2]
], true, 1, 0);

requires(uri)

Adiciona arquivos como requeridos no processo. Esse método carrega o arquivo apenas uma vez por processo no fim da escrita antes do .

Parameters:
Name Type Description
uri string

URI do arquivo que queira que seja carregado.


setNextInteraction(activityName [, opt_params] [, opt_processKey] [, opt_processId] [, opt_newTab])

Define a próxima interação que o processo deve seguir. É mais utilizado em interações que não possuem saída visual para o usuário, ou seja, uma interação de processamento (atividade).

Este método não força a passagem imediata para a Interação ou Atividade definida, apenas seta uma propriedade no processo.

A passagem só acontecerá ao final da Interação ou Atividade corrente.

Parameters:
Name Type Argument Description
activityName string

Interação ou Atividade para qual o processo deve seguir.

opt_params Array <optional>

Array com pares (nomes, objetos) a serem setados na próxima Interação ou Atividade. Ex: ["nome", this.nome, "chaves", this.chaves]

Possibilita assim, enviar parâmetros para a próxima interação.

opt_processKey number <optional>

Chave do processo que será instanciado e chamado para a próxima Interação ou Atividade setada no parâmetro activityName.

opt_processId number <optional>

Id do processo que será chamado para a próxima Interação ou Atividade setada no parâmetro activityName. Este parâmetro será ignorado caso seja solicitada a abertura de uma nova aba por meio do parâmetro opt_newTab, pois uma mesma instância de um processo não pode ser utilizada por mais de uma aba simultaneamente.

opt_newTab boolean <optional>

Indica se deve ser criada uma nova aba para a Interação ou Atividade seguinte.

Example
setNextInteraction('Exit', ['parameter1', value1, ...,'parameterN', valueN] )

showProgress(currentStep, maxStep, label)

Utilizado para mostrar o estado de progresso de determinada atividade.

Parameters:
Name Type Description
currentStep number

Valor que indica o esforço realizado. Deve ser entre zero e maxStep.

maxStep number

Valor que indica o esforço total a ser realizado.

label string

Texto descrevendo a ação em progresso.

Deprecated:
  • Prefira utilizar a classe Progress
See:
Examples
this.showProgress(ds.recNo, ds.recordCount, 'Percorrendo registros do DataSet');
// API Progress recomendada
var progress = new Progress();
progress.beginTask('Mensagem de exibição', Quantidade de trabalho);
try {
  //...
  progress.worked()
 } finally {
   progress.done()
 }

upload( [options])

Abre um diálogo para realizar o upload de arquivos e retorna um promise que será resolvido com os arquivos informados pelo usuário ou uma rejeição caso a operação seja cancelada.

Parameters:
Name Type Argument Description
options module:@nginstack/web-framework/lib/file-loader/UploadOptions~UploadOptions <optional>

Opções da operação de upload.

See:
Returns:

Retorna um promise que será resolvido com um array com os arquivos recebidos do cliente (instâncias de module:@nginstack/web-framework/lib/file-loader/UploadedFile) ou rejeitado com um erro caso ocorra uma falha no envio ou se o usuário cancelar a operação.

Type
Promise.<Array.<UploadedFile>>
Examples
this.button('Selecionar arquivo', function (bt) {
   const process = bt.process;
   process.upload().then(function (files) {
     files.forEach(function (file) {
       process.alert('Arquivo "' + file.name + '" recebido. Tamanho: ' + file.size + '. Tipo: ' +
         file.contentType + '.');
     });
   }).catch(function (reason) {
     process.alert(reason);
   });
 });
this.button('Anexar imagens na VFS', function (bt) {
   const process = bt.process;
   process.upload({
     maxFiles: 20,
     accept: 'image/*'
   }).then(function (files) {
     files.forEach(function (file) {
       file.uploadToVfs('/web-site/images');
     });
   }).catch(function (reason) {
     process.alert(reason);
   });
 });
this.button('Anexar imagens na LobStorage', function (bt) {
   const process = bt.process;
   process.upload({
     maxFiles: 20,
     accept: 'image/*'
   }).then(function (files) {
     files.forEach(function (file) {
       file.uploadToLobStorage(classKey);
     });
   }).catch(function (reason) {
     process.alert(reason);
   });
 });
this.button('Contar palavras', function (bt) {
   const process = bt.process;
   process.upload({
     maxFiles: 1,
     accept: 'text/plain'
   }).then(function (files) {
     process.caminhoArquivo = File.getTempFileName();
     files[0].move(process.caminhoArquivo);
     process.setNextInteraction('showResult');
   }).catch(function (reason) {
     process.alert(reason);
   });
 });

 this.interaction('main', function () {
   this.visibleButtons = ['Contar palavras'];
   this.label('Selecione um arquivo de texto para contar as palavras.').write();
 });

 this.interaction('showResult', function () {
   let qty = 0;
   const file = new File(this.caminhoArquivo);
   try {
     while (!file.eof) {
       file.readln().split(' ').forEach(function (word) {
         if (word.trim()) {
           qty++;
         }
       });
     }
   } finally {
     file.close();
   }

   this.label('Há ' + qty + ' palavras no arquivo.').write();
 });

write(content)

Utilizado para enviar um texto diretamente para o navegador, possibilitando assim a escrita de conteúdos HTML.

Este método não realiza nenhum tipo de tratamento ou sanitização dos dados, portanto o conteúdo escrito deve ser tratado previamente pelo desenvolvedor a fim de evitar ataques do tipo Cross Site Scripting (XSS). Para mensagens simples a serem exibidas ao usuário, é preferível utilizar o método label.

Além de suportar valores do tipo string, este método também permite receber objetos que implementem o método html e, opcionalmente, o método getClientLibraries.

Parameters:
Name Type Description
content *

Conteúdo a ser escrito na interface.

See:
  • Process#label
Example
this.interaction('main', function () {
  this.write(safeHtmlContent);
});

Events


beforeExit

Evento que sinaliza que o processo está sendo encerrado. Seu uso é recomendado quando há necessidade de alertar o usuário que o fechamento do processo poderá gerar perda de informações não gravadas.

Ele é emitido antes da aba do processo ser fechada, seja pelo usuário ou pelo método closeTab, ou quando um botão, atalho ou atividade do processo redirecionar o usuário para um outro processo na mesma aba.

A finalização do processo poderá ser impedida chamando o método preventDefault do evento.

Importante: este evento não será emitido quando o usuário fechar o navegador ou a aba onde o sistema está aberto. Por questões de segurança, os navegadores impedem a execução de JavaScript no fechamento de uma página web.

Type: module:@nginstack/web-framework/lib/process/ProcessEvent~ProcessEvent
See:
Example
process.on('beforeExit', function (evt) {
   const process = evt.process;
   const grid = process.grid('pending');
   if (!grid.ds.isEmpty){
     if (!process.confirm('Ainda há operações a serem analisadas. Deseja realmente sair?') {
       evt.preventDefault();
     }
   }
 });