2011-03-12 5 views
0

Salut: Je travaille avec un système de publication de tâches.à la recherche d'un modèle de modélisation

Dans le système, il y a un ministère , par exemple: développer/vendre/produit, etc

Certaines tâches appartiennent à différents départements.

Et le modèle le plus important: l'utilisateur.

Les personnes qui utilisent ce système ne sont que les patrons des différents départements et leur patron (le plus grand patron)).

Ces personnes travaillent toutes dans la page d'administration, le chef commun peut seulement publier et voir les tâches dans son département. Il/elle peut ajouter/supprimer/modifier la tâche (où la modification signifie qu'il peut définir le statut de la tâche: DONE/DOING/NOT START), toute son opération doit être vérifiée par le plus grand boss.

Le plus grand patron peut voir/ajouter/supprimer/modifier toutes les tâches de tout le département, aussi il/elle peut ajouter supprimer utilisateur (le patron commun), définir la permission de l'utilisateur (tâches dont département l'utilisateur peut voir).

=================== Ce qui suit est ma propre conception:

Department 
    String name;//name of this department 

    List<Task> listAllTasks();// list all tasks belong to this department 

Task 
    String name; 
    String desc;//description of this task 
    Date startTime;//when this task will start 
    Date endTime; 
    int status; //is this task done? doing? not starting? 
    String executorName; //the name of the person who will responsible for this task(here the person does not need to be common boss,just a name). 
    Department depart;//which department does this task belong to ? 

Boss 
    String loginName; 
    String realName; 
    String password; 
    Department depart;//which department does this boss belong to ? 

Ce qui précède est tout mon idée, je ne sais pas à continuer à faire la conception de l'autorité. Par exemple, que diriez-vous du plus grand patron, bien sûr il/elle n'appartient à aucun département, mais il a la plus grande autorité.

Quelqu'un peut me faire une faveur? Par ailleurs, j'utiliserai le hibernate comme DAO et le struts2 comme contrôleur Web.

Répondre

1

Remplacez votre classe Boss par Person puis ajoutez @ManyToOnePerson superior (en supposant que chaque employé a un seul supérieur ci-dessus).

@ManyToManyList<Person> superiorList=new ArrayList<Person>() s'il y a plus d'un supérieur pour chaque employé;

Si une personne est un boos (l'autorité la plus élevée dans l'arborescence de l'organisation), superior ou superiorList sera vide.

Pour les rôles

Créer une classe de rôle

Role 
@OneToMany List<Task> taskList = new ArrayList<Task>(); 
role_code 

mis plusieurs à un rôle dans la classe personne si l'on peut confier à un seul rôle

@ManyToOne Role role 

ou

@ManyToMany List<Role> roleList 

si un par fils peut être attribué de nombreux rôles.

+0

comment contrôler l'autorité de l'utilisateur? Par exemple, quand un patron commun login, je dois énumérer toutes les tâches dont il a la permission, comment faire? – hguser

+0

Merci de votre attention. Pouvez-vous le faire en utilisant la configuration xml? Je n'utilise jamais et "déteste" l'annotation .. :( – hguser

+0

Je suis vraiment désolé, l'écriture de cartographie hibernate xml est hors de mon domaine d'expertise maintenant.Si vous n'avez pas besoin de problèmes de compatibilité à l'adresse, je recommande vraiment de utiliser l'implémentation et l'annotation de JPA-Hibernate, c'est beaucoup plus simple et plus simple. – zawhtut