Skip to Content.
Sympa Menu

grouper-users - Re: [grouper-users] RE: Group Member Filter with composite groups

Subject: Grouper Users - Open Discussion List

List archive

Re: [grouper-users] RE: Group Member Filter with composite groups


Chronological Thread 
  • From: Tom Barton <>
  • To: Paul Gazda <>
  • Cc: Chris Hyzer <>, Grouper Users Mailing List <>
  • Subject: Re: [grouper-users] RE: Group Member Filter with composite groups
  • Date: Tue, 07 Apr 2009 22:00:08 -0500

Paul,

Thanks. Your usage of complements is indeed typical and is exactly the sort of purpose which motivated us to implement composite groups.

However, I remain leery of overloading the direct and indirect membership concepts to extend them to composites, because composites are really a different type of object (more like dynamic groups). We have in fact had to reinforce that distinction within the API in the past in order to maintain consistency of those concepts for ordinary groups, ie, whose memberships are specifically listed.

The API and Grouper Web Services do allow you to code a client to know when a group whose membership you're querying is a composite, and to retrieve the left and right factor group info if so. So there is good support for you to code your client to work as you describe without requiring grouper to treat all memberships as direct or indirect. The grouper UI is an example of a client that deals with groups in this way.

I appreciate the excellent feedback you've been providing us as you develop your implementation. Please keep it coming! It really helps us to improve the toolkit.

Tom

Paul Gazda wrote:
Tom,
We are developing a design in which all of our top level groups will
be composite groups with a type of COMPLEMENT so that we can define
the basic membership in the left group and have the option of
excluding individuals or sub-groups in the right group.

Some of the left groups may include large sub-groups such as a large
department or all students or all staff, etc. Querying for members in
those cases can result in thousands of individuals. We would like to
be able to use the immediate concept so that we can just return the
sub-group as a single entry instead of all of the individuals.

Regarding your question, "if in your example Group B is also a
composite, should the members of its factors be direct or indirect
relative to Group A?." In my view, the members of its factors should
be indirect relative to Group A because Group B is the specified
member of Group A. The members of its factors would be returned if I
queried for "All" members.

Paul


-----Original Message-----
From: Tom Barton [mailto:] Sent: Tuesday, April 07, 2009 9:56 AM
To: Paul Gazda
Cc: Chris Hyzer; Grouper Users Mailing List
Subject: Re: [grouper-users] RE: Group Member Filter with composite groups

Paul,

You've clearly stated how you want the interface to work, but I'm wondering what that will help you to do. Can you shed light on the scenario in which this would play a part?

I ask in part because composites are unlike groups-with-members in many ways. They're closer in spirit to dynamic groups, for which directness vs indirectness of membership isn't really material. For example, if in your example Group B is also a composite, should the members of its factors be direct or indirect relative to Group A?

Thanks,
Tom

Paul Gazda wrote:
I would like have the immediate concept work for composite groups. For example, if I have:

Group A - a composite group with a composite type of COMPLEMENT

Group A-Left - the left member

Group A-Right - the right member


Group A-Left contains Group B and individual C

Group A-Right contains individual D


Group B contains individual D and individual E


If I use getMembersWs with --memberFilter=Immediate, I would expect to get Group B and individual C as the result.

If I use getMembersWs with --memberFilter=All, I would expect to get Group B and individual C and individual E as the result.


Does that make sense?


Paul Gazda


------------------------------------------------------------------------

*From:* Chris Hyzer
[mailto:]
*Sent:* Tuesday, April 07, 2009 8:44 AM
*To:* Paul Gazda; Grouper Users Mailing List
*Subject:* RE: Group Member Filter with composite groups


OK, I changed the doc in CVS so it says complement instead of minus.

Also, yes, for composite groups, All = Composite, and Effective/Immediate will not return anything


These web service operations are just exposing API methods, though Im not sure they are entirely useful. What are you trying to do?


Thanks,

Chris


*From:* Paul Gazda
[mailto:]
*Sent:* Tuesday, April 07, 2009 11:37 AM
*To:* Chris Hyzer; Grouper Users Mailing List
*Subject:* RE: Group Member Filter with composite groups


Thanks for the quick reply. First, a comment on the doc. I think that for consistency, the reference to composite operators "composite operator (union, intersection, minus)" should be the same as those in the WsGroupDetail bean that sets the values (UNION, COMPLEMENT, INTERSECTION).


But I'm still confused as to how this should work. From your revised doc and the results of my testing, I am concluding that for composite groups:

1. "All" and "Composite" will always return the same result.
2. "Effective" and "Immediate" will never return anything.


Is that correct?


Paul Gazda


------------------------------------------------------------------------

*From:* Chris Hyzer
[mailto:]
*Sent:* Monday, April 06, 2009 8:31 PM
*To:* Paul Gazda; Grouper Users Mailing List
*Subject:* RE: Group Member Filter with composite groups


Sorry, I think the javadoc is the culprit, this is what I updated it to in CVS. Shilen, let me know if there is a better (or more accurate) way to phrase it.

Paul, let me know if you need anything else.


Thanks,

Chris


/** retrieve all members (immediate, effective and composite) */

/All/,


/** retrieve members which exist due a group as a member of another group */

/Effective/,


/** return only direct members of a group */

/Immediate/,


/**

* if this is a composite group, then return all the memberships that match the

* composite operator (union, intersection, minus)

*/

/Composite/;



*From:* Paul Gazda
[mailto:]
*Sent:* Monday, April 06, 2009 8:17 PM
*To:* Grouper Users Mailing List
*Subject:* [grouper-users] Group Member Filter with composite groups


I am getting unexpected results with GrouperClient 1.4.1 when using the memberFilter with getMembersWs. This is what the javadoc for WsMemberFilter says in the Enum Constant Summary:

All
retrieve all members (immediate and effective)

Composite
if this is a composite group, then return the two groups which make up the composition (and the group math operator (union, minus, etc)

Effective
retrieve non direct (non immediate) members

Immediate
return only direct members, not indirect


I set up a simple composite group with a COMPLEMENT structure like this:


ENT:pag4 (Composite group with compositeType of COMPLEMENT)


INC:pag4 (leftGroup with these subject Ids as members):

d9...

27...

72...


EXC:pag4 (rightGroup with these subject Ids as members):

72...


When I query --operation=getMembersWs --groupNames=ENT:pag4 --memberFilter=All, the result is as expected:

d9...

27...


When I query --operation=getMembersWs --groupNames=ENT:pag4 --memberFilter=Composite, I would expect to get the uuids for INC:pag4 and EXC:pag4 and the math operator COMPLEMENT, but I get the exact same result as above:

d9...

27...


When I query --operation=getMembersWs --groupNames=ENT:pag4 --memberFilter=Effective, I would expect to get the same results as "All", but I get nothing.


I have set up more complicated structures where the composite members reference other composite groups, and what stands out is that no matter what combinations I have, I always get no results for either --memberFilter=Effective and --memberFilter=Immediate. Based on the javadoc, I would expect that at least one of those filters would return something.


Am I not understanding how this is supposed to work, or is there a bug?


Paul Gazda







Archive powered by MHonArc 2.6.16.

Top of Page