Question

Dis, je fais construire une application de gestion des processus d'affaires. Il a les entités suivantes: problèmes et tâches, liées les unes aux autres que 1 à cause de nombreuses tâches. Les deux, la tâche et question, ont leurs propres états et l'état d'un facteur peut influencer l'état d'un autre.

Par exemple, les deux ont « annulé » et « Terminé » états. Quand je change l'état de la question à « Annulée », toutes ses tâches devrait devenir « Annulée ». Quand je change l'état de toutes les tâches à « Terminé », la question devrait devenir automatiquement « Terminé ».

En supposant qu'il ya un bon nombre d'Etats pour les deux entités et la logique des transitions d'un état à l'autre et la dépendance des Etats peuvent changer, ce qu'il ya des modèles de conception et / ou meilleures pratiques pour gérer cette situation?

Était-ce utile?

La solution

Le modèle de conception qui saute à l'esprit est une « règle »; -)

Ou, si vous préférez, un motif de commande

En d'autres termes, pour des situations comme cela, je créer une table de base de données recensant les états et les transitions acceptables, et associer une action à chaque transition (utilisant la réflexion)

Je l'ai trouvé cela être utile pour traiter les cas où l'action de transition est plus complexe que la mise à jour que les statuts pour correspondre.

Par exemple, dans un système que nous avions un flux de travail où un document de demande devait passer par plusieurs stations d'examen du comité, dont chacune pourrait rejeter ou de transmettre le document à l'étape suivante, plus procesing sur mesure des effets secondaires. L'organisation du comité, les structures de traitement, et les actions de traitement ont considérablement changé trois fois au cours du développement , et cinq fois dans la première année de déploiement.

Autres conseils

Je préfère le modèle d'observateur pour ce genre de chose: http://en.wikipedia.org/ wiki / Observer_pattern Dans l'exemple que vous avez donné, je l'aurais des tâches observer leur problème et les questions observent leurs tâches. Lorsqu'une question est marquée annulée, les tâches et voir marquer eux-mêmes annulés. Lorsqu'une tâche est marquée comme étant effectuée, la question qu'il voit et vérifie si les autres tâches sont terminées, etc.

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