Tutorial WorkBench

O workbench é um software fundamental para quem quer modelar um banco de dados mysql. É simplesmente o melhor.

WorkBench 1/5 – Configurar Conexão com o Mysql.

O Workbench é um software para modelagem de bancos de dados Mysql.

Neste vídeo explico como instalar o workbench e configurar a primeira conexão com seu servidor Mysql.

WorkBench 2/5 – Criação de tabelas mysql no workbench.

Neste vídeo eu explico como criar tabelas mysql através de modelagem entidade relacionamento.

Este vídeo é uma explicação rápida e básica, que envolverá a criação e a exportação da tabela para o banco de dados.

Workbench 3/5 – Relação 1 para N Mysql

Aprenda a criar relações do tipo 1 para N no Mysql workbench.

Workbench 4/5 – Relação do tipo N para N

Aprenda neste vídeo como criar relações do tipo N para N no Mysql Workbench.

Workbench 5/5 – Auto relacionamento MySQL

Aprenda criar auto relacionamentos no mysql workbench.

Conclusão

Nesta série de vídeos você aprendeu a utilizar o WorkBench com os principais conceitos de criação de bancos de dados.

problemas comuns fluig
Como ler os logs no Fluig.

Em caso de dúvidas, entre em contato.

A análise de logs em servidores fluig

Há duas formas de acesso aos logs do fluig. Uma delas é através do arquivo gerado dentro da pasta do instalador do fluig, ou seja, você tem acesso ao arquivo .log gerado em tempo real.

Outra forma é através da ferramenta painel de controle > Controles de Logs > Baixar log completo. Entretanto esta opção é impraticável, uma vez que a análise se torna mais demorada, pois é necessário realizar o download de diversas versões de logs, apenas para acompanhar o seu desenvolvimento.

Ambiente próprio

Eu chamo de ambiente próprio aquele ambiente que você possui total autonomia na manutenção do servidor, ou seja, quando você tem acesso ao servidor.

Acessar o servidor do fluig te dará uma vantagem, pois é assim você poderá ter acesso às pastas de logs, que estão localizados no seguinte caminho: c:/[pasta de instalação do fluig]/appserver/domain/servers/fluig1/log/server.log

Você poderá utilizar editores de texto, ou softwares que fazem a análise em tempo real do arquivo.

Ambiente em nuvem

Se seu ambiente é em nuvem da TOTVS, sugiro que seja aberto um chamado questionando o acesso à pasta de logs.

Desenvolver soluções no Fluig utilizando a abordagem de leitura de logs em tempo no fluig é uma tarefa difícil, utilizar logs baixados pela plataforma é impraticável.

Você poderá também criar uma versão local do fluig para testes, desta forma você terá total autonomia na plataforma e conduzir seus testes com mais agilidade.

Ferramentas para análise de logs no fluig.

O log é um arquivo de texto. A analise dos logs consiste em utilizar bons editores de textos, ou softwares de análise logs em tempo real. Para isso sugiro o uso das ferramentas: baretail ou notepad++ .

Baretail

A página de download do baretail contém uma breve instrução de como utilizar a ferramenta.

Notepad++

O uso do notepad++ não analisa em tempo real, mas pode ser utilizado como alternativa, pois é possível definir cores para o código, utilizar comandos de busca e facilitar a leitura do log.

Análise dos logs.

Geração de logs

Durante o desenvolvimento você poderá utilizar do recurso log para forçar a escrita de logs no arquivo e acompanhar o seu desenvolvimento. Considere o código abaixo.

var n1 = 1;
var n2 = 2;
var resultado = n1 + n2 ;
//Cria um arquivo do tipo INFO no LOG
log.info("MEULOG=>>"+ n1);
//Cria um arquivo do tipo WARN no LOG.
log.warn("MEULOG=>>"+ n2);

O código acima é um exemplo de como poderá utilizar dos recursos de análise de log.

As variáveis n1 e n2 recebem valores fixos, então não seria necessário uma análise neste nível, entretanto quando se tem valores dinâmicos é interessante utilizar este recurso para validar se o comportamento da plataforma será o esperado.

O comando log irá forçar a escrita no arquivo server.log do que você definir. No exemplo acima temos log.info(“MEULOG=>>”+ n1). O uso do texto MEULOG é para facilitar durante a busca e leitura do log, uma vez que são geradas diversas informações.

Exceções e controle de erros.

Confira este artigo da página Caelum para entender os conceitos e uso dos controles de erros.

O uso de controles de erros nos permite reduzir o comportamento indesejado no sistema, quando há falhas. Neste caso é possível utilizar de recursos para capturar e tratar erros. Estes erros também serão descritos no arquivo de log.

Try, Catch

O uso de blocos Try é utilizado para circular um determinado código e o catch será para capturar os erros.

Throw

O comando throw possibilita forçar a exibição de uma mensagem de erro a ser capturada pelo catch, dentro dos eventos de processo do Fluig.

Referências

https://tdn.totvs.com/pages/releaseview.action?pageId=203764136

https://tdn.totvs.com/pages/releaseview.action?pageId=235336390

Eventos de processos fluig [FLUXOGRAMA]

Em caso de dúvidas entre em contato.

Java ou Javascript?

A documentação oficial da TOTVS não é coerente sobre eventos de processos do fluig. É dito que a codificação é feita em javascript, mas esta informação está errada.

Ainda que sem evidencias eu apenas posso inferir que os eventos de processos implementam algum recurso que permita que a codificação em JAVA tenha as mesmas sintaxes que o javascript, para permitir uma melhor experiência do desenvolvedor.

Uma prova disso é que o código abaixo executa perfeitamente nos eventos de script, mas não executa em um arquivo javascript.

new java.lang.String(“Olá Dev”);

código java

Mais sobre os eventos

Ao criar um processo no fluig você também poderá precisar criar arquivos script do processo, que compõe a solução workflow.

Imagine que o desenho BPM é o caminho a ser seguido do processo, enquanto os eventos de processo do fluig são gatilhos que serão executados à medida que o processo avança.

No exemplo abaixo, temos a atividade de início seguida de duas outras atividades e por fim sendo finalizadas.

fluxo
fluxo

Ao criar este simples processo também criei todos os arquivos de eventos de processo e inseri um registro de log informando seus respectivos nomes, seguidos de qual atividade estava sendo executada, conforme exemplo citado abaixo:

código de exemplo eventos de processo.

Após analisar os logs foi possível entender a sequencia correta e criar o fluxograma abaixo.

Cuidados

Este exemplo contempla apenas a execução de atividades de início manual, portanto não foi realizado um teste para as atividades de início automático

Outra observação que precisa ser feita é que, dependendo do evento do processo não será possível manipular o formulário.

Fluxograma de eventos de processos da atividade de início

Fluxo de eventos de processos atividade início.
Fluxo de eventos de processos atividade início.

Fluxograma de eventos de processos da atividade 1

Fluxo de eventos de processos atividade 1.
Fluxo de eventos de processos atividade 1.

Fluxograma de eventos de processos da atividade 2

Fluxo de eventos de processos atividade 2.
Fluxo de eventos de processos atividade 2.

Palavras chaves

eventos de processos fluig ; tdn eventos de processos ; tdn scripts de processos.

Referências

https://tdn.totvs.com/display/public/fluig/

Start conditional (BPM) na plataforma Fluig.

Este artigo é sobre o start conditional do BPM. Em caso de dúvidas entre em contato.

Quando utilizar os eventos condicionais do BPM ?

No BPM os condicionais são ativados quando uma determinada condição tem o seu retorno como verdadeiro.

Imagine uma situação em que você precisa monitorar a temperatura de um ambiente que precisa ser refrigerado e deseja executar uma rotina de monitoramento quando a temperatura atingir acima de 20 graus celsius.
Neste exemplos, com o evento condicional, é possível monitorar a temperatura e ao atingir acima de 20 graus o processo será iniciado.

processo com start conditional
fonte: desenhado no software camunda.

Como utilizar os processos condicionais start conditional no Fluig?

O exemplo indicado acima pode ser desenvolvido no fluig, apesar de não ser tão comum. Um ou outro o fará. Acontece que a ideia pode ser aplicada para o mundo corporativo e os exemplos seriam: iniciar um pedido no fluig de forma automática, aprovar registros no ERP via fluig de forma autmática, etc.

É possível utilizar os eventos condicionais no Fluig utilizando o modelador de BPM na plataforma Eclipse. O primeiro passo é abrir o grupo ‘normal’ em seguida escolher o símbolo correto chamado Condicional.

Start conditional do plugin fluig para eclipse.
fonte: plugin fluig para eclipse.

Após a criação do processo você terá acesso às propriedades dele. Isso significa que poderá configurar o horário de início e a frequência da recorrência. No exemplo abaixo vemos a opção Nome, Frequência e a recorrência.

O campo Inicializador é o usuário responsável pelo processo.

O campo Editar Script da Tarefa irá apontar para um arquivo chamado startconditional.js , criado nas soluções do processo.

Propriedades do plugin fluig.
fonte: plugin fluig para eclipse.

Scripts de eventos do start conditional.

A atividade startconditional funciona com eventos, que podem ser conferidos na seção Eventos de Processos, na documentação oficial da plataforma.

Ao criar um processo de início start conditional você poderá enfrentar problemas na utilização da biblioteca hAPI. Isso porque, aparentemente, esta biblioteca não pode ser acessada neste tipo de atividade.

A solução então é utilizar os eventos beforeTaskSave do processo.

Em meus estudos, o evento beforeTaskSave foi o evento que melhor se comportou neste caso, pois a biblioteca hAPI já está acessível para uso e os dados podem ser registrados no formulário.

Processo start conditional
fonte: desenhado no camunda

Agendador de Tarefas

Ao exportar para o fluig um processo que tem a atividade de início start conditional o fluig irá criar um registro no agendado de tarefas.

Basicamente o que acontece é: ao exportar o projeto o fluig entende este componente e cria um registro na janela “Agendador de Tarefas”, logo em seguida essa tarefa criada se ‘auto gerencia’, ajustando sempre o horário da próxima execução daquela tarefa.

De forma simples o fluig olha a configuração que você definiu e ao mesmo tempo fica monitorando a data e a hora, e assim que satisfazer esta condição o fluig inicia o processo.

Para visualizar o agendado de tarefas primeiramente acesse o seu fluig, logo em seguida vá painel de controle e por último em agendador de tarefas.

Para finalizar observe que foi criado uma tarefa indicando o nome do processo, o horário da execução e o horário da próxima execução.

Conclusão

A solução proposta para resolver a inviabilidade do startconditional ao não interpretar a biblioteca hapi pode ser um pouco redundante pois poderá implementar partes do mesmo código mais de uma vez, o que não seria preciso caso o startconditional enxergasse a biblioteca hAPI. Mas com esta abordagem você conseguirá utilizar a biblioteca hAPI do fluig na atividade startconditional.

Referências:

Aprenda mais sobre eventos condicionais:
https://docs.camunda.org/manual/7.9/reference/bpmn20/events/conditional-events/
https://camunda.com/bpmn/reference/

Sistema para alertas de veículos roubados.

Há 4 anos tive um veículo furtado. Naquele momento construi um sistema que capaz de realizar a leitura em tempo real de placas de carros, utilizando imagens e vídeos, e ao mesmo tempo integrando com: Detran, Telegram, PagSeguro; Proxys ; e endpoint próprio.

O código estará disponível em meu GitHub.

Sobre o Sistema

Os perfis

O sistema consiste em um portal, onde há três perfis de cadastros: Agente ; Usuário ; e Desenvolvedor.

  • Usuário é a pessoa que acessa e cadastra um veículo com o status de roubado e deixa suas informações pessoais, assim como a localização do roubo/furto. O usuário também realiza um pagamento com um valor à escolha dele. Deste valor uma porcentagem é direcionada ao website e a outra é direcionada aos agentes.
  • Agente é a pessoa que se cadastra no sistema com o intuito de receber alertas. A cada alerta recebido o agente recebe uma parte do pagamento feito pelo usuário.
  • Desenvolvedor é a pessoa que se cadastra para utilizar o sistema como integração.
As integrações
  • Telegram e pagseguro– Integração Oficial.
  • Detran – A consulta ao detran foi escrita em php, utilizando uma base de dados de proxys abertos brasileiros
  • Detran – Biblioteca python chamada SinespClient link do GitHub. Esta biblioteca foi desenvolvida baseada no aplicativo Sinesp Cidadão.
  • Leituras de Placas – Foi utilizado a biblioteca OpenALPR.

Os Fluxos

Consulta de Veículos.
Cadastro de Ocorrência.
Fluxo de cadastro de Ocorrência.

O modelo entidade Relacionamento.

O banco de dados.

As tecnologias escolhidas foram:

  • Framework CodeIgniter (PHP);
  • Bootstrap para a interface;
  • Mysql para o Banco de Dados;
  • Leitura de placas do sistema:

Palavras Chave

Sistema para gestão de veículos roubados

Sistema para veículos roubados.

Análise de Placas por imagem.

Como acessar o ECM à partir de janeiro de 2021.

Se você é usuário do ECM, você pode estar enfrentando um problema. No dia 12/01/2021 o flash player foi descontinuado, por isso a aplicação legada ECM finalmente deixou de funcionar. Entretanto muitas empresas ainda possuem processos desenvolvidos na plataforma ECM e isso é um grande problema.

Uma solução alternativa para acessar o ECM, agora em 2021 é encontrar um computador que possua o flash instalado, ou um instalador do flash, e neste computador configurar a data para o dia 11/01/2021.

Essa ação permitirá um acesso alternativo e temporário, mas será suficiente para que seja possível estudar finalizar a migração dos dados do ECM para o Fluig.

Entre em contato caso deseje migrar seus processos do ECM para o Fluig.

Palavras Chave

Como converter processos do ECM para o Fluig.

Migrar ECM para Fluig.

Como acessar o ECM sem flash player

Leia arquivos BLOB , MEMO, BASE64 no Fluig.

Em caso de dúvidas entre em contato.

Este artigo tem o objetivo de auxiliá-lo na consulta de arquivos, armazenados em colunas do banco de dados do tipo BLOB, MEMO e BASE64 .

Por enquanto testei essa possibilidade apenas em conexões que forame realizadas através da configuração de acesso Externo, disponível nesta documentação documentação . Este tipo de conexão consiste em configurar um arquivo XML, e o dataset irá ler este arquivo e carregar essa configuração para ser acessado pelo driver jdbc.

O dataset abaixo, disponível no site da TOTVS, utiliza o driver JDBC para conectar ao banco de dados através da configuração previamente realizada.

Se observarmos a linha 12 podemos ver que a variável ‘rs’ recebe o metodo executeQuery da classe Statement.

Fluig datasetquery jdbc

Ao conferir esta documentação da Oracle, podemos ver que o método executeQuery tem como retorno uma classe chamada ResultSet.

Execute query – java.sql.Statement

Bastou verificar agora os métodos disponíveis na documentação da classe ResultSet .

Neste teste foi utilizado o método getBytes para acessar uma coluna do tipo BLOB que armazenava uma string BASE64.

var arquivo_bytes = rs.getBytes(rs.getMetaData().getColumnName(w));
resultado =  new java.lang.String(rs, "UTF-8");

Upload Automático no Fluig.

Para realizar o upload automático em processos no fluig veja este post.

Blob , Memo, Base64..

BLOB significa Binary Large Object. Podemos entender que o BLOB é um campo que aceita uma grande quantidade de caracteres, utilizado para gravar arquivos digitais dentro de colunas no banco de dados.

Supondo que você precise armazenar um arquivo, ou até mesmo o hash base64 que representa este arquivo em um banco de dados, você provavelmente vai querer usar este tipo de dado.

Referências.

https://stackoverflow.com/questions/29887351/java-the-method-encodebase64

https://docs.oracle.com/javase/7/docs/api/java/sql/ResultSetMetaData.html

https://docs.oracle.com/javase/7/docs/api/java/lang/String.html

https://docs.oracle.com/javadb/10.8.3.0/ref/rrefblob.html

As boas práticas fluig.

Aviso

O fluig é um produto da marca TOTVS. Confira mais detalhes em www.totvs.com

Os perfis de desenvolvimento no fluig.

Desenvolver no fluig é um grande desafio e é necessário abusar da criatividade para resolver alguns problemas, como por exemplo: arquitetura e reaproveitamento de código.

O desenvolvimento dos principais CARDs – que eu considero sendo formulários e processos – no fluig pode ser feito de duas formas: a simplificada e a avançada.

  • Simplificada:
    • a forma simplificada de desenvolvimento no fluig necessita apenas do próprio fluig, pois todo o desenvolvimento de formulários e processos são feitos através da ferramenta que a plataforma disponibiliza.
    • Se você possuir uma noção lógica conseguirá utilizar esta ferramenta. Entretanto eu recomendo utilizar esse recurso apenas para estudo, ou utilizá-lo apenas em casos que seja extremamente necessário, que não possua tempo e ainda não esteja com o ambiente de desenvolvimento devidamente configurado.
    • Neste modelo simplificado você fica à mercê do que a ferramenta constrói e te entrega.
  • Avançada:
    • A forma avançada de desenvolvimento no Fluig consiste em configurar um ambiente de desenvolvimento utilizando plataformas de desenvolvimento conhecidas no mercado, como por exemplo Eclipse e Visual Code.
    • O uso da opção de desenvolvimento avançado exige um conhecimento em programação, configuração de componentes e entendimento da plataforma e análise de logs.
    • A vantagem de se utilizar essa opção é que você tem total controle do que será desenvolvido.

Boas práticas

A totvs fornece a documentação abaixo para abordar as boas práticas e sugerir um padrão para o desenvolvimento de datasets, formulários e processos.
Há recursos de integrações nativas entre ERP e fluig, disponibilizados pela própria TOTVS que não seguem essas boas práticas, como por exemplo a aprovação de movimentos do RM Nucleus. Nestes casos é necessário avaliar este ajuste.

https://tdn.totvs.com/pages/releaseview.action?pageId=244448460

Os problemas ao salvar processos no Fluig

Geralmente acontecem vários problemas ao tentar salvar um processo, geralmente o erro está associado a erros no desenho do BPM ou da definição das atribuições do Fluig.

A forma mais prática de analisar os erros do BPM do fluig é observar a aba Problems, do Eclipse. Entretanto poderá haver casos que o sistema não apresenta o erro, mas o processo fica acusando falha e não permite que seja exportado para o servidor.

Problems – Eclipse Fluig
Erro em processos do Fluig.

O que deve ser feito é verificar todas as atividades e conferir os mecanismos de atribuições de cada atividade e também do processo, principalmente se o processo foi originado da importação de outro servidor.

Após fazer esta verificação, confira também se o formulário está vinculado ao processo e se todas as setas do processo estão conectadas corretamente nas atividades do processo.

Resumo

  • Conferir todas as setas e verificar se as atividades estão bem conectadas.
  • Conferir todas as atividades e seus respectivos mecanismos de atribuição.
  • Conferir o mecanismo de atribuição do processo.
treinamento-fluig
Cursos e treinamentos para o software Fluig

A empresa TOTVS disponibiliza, em seus portais, o acesso a cursos online de diferentes temas, que abordam da instalação até a implantação de novos processos no Fluig que podem ser conferidos neste link: https://fluig.eadbox.com/

O curso gratuito apresentado é bom te apresentará uma visão geral da plataforma, portanto nada melhor que aplicar na prática e usar no dia a dia.

Entre em contato e contrate uma consultoria e treinamentos através de uma consultoria independente.

Participe de nosso grupo de whatsapp para Fluig.