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.
Para habilitar o runtime do workflow no T6 basta ativar a preview feature: Workflow Runtime New.
- Acesse o menu principal do T6;
- Expanda a seção Configurações;
- Selecione a opção Preview;
- Habilite o botão switch Workflow Runtime New.
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:
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:
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.
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.
O workflow T6 Planning segue as regras do BPM, sendo que cada objeto disponível em nossa ferramenta representa uma atividade, conforme segue abaixo:
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:
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:
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:
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:
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:
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:
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:
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:
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:
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:
EXEMPLO: Responsible(Current)
Retorna o e-mail do responsável pela tarefa.
PARÂMETROS:
Retorna o nome do responsável pela tarefa.
PARÂMETROS:
A função Sum é utilizada para somar os valores contidos um parâmetro multivalorado.
PARÂMETROS:
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.
Os eventos disponíveis para disparo de gatilhos são:
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:
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.

A Imagem de Workflow é um tipo de objeto no T6 Planning que permite incorporar imagens de forma inline nas notificações de e-mail enviadas por tarefas de workflow. Ao referenciar uma Imagem de Workflow por meio de seu ID de Conteúdo (CID), uma tarefa de workflow pode incluir logotipos corporativos, diagramas ou qualquer imagem personalizada diretamente no corpo das mensagens de e-mail automáticas.
Nota: Para que as notificações por e-mail funcionem, os parâmetros de SMTP devem estar corretamente configurados no T6 Planning. Consulte 3.4. Modelos de E-mail para a configuração relacionada de e-mail.
Antes de utilizar notificações por e-mail com imagens incorporadas, verifique se os seguintes parâmetros de SMTP estão configurados em Parâmetros:
| Parâmetro | Descrição |
|---|---|
| Servidor SMTP | Nome do host ou endereço do servidor SMTP (ex.: smtp.office365.com) |
| Usuário do servidor SMTP | Endereço de e-mail utilizado para envio das mensagens |
| Senha do servidor SMTP | Senha da conta de e-mail do remetente |
| Porta do servidor SMTP | Porta SMTP (normalmente 587 para STARTTLS) |
| Habilitar SMTP SSL | Ativa a criptografia SSL/TLS |
| Domínio do Proxy | Domínio para autenticação de proxy, se aplicável |
| Servidor Proxy | Endereço do servidor proxy, se aplicável |
| Usuário do Proxy / Senha do Proxy | Credenciais do proxy, se aplicável |
Uma configuração típica de Imagem de Workflow no Explorer contém os seguintes objetos na mesma pasta:
Cada objeto Imagem de Workflow possui um ID de Conteúdo (CID) único, utilizado para referenciá-lo no corpo HTML do e-mail.
Nota: O CID é o identificador interno utilizado pelo padrão MIME de e-mail para associar uma tag HTML
<img>ao anexo de imagem correspondente.
O campo Corpo deve conter HTML para que a imagem seja incorporada de forma inline. Utilize a tag <img src="cid:...">, substituindo ... pelo CID copiado do objeto Imagem de Workflow.
Template HTML mínimo:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<div>
<img src="cid:CID_DA_IMAGEM">
</div>
</body>
</html>
Substitua CID_DA_IMAGEM pelo CID copiado do objeto Imagem de Workflow.
Importante: O campo Corpo deve conter HTML válido. Se apenas texto simples for inserido (sem tags HTML), a imagem não será incorporada — apenas uma mensagem de texto simples será entregue.
O recurso Imagem de Workflow utiliza o formato de e-mail MIME multipart, que é o padrão para e-mails com conteúdo rico:
<img src="cid:[content-id]">.cid: no HTML.cid: à imagem anexada e a renderiza de forma inline no corpo da mensagem.Esse mecanismo incorpora a imagem diretamente no e-mail, em vez de vinculá-la a uma URL externa, garantindo que a imagem seja sempre exibida independentemente das configurações de carregamento de imagens externas do cliente.
Para habilitar o runtime do workflow no T6 basta ativar a preview feature: Workflow Runtime New.
No Workflow, a definição de processo e instância são distintas:
Um processo é a definição de um fluxo de atividades.
Uma instância é um exemplar em execução desse processo.
Múltiplas instâncias podem executar simultaneamente no mesmo processo.
Nos processos do Workflow no T6, a validação de consistência ocorre apenas durante a publicação do processo, não ao salvá-lo.
No workflow do T6, toda vez que um processo é salvo, uma nova versão é criada, mantendo as versões anteriores no histórico para consultas futuras.
Temos os seguintes tipos de parâmetro nos processos do Workflow do T6:
Ação;
Arquivo;
Booleano;
Data;
Decimal;
Inteiro;
Membro;
Nome;
Responsáveis;
Responsável;
Tabela de Dados;
Texto.
Os parâmetros internos do Workflow no T6, são parâmetros não visíveis na listagem ao executar um gatilho, usados para funcionamento interno do processo. São obrigatoriamente parâmetros que aceitam valores nulos.
Para transferir responsáveis de instâncias em execução no Workflow do T6, siga os passos abaixo:
Propriedades (selecionar responsáveis);
Instâncias (escolher processos/instâncias);
Resumo (confirmar ações).
Os elementos disponíveis para utilização no design do processo no Workflow são:
Início;
Fim;
Subprocesso;
Sequência;
Condicional;
Divisor;
Junção;
Raia;
Tarefa (com diversos tipos como Carga de Dados, E-mail, Expressão, Fórmula, Formulário, etc.).
A condicional em um processo do Workflow avalia uma expressão booleana. Se verdadeira, segue pela conexão verde; se falsa, pela conexão vermelha.
O divisor nos processos do Workflow cria múltiplas instâncias no fluxo. Para cada conexão de saída, gera uma nova instância. A instância original aguarda na junção correspondente.
Os tipos de gatilhos disponíveis no Workflow do T6 são:
Manual (executado pelo usuário);
Automático (disparado por eventos em tabelas de dados);
T6 Planning Services (executado automaticamente pelo serviço).
Os eventos que podem disparar gatilhos automáticos no Workflow do T6 são:
Inserção;
Atualização;
Remoção de linhas em tabelas de dados.
As ações que podem ser executadas nas instâncias de processo no Workflow são:
Aprovar;
Rejeitar;
Parar;
Pausar;
Retomar;
Pinçar;
Atribuir;
Desatribuir.
Nos processos do Workflow, quando uma atividade está em uma raia e o processo tem parâmetro responsável, todos da raia podem visualizar a atividade até alguém atribuí-la para si.