Salut,
J'ai besoin de mettre en place un moteur de workflow générique contenant des traitements différents selon nos clients. Le but est d'avoir une application générique avec le moins de mise à jour possible et de traiter le spécifique dans une application tierce. Ainsi, la maintenance s'occupera uniquement de l'application tierce et pas du tout du moteur de workflow.
Ma réflexion est la suivante :
1. création d'un moteur de workflow standard
2. dans la définition des cycles de vie, on place des actions spécifiques pour chaque client
3. le moteur de workflow transmet ces actions à un gestionnaire de tâches (c'est l'application tierce citée plus haut)
4. le gestionnaire de tâches lits l'action, l'interprète et l'exécute
Je pense que ce système est bon, j'ai juste un souci d'implémentation. J'ai mis en place le moteur de workflow avec les actions, je me pose des questions sur le gestionnaire de tâches : comment faire communiquer le gestionnaire avec le moteur ? comment passer les actions à traiter ? comment interpréter les actions ?
Mon idée :
- le gestionnaire de tâches contient 1 premier thread qui lit en boucle une file d'attente de traitements
- le gestionnaire ouvre ensuite un socket pour communiquer avec le moteur de workflow
- pour transmettre ses actions, le moteur ouvre une connexion au gestionnaire via la socket, transmet une String équivalent à l'action à traiter
- le gestionnaire récupère la connexion, lance un second socket qui se charge d'ajouter l'action dans la file d'attente
- le thread de file d'attente lit l'action, inteprète le String et l'exécute. Le String serait un truc du genre "com.client.EnvoiMail".
Ca fait pas trop usine à gaz mon truc ? Mais en même temps, je ne vois pas d'autres solutions.
Je peux avoir qq avis ?
Merci bien.
Partager