Question

J'ai un processus métier répétable que j'exécute chaque semaine dans le cadre de mes responsabilités en matière de gestion de la configuration. Le processus ne change pas: je télécharge les détails des modifications dans Excel, ouvre la feuille de calcul et les copie à partir d'une macro, crée un document Word à partir d'un modèle d'agenda, met à jour l'agenda avec les données Excel, crée des PDF à partir du document Word et envoyez-les par courrier électronique.

Ce processus est très facilement représenté dans un flux de travail de séquence et c’est ce que j’ai fait jusqu’à présent, avec l’automatisation COM pour gérer automatiquement les éléments Excel et Word. La clé dans les engrenages est qu'il y a une étape humaine entre "créer un agenda". et " l'envoyer, " dans lequel je passe en revue les détails du changement et formule des questions à leur sujet, qui sont ajoutées à l’ordre du jour. J'ai actuellement une activité Suspendre pour suspendre le flux de travail pendant que je fais manuellement cette partie du processus.

Ma question est la suivante: devrais-je réécrire mon flux de travail pour en faire une machine à états qui respecte les meilleures pratiques en matière d'interaction humaine dans un processus métier, ou l'activité Suspendre est-elle une solution raisonnable?

Était-ce utile?

La solution

Non, je ne pense pas que vous deviez utiliser une machine à états pour ce flux de travail. Mais je propose de changer l’activité Suspendre car:

  

L'activité SuspendActivity   arrête temporairement l'exécution du   flux de travail actuel. En règle générale, vous utilisez   l'activité SuspendActivity à   refléter une condition d'erreur   nécessite l'attention d'un   administrateur.

     

Quand un workflow   instance est suspendue, une erreur est   connecté. Vous pouvez spécifier un message   chaîne pour accompagner l'erreur pour aider   l'administrateur diagnostique le problème   avec l'erreur SuspendActivity   propriété. Un workflow suspendu   instance peut toujours recevoir des messages   qui sont mis en file d'attente jusqu'au flux de travail   est redémarré. Tout l'état   informations pour l'instance de flux de travail   est enregistré et est rétabli lorsque le   l'instance est reprise (à l'aide de Reprendre).

     

Source: MSDN

Pour ajouter une tâche manuelle à un flux de travail (machine séquentielle ou machine à états), vous devez généralement définir une interface External Data Exchange et utiliser une activité HandleExternalEvent (et éventuellement une activité CallExternalMethod). Pour plus de détails, consultez les articles suivants:

Autres conseils

Mise à jour: Panos insiste sur le fait de suspendre l'activité. Je conviens qu’il a un but différent dans l’automate de workflow.

Si vous sentez que vous vous inquiétez davantage de la transition de flux de travail entre différents états, le flux de travail de la machine d'état est idéal. Sinon, la séquence est parfaite.

Le principal problème que vous devriez essayer de résoudre est que le flux de travail ne doit pas figer un thread en attendant l'interaction humaine (agilité du thread). Si le flux de travail est inactif et persistant pendant ce laps de temps (par exemple, SqlWorkflowPersistenceService ), cela ne devrait pas être un problème.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top