Em Desenvolvimento
Esta documentação ainda está em desenvolvimento. Agradecemos sua paciência!
Pular para o conteúdo principal
Versão: 03.007.000

Tarefa de Mensagem (E-mail/SMS)

Permite o disparo de e-mails ou mensagens de texto (requer assinatura de serviço https://www.paposms.com/desenvolvedores) para usuário internos do sistemas (usuários Alfresco) ou usuários externos (qualquer endereço de e-mail) ou telefone celular.

Recurso muito útil para enviar alertas sobre eventos ocorridos no processo, lembretes, e ainda links de tarefas externas para usuários externos.

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.

nota

O valor do campo Alias, pode ser utilizado como substituto do campo ID em expressões.

CONFIGURAÇÃO

Tipo

Campo do tipo lista onde é possível selecionar o tipo de mensagem a ser disparada:

  • Email ou Correio Eletrônico

  • SMS (mensagem de texto)

    • SMS é a sigla para Short Message Service, que significa Serviço de Mensagens Curtas. É um serviço que permite a troca de mensagens de texto entre dispositivos móveis, sendo uma forma rápida e conveniente de comunicação
info

Antes de utilizar os recurso de SMS, é necessário configurar o token (chave de acesso serviço de envio de SMS). Consulte o item htf.paposms.token: em Obtendo os arquivos de instalação e parametrizando.

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).

TEXTO

Texto

Campo do tipo texto livre, onde é possível atribuir um texto descritivo para o componente, fazendo com que esta descrição seja exibida ao lado do componente no diagrama. Possui apenas efeito visual.

Cor Texto

Campo do tipo caixa de seleção de conteúdo, onde é possível escolher a cor do texto descritivo acima.

CABEÇALHO

Preenchimento/Contorno/Estilo
  • Preenchimento: Permite selecionar um cor de fundo para o cabeçalho do componente.
  • Contorno: Permite escolher a cor da linha de contorno do cabeçalho.
  • Estilo contorno: Permite escolher o tipo de linha de contorno do cabeçalho.
info

As opções acima refletem somente no desenho do diagrama, não tendo efeito nas etapas/formulários durante execução do fluxo.

ATRIBUIR

Atribuir

Permite configurar os destinatários das tarefas, ou seja, os usuários do sistema, para os quais a tarefas serão atribuídas.

  • Atribuir: Campo do tipo lista onde é possível selecionar o tipo de atribuição, conforme as seguinte lista de opções:

    • Iniciador: Atribui a tarefa ao usuário iniciador do fluxo, ou seja a mesma pessoa que “Startou” o fluxo em questão.
    • Dono de tarefa: Permite buscar quem é o usuário (Dono) de um determinada tarefa do fluxo, para atribuir a ele a tarefa em questão.
      • Task: ID ou Alias da tarefa desejada (Tarefa de onde vamos buscar o usuário): Ex:. formato:

        CODE
        0e6e4bb1-8a9d-4ee7-a6ca-9903ac61cad0  
        CODE
        Node_2
  • Valor atribuído na tarefa: Busca do campo Designar Usuário o nome de usuário ou grupo, selecionado manualmente via formulário, durante e execução do fluxo.

    • Task: ID ou Alias da tarefa desejada
  • Valor atribuído no fluxo: [revisar]

  • Convidado: Permite atribuir a tarefa a um usuário externo (não cadastrado no Alfresco):

    • Task: ID ou Alias da tarefa desejada
    • Campo: Nome de uma variável da tarefa acima, normalmente um campo texto, onde foi informado via formulário, o endereço de e-mail do usuário convidado para execução da tarefa.
    • Enviar cópia para iniciador: Campo do tipo ligado/desligado, quando habilitado, faz com que o iniciador do fluxo receba um cópia do e-mail disparado para o convidado.
  • Valor de variável: Permite utilizar valores de variável das tarefas (variável entrada/saída ou campo de formulário).

    • Task: ID ou Alias da tarefa desejada
    • Value: nome da variável ou nome do campo.
  • Todos: Permite utilizar Grupos de usuários:

    • Todos: Tarefa será atribuída para todos os participantes de todos os grupos existentes.

    • Valor atribuído na tarefa: Busca o grupo por meio do campo designar usuário, em um formulário.

      • Task: ID ou Alias da tarefa desejada
    • Valor atribuído no fluxo: Busca de uma variável de fluxo

      • Value: Nome da variável de fluxo de onde deseja-se pegar o seu valor.
    • valor de variável: Permite buscar no nome do grupo armazenado em uma variável de tarefa ou campo de formulário.

      • Task: ID ou Alias da tarefa desejada
      • Value: Nome da variável ou campo de formulário.
    • GRUPO_NOME : Permite a seleção de um grupo específico.

info

É necessário que o grupo faça parte do site e que o usuário admin faça parte do mesmo grupo, para que o grupo seja listado aqui

Enviar cópia para o iniciador

Campo do tipo ligado desligado, quando habilitado fará com que um copia da mensagem (e-mail ou SMS) seja disparada também para o usuário que iniciou o fluxo (iniciador).

MÚTIPLOS DESTINATÁRIOS

Múltiplos destinatários

Campo do tipo ligado desligado, se quando habilitado, se marcado múltiplo, será enviado um e-mail para cada destinatário, já se desligado, será enviado um único e-mail com todos os destinatários, logo cada destinatário saberá a lista completa de destinatários do email.

MODELO

Modelo

O modelo de e-mail é basicamente um template contendo o texto padrão, que pode ser mesclado com variáveis do fluxo, criando uma mensagem de conteúdo dinâmico.

  • Se tipo for E-mail

    • Assunto

      Campo do tipo texto livre, onde deve ser inserido o assunto, no caso de um e-mail.

    • Modelo

      Campo do tipo lista de seleção onde deve ser selecionado um modelo de e-mail previamente criado através do gerenciador de modelos de e-mail.

  • Se o tipo for SMS

    • Texto

      Campo do tipo texto livre onde dever ser informado o conteúdo (texto) do SMS a ser disparado. Este campo aceita mesclagem de variáveis de entrada (mesma tarefa de e-mail), no seguinte formato:

      CODE
      ${nome_variavel_entrada}

ANEXOS (E-MAIL)

Anexos

Permite anexar ao e-mail documentos já salvos no repositório de documentos do Alfresco. Para isso é necessário passar uma estrutura de dados, no formato JSON , contendo o NodeRef (Node reference) de cada anexo, seguindo o formato abaixo:

Para anexarmos o documento acima, basta passar o valor do seu NodeRef no seguinte formato:

JSON
[{"name": "nodeRef", "value": "workspace://SpacesStore/0598e109-76a3-4278-bf3e-9665679b045e"}]

Caso desejar anexar mais de um documento, basta criar um array com vários elementos:

JSON
[{},{},{}]
info

Para obter os valores de NodeRef de forma dinâmica (automática sem intervenção manual) é necessário criar um script usando a linguagem Ruby, para realizar as requisições HTTP permitindo navegar no repositório de documentos do Alfresco e obter tais valores. Isso pode ser feito em uma tarefa do tipo Service.

ENTRADAS/SAIDAS

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 (mais) para adicionar e o botão (menos) 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:

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

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

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

  1. Validar CPF:
CODE
check_cpf(CPF_Value)

Parâmetro de entrada: Valor do CPF a ser validado(sem pontos ou hifen), entre aspas : EX:

CODE
check_cpf("23637861062")

Retorno: true se CPF for válido, false se invalido.

  1. Validar data:
CODE
check_date(date,format)

Parâmetros de entrada: Data separada por / ou hífen: Formato desejado: EX: Ano/Mês/Dia separados por / ou -

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

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

    RUBY
    string = "bacon is expensive"  
    string.delete_suffix(" is expensive")
    # "bacon"

Ruby números

  • Verificar se um determinado numero está dentro de um intervalo numérico:

    RUBY
    a, b, c = 10,14,20  
    b.between?(a,c) # returns true/false. here true

Ruby Datas

  • Adicionar ou remover datas, como minutos, horas, dias, meses, anos etc.

    CODE
    my_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.

AÇÕES AO EXIBIR/AÇÕES AO SALVAR

Ações

Assim como as entradas e saídas (item acima), as ações ao exibir/salvar possuem a mesma finalidade, que é fazer o set de variáveis e ou executar algum código RB. Possuem as mesma opções de configuração, como escopo da variável (tarefa/fluxo etc.) , opção de gerar exceção e a área de texto onde dever ser informado o código.

A única de diferença está no evento (momento) que cada uma é disparada, conforme abaixo:

  • Ações ao exibir:

    • Evento é disparado no momento que formulário da tarefa é exibido, ou seja, quando o usuário abre a tarefa, diferente do evento de entrada que ocorre uma única vez, na criação da tarefa (pré-processamento da tarefa).
  • Ações ao salvar:

    • Evento é disparado no momento que usuário salvar o formulário, independentemente se ela tenha concluído ou não a tarefa. Diferente da Saída, que ocorre uma única vez na conclusão da tarefa, ou seja pós processamento da tarefa.
info

Se o usuário concluir a tarefa imediatamente sem salvar, as ações ao salvar não serão acionadas.