IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Wildfly/JBoss Java Discussion :

[JBoss JBPM] comment réaliser un workflow avec des cycles ?


Sujet :

Wildfly/JBoss Java

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Avril 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 4
    Points : 1
    Points
    1
    Par défaut [JBoss JBPM] comment réaliser un workflow avec des cycles ?
    Bonjour,

    reprenant un projet utilisant le moteur de workflow jboss jbpm avec un serveur tomcat, je souhaite mettre en place un workflow comportant des cycles (i.e. que des états pourraient être parcourus à plusieurs reprises par un process).
    Exemple de cycle souhaité (fichier processdefinition.xml):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <process-definition name="ProcessLitige">
    ...
    <task-node name="Enregistrer la réponse du fournisseur">
          ...
          <transition name="Prise de décision" to="Prise de décision"></transition>
          <transition name="Relancer le fournisseur" to="Relancer le fournisseur"></transition>
       </task-node>
       ...
       <task-node name="Relancer le fournisseur">
          ...
          <transition name="Enregistrer la réponse du fournisseur" to="Enregistrer la réponse du fournisseur"></transition>
       </task-node>
    </process-definition>
    Pas d'erreur à l'exécution, mais la transition vers un état déjà emprunté ne s'effectue pas (ici de "relancer le fournisseur" vers "enregistrer la réponse du fournisseur" qui est l'état appelant). Il y a-t-il un fichier de configuration qui puisse permettre des retours en arrière dans le workflow ? Sinon, l'utilisation de sous-process peut-elle résoudre le problème ? (si oui, comment définit-on un sous process ?). Je n'ai pas l'impression de vouloir faire quelque chose d'extra-ordinaire, mais je ne trouve pas de documentation là-dessus.

    D'avance merci pour vos réponses.

    Eric

  2. #2
    ndp
    ndp est déconnecté
    Membre actif Avatar de ndp
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 227
    Points : 255
    Points
    255
    Par défaut
    Salut,

    normalement, cela ne cause aucun soucis. Ce n'est pas parce qu'un noeud a ete emprunte, que tu ne peux plus l'emprunter a nouveau.

    Comment test-tu ta definition de process?

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Avril 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Merci d'avoir répondu aussi rapidement.

    Citation Envoyé par ndp
    normalement, cela ne cause aucun soucis
    Bonne nouvelle.

    Je teste ma définition en lancant l'application. S'il y a d'autres moyens de la tester, je suis preneur. (Je peux te passer un fichier de définition de process qui pose problème sinon).

    Si Jboss Jbpm supporte normalement ces boucles et que ma définition de process est bonne, je vais chercher ce qui peut empêcher de les emprunter.

    Eric

  4. #4
    ndp
    ndp est déconnecté
    Membre actif Avatar de ndp
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 227
    Points : 255
    Points
    255
    Par défaut
    Dans la distribution de jbpm, regardes dans les exemples, les test unitaires. Tu verras du code comme ca:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(
          "<process-definition name='the baby process'>...."); 
    ProcessInstance processInstance = 
            new ProcessInstance(processDefinition);
    Token token = processInstance.getRootToken();
    token.signal();
    assertSame(processDefinition.getNode("t"), token.getNode());
    ...
    C'est tres pratique pour tester la definition de ton processus.

  5. #5
    ndp
    ndp est déconnecté
    Membre actif Avatar de ndp
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 227
    Points : 255
    Points
    255
    Par défaut
    Plus pratique, pour parser un fichier:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    JpdlXmlReader jpdlReader = new JpdlXmlReader( reader); 
    jpdlReader.readProcessDefinition();

  6. #6
    Nouveau Candidat au Club
    Inscrit en
    Avril 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Je vais essayer ça demain pour valider mon fichier de définition du workflow. Je te tiendrai au courant.
    Merci.

  7. #7
    Nouveau Candidat au Club
    Inscrit en
    Avril 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    J'ai testé, mon workflow est bon.

    J'ai aussi trouvé l'erreur:
    La demande de prise d’une transition menant à un état déjà emprunté dans le workflow n’est, du point de vue de l’utilisateur, pas effectuée et le dossier reste dans l’état de départ.
    En réalité, l’étude des logs et des exécutions pas à pas ont montré que la transition est effectuée mais que la tâche associée au nouvel état est aussi déclarée terminée, entraînant la prise de la transition par défaut au niveau de cet état. Lors du commit à la fin de la transaction, l’ordonnancement de ces deux transitions conduit à un deadlock (Erreur MySQL 1205). La transaction n’est alors pas effectuée (roll back) et le dossier reste dans l’état précédent.


    Problème résolu donc.

Discussions similaires

  1. Comment réaliser une barre avec des cases
    Par grunk dans le forum Android
    Réponses: 7
    Dernier message: 16/08/2011, 17h08
  2. [C#] Comment créer un AVI avec des BMP ou JPG ?
    Par sremy dans le forum Contribuez
    Réponses: 16
    Dernier message: 09/12/2009, 15h39
  3. [PHP-JS] Comment créer une boucle avec des headers
    Par djinnwatcher dans le forum Langage
    Réponses: 10
    Dernier message: 17/07/2006, 15h48
  4. Réponses: 19
    Dernier message: 06/07/2006, 15h35
  5. Réponses: 69
    Dernier message: 15/06/2006, 11h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo