Léger, moteur de workflow pour Java
Est-il préférable d'écrire un nouveau moteur de flux de travail ou à utiliser un moteur de BPM: jBPM 5, Or 5?
Ma demande est une application basée sur le web et la performance est importante. Mon doute est de savoir si l'aide de jBPM/Or sera une surcharge de performance par rapport à l'écriture d'un simple moteur de workflow.
Si je pars avec l'auto mise en œuvre, je vais manquer de visualisation de flux de travail. Pour les performances, il peut être échangé.
Vous devez vous connecter pour publier un commentaire.
Cela dépend vraiment de vos besoins. Tout d'abord, voir si vous avez vraiment besoin d'un moteur de workflow (cette ou d'autres sources). Sauf si vous en avez vraiment besoin, vous devriez probablement éviter.
Si vous avez vraiment besoin de ce qu'il fournit un moteur de workflow, je choisirais celui qui est déjà construit. Les gens qui travaille avec jbpm ou en or ont beaucoup plus d'expérience que vous dans la construction de moteurs de workflow, de sorte qu'il est probablement déjà tunned pour améliorer les performances.
Je suis d'accord avec les gars qui ont déjà posté des réponses ici, ou une partie de leurs réponses, de toute façon :P, mais comme ici, dans l'entreprise où je travaille actuellement, nous avons eu un problème similaire, j'ai pris la liberté d'ajouter mon avis, basé sur notre expérience.
Nous avons besoin de migrer une application qui a été en utilisant le moteur de workflow jBPM dans une production d'applications connexes et comme il y avait pas mal de défis dans le maintien de l'application, nous avons décidé de voir si il ya de meilleures options sur le marché. Nous sommes arrivés à la liste déjà mentionné:
Nous avons décidé de ne pas utiliser de jBPM plus que notre première expérience avec elle n'était pas la meilleure, en plus de cela la compatibilité ascendante a été cassé avec chaque nouvelle version qui a été publié.
Enfin la solution que nous avons utilisé était de développer un léger moteur de flux de travail, basé sur les annotations avec des activités et des processus comme des abstractions. C'était plus ou moins une machine d'état qu'il a fait son travail.
Un autre point qui mérite d'être mentionnée lors de la discussion sur moteur de workflow est le fait qu'ils dépendent de la sauvegarde de la DB - c'était le cas avec les deux moteurs de workflow j'ai de l'expérience avec (SAG webMethods et jPBM) - et de mon expérience, qui était un peu d'une surcharge en particulier pendant les migrations entre les versions.
Donc, je dirais que l'utilisation d'un moteur de workflow est autorisé uniquement pour les applications qui mériterait vraiment d'elle et où la plupart de la charge de travail des applications qui tourne autour du flux de travail lui-même sinon il y a de meilleurs outils pour le travail:
Concernant les machines d'état, je suis tombé sur cette réponse qui contient plutôt une collection complète de l'état de la machine java cadres.
Espère que cette aide.
Basé sur Java moteurs de workflow comme l'Or, Bonita ou jBPM soutien à un large éventail de BPMN 2.0. Par conséquent, vous pouvez modéliser des processus d'une manière graphique. En outre, certains de ces moteurs ont des capacités de simulation comme en Or (avec Or Crystalball). Si vous code le processus sur votre propre, vous n'êtes pas aussi souple lorsque vous avez besoin de modifier le processus. Par conséquent, je voudrais aussi des conseils pour utiliser une base java moteur de BPM.
J'ai fait une recherche concernant BPMN 2.0 Open Source, basé sur les Moteurs. Voici les points clés qui sont pertinents pour notre cas concret d'utilisation:
1. Bonita:
Bonita a un zéro-approche de codage qui signifie qu'ils offrent un facile à utiliser l'IDE pour construire votre processus sans avoir besoin de codage. Pour y parvenir, Bonita a la notion de connecteurs. Par exemple, si vous souhaitez consommer un service web, ils vous fournir un graphique wizzard. L'inconvénient est que vous devez écrire la plaine XML SOAP-enveloppe manuellement et de le copier dans un graphique de zone de texte. Le problème avec cette approche est que vous pouvez seulement de réaliser les cas d'utilisation qui sont destinés par Bonita. Si vous souhaitez intégrer un système de Bonita n'a pas développé un connecteur pour l', vous avez le code exemple un connecteur sur votre propre qui est très douloureux. Par exemple, Bonita offre une de SAVON connecteur pour consommer des services web SOAP. Ce connecteur ne fonctionne qu'avec SOAP 1.2, mais pas pour SOAP 1.1 (http://community.bonitasoft.com/answers/consume-soap-11-webservices-bonita-secure-web-service-connector). Si vous avez une application existante avec SOAP 1.1, vous ne pouvez pas intégrer ce système facilement dans votre processus. La même chose est vraie pour les bases de données. Il y a seulement quelques la base de données des connecteurs pour les versions de base de données. Si vous avez une version qui ne correspond pas à un connecteur, vous avez ce code sur votre propre.
En outre, Bonita a pas de prise en charge de LDAP ou Active Directory Sync dans la communauté free edition qui est un obstacle de taille pour un environnement de production. Une autre chose à considérer est que Bonita est sous licence GPL /LGPL licence qui pourrait provoquer des problèmes lorsque vous souhaitez intégrer Bonita dans une autre application d'entreprise. En outre, le soutien de la communauté est très faible. Il y a plusieurs posts qui sont plus de 2 ans et ces postes sont toujours pas répondu.
Une autre chose importante est-IL-Alignement. La modélisation des processus est une collaboration de la discipline dans laquelle IL ET les analystes sont involed. C'est pourquoi vous avez besoin des outils adéquats pour les deux groupes d'utilisateurs (par exemple, un Plugin Eclipse pour les développeurs et un facile pour utiliser le web modeler pour les gens d'affaires). Bonita propose uniquement Bonita Studio, qui doit être installé sur votre machine. Cette IDE est assez technique et pas adapté pour les utilisateurs de l'entreprise. Par conséquent, il est très difficile de se rendre compte d'Affaires IL-Alignement avec Bonita.
Bonita est un outil de BPM pour de très banal et facile processus. En raison de la zéro-approche de codage, le lerning courbe est très bas et vous pouvez commencer à la modélisation très rapide. Vous avez besoin de moins de compétences en programmation et vous êtes en mesure de réaliser vos processus sans avoir besoin de codage. Mais dès que votre processus de devenir très complexe, Bonita peut-être pas la meilleure solution en raison du manque de flexibilité. Vous ne pouvez réaliser les cas d'utilisation qui sont destinés par Bonita.
2. jBPM:
jBPM est un très puissant Moteur de BPM Open Source qui a beaucoup de fonctionnalités. Le web modeler prend même en charge les modèles préfabriqués de certaines van der Aalst modes de travail (workflowpatterns.com). Business-ON-Alignement est réalisable parce que jBPM offre une Éclipse, l'intégration, l'un basé sur le web modeler. Un peu délicat est que vous ne pouvez définir des formes dans le web modeler, mais pas dans le Plugin Eclipse, pour autant que je sais. Pour résumer, jBPM est un bon candidat pour l'utilisation dans l'entreprise. Notre spectacle a été l'évolutivité. jBPM est basé sur les Règles-Moteur Drools. Cela conduit au fait que l'ensemble des instances de processus sont conservées comme des objets BLOB dans la base de données. C'est une critique clou du spectacle quand vous considérez la recherche et de l'évolutivité.
En outre, la courbe d'apprentissage est très élevé à cause de la complexité. jBPM n'offre pas une Tâche de Service comme le BPMN-Norme suggère En revanche, vous devez définir votre propre Java tâches de Service et vous devez les inscrire manuellement dans le moteur, ce qui entraîne très faible niveau de programmation.
3. Or:
En fin de compte, nous sommes allés avec de l'Or parce que c'est un très facile à utiliser, basée sur un framework moteur. Il propose un Plugin Eclipse ainsi que d'un moderne AngularJS Web-Modeler. De cette façon, vous pouvez réaliser d'Affaires IL-Alignement. Le RESTE de l'API est assurée par un Ressort de Sécurité qui signifie que vous pouvez étendre le Moteur très facilement grâce à l'authentification Unique sur les fonctionnalités. En raison de la Licence Apache 2.0, il n'y a pas de copyleft, ce qui signifie que vous êtes complètement libre en termes d'usages et de l'extensibilité qui est très important dans un environnement de production.
En outre, le BPMN-la couverture est très bonne. Pas tous les BPMN-éléments sont réalisés, mais je ne connais pas de moteur qui le fait.
L'Or de l'Explorateur est une démo frontend qui illustre l'utilisation de l'Or dans l'Api. Depuis cette interface est basée sur VAADIN, il peut être étendu très facilement. La communauté est très active, ce qui signifie que vous pouvez obtenir de l'aide très rapidement si vous avez des problèmes.
Or offre une bonne intégration des points pour la forme extérieure, les technologies qui est très important pour une utilisation productive. La forme-les technologies de tous les candidats sont très restrictives. Par conséquent, il est logique d'utiliser un formulaire standard-technologie comme XForms en combinaison avec le Moteur. Même des choses plus complexes sont réalisables via le formKey-Attribut.
Or ne suit pas le zéro-approche de codage qui signifie que vous aurez besoin d'un peu de codage si vous voulez orchestrer des services. Mais même la communication avec les services SOAP peut être obtenue en utilisant un Service Java Tâche et Apache CXF. L'effort de codage est faible.
J'espère que mes points clés peuvent aider en prenant une décision. Pour être clair, ce n'est pas une publicité pour de l'Or. Le bon choix du produit dépend de la des cas d'utilisation concrets. Je veux seulement souligner les points les plus importants dans notre projet
La question est de savoir ce que vous voulez vraiment atteindre quand vous demandant un moteur de workflow.
Le grand objectif que vous souhaitez atteindre à l'aide d'un moteur de workflow, est de devenir plus flexibles dans l'évolution logique d'entreprise au cours de l'exécution. La modélisation de la partie est sûrement l'un des plus importants ici. BPMN 2.0 est un standard de facto dans ce domaine et tous les discutées les moteurs prennent en charge cette norme.
Le deuxième objectif est de contrôler les processus d'affaires dans la façon de décrire la " ce qui doit se passer quand...' questions. Et cette partie a beaucoup à voir avec les besoins de l'entreprise, vous êtes confronté dans votre projet.
Certains des moteurs de workflow (L'activité, JBPM) peut vous aider à répondre à cette exigence par le "codage" de vos processus. Cela signifie que le modèle de la " ce qui doit se passer quand..' de paradigme dans la manière où vous décider quelle partie de votre code (e.g une tâche ou un événement) doit être exécutée par le moteur de flux de travail dans diverses situations. Beaucoup de discussion est en cours sur ce concept. Et les développeurs naturellement se demander si cela peut même ne pas être mis en œuvre par eux-mêmes. (En fait, c'est pas si facile qu'il y paraît au premier coup d'oeil)
Certains autres moteurs de workflow (Imixs-Flux De Travail, Bonita) peut vous aider à répondre à la " ce qui doit se passer quand...' exigence d'une plus centrée sur l'utilisateur moyen. C'est le secteur de Human-centric entreprise la gestion des processus, qui prend en charge des compétences humaines et des activités par une tâche orientée flux de travail du moteur. L'accent est mis plus sur la répartition des tâches et des processus à l'intérieur d'une organisation. Le moteur de flux de travail vous permet de répartir une tâche à un utilisateur ou groupe d'utilisateurs et de les sécuriser, de journaux et de surveiller un long cours d'exécution du processus d'affaires. Peut-être que ce sont les choses que vous ne voulez pas vraiment à mettre en œuvre par vous-même.
Donc, mon conseil est de ne pas mélanger les choses qui doivent être considérées séparément, en raison de flux de travail couvre un très large domaine.
Je voudrais ajouter mes commentaires. Lorsque vous choisissez un prêt de moteur, tels que jBPM, de l'Activité et d'autres (il y en a beaucoup), alors vous devez passer un peu de temps à apprendre le système lui-même, cela peut ne pas être une tâche facile. En particulier, lorsque vous avez besoin seulement d'automatiser petit morceau de code.
Puis, quand un problème se produit, vous aurez à traiter avec le support du fournisseur, qui n'est pas aussi rapide que vous pouvez l'imaginer. Même payer pour certains de conseil.
Et, enfin, la raison la plus importante, vous devez développer l'écosystème du moteur. Bien que, les vendeurs ont tendance à dire que leur système sont flexibles pour être intégré dans tous les systèmes, cela peut ne pas être le cas. Vous arrivez finalement ré-écrire votre application pour correspondre avec le BPM de l'écosystème.
Oui, de mon point de vue, il n'ya aucune raison pourquoi vous devriez écrire votre propre. La plupart de l'Open Source BPM/Workflow cadres sont extrêmement flexibles, vous avez juste besoin d'apprendre les bases.
Si vous choisissez de jBPM, vous obtiendrez bien plus qu'un simple moteur de flux de travail, donc cela dépend de ce que vous êtes en train de construire.
Acclamations
Je vous recommande yo utiliser un out-of-the-box solution. Étant donné que le développement d'un moteur de flux de travail nécessite une grande quantité de ressources et de temps, un ready-made moteur est une meilleure option. Jetez un oeil à Moteur De Flux De Travail. C'est un composant léger qui vous permet d'ajouter exécutable personnalisé flux de travail de toute la complexité de toutes les solutions Java.
J'ai récemment open source Piper (https://github.com/creactiviti/piper) distribuées, et un poids très léger, Printemps-base, moteur de workflow.
Vous pouvez regarder @ Apache Ant pour construire un moteur de workflow.Elle est beaucoup plus robuste et est une pure machine d'état avec la plupart des exigences requises déjà construit dans.
En dehors de cela, vous pouvez également intégrer des différentes dynamiques de code/scripts en Java/Groovy/JS langue, et qui le rend très puissant. Il permet aussi des tâches de vulgarisation.
Il ya une certaine quantité juste de l'outillage autour d'elle ou vous pouvez construire sur le dessus de celui-ci si un IDE est nécessaire.
Mise à jour : le Printemps de l'état de la machine est également disponible, ce qui est relatuvely de poids léger et de ne pas pléthorique : https://projects.spring.io/spring-statemachine/