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
-
dbkey :DBKey
-
Chave da tabela iVfs que contém o código fonte do processo.
Type:
- DBKey
-
disableSaveInputAsDefault :boolean
-
Indica se o recurso saveInputAsDefault de todos os field será desabilitado.
Type:
- boolean
- Deprecated:
-
- Yes
-
enabledActions :Array.<(Button|string)>
-
Equivalente à propriedade enabledButtons.
Type:
- Array.<(Button|string)>
- Deprecated:
-
- Utilize a propriedade enabledButtons.
- See:
-
- Process#enabledButtons
-
enabledButtons :Array.<(Button|string)>
-
Define quais botões estão habilitados na interação corrente.
Type:
- Array.<(Button|string)>
- 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.<string>
-
Array de strings disponibilizado pelo processo para a validação de permissões. Deve ser utilizado da seguinte forma.
- O desenvolvedor ao fazer um processo pode estar publicando algumas permissões para o processo, como por exemplo: this.permissions = ['podeAprovar', 'podeCalcular', ...]
- 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;
- 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.<string>
- 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 :number|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:
- number | 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:
- Array.<(Button|string)>
- 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:
- Array.<(Button|string)>
- 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
Returns:
- Type
- 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.
-
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.
Examples
process.download(filePath);
process.download([filePath, vfsKey, lobKey], { fileName: 'Anexos da operação' });
-
dsvLink(name, dsvKey [, opt_newTab])
-
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
-
getLinks()
-
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
ouforward
. -
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.
Example
var label = this.label("labelName", "Selecione uma opção acima.") label.write()
-
link(name [, nextInteractionNameOrFunction] [, processKey] [, newTab])
-
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()
-
loadModule(path)
-
Executa a função exportada pelo módulo informado com o objetivo de definir o processo.
Atualmente, os processos são definidos em arquivos da Virtual File System, cujo conteúdo são scripts que são injetados durante a construção do processo. Na construção do processo,
this
é a instância do processo, no entanto, ferramentas de análise de código não conseguem deduzir essa informação e presumem quethis
seja o objeto global, prejudicando a sugestão e validação de códigos.Este método tem o propósito de permitir que a definição do processo seja realizada por uma função declarada em um módulo JavaScript utilizando uma sintaxe que permita a inferência correta de tipos.
A função exportada pelo módulo receberá como parâmetro a instância do processo e deverá configurar todas as propriedades e interações dentro do escopo da função. No escopo do módulo devem ser declaradas apenas as variáveis e constantes que podem ser compartilhadas por todas as instâncias do mesmo processo.
É importante observar que os módulos são por especificação singletons, portanto, o código-fonte que define o módulo é executado uma única vez, enquanto a função exportada pelo método será executada para cada instância construída do mesmo processo. Diferentemente da função
require
, este método recarregará o módulo caso seja detectada uma modificação no arquivo que o definiu.Para mais detalhes e exemplos de uso, veja a documentação no site https://nginstack.com.
Parameters:
Name Type Description path
string Caminho ou identificador do módulo a ser carregado.
-
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, options)
-
Exibe um diálogo de pergunta com opções de resposta para o usuário.
Parameters:
Name Type Description label
string Mensagem com a pergunta a ser exibida para o usuário.
answers
Array.<Array> Array com pares (rótulo, valor de retorno) de respostas a serem exibidas para o usuário. Ex: [['Resposta 1', valorRetorno1], ['Resposta 2', valorRetorno2]].
options
PromptOptions Configurações adicionais do diálogo.
Returns:
Valor da opção selecionada pelo usuário.
- Type
- *
Example
const result = process.prompt('Selecione o tamanho do papel', [ ['A4', 1], ['A5', 2], ['A2', 3], ], { defaultIndex: 0, escapeIndex: 2 });
-
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