Je suis nouveau au développement de Workflow, et je ne pense pas que je reçois vraiment la "grande image". Ou peut-être de la mettre différemment, ces outils ne "cliquent pas actuellement dans ma tête.
Il semble donc que les entreprises aiment créer des dessins commerciaux pour décrire des processus et, à un moment donné, quelqu'un a décidé qu'ils pourraient utiliser une machine à états comme un programme pour contrôler réellement les processus d'une ligne et de boîtes tels que le diagramme. Dix ans plus tard, ces outils sont énormes, extrêmement compliqués (mon entreprise joue actuellement avec WebSphere et j'ai assisté à une partie de la formation, c'est un monstre, même les versions "minimalistes" de ces outils de flux de travail comme Activiti sont énorme et compliqué mais pas aussi aussi compliqué que la bête qui est WebSphere Afaict).
Quel est le grand avantage pour le faire de cette façon? Je peux comprendre que les diagrammes de lignes et de boîtes simples sont utiles, mais ces choses, autant que je sache, sont des langages de programmation visuelle à ce stade, avec des conditionnels et des boucles. Les programmeurs semblent ici faire une quantité importante de travail dans les lignes et la couche de boîtes, ce qui me semble-t-il juste un langage de programmation visuel vraiment de base.
Si vous allez y aller aussi loin, pourquoi ne pas simplement utiliser une sorte de langage de script? Les gens ont-ils jeté le bébé avec l'eau de bain à ce sujet? Est-ce que les lignes et les boîtes ont été prises à un niveau absurde, ou je ne comprends tout simplement pas la valeur dans tout cela?
J'aimerais vraiment voir des arguments en défense de cela par des personnes qui ont travaillé avec cette technologie et comprennent pourquoi son utile. Je ne vois pas la valeur dedans, mais je reconnais que je suis nouveau à cela aussi et que je ne le récupère pas encore.
Du point de vue du développeur, vous avez raison de dire que ces environnements "visuels" sont vraiment difficiles à travailler. SharePoint 2010 Workflows, que j'utilise, jette toutes les meilleures pratiques autour de la création d'un bon logiciel d'entreprise - Aucun test automatisé, aucune réutilisation de code, logiciels illisibles ... tout ce qui est plus complexe qu'un modèle hors de la boîte peut être douloureux pour maintenir , comme vous vivez.
Mais du point de vue de l'entreprise, les flux de travail ont des avantages massifs - du moins en théorie. Pour citer - ce livre blanc , l'efficacité, la responsabilité, le contrôle et la facilité d'utilisation d'un flux de travail automatisé offrent des gains de productivité énormes. Imaginez combien plus inefficace une approbation simple ou une procédure d'embarquement serait sans cette automatisation. En outre, l'acte même de définir un flux de travail est précieux pour une organisation qui tente d'obtenir le contrôle de leurs processus métier.
L'état actuel du logiciel de flux de travail n'est pas la faute de l'entreprise. Ils veulent simplement rendre leur vie plus facile et les flux de travail sont parfaits pour cela. Je voudrais surtout nous blâmer, le service informatique:
Il n'y a qu'un seul avantage réel, mais son énorme: séparation des préoccupations .
Ainsi, au lieu de traiter la logique d'orchestration étant intégrée dans notre système, il devient et configuration externe. Une carte, fondamentalement. Vous pouvez le modifier (beaucoup plus) indépendamment, vous pouvez avoir plusieurs processus, plusieurs versions de processus, plusieurs versions de plusieurs processus fonctionnant en même temps, et c'est tout hors de la boîte dans une solution décente.
Historiquement, le concept de SOC a remporté plusieurs fois - à partir du principe UNIX "Faites une chose, mais faites-le bien", et d'être appliqué à nouveau et encore - comme ayant des composants de serveur dédiés tels que ESB, différents systèmes de persistance, mise en cache, équilibrage de la charge , la surveillance, comme la division CSS de HTML, etc.
Votre processus métier et ses règles de débit sont souvent orthogonaux à vos données, d'écrans d'interface utilisateur ou de "hiérarchie". Donc, il est parfaitement logique de développer et de le modifier séparément des autres aspects du système. C'était le principe sur lequel [~ # ~ # ~ # ~ # ~ # ~] est apparu au début des années 90.
Depuis lors, beaucoup d'outils et de langues ont été créés pour soutenir ce concept, avec la plus connue [~ # ~ # ~] BPMN [~ # ~] - Un langage graphique pour la création de "organigrammes" qui plantent directement aux processus. Tandis que les gens se plaignent de sa grande et lourd (avoir plus de 100 symboles dans le vocabulaire) et préconisant des approches modernes telles que S-BPM (comporte seulement 5 symboles de base), la pratique actuelle de l'industrie est de coller à BPMN ou à sa dérivés, sous-ensembles ou frères et sœurs.
Vous n'avez pas l'air content de BPMN:
Les programmeurs semblent ici faire une quantité importante de travail dans les lignes et la couche de boîtes, ce qui me semble-t-il juste un langage de programmation visuel vraiment de base.
Mais ce n'est pas si mal) il y a une théorie derrière elle. Et la version 2.0 a pris une bonne idée de 1,0 lacunes.
Si vous allez y aller aussi loin, pourquoi ne pas simplement utiliser une sorte de langage de script?
Le paradigme impératif et les langages de script ne sont pas toujours la meilleure réponse. Comme vous l'avez probablement vu dans des langues déclaratives (telles que HTML, CSS, SQL, des boursnes ou des internes de Nginx, Nordled et Maven, Puppet, etc.) Le code résultant peut être beaucoup plus petit et plus propre qu'une version écrite "Decent langue, comme Java ou C++ ".
Quant à votre autre point:
pour autant que je sache, sont des langages de programmation visuelle à ce stade, complétés par des conditionnels et des boucles.
avez-vous regardé dans les événements et déclencheurs ? BPMN est une langue et vous devez l'apprendre avant d'utiliser, ou du moins vous familiariser avec cela.
Sous la hotte, BPMN est XML, vous pouvez donc le modifier à la main ou générer. Et vous pouvez les contrôler la version, car XML est basé sur le texte. Cependant, il suffit d'avoir un XML qui peut être traduit en organigrammes, ne sonne pas que sa Goona vous aide, et c'est correct - écrire votre propre analyseur ou votre éditeur est une tâche difficile et coûteuse avec des avantages douteux.
Heureusement, il existe déjà des outils sur le marché qui font exactement cela.
Activiti est gratuit et assez populaire parmi les développeurs et les propriétaires de busines, en raison de son prix initial ( zéro), disponibilité de l'information et de l'humilité. Le dernier point est vraiment unique, car Activi ne se concentre que sur la gestion de vos processus métier, sans essayer de vous attacher à des solutions entières. En outre, son ouverture - vous n'avez donc besoin que de savoir Java et REST pour le réaliser. L'inconvénient est le côté client, l'intégration et l'application/Les entreprises logiques et toute l'architecture sont laissées au développeur. Donc, si votre équipe DevOppment est faible - préparez-vous à l'échec. Le coût total de la propriété peut être étonnamment élevé pour A GRATUIT Outil;)
De l'autre côté du spectre, c'est Pega (PEGA PRPC), le roi régnant des systèmes BPM (selon Gartner et Forester), qui semble étonnamment bon pour son âge. Cet évier de cuisine et un évier de cuisine est même capable de CRM, d'OCR et (si je ne me trompe pas) des capacités de reconnaissance vocale, de l'analyse prédictive, de la gestion des règles d'entreprise et de la rédactrice sur l'interface utilisateur WYSIWYG. Il vient avec une étiquette de prix sérieuse, cependant. Non seulement cela coûte-t-il une fortune, mais tout le développement est en cours de réalisation dans une application Web, ce qui signifie que vous devez utiliser le navigateur, c'est-à-dire IE8 (plus des plugins, plus des hacks laids, comme utiliser Excel pour éditer des tables de données). En outre, Java, JavaScript ou HTML/CSS édition est également effectué avec le navigateur Web - dites donc au revoir aux tests unitaires, IDE Code mettant en surbrillance, refactoring et tous vos jouets de programmation que vous avez appuyés pour aimer .
Bon côté? Vous pouvez mettre en œuvre un système complexe dans les semaines [ [~ # ~] PDF [~ # ~ ~] , voir page 22]. Et oui, le résultat n'est pas garanti.
[~ # ~] IBM [~ # ~] ont quelque peu récemment (accorde au rythme du temps d'entreprise) ont acheté Lombardi et offre désormais très compétitif Solution (mais alors Vous devrez acheter tout ibm, vous savoir). Appian est jeune fournisseur qui a des idées intéressantes et des commentaires positifs, mais la façon dont ils sont écrits (deux langues de DSL supplémentaires en plus de Visual One) ne fait que t appel à moi.
Il y a d'autres joueurs et leurs solutions. la plupart d'entre eux est un simple horrible. Comme - tes yeux, le cerveau et le cœur purgeraient littéralement, lorsque vous les regardez simplement. Donc, faites confiance à vos tripes et ne faites pas vos développeurs et votre utilisateur vous déteste.
Note de fermeture:
Le système BPM est le même pour pour les processus, quelle photoshop est pour les images. N'ayez pas peur que son visuel. Ne faites pas que le travail ne convient pas pour cela (rappelez-vous que les sites Web créés entièrement dans Photoshop, qui étaient presque impossibles à modifier?). Gardez-le simple et ne faites pas de bugs;)
Il y a des années, avant la majorité de nous, les développeurs de logiciels devaient écrire leur propre code pour stocker des données. Si vous aviez besoin d'économiser de l'état du programme, eh bien, cela a été constaté dans le cadre de la fonction du code, de nombreux développeurs de logiciels ont terminé un code d'écriture pour organiser des données et l'enregistrer et la lire, etc.
Et puis quelqu'un s'est rendu compte que c'était quelque chose qui s'est passé beaucoup - que la logique à enregistrer, organiser, lire et rechercher des données était en fait un composant qui était aussi couramment utilisé qu'il devrait être son propre composant. Et nous avons eu des bases de données.
Au cours des 10 à 15 dernières et 15 ans, les ministères informatiques se sont rendus compte que la logique des processus de chorégraphie chorégraphique et/ou d'orchestration est si courante qu'il devrait également s'agir de son propre composant, ce qui conduit à toutes sortes d'outils de flux de travail différents.
Il y a 3 premiers avantages d'un outil de flux de travail:
Cependant, l'un des problèmes les plus courants que je rencontre avec l'utilisation des outils de travail et de la BPM est que les développeurs essaient toujours de "enterrer" la logique commerciale dans un code non transparent.
Ce que je vois, tout le temps, les développeurs tentent toujours d'ajouter la logique commerciale de la manière la plus technique possible, au lieu de la manière la plus transparente possible. Ceci est naturel, car les développeurs sont, de par leur nature même, beaucoup plus à l'aise avec le code qu'avec un outil de flux de travail. De plus, plus vous conserverez la logique de manière technique, plus vous serez nécessaire en tant que développeur. Malheureusement, c'est la pire chose qu'un développeur puisse faire à un système de BPM, car il ou elle souscrit les principaux avantages de l'utilisation de BPM.
Enfin, la plupart des outils BPM ne sont pas assez loin que les analystes métier puissent développer eux-mêmes les flux de travail: cependant, c'est ce que l'objectif est. Idéalement, les analystes d'entreprise développeraient les flux de travail/des diagrammes de processus d'entreprise et les développeurs ne travailleraient que sur les composants techniques appelés par le moteur de flux de travail.
Les déclarations ci-dessous sont mon expérience personnelle à l'aide d'outils de flux de travail, en particulier Oracle BPM Suite (10.3G & 11G). Premièrement à spécifier, votre question se concentre sur les outils de flux de travail qui permettent à la modélisation des modèles de processus exécutables, ces outils font partie des systèmes de gestion des processus métier (BPMS). Cette modélisation de processus spécifique est en train de se développer et vous pouvez y référer en tant que langage de programmation visuelle.
Le principal avantage est l'agilité de la compréhension et de la modification de la logique de processus
Avec des modèles de processus métier, vous couvrez une explication visuelle de la logique de processus et en même temps un composant intégratif exécutable. Cela permet aux programmeurs plus rapides des programmeurs, car moins de documentation sur les transitions, les conditionnels (passerelles ou les règles commerciales) et les débits de processus en général doivent être documentés, depuis sa part du développement.
De plus, vous avez ci-joint les capacités de reporting/de surveillance ci-jointes, ce que vous devriez développer individuellement par chaque application, qui est couverte par la plupart des BPM.
De plus, dans la plupart des environnements de développement BPM, les adaptateurs de services sont prébuilt (p. Ex. JMS, Web Services, JDBCs, etc.), permettant Développer des solutions middleware plus rapidement dans une étape de Étape d'intégration interactive, réduisant les erreurs humaines dans le codage.
La plate-forme de flux de travail suivante réalise beaucoup d'avantages mentionnés ci-dessus Approche basée sur la plate-forme pour l'automatisation des flux de travail
La proposition de valeur est que les flux de travail peuvent être créés ou modifiés rapidement et facilement adaptés à la nature changeante d'une entreprise. Une partie importante de la réalisation de cette proposition de valeur est que les processus d'entreprise elles-mêmes sont des unités de ressource dans le système.
Les flux de travail en tant que unités de ressource, signifie qu'un processus métier est défini comme une seule "unité". Pour comprendre ce que je veux dire par cela, considérons tout programme informatique écrit pour une entreprise. Il met en œuvre un processus d'entreprise à coup sûr, mais la logique de ce processus est susceptible d'être diffusée autour du code source dans une certaine mesure. Un outil de flux de travail devrait permettre de définir le processus dans un endroit bien contenu. Il pourrait être dans un seul fichier de configuration ou extrait d'un schéma visuel, ou cela pourrait signifier que le flux de travail est dans un seul module de code pouvant être branché, peut-être même échangé ou configuré à la volée.
Cette proposition de valeur peut être compromise par les difficultés de couverture des cas non-vanilla, intégrant une technologie d'interface utilisateur qui change très rapidement, de mauvaises pratiques telles que l'utilisation de l'outil de flux de travail uniquement et mettant la logique réelle dans le code.
Une mauvaise conception des outils eux-mêmes peut être un facteur limitant. Un exemple serait un outil qui nécessite que tous les paramètres passés entre les processus soient dans une carte Java _, avec des restrictions sur les valeurs que vous pouvez réellement mettre sur la carte, au lieu de paramètres de méthode anciens simples (je suis penser à l'un des outils les plus populaires en particulier qui le fait).
Je pense qu'il est probablement juste de dire que IBM en tant que gros joueur avec un éco-système de technologie important, mieux que les autres. S'ils contrôlent également la technologie de l'interface utilisateur et la base de données et SOA _ Technologie utilisée conjointement avec l'outil de flux de travail, ils constituent une meilleure chance d'atteindre un éco-système qui s'intègre bien et crée un possibilité d'utiliser vraiment cette idée.
Il est définitivement vrai que l'effort d'écriture de l'interfaçage entre un outil de flux de travail et les autres parties d'un système peut complètement nier la proposition de valeur entière. Il vaut toujours la peine d'être considéré comme s'il y a une meilleure façon de faire les choses.
La vérité est que la programmation (dans des langues impératives au moins) IS _-workflow déjà. Vous pouvez avoir du code qui implémente le flux de travail qui a trait à la gestion de la technologie du système; Accéder aux fichiers et exécuter des requêtes SQL et ainsi de suite. Vous pouvez avoir du code qui implémente le flux de travail de l'entreprise; fixer l'état d'un document et le transmettre à un critique par exemple.
Reconnaissant cela et concevoir votre code pour séparer proprement ces préoccupations distinctes est difficile à tirer complètement, mais vous pouvez certainement avoir un long chemin avec cela.
Je suis d'accord avec vous, parfois nous finissons par utiliser ces outils parce que quelqu'un d'autre a décidé que c'était une bonne idée, et ils sont trop complexes et de rendre notre travail plus fort. Je ne pense pas que ce soit toujours le cas, il faut une attention particulière à décider si sa valeur la peine ou non.