Motor leve de fluxo de trabalho para Java

é melhor escrever um novo motor de fluxo de trabalho usar um motor BPM existente: jBPM 5, Activiti 5?

A minha aplicação é uma aplicação baseada na web e o desempenho é importante. Minha dúvida é se usando jBPM / Activiti será uma sobrecarga de desempenho em comparação com a escrita de um motor de fluxo de trabalho simples.

Se eu for com auto-implementação, vou perder a visualização do fluxo de trabalho. Para o desempenho pode ser negociado.

Author: Olimpiu POP, 2013-01-23

9 answers

Isto depende realmente das suas necessidades. Primeiro, veja se você realmente precisa de um motor de fluxo de trabalho ( este ou outras fontes). A não ser que precises mesmo dele, devias evitá-lo.

Se você realmente precisa do que fornece um motor de fluxo de trabalho, eu escolheria um que já está construído. As pessoas que trabalham com jbpm ou activiti têm muito mais experiência do que você na construção de motores de fluxo de trabalho, por isso provavelmente já está sintonizado para melhorar o desempenho.

 14
Author: dgmora, 2017-05-23 11:54:46
[[1] eu concordo com os caras que já postaram respostas aqui, ou parte de suas respostas de qualquer maneira :P, mas como aqui na empresa onde eu estou trabalhando atualmente tivemos um desafio semelhante eu tomei a liberdade de adicionar minha opinião, com base em nossa experiência. [[1]] nós precisávamos migrar uma aplicação que estava usando o motor jBPM workflow em aplicações relacionadas à produção e como havia alguns desafios na manutenção da aplicação decidimos ver se existem melhores opções no mercado. Chegamos à lista já mencionada:
  • Activiti (planeado para tentar através de um protótipo)
  • Bonita (planeada para tentar através de um protótipo)
  • jBPM (desqualificado devido à experiência passada)
[[1]} decidimos não usar mais o jBPM porque a nossa experiência inicial com ele não foi a melhor, além disso a compatibilidade para trás foi quebrada com cada nova versão que foi lançada.

Finalmente a solução o que usávamos era desenvolver um motor leve de fluxo de trabalho, baseado em anotações com atividades e processos como abstrações. Foi mais ou menos uma máquina estatal que fez o seu trabalho.

Outro ponto que merece destaque quando se discute sobre o mecanismo de fluxo de trabalho é o fato de que eles são dependentes do apoio DB - foi o caso com os dois mecanismos de fluxo de trabalho, tenho experiência com (SAG webMethods e jPBM) - e a partir de minha experiência que foi um pouco de uma overhead especialmente durante as migrações entre versões.

Então, eu diria que usar um motor de fluxo de trabalho só tem direito para aplicações que realmente beneficiariam dele e onde a maioria do fluxo de trabalho das aplicações está girando em torno do próprio fluxo de trabalho, caso contrário, existem melhores ferramentas para o trabalho: No que diz respeito às máquinas do estado, deparei-me com isto. response that contains a rather complete collection of state machine java frameworks. Espero que isto ajude.
 31
Author: Olimpiu POP, 2017-05-23 12:34:27

Os motores de fluxo de trabalho baseados em Java, como Activiti, Bonita ou jBPM, suportam uma vasta gama da especificação BPMN 2.0. Portanto, você pode modelar processos de uma forma gráfica. In addition, some of those engines have simulation capabilities like Activiti (with Activiti Crystalball). Se você codifica os processos por conta própria, você não é tão flexível quando você precisa mudar o processo. Portanto, eu também aconselharia a usar um motor BPM baseado em java.

Fiz uma pesquisa sobre o BPMN 2.0. motores de código aberto. Aqui estão os pontos-chave que foram relevantes para o nosso caso de uso concreto:

1. Bonita:

Bonita tem uma abordagem de codificação zero o que significa que eles fornecem uma fácil de usar IDE para construir seus processos sem a necessidade de codificação. Para isso, Bonita tem o conceito de conectores. Por exemplo, se você quiser consumir um serviço web, eles lhe fornecem um wizzard gráfico. A desvantagem é que você tem que escrever o simples XML SOAP-envelope manualmente e copiá-lo em uma caixa de texto gráfica. O problema com esta abordagem é que você só pode realizar casos de uso que são destinados por Bonita. Se você quiser integrar um sistema para o qual Bonita não desenvolveu um conector, você tem que codificar esse conector por conta própria, o que é muito doloroso. Por exemplo, Bonita oferece um conector de sabão para o consumo de serviços web SOAP. Este conector só funciona com sabão 1.2, mas não para sabão 1.1 (http://community.bonitasoft.com/answers/consume-soap-11-webservices-bonita-secure-web-service-connector). Se você tem um aplicativo legado com o SOAP 1.1, você não pode integrar este sistema facilmente em seu processo. O mesmo se aplica às bases de dados. Existem apenas alguns conectores de banco de dados para versões dedicadas de banco de dados. Se você tem uma versão que não corresponde a um conector, você tem que codificar isso por conta própria.

Para além disso, a Bonita não tem suporte para a sincronização do LDAP ou directório activo em a edição comunitária gratuita que é bastante um showstopper para um ambiente de produção. Outra coisa a considerar é Que Bonita é licenciada sob a licença GPL / LGPL que pode causar problemas quando você quer integrar Bonita em outra aplicação empresarial. Além disso, o apoio comunitário é muito fraco. Há vários posts que têm mais de 2 anos e esses posts ainda não são respondidos.

Outra coisa importante é o alinhamento das empresas. Os processos de modelização são disciplina colaborativa na qual ele e os analistas de negócios estão envolvidos. É por isso que você precisa de ferramentas adequadas para ambos os grupos de usuários (por exemplo, um Plugin Eclipse para os desenvolvedores e um fácil de usar web modeler para as pessoas de negócios). Bonita só oferece Bonita Studio, que precisa ser instalado em sua máquina. Esta IDE é bastante técnica e não é adequada para usuários de negócios. Portanto, é muito difícil realizar alinhamento de negócios com Bonita.

Bonita é uma ferramenta BPM para muito trivial e processos fáceis. Devido à abordagem de codificação zero, a curva lerning é muito baixa e você pode começar a modelar muito rápido. Você precisa de menos habilidades de programação e você é capaz de realizar seus processos sem a necessidade de codificação. Mas assim que seus processos se tornam muito complexos, Bonita pode não ser a melhor solução por causa da falta de flexibilidade. Você só pode perceber casos de uso que são destinados por Bonita.

2. jBPM:

O JBPM é um BPM de código aberto muito poderoso Motor que tem um monte de características. O web modeler ainda suporta modelos pré-fabricados de alguns padrões de fluxo de trabalho van der Aalst (workflowpatterns.com). o alinhamento Business-IT-é realizável porque o jBPM oferece uma integração Eclipse, bem como um modelador baseado na web. Um pouco complicado é que você só pode definir formas no web modeler, mas não no Eclipse Plugin, tanto quanto eu sei. Resumindo, o jBPM é um bom candidato para usar em uma empresa. O nosso showstopper era a escalabilidade. jBPM é baseado no As Regras Do Motor Babam-Se. Isto leva ao fato de que instâncias de processo inteiro são persistidas como bolhas no banco de dados. Isto é um espectáculo crítico quando se considera a procura e a escalabilidade.

Além disso, a curva de aprendizagem é muito alta devido à complexidade. jBPM não oferece uma tarefa de serviço como o BPMN-Standard sugere em contraste, você tem que definir suas próprias tarefas de Serviço Java e você tem que registrá-las manualmente no motor, o que resulta em um nível bastante baixo programacao.

3. Activiti:

No final, fomos com o Activiti porque este é um motor baseado em framework muito fácil de usar. Ele oferece um Plugin Eclipse, bem como um moderno AngularJS Web-Modeler. Desta forma, você pode perceber o alinhamento de negócios. O REST-API é assegurado pela Segurança Da Mola, o que significa que você pode estender o motor muito facilmente com características de sinal único. Por causa da Licença Apache 2.0, não há copyleft o que significa que você está completamente livre em Termos de uso e extensibilidade que é muito importante em um ambiente produtivo.

Além disso, a cobertura BPMN é muito boa. Nem todos os elementos BPMN são realizados, mas não conheço nenhum motor que o faça.

O Activiti Explorer é uma interface de demonstração que demonstra o uso da Apis Activiti. Uma vez que este frontend é baseado em VAADIN, ele pode ser estendido muito facilmente. A comunidade é muito ativa, o que significa que você pode obter ajuda muito rápido se você tiver algum problema.

A Activiti oferece bons pontos de integração para tecnologias de forma externa, o que é muito importante para uma utilização produtiva. As tecnologias de forma de todos os candidatos são muito restritivas. Portanto, faz sentido usar uma forma-tecnologia padrão como XForms em combinação com o motor. Mesmo coisas tão mais complexas são realizáveis através do atributo formKey.

O Activiti não segue a abordagem de codificação zero, o que significa que irá precisar de um pouco de codificação se quiser para orquestrar serviços. Mas mesmo a comunicação com os serviços SOAP pode ser alcançada usando uma tarefa Java Service e Apache CXF. O esforço de codificação é baixo.

Espero que os meus pontos-chave possam ajudar a tomar uma decisão. Para ser claro, este não é um anúncio para a Activiti. A escolha correta do produto depende dos casos concretos de uso. Só quero salientar os pontos mais importantes do nosso projecto.
 20
Author: Ben, 2016-08-16 23:59:10

A questão é o que realmente queres alcançar quando pedes um motor de fluxo de trabalho.

O objetivo geral que você gostaria de alcançar usando um motor de fluxo de trabalho, é tornar-se mais flexível em mudar a sua lógica de negócios durante o tempo de execução. A parte de modelagem é certamente uma das mais importantes aqui. O BPMN 2.0 é um padrão de facto nesta área e todos os motores discutidos suportam esta norma.

O segundo objectivo é controlar o processo de negócio da forma como de descrever o ' o que deve acontecer quando...Perguntas. E esta parte tem muito a ver com os requisitos de negócio que você é confrontado dentro de seu projeto.

Alguns dos motores de fluxo de trabalho ( actividade, JBPM ) pode ajudá-lo a responder a este requisito através da 'codificação' dos seus processos. Isto significa que você modela o que deve acontecer quando..' paradigma de uma forma, onde você decide qual parte do seu código (por exemplo, uma tarefa ou um evento) deve ser executada pelo motor de fluxo de trabalho em várias situações. Muita discussão está acontecendo sobre este conceito. E os desenvolvedores naturalmente perguntam se isso pode nem ser implementado por eles mesmos. (Na verdade, não é tão fácil como parece à primeira vista)

Outros motores de fluxo de trabalho (Imixs-fluxo de trabalho), Bonita ([11]) pode ajudá-lo a responder ao 'o que deve acontecer quando..."[[7]] exigência de uma forma mais centrada no utilizador. Esta é a área de gestão de processos empresariais centrados no homem, que apoia as competências e actividades humanas através de um motor de fluxo de trabalho orientado para tarefas. O foco é mais na distribuição de tarefas e processos dentro de uma organização. O motor workflow ajuda você a distribuir uma tarefa para um determinado usuário ou grupo de usuários e para proteger, registrar e monitorar um processo de negócios de longa duração. Talvez estas sejam as coisas que você realmente não quer implementar por si mesmo. Então o meu conselho é, não misturar coisas que precisam de ser consideradas separadamente, porque o fluxo de trabalho cobre um área ampla.
 1
Author: Ralph, 2016-08-29 22:05:09
Gostaria de acrescentar os meus comentários. Quando você escolhe um motor pronto, como jBPM, Atividade e outros (há muitos deles), então você tem que passar algum tempo aprendendo o próprio sistema, isso pode não ser uma tarefa fácil. Especialmente, quando você precisa apenas automatizar um pequeno pedaço de código.

Então, quando um problema ocorre você tem que lidar com o suporte do fornecedor, que não é tão rápido como você imagina. Até pagar por alguma consultoria.

E, por último, um dos mais importantes razão, você tem que se desenvolver no ecossistema do motor. Embora, os vendedores tendem a dizer que seu sistema é flexível para ser incorporado em qualquer sistema, isso pode não ser o caso. Eventualmente você acaba reescrevendo sua aplicação para combinar com o ecossistema BPM.
 1
Author: nomadus, 2017-11-23 02:58:39
Sim, na minha perspectiva, não há razão para escreveres a tua. A maioria dos frameworks BPM/Workflow de código aberto são extremamente flexíveis, você só precisa aprender o básico. Se você escolher jBPM você vai obter muito mais do que um simples motor de fluxo de trabalho, então isso depende do que você está tentando construir. Saúde.
 0
Author: salaboy, 2013-01-25 16:08:21
Eu recomendava-te que usasses uma solução fora da caixa. Dado que o desenvolvimento de um motor de fluxo de trabalho requer uma vasta quantidade de recursos e tempo, um motor pronto-feito é uma opção melhor. Dê uma olhada em Motor de fluxo de trabalho. É um componente leve que lhe permite adicionar fluxos de trabalho personalizados executáveis de qualquer complexidade a qualquer solução Java.
 0
Author: Jan Guardian, 2017-04-27 18:29:15
Recentemente, abri a Piper. https://github.com/creactiviti/piper um motor de fluxo de trabalho distribuído e muito leve, à base de molas.
 0
Author: acohen, 2017-07-05 21:02:05

Você pode procurar @ Apache Ant para criar um motor de fluxo de trabalho.É muito mais robusta e é uma máquina de Estado pura com a maioria dos requisitos necessários já incorporados.

Além disso você também pode incorporar diferentes códigos dinâmicos / scripts na Linguagem Java / Groovy / JS e, portanto, isso o torna muito poderoso. Também permite a extensão de Tarefas.

Há uma quantidade razoável de ferramentas em torno dele ou você pode construir em cima dele se uma IDE é necessária.

 -1
Author: Rohitdev, 2015-08-19 17:04:52