Tarefa de Início
Um evento de início de processo em um diagrama BPMN é o ponto de partida de um fluxo de trabalho. Ele indica quando e como um processo é acionado. Este evento pode ser disparado por várias condições, como a chegada de um novo pedido, uma data específica ou a recepção de uma mensagem
Por exemplo: Imagine um processo de atendimento a pedidos online. O evento de início de processo pode ser a recepção de um novo pedido pelo sistema de vendas da empresa. Assim que o pedido é recebido, o processo começa com atividades subsequentes, como verificar o estoque, processar o pedido e confirmar o pagamento.
Sua propriedades do Inspector são: campos indicados com * indicam obrigatórios.
IDENTIFICAÇÃO
ID
Identificador único (somente leitura) do node criado no Graph.
Alias
Identificador único (somente leitura) amigável do node criado no Graph.
O valor do campo Alias, pode ser utilizado como substituto do campo ID em expressões.
CONFIGURAÇÃO
Nome do processo
-
Campo texto livre onde deve ser informado o nome resumido do processo. Este será o nome do seu projeto e o mesmo nome que será exibido para o usuário final, na lista de fluxos publicados, no Alfresco → Menu Capture/Process → Iniciar fluxo de trabalho. O nome do processo deve ser uma identificação breve e clara que descreve o objetivo geral do processo
Exemplo:
CODECompra de Suprimentos
Descrição do fluxo
-
Campo texto livre onde deve ser informada uma descrição para o fluxo. Este mesmo nome será exibido para o usuário final, na lista de fluxos publicados, no Alfresco → Menu Capture/Process → Iniciar fluxo de trabalho. A descrição do processo deve fornecer informações adicionais em formato reduzido, sobre o que o processo envolve.
Exemplo:
CODEProcesso de aquisição de materiais e recursos para as operações.
Site
-
Parâmetro referente a qual site (Alfresco) o fluxo está atrelado.
Os fluxos publicados estão disponíveis para serem iniciados pelos usuários participantes do site selecionado.notaÉ permitido a seleção de somente um item.
Grupo
-
Parâmetro responsável por definir quais usuários pertencentes ao grupo selecionado, poderão iniciar o fluxo.
- Nenhum
- Indica que a visibilidade do fluxo não esta atrelada a grupo, ou seja, se selecionado o fluxo não ficará visível pra nenhum usuário.
- Todos
- Incida que qualquer grupo poderá iniciar o fluxo, ou seja qualquer usuário participante de qualquer grupo poderá visualizar o fluxo na lista de fluxos disponíveis para iniciar.
- ALFRESCO ADMINISTRATORS
- Assim com para os demais grupo cadastrados, indica que somente usuários participantes deste grupo poderão iniciar o fluxo.
- Nenhum
Descrição completa
-
Campo texto livre onde deve ser informada uma descrição completa do fluxo. Este mesmo nome não será exibido para o usuário final, na lista de fluxos publicados, no Alfresco → Menu Capture/Process → Iniciar fluxo de trabalho. A descrição Completa do processo deve fornecer detalhes adicionais sobre o que o processo envolve, suas etapas e objetivos específicos.
Exemplo:
CODEProcesso de Aquisição de materiais e recursos para as operações empresariais, em conformidade com as políticas e controle de qualidade [citar normas e regulamentos que regulam tal processo, se houver]
Título
- Campo livre do tipo texto, onde deve ser informado um título para evento de início do fluxo.
Descrição
- Campo livre do tipo texto, onde deve ser informado a descrição completa do evento de início do fluxo.
Dias vencimento
- Campo do tipo numero, onde é possível determinar um prazo (em dias) de conclusão para processo, contados a partir da data de inicio do fluxo.
Mensagem inicial
- Campo livre do tipo texto, onde é possível predefinir uma mensagem para o fluxo. Se preenchido, fará com que o valor informado aqui seja sugerido para preenchimento do campo descrição no formulário da tarefa inicial do fluxo.
Mostrar envio de e-mails
- Campo do tipo ligado/desligado, quando habilitado, irá exibir o campo “Enviar notificações por e-mail” que é exibido nas tarefas Start de fluxos Process, quando desabilitado o campo em questão não será exibido para o usuário.
Padrão enviar notificações por e-mail
- Campo do tipo ligado/desligado, quando habilitado, fará com que o(s) destinatário(s) das tarefas recebam uma notificação por e-mail informado que lhe foi atribuída um nova tarefa.
Observação: ocultar a exibição não afeta o valor do botão, portanto se o padrão for habilitado, ele continuará enviando as notificações mesmo se oculto.
APRESENTAÇÃO
Permite customizar a aparência do componente, aplicando um preenchimento (cor de fundo), contorno (cor das bordas) e estilo das bordas (ex: tracejado).
FORMULÁRIOS
-
Formulário:
Campo do tipo lista, onde pode ser selecionado um formulário previamente criado. Se nenhum formulário for informado, será aplicado um modelo de formulário padrão contendo campos básicos, como: Mensagem, Prazo, prioridade, anexos, comentário e opção de enviar notificação por e-mail
-
Anexos somente leitura:
Campo do tipo ligado/desligado, quando habilitado fará com que a lista de anexos (documentos armazenados no Alfresco, referenciados pelo fluxo) no formulário seja exibida em modo somente leitura, ou seja bloqueia a adição e remoção de anexos do fluxo.
-
Mostrar anexos Toggles:
Campo do tipo ligado/desligado, quando habilitado fará com que para cada anexo da lista seja exibido um campo ligado/desligado, permitindo marcar ou desmarcar os anexos, e assim ter um controle de “status” dos documentos anexados, como por exemplo pra saber quais já foram revisados ou não.
-
Mostrar Detalhes:
Campo do tipo ligado/desligado, quando habilitado fará com que sejam exibidos somente os campos que são parte de um formulário customizado, anexos e outras opções (enviar notificações por e-mail), omitindo assim o campo descrição do fluxo (parte do formulário padrão).
-
Mostrar comentários:
Campo do tipo ligado/desligado, quando habilitado fará com que seja exibido o campo comentário (parte do formulário padrão).
ENTRADAS/SAIDAS
VARIÁVIES
Variáveis são elementos que armazenam dados temporários ou permanentes durante a execução de um processo de negócio(fluxo). Elas são usadas para manter o estado do processo, transportar informações entre tarefas, formular decisões e personalizar a execução do fluxo de trabalho. Na prática, todos os valores dos campos de formulários, são salvos como variáveis, podendo ser acessados a qualquer momento dentro do fluxo.
ENTRADAS
Algumas as tarefas possuem os eventos de entrada e saída. Através destes eventos, podemos executar um script em Ruby para processar os dados da maneira desejada, e opcionalmente salvar estes valores no fluxo ou na tarefa (ver escopo de variáveis)
O evento de entrada é utilizado para realizar um “pré-processamento” da tarefa, preparando dados para a execução da tarefa. Por exemplo validar dados de entrada para a tarefa, buscar dados em um outro local e prepará-los para serem exibidos no formulário, formatados dados para uma exibição adequada, etc.
SAIDAS
O evento de saída, é utilizado para realizar o “pós-processamento” da tarefa, como por exemplo validar a consistência dos valores informados pelo usuário nos campos de formulário, impedindo o prosseguimento do fluxo em caso de inconsistência. Formatar e salvar em uma variável, dados complementares da tarefa, ou até mesmo campos em uma formato expecifico. (Ex formatar data, guardar um campo numérico por extenso, etc. No geral a ideia é, ao concluir a tarefa, é possível executar um script Ruby, e guardar (ou não) o resultado deste processamento para ser reutilizado em outras tarefas ou em etapas de decisões condicionais do fluxo.
Para criar uma nova variável (Entrada ou Saída), use o botão para adicionar e o botão
para remover.
-
Nome:
Campo do tipo texto, onde dever ser informado o nome da variável. utilize apenas caracteres alfanuméricos, minusculos e use underline “_” no lugar de espaços. Nome de variável não devem começar com numero ou caracteres especiais, como @ ou $. Na verdade, evite caracteres especiais. Procure atribuir nome que faça sentido para razão existência da variável, facilitando assim a legibilidade e manutenção do fluxo.
Exemplo de um bom nome para uma variável:CODEstatus_do_cliente -
Salvar resultados
Campo do tipo lista, onde é possível definir se a variável será armazenada (seu resultado será salvo no banco de dados) e “scopo” dessa variável:-
Não: O resultado da expressão (ver campo abaixo) não será salvo (persistido no banco). Seu uso é comum quando desejar verificar uma condição ou validação de um campo, mas o resultado é útil somente neste momento, não sendo necessário salva-lo para ser reutilizado em etapas seguintes.
-
Na Tarefa: São armazenadas a nível de tarefa, podendo uma variável com mesmo nome receber valores de diferentes em cada tarefa. Em um formulário de tarefa, seus campos são armazenados como variáveis de tarefa. O que nos faz concluir que as variáveis de tarefa são um meio de armazenar informações (valores de campos, resultados de validações, etc) relacionadas à uma tarefa especifica do fluxo.
-
No Fluxo: Já as variáveis de fluxo armazenam dados relacionados ao estado geral do fluxo, e não apenas de uma atividade em si, como por exemplo, o status do fluxo, data de vencimento, etc.)
-
-
Gerar exceção:
Campo do tipo ligado/desligado, quando habilitado, fara com que caso ocorra qualquer Exceção na execução do script (ver campo código), o fluxo tenha sua execução imediatamente interrompida, e a tarefa não será Iniciada (caso de Entrada) ou não será Concluída (no caso de saídas). Este é um recurso útil quando deseja-se por exemplo validar os valores preenchidos pelo usuário em campos de formulário, e impedir a continuidade da execução do fluxo em caso de inconsistência. -
Código
Campo do tipo texto, onde deve ser informado o script em linguagem Ruby. O resultado da execução deste script será o valor da variável. O script deve ser escrito fazendo a quebra de linhas utilizando “;” ponto e virgula como indicador de quebra de linha (fim da linha).
Exemplo de um script:CODEnome_completo = getinitiator("Node_0").firstname + ' ' + getinitiator("Node_0").lastname;
nome_completo.strip;1ª linha: recupera o nome e sobrenome de usuário (alfresco) do iniciador do fluxo através da função getinitiator() e concatena os dois valores separados por um espaço.
2ª linha: Remove os espaços no início e fim;
Desta forma o valor final da variável será o nome sobrenome do usuário iniciador.
Saiba mais sobre scripts em Ruby abaixo:
Funções Especiais e Ruby Scripts
A maioria dos projetos demandam que sejam aplicados tratamentos especiais nos dados recebidos e ou processados pelo fluxo.
Um ótimo exemplo são as validações de entradas de dados digitados pelo usuário, como Datas, intervalos numéricos, Placas de Veículo, número de documento pessoal (CPF/RG) etc.
Podemos citar alguns casos de como:
- Durante a execução do fluxo, nas validações de entradas de usuários;
- No processamento dos documentos durante a leitura e extração de indexadores (OCR,m Zonal, Barcode Etc)
- Integrações com o HTF Process (Sistema BPM/Workflows)
- Integrações com outros sistemas, por meio dos “integrators”. (item Integrador App.File(Arquivo)).
Para isso, podemos contar um poderoso conjunto de ferramentas, chamados de Funções, que basicamente, vão receber uma entrada (um ou mais valores), a qual denominados argumentos, e então vão processar este dados de acordo com a logica para a qual foi criada, e em seguida retornar o resultado.
Exemplo do formato de uma função:
minha_variavel = minhaFuncaoEspecial(argumento_1, argumento_2);
Neste exemplo acima, a FuncaoEspecial irá processar os dados recebidos via argumentos 1 e 2 e então o valor retornado será atribuído à variável minha_variavel.
HTF Scan Designer oferece nativamente um extenso conjunto de funções, cada uma para um proposito diferente.
A lista completa e sua documentação pode ser acessada aqui: HTF Apps - Funções Nativas
Vamos explicar alguns exemplos e casos de uso de cada:
- Validar CPF:
check_cpf(CPF_Value)
Parâmetro de entrada: Valor do CPF a ser validado(sem pontos ou hifen), entre aspas : EX:
check_cpf("23637861062")
Retorno: true se CPF for válido, false se invalido.
- Validar data:
check_date(date,format)
Parâmetros de entrada: Data separada por / ou hífen: Formato desejado: EX: Ano/Mês/Dia separados por / ou -
check_date("2023/12/31","%Y/%m/%d")
Retorno: true se for uma data válida, false se invalida.
Funções Especiais e Ruby Scripts
Além das funções nativas citadas acima, quando se deseja realizar uma validação específica ou tratamento nos dados, é perfeitamente possível criar um script customizado através da linguagem Ruby
O Ruby é uma das linguagens de programação mais populares do mundo. Foi criada em 1995 pelo japonês Yukihiro Matsumoto para ser usada como linguagem de script. Seu uso é de baixa complexidade, o que proporciona uma baixa curva de aprendizado e alta produtividade em pouco tempo de codificação. Possuir diversas bibliotecas (chamadas GEMs) para as mais diversas finalidades.
GEMs: listar aqui…
Atualmente o HTF Scan Desinger utiliza a versão Ruby 2.6.7, portanto sempre fique atento a compatibilidade do seu código/gem com a versão corrente do Ruby (runtime) incluída no HTF. Para checar, basta colar o seguinte comando no seu terminal:
RUBY_VERSION
# 2.6.7
Ruby String → Oferece uma enorme lista de funçoes para tratametnos de Strings (cadeias de texto), como por exemplo:
-
Converter texto para caixa alta ou baixa:
RUBY"abcd".upcase
# "ABCD"
"ABCD".downcase
# "abcd" -
Remover palavras ou caracteres de uma cadeia de texto:
RUBYstring = "bacon is expensive"
string.delete_suffix(" is expensive")
# "bacon"
-
Verificar se um determinado numero está dentro de um intervalo numérico:
RUBYa, b, c = 10,14,20
b.between?(a,c) # returns true/false. here true
-
Adicionar ou remover datas, como minutos, horas, dias, meses, anos etc.
CODEmy_data_time =Time.new(2024, 1, 1) # Primeiro de janeiro do ano de 2024 ou seja: 2024-01-01 00:00:00 -0300
my_data_time - 1.day # soma 1 dia na data acima
#2023-12-31 00:00:00 -0300
Ruby Regex (Expressões regulares).
Uma expressão regular é uma poderosa ferramenta que permite encontrar valores em uma cadeia de caracteres, utilizando como base um padrão, previamente configurado, como por exemplo:
Encontrar a placa de um veículo em um cadeia de caracteres:
Adotemos aqui o novo padrão de placas mercosul: ABC 1C34
-
Encontrar a placa em uma cadeia de carecteres:
CODE* # placa no padrao mercosul esta contida no texto abaixo
str_palca = "A Placa Mercosul viabilizou a mudança da combinação composta por 3 letras e 4 números, ABC 1234, para o padrão ABC-1C34, com 4 letras e 3 números.";
#Expressao regular que procura uma sequencia formada por: 3 Letras - 1 digito e 1 letra e 2 digitos
placa_regex = /\b[A-Z]{3}-\d{1}[A-Z]{1}\d{2}\b/
# valor retornado é ABC-1C34
placa = str_palca.match(placa_regex)
O exemplo acima é um poderosa ferramenta para uso, por exemplo em documentos escaneados, onde o OCR FULL fez toda a extração de texto, mas precisamos extrair somente uma placa de veículo dentro de todo o conjunto de texto.
Apesar do HTF disponibilizar algumas GEMS, caso necessite de alguma GEM especial, que não esta incluída nativamente no “HTF RUBY Runtime” (ambiente de execução de scripts Ruby), entre com contato com nosso suporte técnico para avaliação técnica e possiblidade de instalação da mesma, via arquivo Docker File.