Probleme avec un filtre dans une policy
2 participants
Page 1 sur 1
Probleme avec un filtre dans une policy
J'ai définis quelques filtres (tous les memes) pour différents states d'une policy pour un role donné. J'ai donc ensuite essayé d'afficher un Objet ayant cette policy a partir de MQL mais bizarrement je ne peux afficher l'objet que lorsqu'il est dans certain states (alors que les states definissent les meme filtres pour les memes groupes).
Je me loggue avec le user en question et je verifie qu'il a bien le role "MRH90 CM Reader":
La j'avoue que je n'ai aucune idée de la ou ca peut venir. Si quelqu'un a une idée, pense que je devrai tester d'autres chose, ou meme ne comprend pas pourquoi cela ne marche pas (tout comme moi), qu'il n'hesite pas a repondre a ce post ;-) Merci
Je me loggue avec le user en question et je verifie qu'il a bien le role "MRH90 CM Reader":
- Code:
MQL<105>set context user "MRH90_CM Reader_9";
Context successfully set
MQL<106>print person "MRH90_CM Reader_9" select assignment;
person MRH90_CM Reader_9
assignment = Design Engineer
assignment = Employee
assignment = Project User
assignment = MRH90 CM Reader
assignment = MRH90 Developer
- Code:
MQL<107>print bus "Hardware CI" S000N3017051 A select name policy current;
Error: #1900068: print business object failed
Error: #1500572: BusinessObject Hardware CI S000N3017051 A does not exist
- Code:
MQL<108>set context user creator;
Context successfully set
MQL<109>print bus "Hardware CI" S000N3017051 A select name policy current;
business object Hardware CI S000N3017051 A
name = S000N3017051
policy = AA CI
current = Released
- Code:
MQL<110>print policy "AA CI" select state[Released].access[MRH90 CM Reader];
policy AA CI
state[Released].access[MRH90 CM Reader] = read,toconnect,todisconnect,show
MQL<111>print policy "AA CI" select state[Released].filter[MRH90 CM Reader];
policy AA CI
state[Released].filter[MRH90 CM Reader] = to[Feature List To].from.to[Feature List From].from.current.access[$ACCESS] ~~ true
- Code:
MQL<112>demote bus "Hardware CI" S000N3017051 A;
BusinessObject Hardware CI S000N3017051 A successfully demoted to state Authorised
- Code:
MQL<113>set context user "MRH90_CM Reader_9";
Context successfully set
MQL<114>print bus "Hardware CI" S000N3017051 A select name policy current;
business object Hardware CI S000N3017051 A
name = S000N3017051
policy = AA CI
current = Authorised
MQL<115>print policy "AA CI" select state[Authorised].access[MRH90 CM Reader];
policy AA CI
state[Authorised].access[MRH90 CM Reader] = read,toconnect,todisconnect,show
MQL<116>print policy "AA CI" select state[Authorised].filter[MRH90 CM Reader];
policy AA CI
state[Authorised].filter[MRH90 CM Reader] = to[Feature List To].from.to[Feature List From].from.current.access[$ACCESS] ~~ true
- Code:
MQL<117>set context user creator;
Context successfully set
MQL<118>modify policy "AA CI" state Released add user "MRH90 CM Reader" read,toconnect,todisconnect,show filter "";
Policy 'AA CI' successfully modified
MQL<119>promote bus "Hardware CI" S000N3017051 A;
BusinessObject Hardware CI S000N3017051 A successfully promoted to state Released
- Code:
MQL<120>set context user "MRH90_CM Reader_9";
Context successfully set
MQL<121>print bus "Hardware CI" S000N3017051 A select name policy current;
business object Hardware CI S000N3017051 A
name = S000N3017051
policy = AA CI
current = Released
MQL<122>print policy "AA CI" select state[Released].access[MRH90 CM Reader];
policy AA CI
state[Released].access[MRH90 CM Reader] = read,toconnect,todisconnect,show
MQL<123>print policy "AA CI" select state[Released].filter[MRH90 CM Reader];
policy AA CI
state[Released].filter[MRH90 CM Reader] =
- Code:
MQL<124>evaluate expr "to[Feature List To].from.to[Feature List From].from.current.access[$ACCESS] ~~ true" on bus "Hardware CI" S000N3017051 A;
TRUE
La j'avoue que je n'ai aucune idée de la ou ca peut venir. Si quelqu'un a une idée, pense que je devrai tester d'autres chose, ou meme ne comprend pas pourquoi cela ne marche pas (tout comme moi), qu'il n'hesite pas a repondre a ce post ;-) Merci
Francois Birot- Débutant
- Nombre de messages : 41
Date d'inscription : 04/09/2008
Re: Probleme avec un filtre dans une policy
Bon je crois maintenant savoir pourquoi j'obtiens des résultats aussi étranges. L'objet auquel j'essaye d'accéder est connecté a plusieurs autres objets. L'utilisateur "MRH90_CM Reader_9" a acces uniquement a certains d'entres eux. Or mon filtre spécifie que le role "MRH90 CM Reader" a acces a l'objet si ce role a acces aux autres objets auquel il est connecté.
Je pensais que l'execution des filtres se faisait de telle sorte que tant que le filtre n'est pas égal a TRUE, on analyse les possibilités restantes et on renvoi FALSE si aucun résultat n'est égal a TRUE. Malheuresement cela n'a pas l'air d'etre le cas. Quelqu'un peut il me confirmer ca ? y a t il un moyen d'indiquer qu'on souhaite tester chacune des possibilités et non pas s'arreter au premier FALSE ?
Les resultats differents en fonction des states sont donc peut etre du a un ordre different lors de l'execution du filtre : ce n'est pas la meme "branche" qui est testée en premier.
Je pensais que l'execution des filtres se faisait de telle sorte que tant que le filtre n'est pas égal a TRUE, on analyse les possibilités restantes et on renvoi FALSE si aucun résultat n'est égal a TRUE. Malheuresement cela n'a pas l'air d'etre le cas. Quelqu'un peut il me confirmer ca ? y a t il un moyen d'indiquer qu'on souhaite tester chacune des possibilités et non pas s'arreter au premier FALSE ?
Les resultats differents en fonction des states sont donc peut etre du a un ordre different lors de l'execution du filtre : ce n'est pas la meme "branche" qui est testée en premier.
Francois Birot- Débutant
- Nombre de messages : 41
Date d'inscription : 04/09/2008
Re: Probleme avec un filtre dans une policy
Je viens prendre connaissance de ta demande et ta réponse correspond à l'idée que j'avais.
Le fait de parcourir les relations pour vérifier les droits amène à ce genre d'erreur, j'ai déjà rencontrer ce cas lors de mes développements.
Dans le même genre tu as aussi les filtres de recherche du type
Pour revenir à ton besoin, peux-tu vérifier qui est au bout de ta demande avec
Dans le cas où tu vas bien vérifier les Père, je crains de devoir t'annoncer qu'il faut remplacer ton filtre "simple" par un programme JPO qui va pouvoir parcourir et traiter les relations afin de donner accès à l'objet si ton utilisateur à les droits sur au moins un des pères.
Le fait de parcourir les relations pour vérifier les droits amène à ce genre d'erreur, j'ai déjà rencontrer ce cas lors de mes développements.
Dans le même genre tu as aussi les filtres de recherche du type
- Code:
'to[Feature List To].from.name match "*test*" && to[Feature List To].from.attribute[att1].value match "A FAIRE"'
Pour revenir à ton besoin, peux-tu vérifier qui est au bout de ta demande avec
- Code:
evaluate expr "to[Feature List To].from.to[Feature List From].from.name" on bus "Hardware CI" S000N3017051 A;
Dans le cas où tu vas bien vérifier les Père, je crains de devoir t'annoncer qu'il faut remplacer ton filtre "simple" par un programme JPO qui va pouvoir parcourir et traiter les relations afin de donner accès à l'objet si ton utilisateur à les droits sur au moins un des pères.
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|