Probleme avec un filtre dans une policy

Aller en bas

Probleme avec un filtre dans une policy

Message  Francois Birot le Mar 9 Déc - 16:02

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":
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
J'essaye d'afficher l'objet en question, qui utilise ma policy:
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
Je vérifie que l'objet utilise bien la policy "AA CI" et que le current state est Released:
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
je verifie les droits d'acces definis pour le role "MRH90 CM Reader" pour le state 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
Je passe l'objet dans un autre state ayant les memes droits d'acces definis pour ce role:
Code:
MQL<112>demote bus "Hardware CI" S000N3017051 A;
BusinessObject Hardware CI S000N3017051 A successfully demoted to state Authorised
J'essaye maintenant d'afficher l'objet et je verifie que les droits d'acces sont bien les meme pour ce state:
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
Je supprime le filtre pour le role "MRH90 CM Reader" pour le state qui pose probleme (Released) et je promote l'objet a ce state:
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
J'essaye maintenant de nouveau d'afficher l'objet (cette fois ca marche) et je reverifie les droits d'acces:
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] =
Je verifie maintenant que le filtre definis renvoi bien "true" pour le user "MRH90 CM Reader" avec l'objet dans le state Released:
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
Débutant

Nombre de messages : 41
Date d'inscription : 04/09/2008

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Probleme avec un filtre dans une policy

Message  Francois Birot le Mar 9 Déc - 20:11

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.

Francois Birot
Débutant
Débutant

Nombre de messages : 41
Date d'inscription : 04/09/2008

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Probleme avec un filtre dans une policy

Message  rudbg le Mer 10 Déc - 5:43

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
Code:
'to[Feature List To].from.name match "*test*" && to[Feature List To].from.attribute[att1].value match "A FAIRE"'
qui te ramène un résultat si tru as deux relations et que chacune des relations réponds à un filtre... Du coup tu arrive à avoir des cas très "drôle".

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.

_________________
Rudy

rudbg
Admin

Nombre de messages : 99
Age : 38
Localisation : Bordeaux
Date d'inscription : 21/09/2007

Voir le profil de l'utilisateur http://assistance-enovia.forumpro.fr

Revenir en haut Aller en bas

Re: Probleme avec un filtre dans une policy

Message  Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum