Comment devrais-je modéliser un worflow de statut / activités? (Règles comme «Si 3, allez à 4, si 4 vont à 5» etc.)

dba.stackexchange https://dba.stackexchange.com/questions/29277

Question

J'essaie de modéliser un flux de travail (statut et activités) pour créer des "règles".

Laisse moi te donner un exemple.

Le principal "objet" disons "les exigences du véhicule", j'aurai ce tableau:

idRequirement, idVehicle,DateOfRequirement, idStatus, LastUpdate
1                2       2012-01-02 10:20:00, 1     ,2012-01-02 10:20:00

Dans l'exemple ci-dessus, lorsque le registre vient d'être créé, la date de remise en forme et la darnance est la même, LastUpdate, elle sera mise à jour après chaque changement de statut.

Tableau de statut

 idStatus,Status
 1         New
 2         Vehicle Assigned
 3         Closed

Table des activités

 idActivitie, Activitie
 1            Create Vehicle Requirement
 2            Assign Vehicle
 3            Close requirement.
 4            ReAssign Vehicle.
 5            Confirm

Jusqu'à ce que les tables ci-dessus, je n'ai aucun problème, mais mon problème est que par exemple:

Je sais que je ne peux pas fermer une exigence (mise à jour vers idstatus = 3 sur "Exigences du véhicule") si l'état actuel n'est pas "Véhicule attribué" (idstatus = 2).

Je peux le faire par code (ou je pense que oui), mais y a-t-il quand même pour modéliser ce type de règles aux tables? Je veux dire un tableau où je récupére le prochain idstatus et l'activité pour effectuer (pour sauver un "kardex / historique" de chaque exigence et ses activités), en vérifiant par exemple l'activité ou l'état actuel?

Les règles auront également 3 "alertes" selon l'heure et le statut. Par exemple, le temps de limite "vert" pour attribuer un véhicule est de 30 minutes ou moins l'alerte jaune, elle sera comprise entre 31 et 45 après la création de l'exigence (statut neuf) et l'alerte rouge, il le montrera après 45 dans le statut "nouveau"

   idRequirement,Vehicle,CurrentStatus,NextStatus,       Alert
       1         N/A      New          Vehicle Assigned  Green

Après 39 minutes, ce sera quelque chose comme ceci:

   idRequirement,Vehicle,CurrentStatus,NextStatus,       Alert
       1         N/A      New          Vehicle Assigned  Yellow

Et après 45 minutes:

   idRequirement,Vehicle,CurrentStatus,NextStatus,       Alert
       1         N/A      New          Vehicle Assigned  Red

S'il n'y a pas assez clair, dites-moi d'essayer de mieux expliquer.

En attendant, j'ai juste besoin d'un seul "flux de travail", je veux dire, toujours l'ordre, ce sera idstatus = 1, après cela idstatus = 2 et Aftear idstatus = 3, mais si vous voulez m'aider à considérer les cas comme aller à idstatus = 3 Après idstatus = 1, je serai vraiment reconnaissant.

Une idée (probablement mauvaise) que j'avais:

Règles de table:

idRule   Name      idCurrentState  idNextState  idActivitieToPerform  GreenLimit  YelloLimit 
1        Assign            1             2           1                  30          45     
2        CloseFromNew      1             3           3                  30          90
3        ChangeVehicle     2             2           4                  45          90
4        CloseRequirement  2             3           3                  90          120
5        ConfirmVehicle    2             2           5                  30          90

Mais j'ai beaucoup de problèmes à cause du "idCurrentState" et "IdNextState" fait référence à la même clé principale sur le tableau d'état. Mes salutations et merci pour votre temps.

Mises à jour:

  • Supprimer "redlimit" (comme Kevin Feasel mentionné (et je comprends quelques heures après le poste, c'est implicite))
  • Ajoutez des règles pour laisser l'échantillon plus clair:

    • De près
    • Changer de véhicule
    • Quasi-émission
  • Ajouter l'activité "réaffecter le véhicule"

À envisager:

  • Je suis sûr à 99% qu'il n'y a que 3 "couleurs" (nous ne pouvons donc pas ignorer les relations avec les couleurs et toute autre table comme statut / activités).

  • Différentes activités dérivent du même statut (ChangeVeHile et confirment) (Activités de la mulique)

  • Différentes activités dans un statut différent dérivent du même statut (pas de flux de travail linéaire)

  • Pas de flux de travail linéaire

    • "CloseFromNew" Effectuer "Fermer" Activité et définir le statut pour "fermer" à partir du statut "Nouveau", tout comme "CloseRequiment" Définissez le statut "Fermé" mais à partir du statut "Véhicule attribué"

Bien basé sur les commentaires de Kevin Feasel, Je prolonge simplement mon échantillon / problème (après le texte "Mise à jour", expliquez les contraintes que je dois accomplir)

Mes salutations encore!

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
Non affilié à dba.stackexchange
scroll top