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

Chave da classe onde o processo está localizado.

Extends

  • MasterComponent

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 Mail, 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 :Object|string

Ajuda descrevendo a utilização do processo para o usuário. Tecla de atalho para o help : Alt + F1. Recomenda-se que a ajuda seja a mais intuitiva possível.
Pode-se utilizar alguns caracteres para melhorar a apresentação da ajuda como, por exemplo, "\n" para quebrar a linha.

Type:
  • Object | 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 na ú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

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

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 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

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

opt_exitFunc function

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)

Utilizado em operações críticas onde precisa-se ter certeza do usuário que está logado.
Essa função exibe uma janela de autenticação confirmando o nome e senha do usuário corrente.

Parameters:
Name Type Description
label string

Mensagem de alerta para o usuário.

Example
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 o painel de botões do processo.


clearHistory()

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

Example
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.


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 id para um arquivo ou script da ivfs

Parameters:
Name Type Description
filePathOrVfsKey

Path do arquivo ou chave do script na ivfs

Returns:

Id para o arquivo

Type
string

getFormattedHelp()

Formata o help com JSON.stringify.

Returns:

String formatada com JSON.stringify.

Type
string

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

Returns:
Type
Object.<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);

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 Description
name string

Nome da interação.

func function

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

opt_permKeyWord string

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

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.

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.

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 com pares (pergunta, valor de retorno) de respostas a serem exibidas para o usuário.
Ex: ['Pergunta 1', valor retorno 1, 'Pergunta 2', valor retorno 2]

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.

Example
var resposta = this.prompt('Mensagem',
       [['Pergunta 1 ', Valor referente resposta 1],
       ['Pergunta 2', Valor referente resposta 2]],
       10, 1, 0);

redirectIfInteractionWasChanged()

Redireciona o usuário para uma nova interação caso o método #setNextInteraction tenha sido executado.

Throws:

Será gerada uma exceção quando houver um redirecionamento para abortar o processamento atual e permitir que o usuário seja redirecionado para uma outra interface.

Type
Error

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: ["ds", this.ds, "chaves", this.chaves]
Possibilita assim, enviar parâmetros para a próxima interação.

opt_processKey number <optional>
<nullable>

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>
<nullable>

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()

Utilizado para mostrar o estado de progresso de determinada atividade.
Não mais utilizada, preferível utilizar a classe Progress.

See:
Example
var progress = new Progress();
   progress.beginTask('Mensagem de exibição', Quantidade de trabalho);
   try {
    //...
    progress.worked()
   } finally {
    progress.done()
   }

upload( [opt_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
opt_options UploadOptions | Object <optional>

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

See:
  • module:@nginstack/web-framework/lib/file-loader/UploadedFile
  • module:@nginstack/web-framework/lib/file-loader/UploadOptions
Returns:

Retorna um promise que será resolvido com um array com os arquivos recebidos do cliente (instâncias de module:@nginstack/web-framework/lib/fileloader/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) {
   var 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', function (bt) {
   var 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);
   });
 });

write(str)

Utilizado para enviar um texto diretamente para o navegador, possibilitando assim a escrita de conteúdos HTML. Se o desejo for escrever mensagens na tela é preferível a utilização do método label. Além de String essa função pode também receber Objects que implementem uma função chamada html para retornar uma String.

Parameters:
Name Type Description
str Object

String ou Object que implemente a função html.

See:
  • Process#label
Example
this.interaction( "main", function (){
    this.write ("Mensagem")
    var minhaInstancia = new MeuObjeto();
    this.write (minhaInstancia)
   })