Automate pour controler commande en java
Résolu
P456
-
P456 -
P456 -
Bonjour,
je doit faire la gestion d'une commande et le type d'une commande peut etres :
//Créer
// Livrer
//Annuler
//Bloquer
//EnCoreDeTraitement
bien sure on ne peut pas annuler si son etat n'est pas crée et ainsi de suite il me semble comme un automate et je veux le faire en java mais à l'aide d'un automate bon j ai besoin d'un exemple et si qlq à une autre idée comment peux je faire ca ??????
je doit faire la gestion d'une commande et le type d'une commande peut etres :
//Créer
// Livrer
//Annuler
//Bloquer
//EnCoreDeTraitement
bien sure on ne peut pas annuler si son etat n'est pas crée et ainsi de suite il me semble comme un automate et je veux le faire en java mais à l'aide d'un automate bon j ai besoin d'un exemple et si qlq à une autre idée comment peux je faire ca ??????
A voir également:
- Automate pour controler commande en java
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel - Télécharger - Jeux vidéo
- Invite de commande - Guide
- Commande terminal mac - Guide
- Eclipse java - Télécharger - Langages
1 réponse
Pourquoi faire ça avec un automate !?
Il te suffit de suivre l'évolution de ta commande avec un enum par exemple...
Et si tu enfreint tes propres règles, par exemple annuler alors que la commande n'est pas à l'état Creer, tu génères une exception que tu récupéreras au bon moment.
La confiance n'exclut pas le contrôle
Il te suffit de suivre l'évolution de ta commande avec un enum par exemple...
Et si tu enfreint tes propres règles, par exemple annuler alors que la commande n'est pas à l'état Creer, tu génères une exception que tu récupéreras au bon moment.
public class Commande { protected class EtatException extends Exception { private static final long serialVersionUID = 1L; } protected enum Etat {Creer, Livrer, Annuler, Bloquer, Traiter}; private Etat etat = null; public void annuler() throws EtatException { if (etat==Etat.Creer) { etat=Etat.Annuler; } else { throw new EtatException(); } } }
La confiance n'exclut pas le contrôle
en fait j'ai pensé de le faire avec automate car dans mon application l'admin peut choisir une commande puis modifier son etat via une liste déroulant donc j é pensé à un automate si etat d'une commande est créer et l'etat choisi par l'admin est annuler alors on accepte le changement d'etat si par exemple une commande livrée alors on ne peut ps l'annuler et ainsi de suite .
Dans mon exemple de code, ma méthode annuler est l'évènement qui déclenche la transition de l'état Creer à l'état Annuler. Donc finalement l'automate je l'ai respecté dans mon code.
En effet, si on choisi d'annuler on lance la méthode annuler, si l'état est Creer alors on passe à l'état Annuler, sinon on a une erreur (qu'il faudra indiquer à l'admin).
Remarque : plutôt que de créer une erreur car l'admin aura annulé alors qu'il ne le pouvait pas, tu peux créer une méthode qui te renvoie la liste des actions possibles (des états à atteindre) à partir de ton état, ainsi ton admin ne pourra pas annuler si la commande est déjà Livrer car c'est une action qu'il n'aura pas sur son écran vu que tu auras préalablement consulté les transitions acceptables grâce à ton automate.
Donc l'automate c'est sur le papier (ou alors un joli diagramme UML) mais quand on code en Java, sur la machine c'est avec ce genre de code qu'on travaille.
je vais chercher comment je peux intégrer ca dans mon code car dans la base de donnée j 'ai mis etat comme String et aprés mapping et genération des classe alors il est mentionné comme String je sé ps si ca va inflencer ce que j'ai déja fait .
d'autre part je suis un peu bloquer car j'ai fait les fonction DAO (hibernate+spring) et je sé ps exactement ou je peux mis ca class java ; DAO ; service :( est ce que tu as une idée merci d'avance
Pour le reste c'est du J2EE et je n'en sais rien ! Moi le J2SE me suffit ;-)