2017-09-22 12 views
0

J'étudie actuellement en utilisant OrientDB pour implémenter un système d'autorisation et j'ai quelques problèmes avec la notation de flèches d'arêtes.orientdb correspondant à plusieurs bords possibles

Le graphique a quatre différents types de sommets:

  • utilisateur
  • Groupe
  • Rôle
  • ressources

Et quatre différents types de bord:

  • IN_GROUP
  • HAS_ROLE
  • CAN_ACCESS
  • INHERITS

Et la structure est:

  • utilisateur -IN_GROUP-> Groupe
  • Groupe -HAS_ROLE-> Rôle
  • Rôle -CAN_ACCESS-> Ressource
  • Rôle -INHERITS-> Rôle

Un rôle peut hériter d'autres rôles. Cela signifie que le rôle A peut hériter du rôle B qui peut hériter du rôle C. Je souhaite créer une requête Orient qui peut indiquer «Pour un utilisateur spécifique, attribuez-moi tous leurs rôles, y compris ceux qu'ils héritent»

obtenir un rôle hérité des rôles que je fais cela, mais il ne récupère que le premier niveau de noeuds hérités: match {class:User, where:(name='Sean')} -IN_GROUP-> {class:Group} -HAS_ROLE-> {} -INHERITS-> {class:Role, as:role} return role.name

ce que je suis en train de récupérer est l'ensemble de la chaîne de nœuds que ce rôle initial hérite, quelqu'un peut me aider avec cela s'il vous plaît?

Répondre

0

ce que vous avez besoin ici est une condition while sur la relation INHERITS:

match 
    {class:User, where:(name='Sean')} -IN_GROUP-> 
    {class:Group} -HAS_ROLE-> {} -INHERITS-> {class:Role, as:role, while:(true)} 
return role.name