You are on page 1of 62

Manual de Modelação

OMNIA PLATFORM

Versão 1.0
Junho de 2016
Índice

Índice................................................................................................................................. 2

Introdução ......................................................................................................................... 6

Plataforma ......................................................................................................................... 6

REA .................................................................................................................................6

Processo de Desenvolvimento............................................................................................. 8

Templates ........................................................................................................................8

Entidades e processos de negócio ....................................................................................... 8

Como criar uma entidade?................................................................................................. 9

Como permitir relacionar utilizadores?............................................................................... 10

Como criar um processo? ................................................................................................ 10

Como criar interações? ................................................................................................... 10

Como criar um compromisso/evento? ............................................................................... 11

Como configurar um compromisso/evento? ........................................................................ 12

Como configurar uma entidade transacional para ser vista como um calendário? ..................... 12

Como configurar uma View? ............................................................................................ 13

Interface .......................................................................................................................13

Como gerir grupos? ........................................................................................................ 13

Outros comportamentos ................................................................................................14

Como esconder uma entidade/interação? .......................................................................... 14

Como configurar os comportamentos de gravação? ............................................................. 14

Como permitir a reversão de entidades/interações? ............................................................ 14

Como definir uma entidade como um Contacto? ................................................................. 14

Atributos .......................................................................................................................... 15

Tipos de dados ...............................................................................................................16

Fórmulas .......................................................................................................................18

Ações.............................................................................................................................19

Momentos ..................................................................................................................... 19

Tipos de Ação ................................................................................................................ 20

Como definir uma ação?.................................................................................................. 21

Como gerir um atributo? ................................................................................................. 21

Comportamento .............................................................................................................21

Pg 2
Como definir obrigatoriedade? ......................................................................................... 21

Como definir um valor por defeito? ................................................................................... 22

Como filtrar entidades? ................................................................................................... 22

Como definir as fórmulas? ............................................................................................... 22

Interface .......................................................................................................................23

Como alterar a visibilidade? ............................................................................................. 23

Como alterar o posicionamento? ...................................................................................... 23

Como definir um atributo como não editável? ..................................................................... 23

Como definir um atributo como só de leitura? .................................................................... 23

Acesso a dados ..............................................................................................................24

Entidades de configuração ................................................................................................ 24

Como criar outras entidades?........................................................................................... 24

Como criar tabelas de configuração? ................................................................................. 25

Como criar uma lista com valores pré-definidos? ................................................................ 25

Satisfação de compromissos ............................................................................................. 25

Como configurar uma satisfação de um compromisso? ........................................................ 26

Como configurar os mapeamentos entre entidades? ............................................................ 26

Fluxos de aprovação ......................................................................................................... 27

Como criar uma etapa de aprovação? ............................................................................... 27

Como configurar o próximo aprovador? ............................................................................. 28

Como configurar o fluxo de etapas? .................................................................................. 28

Como tornar um atributo editável numa etapa de aprovação? ............................................... 29

Visualização de dados....................................................................................................... 29

Listas.............................................................................................................................29

Como criar uma lista? ..................................................................................................... 29

Como visualizar a lista como calendário? ........................................................................... 30

Como configurar os dados de uma lista? ............................................................................ 30

Como configurar as opções disponíveis numa lista? ............................................................. 31

Painéis de controlo ........................................................................................................31

Como criar um gráfico? ................................................................................................... 31

Como criar um painel de controlo?.................................................................................... 32

Como adicionar elementos? ............................................................................................. 32

Como definir um painel de controlo como aparecendo na página de entrada? .......................... 33

Relatórios de impressão.................................................................................................33

Como desenvolver um relatório de impressão? ................................................................... 33

Pg 3
Como testar um relatório durante o desenvolvimento? ........................................................ 34

Como adicionar um relatório à plataforma? ........................................................................ 34

Como configurar a impressão de um relatório? ................................................................... 35

Leitura de dados de outros sistemas ................................................................................. 36

Como criar um sistema externo? ...................................................................................... 36

Como criar uma entidade externa? ................................................................................... 36

Scripts de integração em sistemas externos ..................................................................... 37

Como executar o conetor? ............................................................................................... 37

Como desenvolver um script? .......................................................................................... 37

Como adicionar referências a um script?............................................................................ 38

Como comunicar com a API da plataforma? ....................................................................... 38

Como aplicar alterações na plataforma aos documentos? ..................................................... 38

Como testar um script durante o desenvolvimento? ............................................................ 39

Como colocar um script na plataforma? ............................................................................. 39

Como definir o momento de execução de um script? ........................................................... 39

Notificações...................................................................................................................... 40

Como configurar o envio de uma notificação por email? ....................................................... 41

Como configurar os parâmetros de uma notificação? ........................................................... 41

Menu ................................................................................................................................ 42

Como criar um menu customizado? .................................................................................. 42

Como adicionar um link para outra aplicação? .................................................................... 42

Como adicionar um link para opções da própria aplicação? ................................................... 42

Como adicionar um agrupador de link? .............................................................................. 43

Segurança ........................................................................................................................ 43

Como criar um perfil de utilizador? ................................................................................... 43

Como configurar um filtro de segurança? ........................................................................... 44

Como criar um utilizador? ............................................................................................... 44

Como inativar um utilizador? ........................................................................................... 44

Erros ................................................................................................................................ 45

Anexos ............................................................................................................................. 46

Anexo 1: Descrição do problema ....................................................................................46

Anexo 2: Referência de fórmulas....................................................................................47

Operações matemáticas .................................................................................................. 47

Operações booleanas ...................................................................................................... 47

Operações de comparação............................................................................................... 48

Pg 4
Funções matemáticas ..................................................................................................... 48

Funções de manipulação de data ...................................................................................... 50

Funções de manipulação de texto ..................................................................................... 50

Anexo 3: Exemplos de fórmulas .....................................................................................51

Operações matemáticas .................................................................................................. 51

Operações booleanas ...................................................................................................... 51

Funções matemáticas ..................................................................................................... 51

Funções de manipulação de data ...................................................................................... 53

Funções de manipulação de texto ..................................................................................... 53

Anexo 4: Fórmulas de acesso a dados ............................................................................54

Anexo 5: Atributos base .................................................................................................55

Atributos base das entidades ........................................................................................... 55

Atributos base das entidades transacionais ........................................................................ 57

Atributos base das interações .......................................................................................... 58

Anexo 6: Notificações por omissão .................................................................................59

Notificações na aprovação ............................................................................................... 59

Notificações na reversão ................................................................................................. 61

Pg 5
Introdução
Este documento pretende servir como um manual do utilizador para toda a componente de modelação da
plataforma. Para esse fim, percorre todas as secções desta componente, explicando-as ao pormenor e
fornecendo exemplos descritivos para cada uma.

Plataforma
A plataforma consiste numa aplicação alojada na cloud cujo objetivo é permitir a qualquer pessoa, sem
necessidade de escrita de código, modelar aplicações informáticas orientadas ao negócio.

Permite uma prototipagem rápida de soluções para vários problemas, bem como uma entrega ágil de
diferentes versões de uma solução, respondendo a alterações nos requisitos que surjam durante o
desenvolvimento de um projeto.

O desenvolvimento na plataforma é efetuado numa linguagem de domínio específico, baseada nos princípios
do modelo REA (descritos na secção seguinte).

Ao usar uma linguagem deste tipo (baseada na teoria económica e na teoria da contabilidade), a plataforma
permite aos modeladores descrever soluções de uma forma mais aproximada ao domínio do problema e
mais afastada de questões de implementação, garantindo assim a facilidade em desenvolver uma aplicação
ainda que o utilizador tenha conhecimentos limitados de informática, mas elevados dentro do domínio do
problema em questão.

REA
A framework REA (Resources, Events, Agents) é orientada ao desenvolvimento de sistemas de
contabilidade, com foco no registo dos diversos eventos económicos de uma organização. Assume que
existe um número limitado de conceitos presentes em todo o software de contabilidade e que é possível
desenhar uma aplicação facilmente adaptável, sem pôr em causa o cumprimento das regras de negócio.

No caso da plataforma, os conceitos REA são aplicados da seguinte forma:

 Recursos económicos: entidades do sistema que representam bens com valor comercial e
quantidades possíveis de definir. Estes bens estão na posse de Agentes Económicos, sendo
trocados em transações financeiras entre agentes. Exemplos: Produtos, Dinheiro e Serviços;

 Agentes económicos: entidades do sistema que representam indivíduos ou conjuntos de


indivíduos. Estas entidades possuem recursos económicos e efetuam a troca dos mesmos em
transações financeiras. Exemplos: Clientes, Empresas e Colaboradores;

Pg 6
 Compromissos: representam o compromisso assumido entre dois agentes em efetuar uma
transação de recursos. O Compromisso é assumido uma vez que, muitas vezes, a transação não se
realiza no momento em que é definida, mas sim posteriormente. Podem ser de dois tipos:
incremento ou decremento, conforme representem uma diminuição ou um aumento nos recursos da
empresa. Exemplos: Pagamento de bens adquiridos, muitas vezes pago a prazo;

 Eventos económicos: representam a transação de recursos entre dois agentes, atuando um como
fornecedor e o outro como recetor. Desta forma, a transação representa um incremento para o
agente recetor e um decremento para o agente fornecedor. Excetuando alguns casos, como a
prestação de serviços, um Evento ocorre no momento em que foi criado.

Todos os compromissos são satisfeitos por um ou mais eventos económicos, numa ação
denominada por fulfillment, despoletada no momento em que a troca de recursos se efetua. Este
cumprimento pode ser total ou parcial.

A estes conceitos do modelo REA, a implementação da plataforma adiciona alguns conceitos adicionais:

 Entidades definidas pelo utilizador: entidades do sistema necessárias às transações financeiras,


mas que, no entanto, não podem ser considerados recursos ou agentes. Um exemplo de uma
entidade deste tipo utilizada para categorizar um agente seria o Departamento ou o Cargo que
ocupa na empresa;

 Interação: permite representar as mais diversas transações de recursos, sobre a forma de um


documento, sendo uma interação composta por três áreas distintas: Cabeçalho, Detalhes e
Resumo;

 Processo: permite agrupar várias interações em processos de negócio. Desta forma, é possível
obter uma organização lógica de interações de natureza semelhante.

Na secção Descrição do Problema deste documento, é apresentado um exemplo de um problema que pode
ser modelado na plataforma e que exemplifica os conceitos descritos nesta secção.

Pg 7
Processo de Desenvolvimento
A plataforma destaca-se, comparativamente a outras soluções de desenvolvimento, pela estrutura de
geração da aplicação. A aplicação produzida é interpretada diretamente a partir do modelo e todas as
modificações passam por alterações no modelo – usando uma estrutura no code (não necessita da escrita de
código).

O utilizador modelador pode desenvolver toda a sua aplicação testando os efeitos das suas alterações à
medida que modela, sem necessidade de fazer builds demoradas para obter resultados.

Toda a modelação é feita no contexto de um tenant. Um tenant corresponde a uma conta na plataforma, que
contém um modelo específico para a resolução de um problema em particular.

Templates
Um template é um tipo de tenant que corresponde a um modelo desenvolvido para dar resposta a um
problema específico. O objetivo é que corresponda à versão ‘base’ de uma solução, sem quaisquer dados a
nível da aplicação, e que essa versão base seja posteriormente utilizada para criar novos tenants, que
podem ser vistos como instanciações de um modelo para o cliente final.

Entidades e processos de negócio


Conforme explicado na secção REA, a plataforma utiliza uma lógica baseada em recursos, agentes e
eventos económicos. Os dois primeiros, bem como vários dos outros componentes descritos na secção, são
representados aqui como entidades. Uma entidade é então um dos componentes base de uma aplicação na
plataforma.

Tal como descrito anteriormente, existem vários tipos de entidades na plataforma que partilham
características de modelação:

 Agentes: representam agentes económicos;


 Recursos: representam recursos económicos;
 Entidades definidas pelo utilizador: entidades auxiliares para modelar um problema que não se
enquadrem nos dois tipos anteriores;
 Pares chave-valor: entidades utilizadas para limitar o valor de algo a um conjunto de valores.

Relativamente aos eventos económicos, estes são também representados como entidades, neste caso
entidades transacionais:

 Eventos: transação de recursos entre dois agentes;


 Compromissos: compromisso assumido entre dois agentes de efetuar uma transação de recursos.

Pg 8
Como criar uma entidade?
Aceder a Menu | Entities | Agents / Resources

Todas as entidades são criadas na zona correspondente do menu lateral da modelação. Contudo, as
entidades transacionais não são passíveis de criar aqui, uma vez que só fazem sentido no contexto de uma
interação. Os Agentes e Recursos partilham uma estrutura, sendo portanto criadas de forma análoga.

Ao aceder ao menu, surge a listagem de todas as entidades existentes desse tipo, disponíveis para
edição, bem como um botão de criação. Escolhendo a criação de uma nova entidade, surge um formulário
com os seguintes separadores:

 General: definição dos parâmetros básicos da entidade:


o Código: identificador único;
o Nome: nome da entidade, localizável em vários idiomas;
o Entity Items: itens que existem no contexto de uma entidade e que surgem como uma
tabela na aplicação. Ao criar um item deste tipo, surge um novo separador para o
configurar. Para tal, ver Entidades de configuração;
 View: definição de diferentes vistas sobre a interação que está a ser criada. Para configurar, ver
secção Como configurar uma View?;
 Attributes: definição de todos os atributos da entidade e seus comportamentos, bem como a
organização do ecrã sob a forma de grupos. Os atributos são descritos em mais detalhe na secção
Atributos e os grupos na secção Como gerir grupos?. Os atributos base estão detalhados no anexo
Atributos base;
 Documentation: definição de uma hiperligação para um documento de apoio, externo à plataforma,
associado a cada ecrã da interação;
 Others: descrição de vários outros comportamentos associados às entidades:
o Hidden: ver Como esconder uma entidade/interação?;
o Allow Users: ver Como permitir relacionar utilizadores? (apenas aplicável a entidades do
tipo Agent);
o After Submit: ver Como configurar os comportamentos de gravação?;
o Form Operations: ver Como configurar os comportamentos de gravação?;
o Tabbed Groups: ver Como gerir grupos?;
o Allow to Revert: ver Como permitir a reversão de entidades/interações?;
o Is Contact: ver Como definir uma entidade como um Contacto?.

Pg 9
Como permitir relacionar utilizadores?
Aceder a Menu | Entities | Agents

Nas entidades do tipo Agente é possível permitir a sua associação a um utilizador da plataforma. Para tal,
aceder à edição/criação de uma entidade deste tipo e no separador Others marcar a caixa Allow Users.

Exemplo: Associação de um utilizador a uma entidade Colaborador na plataforma permite, a partir do


momento que o utilizador efetue login, saber qual o Colaborador que lhe está associado, identificando-o
automaticamente ao fazer uma encomenda.

Como criar um processo?


Aceder a Menu | Processes

Um processo corresponde a uma unidade de organização na plataforma que permite agrupar várias
interações de natureza semelhante num só elemento agregador. São necessários apenas dois parâmetros
para configurar um Processo:

 Nome: nome do processo, localizável em vários idiomas;


 Código: código único que identifica o processo.

Exemplo: Numa aplicação de encomendas (ver Descrição do problema), criar o processo “Gestão de
Encomendas”. Posteriormente, este irá conter interações tanto representando o registo de encomendas
como o seu registo de receção.

Como criar interações?


Aceder a Menu | Processes

Na plataforma, as interações são a forma de definição das operações que serão executadas na aplicação,
representando uma interação entre vários agentes e trocas de vários recursos.

Uma interação tem três áreas: o cabeçalho (Document), as linhas de grelha (Details, opcionais), e um
resumo (Summary, opcional). O cabeçalho contém os atributos definidos no contexto da interação,
enquanto nos detalhes é possível ter uma ou mais entidades transacionais e no resumo uma entidade
transacional.

Para adicionar uma nova interação, selecionar o botão Add Interaction no contexto de um processo. Este
formulário, tal como o das Entidades, tem um conjunto de separadores onde é possível configurar vários
parâmetros:

 General: definição dos parâmetros básicos da interação:


o Código: identificador único;
o Nome: nome da interação, localizável em vários idiomas;

Pg 10
o Entity Items: itens que existem no contexto de uma interação e surgem como uma
tabela na aplicação. Ao criar um item destes, surge um novo separador para o
configurar (ver Entidades de configuração);
o Details: corpo do documento (opcional). Pode conter uma ou mais entidades
transacionais, correspondentes a linhas de grelha (ver Como configurar um
compromisso/evento?);
o Summary: resumo do documento (opcional). Pode conter uma entidade transacional
(ver Como configurar um compromisso/evento?);
 View: definição de diferentes vistas sobre a interação que está a ser criada (ver Como
configurar uma View?);
 Interaction Attributes: definição de todos os atributos do cabeçalho do documento e seus
comportamentos, bem como a organização do ecrã sob a forma de grupos. Os atributos são
descritos em mais detalhe na secção Atributos e os grupos na secção Como gerir grupos?. Os
atributos base estão detalhados no anexo Atributos base;
 Atributos de entidades transacionais: por cada entidade transacional adicionada, surge um
novo separador que permite configurar os atributos correspondentes, da mesma forma que no
cabeçalho;
 Documentation: definição de uma hiperligação para um documento de apoio, externo à
plataforma, associado a cada ecrã da interação;
 Others: outros comportamentos associados às interações:
o Hidden: ver Como esconder uma entidade/interação?;
o After Submit: ver Como configurar os comportamentos de gravação?;
o Form Operations: ver Como configurar os comportamentos de gravação?;
o Tabbed Groups: ver Como gerir grupos?;
o Allow to Revert: ver Como permitir a reversão de entidades/interações?.

Como criar um compromisso/evento?


Aceder a Menu | Processes | Criar ou editar uma interação

Na criação de uma interação, é frequentemente necessário criar um compromisso ou evento, quer para os
detalhes, quer para o resumo. Para tal, primeiramente é importante identificar se é necessário um
compromisso (a linha corresponde a uma promessa de algo) ou um evento (corresponde a uma satisfação
de uma promessa anterior). Sabendo isso, podemos reutilizar uma entidade transacional ou selecionar uma
nova, recorrendo à opção Create New.

Ao selecionar a opção Create New surge uma janela onde é possível definir os detalhes do
compromisso/evento a adicionar:

 Code: identificador da entidade transacional;


 Name: nome da entidade, localizável em vários idiomas;
 Kind: indicação se a entidade transacional corresponde a uma entrada de recursos na empresa
(Increment) ou a uma saída (Decrement);
 Provider Agent: definição do tipo de agente responsável pelo fornecimento dos recursos;
Pg 11
 Receiver Agent: definição do tipo de agente responsável pela receção dos recursos;
 Resource: definição do tipo de recurso a ser transacionado.

Exemplo: Numa aplicação de encomendas (ver Descrição do problema), criar uma interação representando
um pedido de encomenda. Aí pretende-se definir uma entidade na secção de detalhes que corresponda à
requisição ao fornecedor (Provider Agent) a entrega de artigos (Resource) à empresa (Receiver Agent).
Como esta entrega será efetuada numa data a definir, o tipo de entidade transacional em causa será um
compromisso.

Como configurar um compromisso/evento?


Aceder a Menu | Processes | Criar ou editar uma interação

Após a criação de um compromisso ou evento, ou ao editar uma interação que já os tenha, é possível aceder
a uma série de parâmetros de configuração:

 Min/Max: número mínimo e máximo de entidades transacionais permitidas;


 Ignore on Save: determina se o compromisso deve ser gravado juntamente com a interação.
Ignore on Save Condition permite tornar este campo condicional;
 Automatic Creation: permite a criação automática de uma entidade transacional com base noutra.
Field e Target Field determinam os campos utilizados para essa criação e Distinct determina se
será criada uma linha por cada valor diferente em Field ou uma por cada linha da entidade original;
 Expand Details: se existirem atributos definidos como visíveis na secção Details de uma linha, esta
opção determina que essa secção é expandida automaticamente;
 Lock row if: determina se uma linha inteira fica só de leitura;
 Context options (availability conditions): conjunto de condições que determinam se as opções de
contexto estão disponíveis;
 Calendar: Indica se a entidade transacional pode ser representada sob a forma de um calendário
(ver Como configurar uma entidade transacional para ser vista como um calendário?).

Como configurar uma entidade transacional para ser vista como um calendário?
Aceder a Menu | Processes | Criar ou editar uma interação

Numa interação, ao editar um evento ou compromisso, é possivel definir que este esteja visível sob a forma
de um calendário. Para tal, definir a checkbox Calendar como ativa, que fará aparecer um conjunto de
parâmetros a configurar:

 Default: se a vista de calendário é a vista por defeito;


 Hidden Grid: se se pretende ou não esconder a vista de grelha;
 Calendar name: nome do ficheiro de calendário exportado;
 Available views: das vistas possíveis (Anual, mensal, mensal (cronograma), semanal ou diário),
quais são disponibilizadas;
 Default view: vista do calendário a mostrar por omissão;

Pg 12
 Invalid Week Days: contém os dias não válidos para marcação no calendário;
 Calendar Period Begin/End: data de início e de fim do calendário;
 Title field: contém a informação a usar como título do evento demonstrado;
 Category field: categoria do calendário;
 Default date field: informação da data onde se pretende posicionar o calendário;
 Allow to select ranges: definir se um utilizador pode marcar eventos ou compromissos num
conjunto de dias de uma só vez usando o calendário;
 Begin date field: colocar a data de início de uma seleção de dias no calendário;
 End date field: colocar a data de fim de uma seleção de dias no calendário;
 Blocked days field: informação dos dias do calendário bloqueados (feriados);
 External events field: outros eventos (não eventos ou compromissos) que podem ser pertinentes
no calendário;
 Group by: atributo pelo qual são agrupados os elementos na vista de cronograma;
 Custom Icons: determina se podem ser usados ícones customizados no calendário;
o Property: atributo do tipo Value Pair cujos valores serão usados para calcular o ícone;
o Icons: mapeamento entre valores do atributo alvo e o ícone a usar.

Como configurar uma View?


No separador View é possível definir diferentes vistas sobre a entidade/interação que está a ser criada. Estas
vistas definem diferentes formulários sobre a mesma entidade ou interação, podendo ter conteúdos
diferentes e/ou ser mostrados a colaboradores diferentes. Possui os seguintes atributos:

 Code: identificador da vista;


 Context: definição do contexto no qual a vista se encontra disponível. Poderá estar disponível na
criação de novas entidades/interações, na edição ou em ambas;
 Name: nome da vista (passível de traduzir para os diversos idiomas da aplicação).

Para criar novas vistas e alternar entre as existentes, é necessário clicar no botão disponível no canto
superior direito, escolhendo a vista que se pretende manipular ou selecionando a opção “Create”.

Interface

Como gerir grupos?


Tanto em entidades como em interações, é possível dividir os atributos em grupos. Para criar um grupo,
aceder à criação ou edição de uma interação e, no separador Atributos, pressionar o botão de criação de
grupo. Isso faz com que um novo grupo seja criado, podendo ser renomeado na opção Group Name. A
opção Visibility condition permite definir as condições em que o grupo fica visível.

Após a criação de grupos, é também possível reorganizar a ordem pela qual são exibidos no sistema,
também no separador Atributos.

Pg 13
Por omissão, os grupos surgem na aplicação sob a forma de separadores. Contudo, existe a opção Tabbed
Groups, na secção Others, que permite trocar este comportamento e mostrar os grupos agrupados de forma
vertical, consecutivamente, no cabeçalho.

Outros comportamentos

Como esconder uma entidade/interação?


Para esconder uma entidade ou interação, aceder ao separador Others e marcar a opção Hidden. Isso faz
com que não apareça na aplicação final, no entanto continua a ser possível utilizável em outras entidades ou
interações.

Como configurar os comportamentos de gravação?


O parâmetro After Submit determina o comportamento que a aplicação toma após a gravação de uma
instância desta entidade ou interação. É possível escolher retornar à listagem das entidades/interações em
questão, retornar ao menu inicial ou ficar no ecrã de criação da entidade ou interação.

Também é possível alterar as opções que surgem no momento da gravação. O parâmetro Form Operations
permite definir as operações base da plataforma que estarão disponíveis. Existem dois modos possíveis:

 Standard: são mostradas todas as opções: Limpar, Gravar e, se aplicável, Submeter para
Aprovação;
 Custom: permite a seleção individual de cada operação.

Como permitir a reversão de entidades/interações?


Ao aceder ao separador Others, existe a propriedade Allow Revert que permite definir se a operação de
reversão de aprovações está disponível para a entidade ou interação em questão.

Como definir uma entidade como um Contacto?


Aceder a Menu | Entities | Criar ou editar uma entidade

Ao aceder ao separador Others fica acessível a propriedade Allow Contacts. Esta permite definir se o tipo
de entidade pode ser exportado sobre a forma de um ficheiro de contacto (formato vCard – extensão .vcf).
Em caso positivo, é necessário indicar quais os atributos da entidade que irão ser utilizados para compor a
informação do ficheiro de contacto.

Pg 14
Atributos
A figura dos atributos na plataforma é transversal, sendo estes comuns na definição dos diversos tipos de
entidades e interações. A sua gestão é igual nos diferentes locais, mantendo a mesma estrutura de
separadores:

 General: definição dos parâmetros básicos do atributo:


o Short Code: identificador do atributo, único dentro da entidade/interação;
o Name: nome do atributo mostrado no formulário, localizável em vários idiomas;
o Description: descrição mais completa do atributo, a mostrar no formulário, localizável em
vários idiomas;
o Persisted: indicação se o campo é ou não persistido, usado em casos onde o campo é
apenas auxiliar, não se pretendendo guardar um valor;
o Type: Tipo do campo (ver Tipos de dados);
 Behaviour: definição de várias propriedades relacionadas com o comportamento do atributo em
determinados contextos:
o Default Value: sugestão de valor para o atributo (ver Como definir um valor por defeito?);
o Required: indicação se o atributo é de preenchimento obrigatório (ver Como definir
obrigatoriedade?);
o Editable: indicação se o atributo pode ser manipulado ao editar (ver Como definir um
atributo como não editável?);
o Existence Condition: fórmula que condiciona a existência do atributo (ver Como definir as
fórmulas?);
o Required Condition: fórmula que condiciona a obrigatoriedade de preenchimento do
atributo (ver Como definir as fórmulas?);
o Formula: fórmula que calcula o valor do atributo (ver Como definir as fórmulas?);
o Validation Formula: fórmula que calcula se o valor do atributo é válido;
 Actions: definição de um conjunto de ações a executar em determinadas condições (ver Ações);
 Interface: definição das propriedades relacionadas diretamente com a visualização do atributo no
interface;
o Group: grupo no qual o atributo será colocado;
o Visible: se o atributo está visível (ver Como alterar a visibilidade?);
o Visible from Screen Sizes: tamanhos de ecrã a partir dos quais o atributo está visível (ver
Como alterar a visibilidade?);
o Visible Condition: fórmula que condiciona a visibilidade do atributo (ver Como definir as
fórmulas?);
o Read Only: se o atributo está disponível apenas para consulta;
o Read Only Condition: fórmula que condiciona a disponibilidade do atributo (ver Como definir
as fórmulas?);
o Row: linha do formulário no qual o atributo será colocado, sendo que só existe em atributos
que não estão numa grelha (ver Como alterar o posicionamento?);
o Column: coluna do formulário no qual o atributo será colocado (ver Como alterar o
posicionamento?);
Pg 15
o Order: posição do atributo no contexto de uma linha; aplica-se apenas quando o atributo se
encontra numa grelha (ver Como alterar o posicionamento?);
o Grid Size: tamanho do atributo, em percentagem, numa grelha (ver Como alterar o
posicionamento?);
o Size: tamanho do atributo (ver Como alterar o posicionamento?).

Tipos de dados
A plataforma suporta um conjunto de tipos de dados que condicionam o aspeto, conteúdo ou
funcionalidade dos atributos que os usam:

Tipo de dados Descrição

Text Campo contendo texto.

Short text Campo contendo texto.

Text area Campo multilinha contendo texto.

Protected text Campo de texto protegido.

Numeric Campo numérico, com ou sem decimais.

Percent Campo com um valor de percentagem.

Money Campo com um valor numérico correspondente a uma moeda.

Integer Campo com um valor inteiro positivo.

Date Campo de data.

Date Time Campo de data e hora.

True/False Campo correspondente a uma checkbox verdadeiro/falso.

Pg 16
Value pair Referência a uma entidade chave/valor da plataforma.

File Campo para fazer upload de ficheiros.

Button Botão usado para despoletar scripts/ações da plataforma.

Hyperlink Link clicável para um URL.

Other Entity Referência a outra entidade na plataforma.

Após a definição do tipo de campo, existem alguns campos adicionais que permitem configurar/definir limites
aos valores introduzidos, mediante o tipo de atributo:

Propriedade Descrição Tipos

Numeric, Percent, Money,


Min Value Valor mínimo do campo.
Integer

Numeric, Percent, Money,


Max Value Valor máximo do campo.
Integer

Scale Número de casas decimais do campo. Numeric, Percent, Money

Max Length Tamanho máximo do campo. Text, Short Text

Tipo de par-valor que o campo


Value Pair Type Value Pair
representa.

Tipos de ficheiros cujo upload é


File Types File
permitido.

Indica se é permitido efetuar o upload


Multiple Upload de múltiplos ficheiros no contexto do File
atributo.

Style Definição do estilo do botão Button

Categoria do tipo de entidade


Entity Kind Other Entity
representada neste campo.

Pg 17
Tipo de entidade representada neste
Entity Type Other Entity
campo.

Número de entidades que podem ser


referenciadas neste campo.

A aplicação respeitará esta configuração


para definir um limite máximo de
Cardinality entidades que o utilizador poderá Other Entity
escolher.

Esta propriedade aceita valores de 1 até


“n”, em que “n” representa a ausência
de limite.

Numeric, Percent, Money,


Max Value Valor máximo do campo.
Integer

Por último, no caso em que o atributo é do tipo Other Entity, existe ainda uma funcionalidade de filtro das
entidades a mostrar, segundo a lógica na secção Como filtrar entidades?.

Fórmulas
As fórmulas no contexto de atributos permitem aos utilizadores efetuar um conjunto de operações. Esta
secção descreve de forma breve os diferentes tipos de operações possíveis, sendo que o anexo Referência
de Fórmulas as descreve mais extensivamente.

 Referências: possibilidade de referenciar atributos presentes na entidade em questão ou noutras e


combiná-los com outras fórmulas;
 Operações matemáticas: as fórmulas suportam operações matemáticas básicas (+, -, *, /);
 Operações booleanas: possibilidade de utilizar a lógica da álgebra de Boole (AND, NOT, …);
 Operações de comparação: possibilidade de comparar quaisquer tipos de valor com estas
operações (<, !=, ==…);
 Funções de manipulação de data: a plataforma suporta um conjunto de operações com datas,
como cálculos de diferença ou obtenção de horas a partir de um valor data/hora;
 Funções matemáticas: para além das operações básicas, existe um conjunto de operações mais
complexas, como contagens condicionais ou funções de estatística;
 Funções de manipulação de texto: a plataforma oferece um conjunto de funções que permitem
manipular strings de texto - como conversões de maiúsculas ou concatenação de textos.

Pg 18
A sintaxe para utilização de um atributo em fórmulas depende da sua localização:

 Na entidade/interação atual:
o [CodigoDoAtributo]
 No cabeçalho de uma interação:
o [Document.CodigoDoAtributo]
 Nos valores de uma grelha:
o [Details.CodigoDaEntidadeTransacional.CodigoDoAtributo]
o [Summary.CodigoDaEntidadeTransacional.CodigoDoAtributo]

Já no caso das funções, a sintaxe a usar é sempre FUNCAO(parâmetros).

Ações
As ações podem ser definidas no contexto de um atributo, e são constituídas por um momento de execução,
juntamente com um conjunto de ações a executar nessa condição.

Momentos

Evento Descrição

Change Ações executadas quando o valor do atributo é alterado.

Create Ações executadas quando o atributo é criado – por exemplo, entrar


num formulário.

Check Ações executadas quando um campo verdadeiro/falso é manipulado.

Click Ações executadas no clique de um botão.

Pg 19
Tipos de Ação

Tipo Descrição Eventos

Get Entity Obtenção de informação adicional da Create, Change


entidade.

Get Entity Item Obtenção de informação de Entity Items Change


da entidade.

Get Entity Message Obtenção de mensagens auxiliares Change


configuradas na entidade.

Get Number Obtenção da série e número válidos para a Create, Change


interação.

Execute Formula Execução de fórmula que permite Create, Change


manipular o valor de outros campos da
entidade/interação.

Execute Blocking script Execução de script de extensibilidade que Click, Change


bloqueia a interface.

Execute non-blocking Execução de script de extensibilidade sem Click, Change


script bloquear a interface.

Get User Agent Obtenção de informação do agente Create


associado ao utilizador com sessão
iniciada.

Show List Demonstração de listagem de uma Click


entidade.

Show Dashboard Demonstração de um painel de controlo. Click

Pg 20
Como definir uma ação?
Primeiro, é necessário definir o momento de execução, para depois definir uma condição para limitar a
execução (ver Como definir as fórmulas?).

De seguida, definir o tipo de ação a executar. Após a escolha do tipo de ação, é possível configurar as
condições em que a ação vai ser executada.

No contexto de uma entidade:

 Opções Entity Kind e Entity Type para identificação;


 Possibilidade de definir atributos a obter a partir dessa entidade e a atribuir à entidade na qual se
define a ação. Para isso, existe a lista de atributos a obter To Get e os atributos onde serão
colocados To Set;
 Possibilidade de filtrar atributos, utilizando a opção Conditions (ver Como filtrar entidades?).

Fora do contexto de uma entidade:


 No caso de um Execute Script, não aparecerão as definições relacionadas com tipos de entidade,
mas sim um campo de seleção do script.

Em ambos os casos é possível inativar a ação temporariamente, quando não se pretende que seja
executada, mas não se pretende apagar. É ainda possível definir se se pretende que, ao executar, ocorra um
erro caso não sejam obtidos resultados da ação.

Como gerir um atributo?


A partir de qualquer ecrã de criação ou edição, existem três opções a executar sobre os atributos:

 Adicionar: recorrendo ao botão Add Attribute, adicionar um novo atributo;


 Alterar: em cada um dos atributos da entidade ou interação em questão, é possível editar o atributo.
Não é no entanto possível editar todos os parâmetros, nomeadamente o código, tipo de atributo e
parâmetros associados ao tipo (como cardinalidade) não são editáveis;
 Remover: Todos os atributos que o utilizador adiciona são possíveis de remover, contudo, os
atributos base não permitem esta opção.

Comportamento

Como definir obrigatoriedade?


Existem dois campos no separador Behaviour que condicionam a obrigatoriedade de um atributo. Primeiro,
a checkbox Required indica se o atributo pode ser obrigatório ou não. Caso exista uma fórmula preenchida
(ver Como definir as fórmulas?) no campo Required Condition, o resultado desta sobrepõe-se ao da
checkbox, ou seja, só se a condição for verdadeira é que o atributo é obrigatório.

Pg 21
Como definir um valor por defeito?
O campo Default Value permite definir o valor por omissão que um atributo recebe. Corresponde sempre a
um valor concreto e não uma referência a outro atributo ou fórmula. Por exemplo, é possível definir que um
campo true/false começa ativo, com Default Value como true, ou definir que a quantidade base de uma
encomenda é sempre 10, definindo-o como 10.

Como filtrar entidades?


A plataforma permite filtrar uma entidade, operação que pode ser executada quer no contexto de atributos
que referenciam outros atributos, quer no contexto de ações que referenciam outros atributos.

Para este fim, é necessário configurar uma operação lógica que faça uma comparação entre o valor pelo
qual se deseja filtrar e o valor da entidade com a qual está a ser feita a comparação.

Para aceder a estas propriedades é necessário usar a sintaxe de acesso a dados.

Propriedade Descrição

Element Atributo da entidade/interação cujo valor se vai usar para filtrar os


resultados.

Operator Operador lógico de comparação

Value Atributo da entidade original cujo valor será usado na comparação.

Como definir as fórmulas?


As fórmulas usadas no contexto dos atributos têm sempre uma sintaxe comum. Devem ser escritas sob a
forma =formula, com uma sintaxe semelhante a programas de folhas de cálculo. Contudo, alguns locais
onde as fórmulas são utilizadas têm requerimentos adicionais:

 As fórmulas condicionais têm sempre de retornar um valor true ou false;


 No caso das fórmulas de validação, é possível determinar ainda a mensagem, nos diferentes
idiomas da plataforma, que será mostrada no caso de a validação falhar;
 As restantes fórmulas não têm necessidade do valor de retorno ser algo específico.

O anexo Exemplos de Fórmulas mostra exemplos de algumas destas fórmulas.

Pg 22
Interface

Como alterar a visibilidade?


Existem dois campos no separador Interface que condicionam a visibilidade de um atributo. Primeiro, a
checkbox Visible indica se o atributo pode ser obrigatório ou não. Caso exista uma fórmula preenchida (ver
Como definir as fórmulas?) no campo Visibility Condition, o resultado desta sobrepõe-se ao da checkbox,
ou seja, só se a condição for verdadeira é que o atributo é visível.

Para além desses campos, existe um terceiro, Visible from Screen Sizes, que determina os tamanhos de
ecrã onde o atributo ficará visível.

Como alterar o posicionamento?


No separador Interface, é possível configurar a forma como o atributo irá ser mostrado na aplicação. Existe
um conjunto de atributos que servem para fazer esta configuração:

 Row e Column: definem a linha e coluna do formulário onde se pretende que o atributo surja. No
máximo, é possível ter quatro colunas por cada linha, ou seja, suportar até quatro atributos
consecutivos;
 Order: no contexto de uma grelha, determina a ordem pela qual irá aparecer o atributo na grelha;
 Size: representa o tamanho desse atributo, de 0 a 10, sendo que o somatório do tamanho de todos
os atributos na mesma Row deve corresponder a 12, sabendo que para cada valor Size é
necessário adicionar 2 para a label;
 Grid Size: representa o tamanho de um atributo numa grelha, em percentagem. O somatório dos
atributos na mesma linha da grelha deve corresponder a 100%.

Como definir um atributo como não editável?


O campo Editable, no separador Behaviour, é uma checkbox que determina se o atributo em questão é ou
não modificável ao editar um documento.

Como definir um atributo como só de leitura?


Existem dois campos no separador Interface que tornam um atributo só de leitura. Primeiro, a checkbox
Read Only indica se o atributo pode ser só de leitura ou não. Caso exista uma fórmula preenchida (ver Como
definir as fórmulas?) no campo ReadOnly Condition, o resultado desta sobrepõe-se ao da checkbox, ou
seja, só se a condição for verdadeira é que o atributo é só de leitura.

As opções deste separador sobrepõem-se à possibilidade de editar o atributo, ou seja, mesmo que o atributo
esteja definido como Editable, se a condição de ReadOnly Condition falhar, não é possível alterá-lo no
momento de edição.

Pg 23
Acesso a dados
A escrita das fórmulas não executadas na interface (executadas, por exemplo, nas ações, listagens ou em
filtros de segurança), tem uma nomenclatura ligeiramente diferente, para lhes permitir aceder, a partir de
qualquer contexto, a todos os atributos necessários:

 Distinção entre atributos base e não base: sempre que um atributo tenha sido criado pelo
utilizador deverá ser precedido do carácter “#”;
 Distinção de atributos do tipo entidade: sempre que um atributo representa uma outra entidade
do sistema deverá ser precedido do seu tipo: Agent:Atributo, Resource:Atributo,
UserDefinedEntity:Atributo, etc. Caso se pretenda aceder a uma propriedade do mesmo, esta
deverá ser colocada a seguir à definição do atributo – por exemplo Agent:Atributo.Propriedade;
 Distinção de atributos do sistema: alguns atributos não são representados no modelo de uma
forma física, mas são disponibilizados para permitir validações, nomeadamente ao nível do
mecanismo de segurança. Estes atributos não físicos são representados entre “@”.

As diversas condições que compõem uma fórmula podem ser concatenadas com separadores lógicos “&” (e)
e “|” (ou). A secção Fórmulas de acesso a dados descreve alguns exemplos deste tipo de fórmulas.

Entidades de configuração
Nem todas as entidades utilizadas pela plataforma se encaixam nos princípios base do modelo REA. Existem
alguns pontos onde foram definidas estruturas auxiliares, que complementam a funcionalidade base deste
modelo, e são descritas neste capítulo.

Como criar outras entidades?


Aceder a Menu | Entities | User-defined Entities

As User-Defined Entities, ou entidades definidas pelo utilizador, são entidades auxiliares da plataforma que
não se enquadram no modelo REA, e descrevem outras entidades que não sejam nem agentes nem
recursos, mas que têm importância para os modelos criados, através da adição de informação adicional às
transações existentes.

A sua configuração é idêntica à dos agentes e recursos, portanto deve ser seguida a lógica descrita em
Como criar uma entidade?.

Pg 24
Como criar tabelas de configuração?
Os Entity Items, ou tabelas de configuração, existem no contexto de um determinado tipo de entidade,
permitindo definir uma nova estrutura representada numa tabela, garantindo uma relação 1 para N. Após
definir o Código e Nome desta nova estrutura, é adicionado um novo separador que permite manipular os
seus atributos.

A configuração de uma destas tabelas é idêntica à das restantes Entidades, com pequenas diferenças: os
Entity Items apenas têm um grupo e os seus atributos são sempre definidos dentro da lógica de uma grelha.

Como criar uma lista com valores pré-definidos?


Aceder a Menu | Entities | Value Pairs

As entidades do tipo Value Pair – pares chave/valor -, são um elemento auxiliar que deve ser utilizado para
limitar o input dos utilizadores a um pequeno conjunto de opções que raramente sofre alterações. Para definir
uma entidade deste tipo, há dois pontos a configurar:

 Code: Identificador único;


 Options: Conjunto de pares chave/valor:
o Value: Valor a que queremos que corresponda a entidade;
o Text: Texto visível que identifica esta opção, localizável em vários idiomas.

Exemplo: Numa aplicação de encomendas (ver Descrição do problema), pretende-se definir o estado da
encomenda. Criar um Value Pair, com os pares 0/Proposta, 1/Aceite e 2/Fechada. Adicionar um atributo à
interação com o tipo Value Pair e identificar o par criado.

Satisfação de compromissos
As satisfações de compromissos, ou fulfillments, funcionam como uma mecânica complementar dos
Compromissos, permitindo completar a troca de recursos.

A operação de satisfação do compromisso pode ser efetuada tanto por eventos como por outros
compromissos. É possível que mais de um tipo de evento ou compromisso satisfaça o mesmo compromisso.

Os fulfillments são sempre definidos no contexto de uma interação, aquela que contém a entidade
transacional (compromisso ou evento) que irá fazer a satisfação do compromisso.

Pg 25
Como configurar uma satisfação de um compromisso?
Aceder a Editar ou Criar uma interação | Configure Fulfillments

No ecrã de configuração, surge um separador correspondente a cada compromisso ou evento da interação


que vai fazer a satisfação. Após aceder ao separador pretendido, selecionar o compromisso que vai ser
satisfeito, indicando a seguinte informação:

 Process: processo que contém a interação na qual se inclui o compromisso a ser satisfeito;
 Interaction: interação na qual se inclui o compromisso a ser satisfeito;
 Commitment: compromisso a ser satisfeito;
 Kind: tipo de fulfillment:
o Any: satisfação permitida por qualquer valor;
o Equal: satisfação permitida pela quantidade original;
o Less than: satisfação permitida por uma quantidade inferior à original;
o Greater than: satisfação permitida por uma quantidade superior à original;
o Equal only: satisfação permitida pela quantidade total apenas, não sendo permitidos
fulfillments parciais.

De seguida, configurar os detalhes do processo de satisfação:

 Attribute: atributo do cabeçalho da interação e que corresponde ao “Receiver Agent” do


compromisso a satisfazer. Permite posteriormente filtrar os compromissos devolvidos;
 List: lista do compromisso a satisfazer a mostrar;
 Type conditions: conjunto de condições que permitem filtrar os compromissos devolvidos (ver
Como configurar os mapeamentos entre entidades?);
 Mappings: definição do mapeamento entre os atributos do compromisso original e da entidade
transacional que fará o fulfillment (ver Como configurar os mapeamentos entre entidades?).

Como configurar os mapeamentos entre entidades?


Aceder a Editar ou Criar uma interação | Configure Fulfillments

A configuração de mapeamentos entre entidades necessita de recorrer a dois locais diferentes. Primeiro, é
necessário definir as Type conditions, que permitem filtrar os compromissos a satisfazer. A sintaxe utilizada
é idêntica à descrita em Como filtrar entidades?.

De seguida, é necessário mapear os atributos do compromisso original para os atributos do evento ou


compromisso que o vai satisfazer. Para isso, preencher os seguintes parâmetros:

 From: atributos do compromisso a satisfazer; utiliza a lógica de Acesso a dados, com as seguintes
particularidades:
o Não necessita de referenciar o tipo de entidade para aceder a um atributo de uma entidade
(Por exemplo, ProviderAgent.Code);
o Ao aceder a campos não base não é necessário o ‘#’;

Pg 26
 To: atributos correspondentes da entidade transacional, selecionáveis via dropdown.

Por omissão, a plataforma cria um conjunto de mapeamentos entre os campos base das duas entidades, que
podem ser alterados ou removidos pelo utilizador modelador.

Fluxos de aprovação
A plataforma disponibiliza um mecanismo de aprovações que pode ser aplicado a entidades e interações,
permitindo que estas sejam validadas por um ou mais indivíduos antes de chegarem a um estado final.

Como criar uma etapa de aprovação?


Aceder a Criar ou Editar uma entidade/interação | Configure Approval Stages

Para criar uma etapa de aprovação, é necessário configurar dois parâmetros:

 Código: identificador único;


 Nome: nome da interação, localizável em vários idiomas.

É possível definir várias etapas seguindo essa lógica, sendo necessário configurar cada uma:

 Start Stage: indica se a etapa representa o início do fluxo de aprovação. Apenas pode haver uma
etapa inicial;
 End Stage: indica se a etapa representa o fim do fluxo de aprovação. Podem existir N etapas finais,
sendo necessária pelo menos uma;
 To Approve: indicação de qual a entidade transacional (compromisso ou evento) aprovada nesta
etapa. A indicar apenas em etapas intermédias;
 Next Stage when Approved: etapa para a qual a interação passa após aprovação (ver Como
configurar o fluxo de etapas?);
 Next Stage when Rejected: etapa para a qual a interação passa após rejeição (ver Como
configurar o fluxo de etapas?);
 Evaluate Execution: fórmula que determina se a etapa atual será executada, com base em
informação da interação (ver Como configurar o fluxo de etapas?);
 Approver Rules: determinação da escolha do aprovador (ver Como configurar o próximo
aprovador?);
 Editable Attributes: atributos da interação e das suas entidades transacionais disponíveis para
edição na etapa de aprovação (ver Como tornar um atributo editável numa etapa de aprovação?).

Pg 27
Como configurar o próximo aprovador?
Aceder a Criar ou Editar uma entidade/interação | Configure Approval Stages

Ao configurar uma etapa de aprovação, é necessário definir quais os utilizadores que terão acesso à
aprovação. Em qualquer momento, a escolha é feita com base em dois atributos:

 Evaluate Execution: fórmula que avalia se a interação corresponde às condições definidas. Caso
seja verdadeira, o aprovador definido em Assign To nesta linha pode aprovar o documento;
 Assign To: atributo que contém a informação do Agente associado ao utilizador que irá ter acesso
a esta aprovação.

As fórmulas utilizam a lógica de Acesso a dados, com as seguintes particularidades:

 Não necessita de referenciar o tipo de entidade quando queremos aceder a um atributo de uma
entidade (Por exemplo, ProviderAgent.Code);
 Ao aceder a campos não base, não é necessário o ‘#’;
 As comparações são feitas com ‘=’ e ‘<>’, e para comparar com algo vazio basta deixar em branco o
outro lado da comparação, por exemplo, “Employee.Manager.User<>”, o que corresponde a dizer
que o utilizador do Manager existe;
 As variáveis booleanas são escritas como TRUE e FALSE.

Como configurar o fluxo de etapas?


Aceder a Criar ou Editar uma entidade/interação | Configure Approval Stages

A lógica do fluxo de etapas de aprovação consiste numa espécie de grafo dirigido, com um estado inicial e N
estados finais. O estado inicial, aqui, não corresponde a uma etapa de aprovação propriamente dita, mas ao
valor que as entidades ou interações têm antes de entrar no fluxo, por exemplo, ao gravar como rascunho,
antes de submeter para aprovação.

Para definir o fluxo, cada uma das etapas não finais possui dois atributos que definem para que estado
irá passar: Next Stage when Approved e Next Stage when Rejected.

Para além dessa definição, existe um parâmetro associado, Evaluate Execution, que determina se a etapa
será ou não percorrida. Nesse parâmetro, é definida uma fórmula. Caso a fórmula retorne FALSE, a
interação passa para a Next Stage when Approved, como se tivesse sido aprovada. A fórmula utiliza a
lógica de Acesso a dados, com as seguintes particularidades:

 Não é necessário referenciar o tipo de entidade quando se pretende aceder a um atributo de uma
entidade (Por exemplo, ProviderAgent.Code);
 Ao aceder a campos não base, não é necessário o ‘#’;
 As comparações são feitas com ‘=’ e ‘<>’, e para comparar com algo vazio basta deixar em branco o
outro lado da comparação, por exemplo, “Employee.Manager.User<>” corresponde a dizer que o
utilizador do Manager existe;
 As variáveis booleanas são escritas como TRUE e FALSE.
Pg 28
Como tornar um atributo editável numa etapa de aprovação?
Aceder a Criar ou Editar uma entidade/interação | Configure Approval Stages

A plataforma permite definir casos em que o aprovador pode efetuar pequenas correções ao documento sem
a necessidade de o rejeitar. Para estes casos, existe uma secção Editable Attributes, onde é possível
selecionar os atributos editáveis, individualmente, com um dropdown.

Visualização de dados
No âmbito da visualização de informação, a plataforma permite construir dois tipos diferentes de
visualizações de dados: Listas e Gráficos. Estes podem ser organizados sobre a forma de painéis de
controlo (Dashboards) ou ser demonstrados de forma distinta (no caso das listas).

Listas
Uma lista é uma forma de visualização dos dados de uma entidade ou interação específica. É possível
apresentar listas em várias formas: no contexto de um painel de controlo, nas listagens por defeito da
plataforma ou noutros contextos de listagem de entidades/interações (por exemplo, opções separadas no
menu).

Como criar uma lista?


Aceder a uma entidade ou interação | Configure Views

Ao criar ou editar uma lista, surge um ecrã de configurações, com as seguintes opções:

 Name: nome da lista, localizável em vários idiomas;


 Description: descrição breve da lista;
 Data Source Configuration: todas as listas da plataforma recorrem a fontes de dados (“Data
Sources”) para obter a informação necessária. A secção Como configurar os dados de uma lista?
descreve como configurar estas fontes de dados:
o Fields: conjunto dos campos a carregar para a lista;
o Condition: filtro a aplicar sobre a informação obtida. Deve ser composto sobre a forma de
uma fórmula (opcional);
o Top: número de elementos máximo a obter (opcional);
o Date Field: indicação do campo da lista que será usado para filtrar a lista por data
(opcional);
o Default date range: período por omissão pelo qual serão filtrados os resultados da lista. O
período pode posteriormente ser manipulado no momento da consulta;
 Dashboard only: indica se a lista só está disponível para utilização em painéis de controlo;
 Calendar: indica se a lista deverá ser mostrada sob a forma de um calendário (ver Como visualizar
a lista como calendário?).
Pg 29
Por último, no separador Operations, é possível configurar as opções disponíveis nesta lista. A secção
Como configurar as opções disponíveis numa lista? detalha como o fazer.

Como visualizar a lista como calendário?


Aceder a uma entidade ou interação | Configure Views

Se se pretender configurar uma lista para servir de base a um calendário, existe um conjunto de opções
adicionais a configurar:

 Default view: vista do calendário a mostrar por defeito: anual, mensal, mensal (cronograma),
semanal ou diário;
 Calendar name: nome do ficheiro de calendário exportado;
 Title field: contém a informação a usar como título do evento demonstrado;
 Category field: categoria do calendário;
 Begin date field: colocar a data de início de uma seleção de dias no calendário;
 End date field: colocar a data de fim de uma seleção de dias no calendário;
 Blocked days field: informação dos dias do calendário bloqueados (feriados);
 Group by: agrupar os elementos na vista de cronograma.

Como configurar os dados de uma lista?


Aceder a uma entidade ou interação | Configure Views

Ao configurar uma lista, é necessário escolher a fonte de dados. Existem duas opções de definição da fonte:

 Use existing: de forma a simplificar a criação de novas listas, é possível usar uma fonte de dados já
existente, obtendo assim toda a informação dos atributos presentes nessa fonte para a lista atual;
 Create new: criação de uma nova fonte de dados. Para criar uma nova fonte de dados é necessária
a indicação dos atributos da entidade/interação a mostrar na lista, inserindo a informação visível na
tabela seguinte:

Propriedade Descrição

Field Atributo da entidade ou interação ao qual se pretende aceder.

Tipo de agregação de valores numéricos. É possível efetuar


Aggregate Type
somatórios, calcular médias e contar número de registos.

Tipo de ordenação a aplicar na lista. É possível ordenar cada atributo


Sort Type
de forma ascendente ou descendente.

Pg 30
Ordem da ordenação do atributo. Como é possível ordenar por vários
Sort Order
atributos, tem de ser definida a lógica de aplicação da ordenação.

Group By Indica se é pretendido agrupar a informação pelo atributo.

Label Legenda do atributo, localizada nos diversos idiomas.

Indicação dos tamanhos de ecrã a partir dos quais o atributo é visível.


Visible on Sizes
Valores possíveis: xs, sm, md, xl.

Como configurar as opções disponíveis numa lista?


Aceder a uma entidade ou interação | Configure Views | Separador Operations

Neste separador, é possível decidir se queremos disponibilizar individualmente cada uma das opções que a
plataforma oferece por defeito (Edit, Approve, Revert, Print, Copy), bem como adicionar novas operações
associadas à execução de scripts de extensibilidade.

Neste caso, é necessário adicionar a seguinte informação:

 Action: Identificador da ação a executar;


 Name: Nome da ação a executar, localizável em várias línguas;
 Is Available: Indicação da disponibilidade da ação;
 Script: Indicação do script a executar;
 Icon Code: Ícone a mostrar no botão que permitirá executar esta operação (opcional).

Painéis de controlo
Um painel de controlo, ou dashboard, é uma estrutura da plataforma que pode conter um conjunto de listas
e/ou gráficos. Podem ser mostrados ao utilizador nos menus ou na página inicial, após o momento de login.

Como criar um gráfico?


Aceder a Menu | Data Visualization | Dashboard Charts

Um gráfico é uma forma de visualização dos dados de uma entidade ou interação específica. A lógica de
configuração de um gráfico passa pelas seguintes configurações:

 Código: identificador único;


 Data source configuration: selecionar uma fonte de dados já existente para servir de base ao
gráfico ou criar uma nova:

Pg 31
o A lógica de escolha de campos é idêntica à das listas, descrita em Como configurar os
dados de uma lista?;
o Where: filtro a aplicar sobre a informação obtida, composto sob a forma de uma fórmula
(opcional);
o Top: número de elementos a obter (opcional);
o Date Field: campo que representa uma data pela qual se pretende filtrar os elementos do
gráfico (opcional);
o Company Code Field: campo que representa o código da empresa, permitindo filtrar os
dados por empresa (opcional);
 Data display configuration: define o aspeto do gráfico:
o Chart Type: a plataforma suporta quatro tipos de gráficos: linha, donut, barras verticais e
área;
o X axis: atributo que corresponderá às categorias;
o Value: atributo que corresponderá ao valor.

A fórmula a usar no Where utiliza a lógica de Acesso a dados, com as seguintes particularidades:
 As comparações são feitas com ‘=’, ‘>’, ‘<’, ‘<=’, ‘>=’ e ‘<>’, e para comparar com algo vazio basta
deixar em branco o outro lado da comparação;
 As variáveis booleanas são escritas como TRUE e FALSE.

Como criar um painel de controlo?


Aceder a Menu | Data Visualization | Dashboards

A configuração dos painéis de controlo divide-se em dois pontos: a configuração do cabeçalho, e o conjunto
de elementos a adicionar ao painel. Relativamente ao cabeçalho, existem os seguintes parâmetros:

 Código: identificador único;


 Homepage dashboard: indicação se o painel de controlo é demonstrado na página inicial (ver
Como definir um painel de controlo como aparecendo na página de entrada?);
 Name: nome do painel de controlo, localizável em vários idiomas;
 Description: descrição do painel, localizável em vários idiomas;
 Default date range: período por omissão a aplicar aos dados do painel.

De seguida, é possível configurar os elementos a aparecer no dashboard (ver Como adicionar elementos?).

Como adicionar elementos?


Aceder a Menu | Data Visualization | Dashboards

É possível adicionar tanto listas como gráficos a um dashboard. Para esse fim, é necessário configurar um
conjunto de parâmetros:

 Título: título do elemento, localizável em vários idiomas;

Pg 32
 Visible from: tamanho do ecrã a partir do qual o elemento é visível;
 Description: descrição do elemento, localizável em vários idiomas;
 Row: linha do painel de controlo na qual o elemento será colocado;
 Column: coluna do painel de controlo na qual o elemento será colocado;
 Size: tamanho do elemento, de 1 a 12. O somatório do Size de todos os elementos colocados na
mesma Row do painel de controlo deve corresponder a 12;
 Chart / List: gráfico ou lista a mostrar;
 Dimensions: atributos da lista/gráfico que podem ser usados como dimensões, permitindo
visualizar a informação com base nestes;
 Default dimensions: das dimensões definidas em Dimensions, quais devem estar selecionadas
por omissão, através de um parâmetro true/false para cada uma;
 Max number of elements: número máximo de elementos da lista/gráfico;
 Compare with corresponding period: no contexto de um gráfico, indica se é pretendida a
comparação com o período anterior correspondente;
 Hide until have data: indica se o elemento deve aparecer no painel mesmo que não tenha dados.

Como definir um painel de controlo como aparecendo na página de entrada?


Aceder a Menu | Data Visualization | Dashboards

Apenas é possível ter um painel de controlo visível na página de entrada. Se se pretender controlar a
informação mostrada, como por exemplo, mostrar gráficos diferentes a utilizadores diferentes, é necessário
colocar todos os gráficos como elementos no painel de controlo e controlar o acesso através de perfis de
utilizador e da opção Hide until have data.

Relatórios de impressão
A plataforma permite a obtenção de interações sobre a forma de relatórios. Estes são gerados sobre a forma
de ficheiros .pdf, sendo possível aos utilizadores de aplicações da plataforma descarregá-los para o seu
dispositivo.

Como desenvolver um relatório de impressão?


A tecnologia de reporting utilizada pela plataforma denomina-se Microsoft Reporting Services (SSRS),
sendo suportados ficheiros de reporting no formato “.rdlc”. É importante notar que, de forma a ser possível o
desenvolvimento, é necessária a instalação do “Microsoft SQL Server Data Tools”.

Para iniciar o desenvolvimento, é necessário aceder à área de modelação, e, no contexto de qualquer tipo de
interação, selecionar a opção “Configure Printing Reports” e descarregar a solução Visual Studio que irá
auxiliar o teste e desenvolvimento.

Pg 33
No Visual Studio, é possível aceder a um conjunto de ficheiros:

 Report.xml: amostra da interação em XML, que contém os dados necessários para testar o script;
 Report.xsd: estrutura da interação em XSD, que irá ser utilizada para compor a estrutura do
relatório;
 ReportDevelopment.cs: definição de parâmetros a utilizar nos testes, nomeadamente identificação
do ficheiro de Report a testar, do ficheiro que contém os dados e da estrutura de dados;
 Report.rdlc: ficheiro no qual será desenvolvido o relatório.

De forma a obter uma amostra de uma interação, aceder de novo à área de modelação e, selecionando a
listagem do tipo de interação a desenvolver, escolher a opção Download XML example.

Para obter a definição da estrutura a usar no relatório, deverá ser selecionada a opção Download XML
Schema. Ter em conta que só é possível descarregar estes dois elementos após ter criado uma interação do
tipo em causa.

Após a obtenção de toda a informação, será necessário aceder ao ficheiro de reporting e, acedendo à opção
View | Report Data e definir os diferentes Datasets, escolhendo a opção “Add Dataset”. Em seguida, após
a definição de todos os Datasets, é possível manipular o relatório, definindo as diversas áreas e elementos
do mesmo, utilizando o designer do Visual Studio.

Como testar um relatório durante o desenvolvimento?


Para testar o relatório localmente, são necessários dois pré-requisitos:

 Definir qual o relatório e os dados a utilizar no teste (no ficheiro ReportDevelopment.cs);


 Obter um excerto dos dados em XML de uma interação do tipo pretendido (ver Como desenvolver
um relatório de impressão?).

De seguida, o funcionamento é similar a qualquer outra aplicação, sendo possível recorrer a breakpoints,
prints de informação para depuração, entre outros. De forma a aceder às ferramentas de depuração do
Visual Studio é recomendado que o desenvolvimento seja feito na mesma máquina onde está instalado o
sistema externo onde serão executados os scripts.

Como adicionar um relatório à plataforma?


Aceder a Processes | Configure Printing Reports

Para adicionar um relatório à plataforma, é necessário indicar o valor dos seguintes parâmetros:

 Code: código único da configuração de relatórios;


 Description: descrição opcional, nos diversos idiomas, da definição do relatório;
 Language: idioma para o qual o relatório se aplica. No momento da impressão, são utilizadas as
configurações para o idioma atual do utilizador com sessão iniciada;

Pg 34
 Number of Copies: número de cópias a gerar em cada impressão;
 Configuration: configuração opcional do relatório. Caso não seja indicada, é gerada
automaticamente;
 Default: indicação da configuração a ser usada por omissão no tipo de interação;
 File: carregamento do ficheiro “rdlc” do relatório.

Como configurar a impressão de um relatório?


Aceder a Other | XML Configurations

A impressão de um relatório é configurável, permitindo as seguintes definições:

 Comentários: definição do elemento no qual serão enviados as linhas de comentário:

<GridCommentsProperty>Resource</GridCommentsProperty>

 Datasets: definição da organização dos diversos elementos OMNIA (interações, compromissos e


eventos) em Datasets:

<Datasets>
<DataSet>
<Name>DataSetInteractionCompany</Name>
<TableName>myCompany</TableName>
</DataSet>
<DataSet>
<Name>DataSetInteractionHeader</Name>
<TableName>ExpenseReport</TableName>
</DataSet>
</DataSets>

 Campos adicionais: definição de campos não presentes na interação, mas que fazem parte das
entidades associadas à mesma:

<ReportExtraFieldsConfiguration>
</Entity Code="@Employee.Code" Type="Employee"
Kind"Agent">
<Field Name="Name" />
</Entity>
</ReportExtraFieldsConfiguration>

Pg 35
 Casas decimais: definição opcional do número de casas decimais de um determinado atributo da
interação:

<DecimalScaleConfig>
<ExpenseReport>
<ExpenseReport_Rate>5</ExpenseReport_Rate>
</ExpenseReport>
</DecimalScaleConfig>

O XML resultante deverá ser adicionado como uma nova configuração XML e poderá posteriormente ser
referenciado na configuração do relatório (ver Como adicionar um relatório à plataforma?).

Leitura de dados de outros sistemas


A plataforma suporta um mecanismo de extensibilidade baseado num programa - o conector - que permite a
comunicação com outros sistemas, efetuando a leitura e escrita de informação dos mesmos.

A definição da forma de comunicação com outros sistemas é feita sobre a figura de sistemas externos, sendo
a leitura de informação modelável sob a forma de entidades externas, descritas neste capítulo.

A escrita de informação noutros sistemas é garantida sobre a figura de scripts de extensibilidade, descritas
no capítulo Scripts de integração em sistemas externos.

Como criar um sistema externo?


Aceder a Menu | External | Systems

Os tipos de sistemas externos permitem à plataforma comunicar com os mais variados sistemas. Uma vez
que cada sistema tem as suas necessidades de comunicação específicas, deve ser representado sob a
forma de um tipo de sistema externo diferente, de forma a permitir definir os seus atributos específicos.

A configuração de uma destas entidades é idêntica à das restantes Entidades, com a diferença de que os
External Systems apenas suportam a vista por omissão.

Como criar uma entidade externa?


Aceder a Menu | External | Entites

As entidades externas permitem representar entidades de outros sistemas em modelos da plataforma. A


modelação destas entidades é diferente de todas as outras da plataforma, sendo feita sob a forma de
consultas SQL a executar sobre o sistema externo.

Após a sua definição, as entidades externas podem ser utilizadas em diversos contextos da plataforma:

Pg 36
 Em outras entidades ou interações: para evitar a replicação de informação, é possível consultar
informação a partir de um sistema externo;
 Em listagens e gráficos: visualizar dados diretamente a partir de um sistema externo.

Para criar uma entidade externa, é necessário definir a seguinte informação:

 Code: identificador do novo tipo de entidade externa. Este identificador é único e não pode ser
alterado após a sua definição;
 Name: nome do tipo de entidade externa, localizável em vários idiomas;
 Query: definição da consulta SQL que irá permitir o acesso à informação de uma entidade;
 Query Key Parameter: definição do parâmetro da consulta a usar como parâmetro chave;
 External System: tipo de sistema externo sobre o qual a consulta será executada.

Scripts de integração em sistemas externos


Os scripts de extensibilidade da plataforma permitem a escrita em sistemas externos. Estes têm de ser
desenvolvidos em C#, usando a sintaxe desta linguagem de programação, sem qualquer tipo de limitações.

Como executar o conetor?


Existem dois modos de execução do conetor:

 Desenvolvimento: através do executável, por linha de comandos ou duplo-clique. Será visível um


ecrã de linha de comandos com a informação que chega ao conetor;
 Serviço: acedendo ao ecrã de serviços do Windows, localizar o serviço correspondente ao conetor
e iniciar. A informação surge apenas no Event Viewer do Windows.

Como desenvolver um script?


O conetor executa scripts C#, utilizando a sintaxe normal da linguagem, sem limitações. Primeiro, é
necessário aceder à área de modelação, em Extensibility | Scripting e fazer o download da ferramenta
auxiliar de desenvolvimento. Abrindo essa solução no Visual Studio, um conjunto de ficheiros fica acessível:

 Default.json: amostra da interação ou entidade em JSON, contendo os dados necessários para


testar o script;
 Entity.cs: estrutura da interação ou entidade em C#, usado para a solução conhecer a estrutura dos
dados;
 Program.cs: definir os parâmetros do contexto a passar ao script para testes;
 Script.cs: ficheiro onde será desenvolvido o script. A estrutura (nome das classes e métodos,
parâmetros e valor de retorno) não pode ser alterada.

Pg 37
Para obter o ficheiro a usar no Entity.cs, aceder novamente à área de modelação e, selecionando a listagem
do tipo de entidade ou interação a desenvolver, recorrer ao método Download C# Sample.

Para obter o ficheiro Default.json, no mesmo local, recorrer a Download JSON example. Os dados obtidos
por este método são dados retirados da aplicação.

Como adicionar referências a um script?


Para permitir ao programador referenciar qualquer biblioteca DLL necessária à implementação, é possível
carregar assemblies antes da execução do script. Para tal, adicionar uma linha por DLL, com um dos
seguintes formatos:

 Caminho completo
//#R C:\PathToDll\DllName.dll
 Caminho completo, utilizando variáveis de ambiente
//#R %PROGRAMFILES%\DllName.dll
 Caminho relativo (usando os caminhos configurados no ficheiro de configuração)
//#R DllName.dll

Para além disso, é necessário adicionar (como em qualquer projeto C#) as diretivas using:

using MyDll;

Como comunicar com a API da plataforma?


É possível utilizar um conjunto de métodos auxiliares para permitir aos scripts o acesso a dados que só
existem na plataforma.

O excerto de código abaixo mostra uma inicialização do cliente de API, seguida de autenticação na
plataforma, recorrendo às credenciais do utilizador configurado no sistema externo. Após essa autenticação,
é possível aceder a dados usando a API.

ApiClient apiClient = new ApiClient(context.ServerEndpoint, “TENANT CODE”);


apiClient.Authenticate(context.ApiUsername, context.ApiPassword);
apiClient.Entity.GetByCode(“PROJ001”, “Project”, EntityKind.Agent);

Como aplicar alterações na plataforma aos documentos?


Quaisquer alterações feitas na entidade ou interação ao longo do script podem ser reproduzidas no objeto da
plataforma correspondente. Para esse fim, é necessário utilizar:

document.MarkToApplyChanges();

Pg 38
A execução desta linha de código implica que quaisquer alterações feitas anteriormente serão refletidas na
plataforma.

Como testar um script durante o desenvolvimento?


Para testar localmente os desenvolvimentos, são necessários dois pré-requisitos:

 Configurar os dados de contexto para acesso a um sistema externo (no Program.cs);


 Obter um excerto dos dados em JSON da entidade/interação em desenvolvimento (ver Como
desenvolver um script?).

De seguida, o desenvolvimento realiza-se como em qualquer outra aplicação, sendo possível recorrer a
breakpoints, prints de informação para depuração, etc.. De forma a ter acesso às ferramentas de depuração
do Visual Studio, é recomendado que o desenvolvimento seja feito na mesma máquina onde está instalado o
sistema externo onde serão executados os scripts.

Como colocar um script na plataforma?


Aceder a Extensibility Scripts | Create/Edit

Existe um conjunto de parâmetros a configurar sempre que se pretende adicionar um script à plataforma:

 Name: nome identificativo da função do script;


 External System: tipo de sistema externo a que se destina;
 Entity Kind / Entity Type: entidade ou interação a que se destina o script;
 Action: ação que despoletará o script (ver Como definir o momento de execução de um script?);
 Moment: associado com Action, determina o momento de execução do script (ver Como definir o
momento de execução de um script?);
 On Error: forma como o script lida com um erro:
o Fail: não permite avançar a operação que o despoletou;
o Continue: continua com a operação que o despoletou;
o Remove: remove a interação ou entidade que despoletou o erro;
 Files: onde será feito o upload do ficheiro:
o Execution Type: localização de execução do script: na plataforma (Local) ou no sistema
externo (Remote);
o File: upload do ficheiro .cs correspondente ao script que se pretende executar.

Como definir o momento de execução de um script?


Aceder a Extensibility Scripts | Create/Edit

Existem várias localizações onde os scripts definidos podem ser chamados:

 Create: na criação da entidade/interação;


 Update: ao atualizar uma entidade ou interação;

Pg 39
 State transition: na transição entre etapas de aprovação;
 Revert: ao reverter uma entidade ou interação;
 Revert state: ao reverter uma etapa de aprovação;
 List: numa listagem;
 UI Trigger: despoletado por algo na UI (por exemplo, um atributo Button);
 Account setup: ao criar uma conta nova com base nesta – usado, por exemplo, para carregar
dados de demonstração;
 Remote Query: script a executar para fazer consultas remotas a um sistema externo, no âmbito de
uma entidade.

Essas ações são combinadas com um momento de execução para determinar quando os scripts são
chamados:

 Before: antes da ação em questão;


 After: depois da ação em questão;
 Request: executado apenas a pedido.

Notificações
A plataforma OMNIA permite o envio de notificações por correio eletrónico numa diversidade de
operações relacionadas com as entidades e interações. Para gerir as notificações de um determinado tipo de
entidade ou interação é necessário aceder a esse tipo e selecionar a opção “Configure Notifications”.

As notificações de email podem ser enviadas nas seguintes operações de entidades ou interações:

 Create: criação de uma nova entidade ou interação;


 Update: atualização de uma entidade ou interação existente;
 Go to Approve: mudança de etapa de aprovação de uma entidade ou interação;
 Revert: reversão de uma aprovação numa entidade ou interação.

É possível configurar várias notificações diferentes a enviar em cada uma das operações identificadas. Para
configurar, ver Como configurar o envio de uma notificação por email?.

A plataforma, por defeito, cria um conjunto de notificações que cobre os casos mais comuns (ver o anexo
Notificações por omissão).

Pg 40
Como configurar o envio de uma notificação por email?
Aceder a Criar ou Editar uma entidade/interação | Configure Notifications

Para configurar uma notificação, é necessário preencher um conjunto de atributos:

 Condition: fórmula que representa uma condição a avaliar para decidir se a notificação é enviada
(opcional);
 Approval Stage: a notificação é enviada sempre que a entidade/interação entre na etapa definida.
Aplica-se apenas na operação Go to Approve;
 To: contém o email para o qual será enviada a notificação;
 CC: contém o email para o qual será enviada a notificação em CC;
 BCC: contém o email para o qual será enviada a notificação em BCC;
 Subject: assunto do email, localizável em vários idiomas. Pode ser composto com base em
parâmetros (ver Como configurar os parâmetros de uma notificação?);
 Parameters: lista dos atributos da interação (separados por vírgulas) que serão usados para
compor o assunto do email (ver Como configurar os parâmetros de uma notificação?);
 Body: corpo do email, traduzido nos diversos idiomas da aplicação. Permite utilização de sintaxe
HTML e pode ser composto com base em parâmetros (ver Como configurar os parâmetros de uma
notificação?);
 Parameters: lista dos atributos, separados por vírgulas, que serão usados para compor o corpo do
email (ver Como configurar os parâmetros de uma notificação?).

Como configurar os parâmetros de uma notificação?


Aceder a Criar ou Editar uma entidade/interação | Configure Notifications

Tanto no assunto como no corpo dos emails enviados a partir da lógica de notificações, é possível introduzir
excertos de texto baseados em atributos, através de parâmetros. A lógica dos parâmetros das notificações
consiste em passar um conjunto de atributos, separados por vírgulas e entre parêntesis retos, nos campos
Parameters do ecrã de notificações.

A fórmula de acesso aos atributos utiliza a lógica de Acesso a dados, com a particularidade de não
necessitar de referenciar o tipo de entidade quando se pretende aceder a um atributo de uma entidade
(Por exemplo, ProviderAgent.Code).

De seguida, é possível referencia-los nos campos Subject e Body, recorrendo a uma sintaxe semelhante a
métodos de formatação de strings: por exemplo, {0} será substituído pelo primeiro elemento dos parâmetros.

Esta secção suporta ainda um conjunto de atributos específicos:

 @URL-PROCESSINTERACTION-APPROVE@: gera no e-mail um link para aprovar uma


determinada interação;
 @URL-PROCESSINTERACTION-EDIT@: gera no e-mail um link para editar uma determinada
interação;

Pg 41
 @URL-ENTITY-APPROVE@: gera no e-mail um link para aprovar uma determinada entidade;
 @URL-ENTITY-EDIT@: gera no e-mail um link para editar uma determinada entidade.

Menu
A plataforma gera de forma automática o menu disponibilizado aos utilizadores, à medida que a modelação
da aplicação é efetuada. No entanto, uma vez que a organização dos diversos elementos pode não ser a
mais adequada para casos específicos de aplicações, é possível o desenvolvimento de um menu
customizado à medida das necessidades identificadas.

Como criar um menu customizado?


Aceder a Menu | Navigation | Application menus

Para construir um menu, devem ser definidos os diversos elementos que o compõem, relacionados entre si
sobre a forma de ligações em árvore, com a profundidade máxima de cinco níveis. Existem três tipos de
elementos que podem ser utilizados:

 Container: elemento agregador de outros elementos;


 Application Link: ligação dentro da própria aplicação;
 External Link: ligação para um elemento externo.

Como adicionar um link para outra aplicação?


Aceder a Menu | Navigation | Application menus

Nos menus, a plataforma disponibiliza um elemento que permite disponibilizar uma hiperligação para
qualquer página web. Para definir um elemento do tipo External Link, é necessário:

 Text: texto que será visível no menu (localizável nos vários idiomas);
 Icon: ícone a mostrar;
 URL: hiperligação a aceder.

Como adicionar um link para opções da própria aplicação?


Aceder a Menu | Navigation | Application menus

O elemento Application link é o elemento que permite o acesso a uma funcionalidade da plataforma. Para
definir o acesso à funcionalidade é necessário:

 Text: texto que será visível no menu (localizável nos vários idiomas);
 Icon: ícone a mostrar;
 Link To: tipo de função da plataforma para a qual se pretende apontar (Agente, Interação, etc.), e
indicar o elemento em específico;

Pg 42
 Operation: quando aplicável, é possível definir a operação a que a entrada no menu dará acesso
(Listar, criar ou aprovar);
 View: quando aplicável, é possível definir qual a vista que será mostrada;
 Approval Stage: quando aplicável, é possível definir a etapa de aprovação a que a entrada no
menu dará acesso.

Como adicionar um agrupador de link?


Aceder a Menu | Navigation | Application menus

Um Container, ou agrupador de links, é um elemento do menu que funciona como elemento agregador. A
partir deste não é efetuada nenhuma ação, apenas são disponibilizados outros elementos do menu.

Para definir um elemento do tipo “Container”, é necessário indicar o texto que será visível posteriormente no
menu (localizado em diversos idiomas), bem como o ícone a mostrar.

Segurança
Todas as aplicações modeladas sobre a plataforma têm acesso a uma área de administração. Nesta área é
possível gerir as configurações de segurança e, apesar de não ser diretamente do domínio da modelação, é
importante detalhar as diferentes configurações possíveis nesta secção.

Como criar um perfil de utilizador?


Aceder a Aplicação | Administração | Configurações de segurança | Perfis

A configuração de perfis na aplicação permite atribuir diferentes privilégios aos utilizadores, garantindo o
controlo no acesso às diferentes operações. A configuração é bastante granular:

 Interações: os privilégios de acesso a interações são geridos no contexto das empresas, permitindo
que os utilizadores tenham privilégios distintos no acesso às interações mediante a empresa e/ou
série de documento da plataforma;
 Entidades: privilégios definidos para cada tipo de entidade;
 Operações: ao aplicar os privilégios em entidades/interações, são aplicados individualmente por
operação (Acesso aos dados, criar novo, editar, remover, entre outros). É possível aplicar filtros de
segurança em algumas das operações (ver Como configurar um filtro de segurança?);
 Vistas: os privilégios de acesso têm em conta as diferentes vistas sobre as entidades/interações. É
possível fornecer aos utilizadores privilégios de acesso a apenas um conjunto limitado de vistas;
 Etapas de aprovação: os privilégios têm em conta as etapas de aprovação, quando estas existem.
É possível garantir que os utilizadores só têm acesso às etapas necessárias (ver Como configurar
um filtro de segurança?);
 Painéis de controlo: cada perfil pode ter ou não acesso a cada um dos painéis;

Pg 43
 Outros: os restantes privilégios são atribuídos de forma individual e não são relevantes do ponto de
vista da modelação.

Como configurar um filtro de segurança?


Aceder a Aplicação | Administração | Configurações de segurança | Perfis

Os filtros de segurança, na criação de perfis, são aplicáveis em dois locais distintos: no acesso a operações
e no acesso a etapas de aprovação. A sintaxe a utilizar em qualquer um destes casos está descrita na
secção Acesso a dados.

Como criar um utilizador?


Aceder a Aplicação | Administração | Configurações de segurança | Utilizadores

Ao aceder ao menu de criação de utilizadores a partir de uma aplicação, existe um conjunto de campos
obrigatórios a configurar:

 Name: nome a mostrar na aplicação;


 Email: email a utilizar para login;
 Contact email: email a utilizar para contactos (notificações, etc.);
 Password: campo da palavra passe;
 Associate User to Agents: atribuição de utilizadores a instâncias de agentes na plataforma;
 Associate Privileges: atribuição de perfis de utilizador.

Como inativar um utilizador?


Aceder a Aplicação | Administração | Configurações de segurança | Utilizadores

Para inativar um utilizador, é necessário aceder à sua edição. No cabeçalho do documento é visível a
checkbox Inactive, que deve ser marcada. Ao gravar, o utilizador fica inativo.

Pg 44
Erros
Existe um conjunto de situações em que a plataforma devolve erros enquanto o utilizador modelador está a
desenvolver a aplicação, que podem levar a uma resolução no ambiente de modelação. Esta secção
descreve algumas situações comuns e como as ultrapassar:

Erro Solução

Your user has no AGENT related. Please Garantir que há um agente do tipo desejado criado e
check user configuration. atribuído na edição de utilizadores ao utilizador ativo.

An error has ocurred: Model error (…) Ocorreu um erro numa das fórmulas que foi definida.
Unable to process binding (…) Validar se as fórmulas dos atributos estão corretas.

External Entity created. An error has Ao criar a entidade externa, a plataforma tenta gerar
occurred while creating the default list. uma listagem por defeito, mas ao haver um erro de
conexão ao sistema externo, a listagem não é criada.

Para resolver, criar manualmente uma listagem para a


entidade.

Pg 45
Anexos
Anexo 1: Descrição do problema
Múltiplos dos exemplos descritos ao longo deste manual baseiam-se num caso concreto – a modelação de
uma aplicação de gestão de encomendas a fornecedores para uma empresa.

Nesta implementação é pretendido que os Colaboradores tenham a liberdade de registar pedidos de


encomenda de artigos a fornecedores e, posteriormente, registar a receção dos mesmos.

São pretendidos os seguintes comportamentos nestas duas operações:

 Pedido de Encomenda:
o Registo por parte dos colaboradores;
o Identificação de vários artigos distintos por documento;
o Aprovação dos pedidos por parte de um gestor;
 Entrega de Artigos:
o Registo por parte dos colaboradores;
o O registo deve permitir identificar os artigos presentes nos pedidos de encomenda;
o Deve também permitir indicar artigos que não estavam previstos no pedido inicial;
o Deve ser possível fechar as entradas de artigos no momento da receção, não permitindo
mais entradas para um determinado pedido de encomenda.

As entidades na plataforma OMNIA correspondentes ao problema são:


 Agentes:
o Colaborador: responsável pela inserção dos documentos;
o Empresa: entidade à qual o Colaborador está associado. Recebe os artigos
encomendados;
o Fornecedor: entidade à qual são efetuadas encomendas. Fornece os artigos
encomendados;
 Recursos:
o Artigo: entidade que representa os artigos a encomendar;
 Processos:
o Gestão de encomendas: elemento agregador das operações relacionadas com a gestão
de encomendas;
 Interações:
o Pedido de encomenda: interação que representa um novo pedido de encomenda a um
fornecedor;
o Encomenda de artigo: entidade transacional do tipo compromisso, representante de uma
promessa de entrega. Modelada como um incremento de um artigo (recurso) entre um
fornecedor (agente fornecedor) e a empresa (agente recetor);
o Entrega de artigo: interação que representa uma nova entrada de artigos na empresa;

Pg 46
 Entrada de artigo: entidade transacional do tipo evento, que representa a entrada
efetiva do artigo na empresa. Modelada como um incremento de um artigo entre o
fornecedor e a empresa. Completa o compromisso de encomenda.
 Integrações:
o O pedido de encomenda irá gerar um documento do tipo Encomenda a Fornecedor (ECF)
no ERP Primavera.

Anexo 2: Referência de fórmulas


Esta secção contém uma referência de todas as funções testadas na plataforma. Exemplos para casos de
utilização comuns estão em Exemplos de fórmulas.

Operações matemáticas

Função Descrição

+ Soma de dois valores.

- Subtração de dois valores.

* Multiplicação de dois valores.

/ Divisão de dois valores.

Operações booleanas

Função Descrição

AND(conj) Dado um conjunto conj de condições, a função AND retorna true se


todas forem true.

OR(conj) Dado um conjunto conj de condições, a função OR retorna true se


pelo menos uma for true.

NOT(cond) Dada uma condição cond, a função NOT retorna o valor lógico
contrário ao que a condição apresenta – true se esta for false, false
se esta for true.

Pg 47
XOR(conj) Dada uma condição cond, a função NOT retorna o valor lógico
contrário ao que a condição apresenta – true se esta for false, false
se esta for true.

IF(cond,accaoTrue, Dada uma condição cond, a função IF retorna o valor accaoTrue se


accaoFalse) a condição for verdadeira, e o valor accaoFalse se for falsa.

Operações de comparação

Função Descrição

> Valor maior que outro valor.

>= Valor maior ou igual a outro valor.

== Valor igual a outro valor.

!= Valor diferente de outro valor.

<= Valor menor ou igual a outro valor.

< Valor menor que outro valor.

Funções matemáticas

Função Descrição

SUM(conj) Dado um conjunto conj de atributos, a função SUM retorna o


somatório dos valores desses atributos.

PRODUCT(conj) Dado um conjunto conj de atributos, a função PRODUCT retorna o


produto entre todos os valores desses atributos.

Pg 48
SUMIF(conj,cond) Dado um conjunto conj de atributos, a função SUMIF retorna o
somatório dos valores desses atributos que passam a condição
cond.

SUMIFS(conj1, cond1, conj2, Dados vários pares conjunto conjN de atributos/ condições condN,
cond2…) a função SUMIFS retorna o somatório dos valores desses atributos
que passam a condição associada.

SIGN(n) Dado um número n, retorna 1 se for positivo, 0 se for 0, ou -1 se for


negativo.

ABS(n) Dado um número n, a função ABS retorna o seu valor absoluto.

ISEVEN(n), ISODD(n) Dado um número n, ISEVEN(n) retorna true se for par, false se for
ímpar; ISODD(n) retorna false se for par, true se for ímpar.

AVERAGE(conj) Dado um conjunto conj de atributos, a função AVERAGE retorna a


média dos valores desses atributos.

AVERAGEIF(conj,cond) Dado um conjunto conj de atributos, a função AVERAGEIF retorna


a média dos valores desses atributos que passam a condição cond.

MEDIAN(conj), STDEV(conj), Dado um conjunto conj de atributos, a função MEDIAN retorna a


DEVSQ(conj) mediana dos valores desses atributos, a função STDEV retorna o
seu desvio padrão, e a função DEVSQ retorna o desvio padrão ao
quadrado (variância).

COUNT(conj) Dado um conjunto conj de atributos, a função COUNT conta o


número de incidências desses atributos.

COUNTIF(conj,cond) Dado um conjunto conj de atributos, a função COUNTIF conta o


número de incidências desses atributos que passam a condição
cond.

COUNTBLANK(conj) Dado um conjunto conj de atributos, a função COUNTBLANK conta


o número de incidências desses atributos que são vazios ou nulos.

Pg 49
COUNTUNIQUE(conj) Dado um conjunto conj de atributos, a função COUNTUNIQUE
conta o número de incidências desses atributos que são distintos
entre si.

MAX(conj), MIN(conj) Dado um conjunto conj de atributos, a função MAX retorna o maior
desses atributos; a função MIN retorna o menor.

Funções de manipulação de data

Função Descrição

DAY(d), MONTH(d), YEAR(d) Retornam o dia, mês e ano, respetivamente, correspondentes a


uma data completa d.

NOW() Retorna a data e hora atual. Se aplicado a campos de data, só é


assumido o valor da data.

HOUR(h), MINUTE(h), Dada uma hora (ou data e hora) h, retornam o valor correspondente
SECOND(h) às horas, minutos e segundos respetivamente.

Funções de manipulação de texto

Função Descrição

UPPER(txt), LOWER(txt) Dado um texto txt, a função UPPER converte-o inteiramente para
maiúsculas; a função LOWER converte-o inteiramente para
minúsculas.

CONCATENATE(txt1, txt2…) Dado um conjunto de textos txt1…txtN, a função CONCATENATE


agrupa-os todos num só texto.

Pg 50
Anexo 3: Exemplos de fórmulas

Operações matemáticas
=[UnitPrice]*[Quantity]

Esta fórmula permite atribuir a um atributo o valor da multiplicação do “UnitPrice” pela “Quantity”.

=([UnitPrice]*[Quantity])/12

Partindo da fórmula anterior, calcular o preço total dividido em 12.

Operações booleanas
=IF([Selected]==true&[RowNumber]==[@1],true,false)

Esta fórmula retorna verdadeiro apenas nos casos em que é marcada a checkbox Selected na primeira linha
da entidade selecionada.

Funções matemáticas
=SUM([Details.GoodsPurchaseRequest.Amount])

Esta fórmula permite atribuir a um atributo o somatório dos atributos “Amount” de todas as entidades
transacionais (linhas) do tipo “GoodsPurchaseRequest”.

=PRODUCT([Details.GoodsPurchaseRequest.Amount])

Esta fórmula permite atribuir a um atributo o produto dos atributos “Amount” de todas as entidades
transacionais (linhas) do tipo “GoodsPurchaseRequest”.

=PRODUCT(1,2,15)

Valor obtido: 30

=SUMIF([Details.GoodsPurchaseRequest.Quantity], '>10')

Esta fórmula permite atribuir a um atributo o somatório dos atributos “Quantity” de todas as entidades
transacionais (linhas) do tipo “GoodsPurchaseRequest” onde a encomenda foi feita com uma quantidade
superior a 10.

=SUMIF([2,4,8,16], '>5')

Valor obtido: 24

=SUMIFS([2,4,8,16], [1,2,3,4], '>=2', [1,2,4,8], '<=4')

Valor obtido: 12

Pg 51
=ABS(-5)

Valor obtido: 5

=SIGN(-35)

Valor obtido: -1

=ISEVEN(2)

Valor obtido: true

=AVERAGE([Details.GoodsPurchaseRequest.Amount])

Esta fórmula permite atribuir a um atributo a média dos valores dos atributos “Amount” de todas as entidades
transacionais (linhas) do tipo “GoodsPurchaseRequest”.

=AVERAGE([1,2,3])

Valor obtido: 2

=AVERAGEIF([Details.GoodsPurchaseRequest.Amount], '>10')

Esta fórmula permite atribuir a um atributo a média dos valores dos atributos “Amount” de todas as entidades
transacionais (linhas) do tipo “GoodsPurchaseRequest” cujo valor é superior a 10.

=MEDIAN([Details.GoodsPurchaseRequest.Amount])

Esta fórmula permite atribuir a um atributo a mediana dos valores dos atributos “Amount” de todas as
entidades transacionais (linhas) do tipo “GoodsPurchaseRequest”.

=COUNT([Details.GoodsPurchaseRequest.ProviderAgent])

Esta fórmula permite atribuir a um atributo o número de fornecedores diferentes definidos nas entidades
transacionais (linhas) do tipo “GoodsPurchaseRequest”.

=COUNT([1,2],[3,4])

Valor obtido: 4

=COUNTIF([Details.GoodsPurchaseRequest.Amount] , '>10')

Esta fórmula permite atribuir a um atributo o número de todas as entidades transacionais (linhas) do tipo
“GoodsPurchaseRequest” cujo valor “Amount” é superior a 10.

=COUNTBLANK([Details.GoodsPurchaseRequest.Amount])

Esta fórmula permite atribuir a um atributo o número de todas as entidades transacionais (linhas) do tipo
“GoodsPurchaseRequest” cujo valor “Amount” é vazio ou nulo.

Pg 52
=COUNTBLANK([1,'',0,2,null])

Valor obtido: 3

=COUNTUNIQUE([1,1,2,2,3,3])

Valor obtido: 3

=MAX([Details.GoodsPurchaseRequest.Amount])

Esta fórmula permite atribuir a um atributo o maior valor “Amount” de todas as entidades transacionais
(linhas) do tipo “GoodsPurchaseRequest”.

=MIN([1,2,3,4])

Valor obtido: 1

Funções de manipulação de data


=MONTH(DateOccurred)

Partimos do campo DateOccurred (predefinido), contendo a data em que ocorreu um determinado evento
(por exemplo, registo de uma encomenda) e se deseja obter o mês. De forma análoga, é também possível
obter o dia ou o ano.

=NOW()

Atribuir a um atributo o valor correspondente à data de hoje.

=DAY([Hoje]) + '/' + MONTH([Hoje])

Modelar um campo com o nome Hoje, partindo do exemplo anterior, e utiliza-lo para preencher um outro
campo com esta sequência, que ficará com o aspeto “15/4”.

=HOUR(NOW())

Recorrer à função NOW() para obter a data/hora atual e obter o valor correspondente à hora atual (UTC)
dessa data.

=MINUTE("1/1/2016 15:05:01")

Valor obtido: 5

Funções de manipulação de texto


=UPPER(“Inverno”)

Valor obtido: INVERNO

Pg 53
=LOWER(“Outono”)

Valor obtido: outono

=CONCATENATE(“Joana”, “ ”, “Guedes”)

Valor obtido: Joana Guedes

Anexo 4: Fórmulas de acesso a dados

Formula Descrição

#Supplier Acesso ao atributo não base “Supplier”.

Agent:Company.Name Acesso ao atributo “Company”, cujo tipo base é


Agente. De toda a informação presente na
“Company”, é selecionado o atributo “Name”.

Resource:#Item.#Price Acesso ao atributo “Item”, cujo tipo base é Recurso.


Em seguida, é acedido o atributo “Name” do “Item”.

UserDefinedEntity:#Supplier.Code Acesso ao atributo “Supplier”, cujo tipo base é User


Defined. Em seguida, é acedido o atributo “Code” do
“Supplier”.

Interaction:Interaction.DateCreated Acesso ao atributo “DateCreated”, que se encontra no


contexto de uma interação. O prefixo só é necessário
no contexto de outro elemento (p.ex. um compromisso
ou evento).

@USER.Email@ Acesso ao atributo “Email” da variável de sistema


“USER”. Esta fórmula garante o acesso ao email do
utilizador com sessão iniciada.

@USER.Employee.Code@ Acesso ao atributo “Code” do “Employee” da variável


de sistema “USER”. Esta fórmula garante o acesso ao
código do colaborador associado ao utilizador com
sessão iniciada.

Pg 54
Anexo 5: Atributos base

Atributos base das entidades

Atributo Descrição Obrigatório

ID Identificador da entidade, gerido de forma Sim


automática pela plataforma.

Code Código da entidade. Este código tem de ser único Sim


para cada tipo de entidade e é gerido pelo
utilizador.

Name Nome da entidade. Sim

Description Outras descrições sobre a entidade. Não

Inactive Indicação se a entidade está inativa. Caso esteja, Não


não será visível nem poderá ser usada em
interações.

ExternalSystemCode Código do sistema externo. Para os casos em que Não


a entidade está relacionada com um sistema
externo.

ExternalCode Código da entidade externa. Para os casos em que Não


a entidade está relacionada com um sistema
externo.

No caso dos Entity Items é removido o Name e Description, e adicionado o seguinte:

Atributo Descrição Obrigatório

RowNumber Número da linha em que o Entity Item está Não


presente.

Pg 55
No caso dos External Systems é removido o ExternalSystemCode e ExternalCode, sendo adicionado o
seguinte conjunto de atributos:

Atributo Descrição Obrigatório

Company Número da linha em que o Entity Item está Sim


presente.

Endpoint Identificador do conector. Sim

Username Username para fazer login no sistema externo. Não

Password Palavra-passe para fazer login no sistema externo. Não

SystemVersion Versão do sistema externo. Não

Channel Canal de comunicação com o conetor. Sim

ClientCertificate, Informação sobre o certificado de cliente (para Não


ClientCertificateThumbprint, ligações SSL).
ClientCertificateExpirationDat
e

ServiceCertificate, Informação sobre o certificado de serviço (para Não


ServiceCertificateThumbprint, ligações SSL).
ServiceCertificateExpirationD
ate

Pg 56
Atributos base das entidades transacionais

Atributo Descrição Obrigatório

ID Identificador da entidade, gerido de forma Não


automática pela plataforma.

Code Código da entidade. Este código tem de ser único Não


para cada tipo de entidade e é gerido pelo
utilizador.

RowNumber Número da linha em que a entidade transacional Sim


está presente.

Resource Recurso transacionado. Sim

Quantity Quantidade do recurso transacionado. Sim

Amount Valor do recurso transacionado. Sim

DateOccurred Data em que ocorreu a transação. Sim

WhenNoticed Data em que a transação foi validada. Sim

Inactive Indicação se a entidade transacional está inativa. Sim


Caso esteja, não será visível nem poderá ser usada
em interações.

ProviderAgent Agente que providencia o recurso na transação. Sim

ReceiverAgent Agente que recebe o recurso. Sim

TransactionKind Evento ou compromisso. Sim

EntityType Tipo de evento ou compromisso. Sim

Pg 57
CommitmentToFulfill, Configurações associadas ao mecanismo de Não
AmountToFulfill, fulfillments.
CloseCommitment

TransactionalEntityToRectify, Opções associadas ao mecanismo de retificações. Não


AmountToRectify

ExternalSystemCode Código do sistema externo. Para os casos em que Não


a entidade transacional está relacionada com um
sistema externo.

ExternalCode Código da entidade externa. Para os casos em que Não


a entidade transacional está relacionada com um
sistema externo.

Duration A duração de um evento. Sim

ScheduledDate Data em que é prevista a satisfação do Sim


compromisso.

QuantityFulfilled Quantidade satisfeita pelo compromisso. Não

Atributos base das interações

Atributo Descrição Obrigatório

NumberSerieCode Série de documento da interação na plataforma. Sim

NumberSerieID Identificador da série de documento da interação na Sim


plataforma (associado a NumberSerieCode).

Number Número do documento dentro da série da Sim


plataforma.

DateCreated Data de criação do documento. Sim

Pg 58
CompanyCode Código da empresa à qual a interação está Sim
associada.

ExternalSystemCode Código do sistema externo. Para os casos em que Não


a interação está relacionada com um sistema
externo.

ExternalCode Código da entidade externa. Para os casos em que Não


a interação está relacionada com um sistema
externo.

Anexo 6: Notificações por omissão


Ao adicionar etapas de aprovação a uma interação ou entidade, são adicionadas notificações por omissão.

Notificações na aprovação

Etapa Inicial:

Campo Valor

To: [CreatedBy.ContactEmail]

Subject: {0} rejected

Parameters: [MisEntityType.Code]

Body: Your {0} {1}/{2} has been rejected by {3}

Parameters: [MisEntityType.Code],[NumberSerieCode],[Number]
,[Approver.Email]

Pg 59
Etapa(s) Intermédia(s):

Campo Valor

To: [ApproverContactEmail]

Subject: {0} {1}/{2} is waiting for your approval

Parameters: [MisEntityType.Code],[NumberSerieCode],[Number]

Body: {0} {1}/{2} is waiting for your approval

Stage: EtapaIntermedia

Created by: {3}

Parameters: [MisEntityType.Code],[NumberSerieCode],[Number]
,[CreatedBy.ContactEmail]

Etapa(s) Final(Finais):

Campo Valor

To: [CreatedBy.ContactEmail]

Subject: {0} approved

Parameters: [MisEntityType.Code]

Body: Your {0} {1}/{2} has been approved by {3}

Parameters: [MisEntityType.Code],[NumberSerieCode],[Number]
,[Approver.Email]

Pg 60
Notificações na reversão
Todas as etapas:

Campo Valor

To: [PreviousApproverEmail]

Subject: {0} {1}/{2} has been reverted

Parameters: [MisEntityType.Code],[NumberSerieCode],[Number]

Body: {0} {1}/{2} was reverted and is no longer waiting for


your approval. Please ignore previous e-mail

Reverted by: {3}

Reversion date: {4}

Parameters: [MisEntityType.Code],[NumberSerieCode],[Number]
,[Approver.Email],[ModifiedDate]

Pg 61
PRIMAVERA Business Software Solutions, S.A. © 1993 - 2016, All rights reserved

Pg 62

You might also like