Class: Process

uwi.process. Process


new Process(key, id, responseObject, sourceClass, environment)

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.

environment Environment

Chave da classe onde o processo está localizado.

Extends

  • uwi.component.Master

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:

enabledButtons :Array

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

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

environment :Environment

Objeto que representa o ambiente Web Framework.

Type:

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: {
        variaveis: "Ajuda da grade variaveis na visão do processo."
    },
    interacaoLer: {
        overview: "Texto explicativo sobre a interacaoLer.",
        buttons: {
            executar: "Sobre o botão executar na visão da interacaoLer.",
            abortar: "Sobre o botão abortar na visão da interacaoLer."
        },
        grids: {
            itens: "Ajuda da grade itens no contexto da interacaoLer."
        }
    },
    interacaoGravar: {
        overview: "Texto explicativo sobre a interacaoGravar.",
        grids: {
            itens: "Ajuda da grade itens no contexto da interacaoGravar."
       }
    }
};

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:

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:

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:
  • Progress
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

Equivalente à propriedade visibleButtons.

Deprecated:
  • Utilize a propriedade visibleButtons.
See:

visibleButtons :Array

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

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

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:
  • uwi.process.Process#Button
Example
this.button( "Exibir mensagem", function (bt){
    bt.process.alert("Olá!")
   })

clearActions()

Equivalente ao método clearButtons.

Deprecated:
  • Utilize clearButtons.
See:

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

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, uwi.anchor.Link>

getSimpleLayout()

Cria uma instância do SimpleLayout.

Returns:

Instância do SimpleLayout.

Type
uwi.report.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
uwi.grid.Grid
Example
this.ds = classes.getCachedDataSet(-2090000000);
   var grid = this.grid("exemplo", this.ds);

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:
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 uwi.field.Field

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:
  • Progress
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 uwl.fileloader.UploadOptions | Object <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 uwl.fileloader.UploadedFile) ou rejeitado com um erro caso ocorra uma falha no envio ou se o usuário cancelar a operação.

Type
uwi.promise.Promise.<Array.<uwl.fileloader.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:
Example
this.interaction( "main", function (){
    this.write ("Mensagem")
    var minhaInstancia = new MeuObjeto();
    this.write (minhaInstancia)
   })