O manual trata do T6 Planning Workflow BPM e aborda diversos tópicos relacionados à configuração de workflows, processos, parâmetros, responsáveis, modelos de e-mail, design de atividades, tipos de tarefas, funções específicas e suas sintaxes. O foco principal é na utilização do Business Process Modeling Notation (BPMN) para modelar processos de negócio, com a intenção de proporcionar maior flexibilidade ao workflow clássico. O documento também fornece exemplos de expressões e explicações detalhadas sobre cada parte do processo, incluindo tipos de tarefas, design de fluxo, identificação de objetos, e outras funcionalidades associadas ao T6 Planning Workflow BPM.
Para cada aplicação do T6 Planning devemos escolher um workflow a ser utilizado. Cada aplicação pode possuir apenas um tipo de workflow. Os tipos disponíveis são:
O tipo de workflow de uma aplicação pode ser alterado a qualquer momento. Para isto, basta editar a aplicação desejada e alterar o tipo do workflow confirme a necessidade.
Aplicações migradas não terão o seu workflow alterado. Novas aplicações irão possuir como padrão o tipo de workflow BPM.
Uma aplicação configurada para utilizar o workflow clássico terá o comportamento do workflow existente no T6 Planning até então, onde o mesmo possui o seu funcionamento baseado nas dimensões Cenário e Entidade do modelo. Como o foco deste manual é o Workflow BPM, não iremos detalhar o Workflow Clássico neste manual.
Com a necessidade constante de uma maior flexibilidade em nosso workflow clássico, buscamos no mercado um padrão de notação para a modelagem de processos de negócio. A opção mais plausível encontrada foi o Business Process Modeling Notation (BPMN), desenvolvida e disponibilizada como uma nova opção de workflow para as aplicações.
Atualmente está sendo suportando um subset do BPMN. O nosso objetivo, em longo prazo, é suprir todas as opções disponíveis do BPMN.
Algumas opções adicionais foram disponibilizadas na confecção dos processos para facilitar o preenchimento e execução dos processos, não pertencendo estas opções ao padrão BPMN.
Um processo é um grupo de atividades realizadas numa sequência determinada. Os processos são independentes de aplicação. Apenas alguns tipos de tarefas específicas, detalhadas mais adiante, são dependentes de aplicação.
O processo é a definição de um fluxo. Uma instância é um exemplar em execução de um processo. Em um mesmo processo, podemos ter diversas instâncias sendo executadas no mesmo momento. Apenas é possível inicializar uma instância em um processo caso ele esteja publicado.
Ao salvar um processo, nenhuma validação é realizada. A validação de consistência apenas ocorre durante a publicação do processo.
Existe um controle de versão nos processos. Ou seja, toda vez que o processo é salvo, uma nova versão do processo é salva, mantendo a versão anterior no histórico do processo para futuras consultas.
Um processo pode possuir uma coleção de parâmetros. Cada parâmetro possui uma definição de tipo e uma configuração. Cada processo possui apenas as definições dos parâmetros. E cada instância de um processo deve possuir um valor para cada parâmetro do processo.
Caso um parâmetro seja configurado para aceitar valores nulos, mesmo não será requisitado o preenchimento quando o usuário necessitar executar um gatilho.
Um parâmetro configurado como interno não ficará visível na listagem de parâmetros ao se executar um gatilho. A utilidade de um parâmetro interno é abstração do parâmetro para o usuário que irá executar o gatilho, já que o parâmetro apenas é necessário para o funcionamento interno do processo. Como o parâmetro não é listado, ele é obrigatoriamente um parâmetro que aceita valores nulos.
Abaixo os possíveis tipos de parâmetros.
Permite armazenar um valor referente a ação executada sobre uma instância. Por exemplo: Se a tarefa foi ou não aprovada.
Permite o envio (upload) de arquivos.
Armazena valores binários verdadeiro (true) ou falso (false). Possibilitando uso em condicionais por exemplo.
Utilizado para armazenar uma data.
Utilizado para armazenar um valor com ponto flutuante.
Utilizado para armazenar um valor inteiro.
Utilizado para armazenar a identificação de um membro de uma determinada aplicação e dimensão.
Utilizado para armazenar a identificação da instância. Caso este parâmetro exista em um processo. Sempre que o T6 Planning necessitar identificar uma instância, ele irá utilizar o valor contido neste parâmetro.
Utilizado para armazenar uma lista de responsáveis.
Utilizado para armazenar um responsável.
Utilizado para armazenar a identificação de uma determinada tabela de dados.
Utilizado para armazenar um texto.
A definição dos responsáveis das tarefas de um processo pode ser uma atividade muito trabalhosa e de difícil manutenção. Para facilitar a definição dos responsáveis das tarefas de um processo, é possível configurar o processo para carregar os responsáveis armazenados em uma tabela de dados. Para isto, basta escolher a tabela de dados onde estão armazenados os responsáveis e configurar algumas colunas de identificação.
Abaixo, uma descrição sobre como configurar os parâmetros para carregar dinamicamente os responsáveis:
- Tabela de Dados de Responsáveis: Devemos escolher a tabela de dados aonde se localiza as informações sobre os responsáveis.
- Coluna Identificação: Devemos escolher uma coluna da tabela de dados do tipo texto que possua uma identificação para a tarefa que desejamos carregar os responsáveis. No momento do carregamento dos responsáveis de uma tarefa, o valor contido em “Identificador da Tarefa” da tarefa será utilizado como filtro na coluna “Coluna Identificação” selecionada.
- Coluna Responsável: Devemos escolher uma coluna da tabela de dados do tipo texto que possua a identificação do usuário. Para facilitar o preenchimento desta coluna na tabela de dados, geralmente ela possui um link para os usuários do T6 Planning na definição da tabela de dados. Com isto, no formulário de dados teremos uma caixa de seleção para escolher o usuário desejado.
- Coluna Ordenação: Devemos escolher uma coluna da tabela de dados do tipo inteiro. Este parâmetro, não obrigatório, apenas é necessário caso exista a necessidade de utilizarmos múltiplos responsáveis em nossas tarefas.
- Filtros: Caso exista a necessidade de filtrar os responsáveis das tarefas contidas em uma tabela de dados, podemos utilizar os filtros para realizar um mapeamento de um parâmetro do processo para uma coluna da tabela de dados. Para utilizar esta funcionalidade, é necessário que o processo possua um parâmetro do tipo “Responsável”, assim como um parâmetro do tipo “Responsáveis” também é necessário.
Através da transferência de responsáveis, podemos trocar o responsável por uma tarefa ou instância do workflow, para isso, vamos seguir os seguintes passos:
- No menu principal do T6, em Workflow, vamos selecionar a opção Transferir Responsáveis;
- Será aberto um panel na lateral com 3 etapas: Propriedades, Instâncias e Resumo;
- na etapa propriedades, vamos selecionar o responsável atual e o novo responsável pela tarefa que desejamos transferir;
- Ao clicar no dropdown do Responsável Atual serão exibidos os usuários do sistema que tem tarefas do workflow vinculadas, selecione o usuário responsável pela tarefa que deseja transferir;
- No dropdown do Novo Responsável teremos a exibição de todos os usuários que podem ter a tarefa a ser transferida vinculada, selecione o novo responsável;
- Temos também um botão switch Atualizar as Tabelas de Responsáveis, que por padrão vem desabilitado, caso queira atualizar as tabelas de responsáveis automaticamente após a conclusão da transferência, habilite o botão switch;
- Após a seleção do responsável atual e do novo responsável, vamos clicar em
;
- Ao clicar em próximo, avançaremos para a etapa Instâncias, onde teremos uma listagem das tarefas em forma de árvore hierárquica, permitindo a seleção de todas as tarefas do workflow, dos processos, ou, a seleção de instâncias específicas;
- Na listagem, ao lado do nome de cada processo temos uma checkbox, marque a checkbox das instâncias e/ou processos que deseja transferir;
- Após selecionar as instâncias e/ou processos que desejamos transferir, vamos clicar em
;
- Avançaremos para a etapa Resumo na qual teremos uma exibição das ações a serem realizadas, exibindo o responsável atual selecionado, o novo responsável e as instâncias selecionadas para transferência;
- Caso deseje alterar algum dado antes de prosseguir, clique em
e faça as alterações necessárias;
- Caso esteja de acordo com as ações a serem realizadas, vamos clicar em

Como intuito de facilitar a configuração de e-mails, é possível criarmos modelos de e-mail no processo. Depois de configurado o modelo de e-mail, podemos associá-lo a eventos pré-determinados no processo ou na tarefa.
- Iniciar: Ao associar um modelo de e-mail ao evento iniciar, um e-mail com o modelo associado será enviado toda vez que uma nova instância for iniciada.
- Parar: Ao associar um modelo de e-mail ao evento parar, um e-mail com o modelo associado será enviado toda vez que uma instância for parada.
- Fim: Ao associar um modelo de e-mail ao evento fim, um e-mail com o modelo associado será enviado toda vez que uma instância for finalizada.
- Iniciar Tarefa: Ao associar um modelo de e-mail ao evento iniciar tarefa, um e-mail com o modelo associado será enviado toda vez que uma tarefa for iniciada.
- Aprovar Tarefa: Ao associar um modelo de e-mail ao evento aprovar tarefa, um e-mail com o modelo associado será enviado toda vez que uma tarefa for aprovada.
- Rejeitar Tarefa: Ao associar um modelo de e-mail ao evento rejeitar tarefa, um e-mail com o modelo associado será enviado toda vez que uma tarefa for rejeitada.
- Prazo da Tarefa: Ao associar um modelo de e-mail ao evento prazo da tarefa, um e-mail com o modelo associado será enviado para cada tarefa que não estiver atrasada e estiver com o tempo restante abaixo do configurado no processo, quando o T6 Planning Services for executado com a opção “sendmaildeadline”.
- Tarefa Atrasada: Ao associar um modelo de e-mail ao evento tarefa atrasada, um e-mail com o modelo associado será enviado para cada tarefa atrasada, toda vez que o T6 Planning Services for executado com a opção “sendmaildeadline”.
No menu principal do T6, em Workflow, temos a opção "Feriados".
Esta opção, tem como única funcionalidade a adição de datas nas quais as tarefas do workflow serão pausadas, ou seja, se tivermos um feriado em dia útil.
Ao clicarmos em "Feriados", um panel na lateral será aberto, onde poderemos adicionar uma data que não contará como dia útil, sendo assim, não contará nos prazos das tarefas do workflow.
Por Exemplo: Temos uma tarefa que tem 4 dias para sua conclusão, se tivermos um feriado adicionado neste meio tempo, a data para conclusão será "estendida" para próximo dia útil, pois o prazo para conclusão de tarefas do workflow leva em consideração somente os dia úteis.
A definição do fluxo de atividades de um processo é realizada através de um designer gráfico. Ao criar um novo processo, o designer irá criar uma atividade de Início e uma atividade de Fim para o processo.
Sempre que uma atividade for selecionada, clicando com o primeiro botão do mouse sobre a atividade, o designer irá disponibilizar ao redor da atividade selecionada quais outras possíveis atividades podem se desprender da atividade atual. Caso nenhuma opção esteja disponível, significa que a atividade atual não pode ter mais nenhuma atividade se desprendendo dela.
Para acessar as ações disponíveis de uma atividade. Basta utilizar o segundo botão do mouse sobre a atividade desejada. Com isto, um menu de contexto irá ser disponibilizado com as ações para a atividade.
Caso um duplo clique seja realizado na atividade, o designer irá executar a ação padrão esperada para aquela atividade. Geralmente a primeira ação disponível do menu de contexto para a atividade.
Para mover uma atividade, basta selecionar a mesma e realizar o movimento de arrastar e soltar na nova posição desejada para a atividade.
Algumas atividades suportam o redimensionamento. Para realizar o redimensionamento, basta selecionar a atividade e realizar o movimento de arrastar e soltar no canto inferior direto da atividade. Lembrando que, quando o mouse se encontrar no canto inferior direito da atividade e a atividade suportar o redimensionamento, o cursor do mouse irá ser alterado para o cursor de redimensionamento.
¶ 3.6.1 Identificando os Objetos e Atividades do Workflow
O workflow T6 Planning segue as regras do BPM, sendo que cada objeto disponível em nossa ferramenta representa uma atividade, conforme segue abaixo:
- Início: Utilizado para identificar o início de um processo, sequência ou sub-processo. Todo fluxo deve possuir somente um Início. Por este motivo não é possível inserir ou remover o Início de um fluxo.
- Fim: Utilizado para identificar o final de um processo, sequência ou sub-processo. Todo fluxo deve possuir somente um Fim. Por este motivo não é possível inserir ou remover o Fim de um fluxo.
- Subprocesso: Possibilita a utilização de um processo dentro de outro, desde que ambos os processos sejam compatíveis entre si. Ou seja, no mapeamento do processo para o sub-processo, todos os parâmetros do sub-processo devem possuir um parâmetro do processo, de mesmo tipo ou equivalente.
- Sequência: Utilizado para agrupar atividades dentro de um processo, possibilitando a abstração e simplificação de um processo.
- Condicional: Utilizado para desviar o fluxo de um processo. Todo condicional deve possuir uma expressão a ser validada. A resultante dessa expressão deve ser um valor booleano. Caso a resultante seja um valor verdadeiro, a instância irá ser desviada para a conexão em verde. Caso o valor da resultante seja um valor falso, a instância irá ser desviada para a conexão em vermelho.
Abaixo a sintaxe esperada em uma expressão de uma condicional:
[Bloco Comparativo]
Onde:
[Bloco Comparativo] = [Comparativo] ou [Comparativo] e [Operador Lógico] e [Bloco Comparativo]
[Comparativo] = [Operando] e [Comparador] e [Operando]
[Operando] = Pode ser qualquer função ou uma constante. Para maiores informações sobre funções. Veja a lista de funções.
[Comparador] = “<=” ou “=” ou “>=” ou “!=”
[Operador Lógico] = AND ou OR
- Divisor: Utilizado para criar instâncias no fluxo. Um divisor pode ter quantas conexões de saída forem necessárias. Para cada conexão de saída de um divisor será gerado uma nova instância.
Caso uma expressão seja utilizada no divisor, para cada valor resultante na função de carregamento da expressão, será gerado uma nova instância para cada conexão de saída do divisor. O valor resultante da função de carregamento será preenchido no parâmetro informado na função instância na nova instância criada.
Sempre que uma instância se deparar com um divisor, novas instâncias serão criadas no fluxo e a instância original será deslocada para a junção referente ao divisor com o estado de aguardando. Quando a última instância criada no divisor chegar a junção, a instância original irá sair do estado aguardando e continuará o fluxo com o estado executando.
Abaixo a sintaxe esperada em uma expressão de um divisor:
[Função Instância] = [Função Carregamento]
[Função Instância] deve ser a função Instance. Para maiores informações sobre a função Instance, veja a lista de funções.
[Função Carregamento] deve ser uma função de carregamento. Para maiores informações sobre funções de carregamento, veja a lista de funções.
- Junção: Utilizado para realizar a junção de duas ou mais conexões em um fluxo. Sempre que tivermos um condicional ou um divisor no fluxo, temos que ter uma junção em contrapartida para o mesmo.
- Raia: Utilizada para designar o responsável por uma tarefa do processo fluxo. Cada raia do processo deve ser associada a uma raia do T6 Planning. Com isto, o responsável por uma tarefa no fluxo será definido pelos usuários contidos na raia do T6 Planning. Em um processo podemos ter diversas raias. Existe a possibilidade de termos duas raias do fluxo apontando para a mesma raia do T6 Planning.
- Tarefa: Designa uma atividade que não possui vínculo com o funcionamento do fluxo do processo, mas sim com o objetivo do processo em si. Uma tarefa pode ser automática ou manual. Caso ela seja manual, irá possuir no mínimo um responsável pela execução da mesma.
Abaixo os possíveis tipos de tarefas disponíveis:
- Carga de Dados: Este tipo de tarefa tem como objetivo a execução de cargas de dados, podendo ser uma carga de dimensão ou uma carga fato. Possui a necessidade da escolha de uma aplicação específica. Por se tratar de uma tarefa de execução manual, necessita a definição de um usuário responsável.
- Carga de Dados Automática: Idem a carga de dados, porém esta irá acontecer de forma automática.
- Comando SQL: Permite ao usuário colocar um comando SQL para ser executado pela tarefa.
- E-mail: Este tipo de tarefa tem como objetivo o envio de e-mail. Não possui dependência com nenhuma aplicação. Por se tratar de uma tarefa de execução automática, não necessita a definição de um usuário responsável.
- Expressão: Este tipo de tarefa tem como objetivo a execução de expressões. Existe a possibilidade de inserir diversas expressões na mesma tarefa. Para isto, basta colocar cada expressão em uma linha diferente. Não possui dependência com nenhuma aplicação. Por se tratar de uma tarefa de execução automática, não necessita a definição de um usuário responsável.
Abaixo a sintaxe esperada em uma expressão de uma tarefa:
[Função de Armazenamento] = [Função ou Constante]
Onde:
[Função de Armazenamento] deve ser uma função de armazenamento. Para maiores informações sobre funções de armazenamento, para mais informações acesse: Fórmulas e Funções.
[Função ou Constante] pode ser qualquer função ou uma constante. Para maiores informações sobre funções, para mais informações acesse: Fórmulas e Funções.
- Fórmula: Este tipo de tarefa tem como objetivo a execução de fórmulas. Possui a necessidade da escolha de uma aplicação específica. Por se tratar de uma tarefa de execução manual, necessita a definição de um usuário responsável.
- Fórmula Automática: Idem a Formula, porém esta irá acontecer de forma automática.
- Formulário: Este tipo de tarefa tem como objetivo a abertura de um formulário para o preenchimento de informações. Existe a possibilidade de associar os parâmetros do processo as páginas do formulário. Com isto, ao abrir o formulário através da tarefa, as páginas virão selecionadas de acordo com o valor do parâmetro contido na instância atual. Possui a necessidade da escolha de uma aplicação específica. Por se tratar de uma tarefa de execução manual, necessita a definição de um usuário responsável.
- Formulário de Dados: Este tipo de tarefa tem como objetivo a abertura de um formulário de dados para o preenchimento de informações. Existe a possibilidade de associar os parâmetros do processo as páginas do formulário de dados. Com isto, ao abrir o formulário de dados através da tarefa, as páginas virão selecionadas de acordo com o valor do parâmetro contido na instância atual. Possui a necessidade da escolha de uma aplicação específica. Por se tratar de uma tarefa de execução manual, necessita a definição de um usuário responsável.
- Hyperlink: Este tipo de tarefa tem como objetivo a abertura de um hyperlink. Não possui dependência com nenhuma aplicação. Por se tratar de uma tarefa de execução manual, necessita a definição de um usuário responsável.
- Hyperlink Automático: Idem ao Hyperlink, porém esta irá acontecer de forma automática.
- Link de Dados: Este tipo de tarefa tem como objetivo a execução de link de dados. Possui a necessidade da escolha de uma aplicação específica. Por se tratar de uma tarefa de execução manual, necessita a definição de um usuário responsável.
- Publicar: Irá realizar a publicação do Cubo da aplicação selecionada na tarefa. É a mesma ação que ir no menu “Modelagem” -> “Publicar”.
- Recarregar Membros: Irá recarregar os membros da dimensão selecionada na tarefa (conforme aplicação selecionadas também) que estão no banco de dados. É a mesma ação que ir na tela “Modelagem” -> “Estrutura do modelo” -> “Membros” e no menu “Ferramentas” da tela, ação “Recarregar Membros”.
- Relatório: Este tipo de tarefa tem como objetivo a visualização de um relatório. Possui a necessidade da escolha de uma aplicação específica. Por se tratar de uma tarefa de execução manual, necessita a definição de um usuário responsável.
- Rotina Automática: Este tipo de tarefa tem como objetivo a execução de um job do SQL Server de forma automática. Não possui dependência com nenhuma aplicação. Por se tratar de uma tarefa de execução automática, não necessita a definição de um usuário responsável.
- Rotina Manual: Este tipo de tarefa tem como objetivo a execução de um job do SQL Server de forma manual. Não possui dependência com nenhuma aplicação. Por se tratar de uma tarefa de execução manual, necessita a definição de um usuário responsável.
- Tipos de Cenários: Permite alterar os tipos de cenários (se o cenário é fechado, planejado ou realizado) da aplicação. É a mesma ação que ir no menu “Modelagem” -> “Tipos de Cenários”.
O T6 Planning Workflow BPM permite que sejam inseridas algumas funções com finalidades específicas dentro do processo, conforme descrito abaixo:
A função CreateDataTableRow é utilizada para criar um registro em uma tabela de dados.
PARÂMETROS:
- Tabela de Dados: Nome da tabela de dados.
- Coluna e Valor: Parâmetro multivalorado opcional utilizado para definir os valores das colunas do novo registro da tabela de dados.
EXEMPLO: Instance(Unidade Consumidora Faturamento Mensal) = CreateDataTableRow([Unidade Consumidora Faturamento Mensal], [Unidade Consumidora] = Instance(Unidade) ,[Mês] = Instance(Mes))
Neste exemplo de expressão de uma tarefa do tipo expressão, um novo registro na tabela de dados Unidade Consumidora Faturamento Mensal é criado, onde o valor da coluna Unidade Consumidora será preenchido com o parâmetro da instância de nome Unidade, assim como o valor da coluna Mês do registro será preenchido com o parâmetro da instância de nome Mês.
A função DataLoadParameter é utilizada para manipular os parâmetros de carga de dados de uma aplicação específica, podendo a função ser utilizada para carregar ou salvar um valor de um parâmetro de carga de dados. Esta função é considerada uma função de armazenamento.
PARÂMETROS:
- Parâmetro: Parâmetro da carga de dados. Composto pelo nome da aplicação e o nome do parâmetro de carga de dados.
EXEMPLO: Instance(Email) = DataLoadParameter([Qualidade].[Conteúdo])
Este exemplo de expressão trata de uma tarefa do tipo expressão. O valor do parâmetro de carga de dados Conteúdo da aplicação Qualidade será atribuído ao parâmetro Email da instância atual.
A função DataTableCell é utilizada para manipular os valores de um registro de uma tabela de dados, podendo a função ser utilizada para carregar ou salvar um valor de um registro de uma tabela de dados. Esta função é considerada uma função de armazenamento.
PARÂMETROS:
- Cell: Identificação de uma célula de uma tabela de dados. Composto pelo nome da tabela de dados, identificação da linha e nome da coluna.
EXEMPLO: Instance(UEmail) = DataTableCell([Usuarios].[Instance(ID)].[Email])
Este exemplo de expressão trata de uma tarefa do tipo expressão. O valor da coluna Email da tabela de dados Usuários do registro contido no parâmetro ID será atribuído ao parâmetro UEmail da instância atual.
A função DataTableRowLookup é utilizada para buscar a identificação de um registro de uma tabela de dados.
PARÂMETROS:
- Row: Identificação de um registro de uma tabela de dados. Composto pelo nome da tabela de dados, nome da coluna e um valor esperado na coluna.
EXEMPLO: Instance(ID) = DataTableRowLookup[Users].[Nome].[Instance(Atual)]
Este exemplo de expressão trata de uma tarefa do tipo expressão. A identificação do registro da tabela de dados Users que possuir o valor da coluna Nome igual ao valor do parâmetro Atual será atribuído ao parâmetro ID da instância atual.
Esta função busca o valor da data atual do servidor.
EXEMPLO: Instance(Data) = GetDate()
Este exemplo de expressão trata de uma tarefa do tipo expressão. A data do servidor será atribuída ao parâmetro Data da instância atual.
A função Instance é utilizada para manipular os valores de parâmetros da instância, podendo a função ser utilizada para buscar ou salvar um valor de um parâmetro de instância. Esta função é considerada uma função de armazenamento.
PARÂMETROS:
- Parameter: Nome de parâmetro do processo.
EXEMPLO: Instance(Ação) = “Aprovada”
Este exemplo de expressão trata de uma tarefa do tipo expressão. A constante “Aprovada” será atribuída ao parâmetro Ação da instância.
Retorna o código da instância atual.
PARÂMETROS: Não possui parâmetros.
EXEMPLO: Instance (Código) = InstanceCode()
Retorna o nome da instância atual.
PARÂMETROS: Não possui parâmetros.
EXEMPLO: Instance (Nome) = InstanceName()
A função LoadDataTableRows é utilizada para carregar os registros de uma tabela de dados, podendo os mesmos ser filtrados ou não. Esta função é considerada uma função de carregamento.
PARÂMETROS:
- Tabela de Dados: Nome da tabela de dados a ter os registros carregados.
- Filtro: Parâmetro multivalorado opcional utilizado para filtrar os registros a serem carregados. Caso mais de um filtro seja definido. Os filtros irão atuar de maneira a trazer a intersecção dos resultados. Caso existam filtros consecutivos aonde o operando a esquerda seja igual. Os mesmos irão atuar de maneira a trazer a união dos resultados.
Abaixo a sintaxe esperada em um parâmetro de filtro:
[Operando] [Comparador] [Operando]
Onde:
[Operando] = [Coluna] ou [Constante] ou [Instancia] ou [Expressão]
[Coluna] = Nome de uma coluna da tabela de dados. O nome da coluna deve vir dentro de colchetes.
[Constante] = Valor de uma constante. O valor da constante deve vir entre plicas duplas.
[Instancia] = Função Instance. Para maiores informações sobre o uso da função Instance, olhar na lista de funções os detalhes.
[Expressão] = Uma expressão SQL. A expressão deve vir dentro de chaves.
[Comparador] = “<=” ou “=” ou “>=” ou “!=”
- Coluna: Parâmetro opcional que deve ser utilizado sempre que desejar retornar uma coluna diferente da coluna identificação da tabela de dados.
EXEMPLO: Instance(Atividade) = LoadDataTableRows([Atividades])
Neste exemplo de expressão de um divisor, as identificações dos registros da tabela de dados Atividades serão atribuídas aos parâmetros Atividade das instâncias criadas pelo divisor.
A função LoadMembers é utilizada para carregar os membros de uma dimensão, podendo os mesmos ser filtrados ou não. Esta função é considerada uma função de carregamento.
PARÂMETROS:
- Dimensão: Nome da tabela de dados a ter os registros carregados. Composto pelo nome da aplicação e dimensão.
- Filtro: Parâmetro multivalorado opcional utilizado para filtrar os membros a serem carregados. Caso mais de um filtro seja definido. Os filtros irão atuar de maneira a trazer a intersecção dos resultados. Caso existam filtros consecutivos onde o operando à esquerda seja igual, os mesmos irão atuar de maneira a trazer a união dos resultados.
Abaixo a sintaxe esperada em um parâmetro de filtro:
[Operando] [Comparador] [Operando]
Onde:
[Operando] = [Coluna] ou [Constante] ou [Instancia] ou [Expressão]
[Operando] = [Propriedade] ou [Constante] ou [Instancia]
[Propriedade] = Nome de uma propriedade da dimensão. O nome da propriedade deve vir dentro de colchetes.
[Constante] = Valor de uma constante. O valor da constante deve vir entre plicas duplas.
[Instancia] = Função Instance. Para maiores informações sobre o uso da função Instance, olhar na lista de funções os detalhes.
[Comparador] = “<=” ou “=” ou “>=” ou “!=”
EXEMPLO: Instance(Membro) = LoadMembers([Planejamento].[Entidade])
Neste exemplo de expressão de um divisor, as identificações dos membros da dimensão Entidade da aplicação Planejamento serão atribuídas aos parâmetros Membro das instâncias criadas pelo divisor.
Retorna o nome ou o valor de uma propriedade do membro.
PARÂMETROS:
- Dimensão: Nome da dimensão do membro. Composto pelo nome da aplicação e dimensão.
- Identificador: Identificador textual (ID ou UniqueID) do membro ou valor de um parâmetro da instância.
- Propridade: Nome da propriedade desejada. Caso este parâmetro não seja preenchido, a função irá retornar o nome do membro.
EXEMPLOS:
Member([Aplicação].[Dimensão], "5")
Member([Aplicação].[Dimensão], "[Conta].[Conta].[&5]")
Member([Aplicação].[Dimensão], "[Conta].[Conta].[&5]", "Propriedade))
Retorna a descrição do processo.
PARÂMETROS: Não possui parâmetros.
Retorna o nome do processo.
PARÂMETROS: Não possui parâmetros.
A função RemoveDataTableRow é utilizada para remover registros de uma tabela de dados.
PARÂMETROS:
- Tabela de Dados: Nome da tabela de dados.
- Coluna e Valor: Parâmetro multivalorado opcional utilizado para definir os valores de filtros das colunas removidas.
EXEMPLO: Instance(Unidades) = RemoveDataTableRow([Unidade Consumidora], [Contrato] = Instance(Contrato));
Neste exemplo de expressão de uma tarefa do tipo expressão, os registros na tabela de dados Unidade Consumidora são removidos, onde temos como filtro da remoção a coluna Contrato possuindo o valor do parâmetro de instância Contrato. Neste exemplo, o parâmetro de instância Unidades irá receber o número de registros removidos.
Retorna o nome e e-mail do responsável pela tarefa.
PARÂMETROS:
- Posição: Você pode buscar o responsável 'Anterior', 'Atual' ou o 'Próximo'. Utilize 'Previous', 'Current' ou 'Next'.
EXEMPLO: Responsible(Current)
Retorna o e-mail do responsável pela tarefa.
PARÂMETROS:
- Posição: Você pode buscar o responsável 'Anterior', 'Atual' ou o 'Próximo'. Utilize 'Previous', 'Current' ou 'Next'.
Retorna o nome do responsável pela tarefa.
PARÂMETROS:
- Posição: Você pode buscar o responsável 'Anterior', 'Atual' ou o 'Próximo'. Utilize 'Previous', 'Current' ou 'Next'.
A função Sum é utilizada para somar os valores contidos um parâmetro multivalorado.
PARÂMETROS:
- Parameter: Nome de parâmetro do processo.
EXEMPLO: Instance(Valor) = Sum(Valores)
Neste exemplo de expressão de uma tarefa do tipo expressão, o somatório dos valores contidos no parâmetro Valores será atribuído ao parâmetro Valor da instância.
Retorna o descritivo da tarefa atual.
PARÂMETROS: Não possui parâmetros.
Retorna o nome da tarefa atual.
PARÂMETROS: Não possui parâmetros.
As raias são utilizadas para organizar e categorizar atividades de acordo com a função ou papel.
Uma raia pode possuir uma coleção de usuários, ou até mesmo uma coleção de grupo de usuários. Os usuários contidos na raia, direta ou indiretamente, irão possuir a função ou papel desempenhada pela raia.
As raias são independentes de aplicações e modelos. Com isto, uma mesma raia pode ser utilizada em diversos processos distintos.
Cada raia pertencente a um processo possui uma relação de um para um para a raia.
Gatilhos são artifícios do T6 Planning para criar novas instâncias de um processo. Os gatilhos podem ser executados de forma manual, automática ou através do T6 Planning Services.
Quando um gatilho é disparado, uma nova instância é criada no processo pré-definido na criação do gatilho. A nova instância é criada no Início do processo e executada pelo motor de execução do workflow até encontrar uma tarefa manual ou se deparar com o final do processo.
Os Gatilhos podem ser disparados de forma manual, automática ou através do T6 Planning Services.
- Manual: Todo gatilho pode ser disparado de forma manual. Para isto, basta executar um gatilho da lista de gatilhos e preencher os parâmetros necessários.
- Automático: Um gatilho pode ser configurado para ser disparado de forma automática. Para isto, na definição do gatilho, é necessário configurar uma tabela de dados a ser observada, onde devemos informar em quais eventos o gatilho deve ser disparado.
Para que um gatilho automático funcione, é necessário que o processo possua um parâmetro do tipo Tabela de Dados apontando para o mesmo processo o qual o gatilho está observando. Este parâmetro será preenchido no momento da criação da instância com a identificação da linha que disparou o evento.
- T6 Planning Services: Existe a possibilidade de configurar um gatilho para ser executado automaticamente no T6 Planning Services. Sempre que o T6 Planning Services for executado com a opção StartInstance, todos os gatilhos marcados para serem executados no T6 Planning Services serão disparados. Caso seja necessário, existe a possibilidade de executar um gatilho pontualmente através do T6 Planning Services.
Os eventos disponíveis para disparo de gatilhos são:
- Inserção: A cada nova linha inserida na tabela de dados irá criar uma nova instância do processo. A instância será criada após a inserção da nova linha da tabela de dados.
- Atualização: A cada linha atualizada na tabela de dados irá criar uma nova instância do processo. A instância será criada após a atualização da linha da tabela de dados.
- Remoção: A cada linha removida da tabela de dados irá criar uma nova instância do processo. A instância será criada antes da remoção da linha da tabela de dados.
Para realizar a execução de um processo, uma instância deve ser iniciada e parametrizada. Além disso, deve ser feita a definição dos responsáveis pelas atividades do processo.
Ao ser executado um gatilho, de maneira manual ou automática, uma nova instância será criada. Esta instância inicializada terá os seus valores de parâmetros preenchidos com os valores encontrados no gatilho que originou a instância.
A nova instância criada irá percorrer o fluxo até encontrar o final. No decorrer do fluxo a instância pode requerer uma ação manual de um usuário. Quando isto ocorrer, a instância ficará aguardando a interatividade do usuário responsável pela atividade atual.
Quando existir a necessidade de uma interatividade manual o usuário deve executar uma ação na atividade.
As ações disponíveis são:
- Aprovar: Esta ação aprova a atividade atual e envia a instância para a próxima atividade manual disponível. Caso exista mais de um responsável na atividade, a instância irá permanecer na mesma atividade e designar o próximo responsável caso ele exista.
- Rejeitar: Esta ação rejeita a atividade atual e retorna a instância para o responsável anterior ou a atividade manual anterior. Para executar esta ação, o usuário deve possuir uma permissão específica, e o fluxo deve encontrar-se em um momento onde a ação seja válida.
- Parar: Esta ação cancela a instância atual. Uma vez cancelada uma instância, ela não pode mais ser executada. Para executar esta ação o usuário deve possuir uma permissão específica.
- Pausar: Esta ação pausa todas as instâncias impossibilitando o processo de seguir o seu fluxo adiante. A mesma função que permite o usuário de parar uma instância também o permitirá pausar e/ou retomar a instância de um processo.
- Retomar: Esta ação age sobre uma instância pausada, retomando a execução do fluxo no estado anterior ao que foi pausado.
- Pinçar: Permite pinçar (pegar) uma instância e jogar ela para outro ponto do fluxo. Exemplo tosco: Processo está na "Tarefa 5" do fluxo, usuário pode pinçar ela e fazer com que a instância volte para a "Tarefa 1".
- Atribuir: Esta ação atribui o responsável da instância atual ao usuário. Ao atribuir a ação a ele, nenhum outro usuário pode executar ação na instância. Esta ação apenas está disponível em atividades com responsabilidade mista.
- Desatribuir: Esta ação desatribui o responsável da instância atual, possibilitando que outro usuário possa atribuir a instância atual. Esta ação apenas está disponível em atividades com responsabilidade mista.
A responsabilidade de uma atividade manual pode ser definida de diversas maneiras, conforme descrito a seguir.
Quando uma atividade estiver dentro de uma raia e o processo não possuir nenhum parâmetro do tipo responsável, a responsabilidade da atividade é visualizada por todos os usuários que pertencem à raia.
Quando uma atividade não estiver dentro de uma raia e o processo possuir um parâmetro do tipo responsável, a responsabilidade da atividade é designada ao usuário definido no parâmetro responsável.
Quando uma atividade estiver dentro de uma raia e o processo possuir um parâmetro do tipo responsável, a responsabilidade da atividade será visualizada por todos os usuários que pertencem à raia, enquanto nenhum usuário atribuir a atividade para ele. Caso um usuário tenha atribuído a instância para ele, apenas o usuário atribuído irá visualizar a atividade.
Uma atividade é considerada de responsáveis dinâmicos quando o processo ao qual ela pertence for configurado para carregar os responsáveis dinamicamente de uma tabela de dados. Nesta situação, sempre que a instância entrar em uma atividade manual, os responsáveis pela atividade serão carregados da tabela de dados e armazenados no parâmetro do tipo Responsáveis. O primeiro responsável da lista de responsáveis será armazenado no parâmetro do tipo Responsável.
Este tópico aborda as configurações de papéis e funções dos usuários responsáveis pelas tarefas do processo.
Um papel do tipo processo permite ao usuário acessar as informações do cubo. Ao serem requisitados os papéis de um usuário pela aplicação, para cada instância atribuída ao usuário é criado um papel contendo a informação dos parâmetros do tipo membro referentes à aplicação em questão.
Novas funções foram disponibilizadas para flexibilizar o acesso às novas funcionalidades pelos usuários. Abaixo, as novas funções disponíveis:
Usuários com esta função possuem a permissão para criar, editar e remover processos. Disponível apenas para usuários Gestores.
Usuários com esta função possuem a permissão para criar, editar e remover gatilhos. Disponível apenas para usuários Gestores.
UUsuários com esta função possuem a permissão para criar, editar e remover raias. Disponível apenas para usuários Gestores.
Usuários com esta função possuem a permissão para parar uma instância em execução. Disponível apenas para usuários Gestores.
A mesma função que permite o usuário de parar uma instância também o permitirá pausar a instância de um processo.
A mesma função que permite o usuário de parar uma instância também o permitirá retomar a instância de um processo.
Usuários com esta função possuem a permissão de pinçar instâncias. Disponível apenas para usuários Gestores.
Usuários com esta função possuem a permissão para publicar processos. Disponível apenas para usuários Gestores.
Usuários com esta função possuem a permissão para rejeitar uma instância em execução. A opção apenas estará disponível se o item do processo anterior à tarefa atual for uma tarefa manual. Disponível apenas para usuários Planejadores.
Usuários com esta função possuem a permissão de visualizar instâncias. Disponível apenas para usuários Planejadores.
Usuários com esta função possuem a permissão de executar gatilhos. Disponível apenas para usuários Planejadores.
Usuários com esta função possuem a permissão para visualizar processos. Disponível apenas para usuários Gestores.
A seguir será mostrado um processo criado com o novo workflow BPM disponível no T6 Planning.
Um usuário cadastra um reembolso em um formulário de dados. Caso o valor do reembolso seja inferior a R$500,00, o reembolso é automaticamente aprovado. Caso o valor reembolso seja superior a R$500,00 e inferior a R$10.000,00 o reembolso necessita da aprovação manual de um usuário participante da raia de reembolso. Caso seja superior a R$10.000,00 o reembolso é automaticamente rejeitado.
