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: Paul Gazda <>
  • To: Tom Barton <>
  • Cc: Chris Hyzer <>, Grouper Users Mailing List <>
  • Subject: RE: [grouper-users] RE: Group Member Filter with composite groups
  • Date: Wed, 8 Apr 2009 07:20:12 -0700
  • Accept-language: en-US
  • Acceptlanguage: en-US

Tom,
Thanks for considering my proposal. I don't fully grasp the reasons you do
not want to extend the direct/indirect concepts to composite groups, but I'm
sure they are well founded. I can implement your recommendation of inspecting
the membership of the left and right composite members pretty easily. Thanks
for your help.

Paul Gazda

-----Original Message-----
From: Tom Barton
[mailto:]

Sent: Tuesday, April 07, 2009 8:00 PM
To: Paul Gazda
Cc: Chris Hyzer; Grouper Users Mailing List
Subject: Re: [grouper-users] RE: Group Member Filter with composite groups

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