Why does my managed fragment appear to no one when I use the AND operator in DLM GroupMembershipEvaluatorFactory configuration?

Submitted: July 30, 2008
Why does my managed fragment appear to no one when I use the AND operator in DLM GroupMembershipEvaluatorFactory configuration?

I've declared a DLM managed fragment in dlm.xml like this:


<dlm:fragment name='GroupAndTest' ownerID='pTest-lo' precedence='70'>
  <dlm:audience evaluatorFactory='org.jasig.portal.layout.dlm.providers.GroupMembershipEvaluatorFactory'>
    <paren mode="AND">     
      <attribute mode='deepMemberOf' name='geologyStudents'/>
      <paren mode="OR">
        <attribute mode='deepMemberOf' name='geologyFaculty'/>
        <paren mode="OR">
          <attribute mode='deepMemberOf' name='geologyStaff'/>
        </paren>
      </paren>
    </paren>
  </dlm:audience>
</dlm:fragment>

But when I log in as a user that is a member of the 'geologyStudents', I don't see it. What's going on? This fragment doesn't seem to show up for any users?

Conceptually, for what audience would you like the GroupAndTest fragment to show up? What business rule for presentation of this tab are you looking to implement?

The audience of the fragment as configured is:

AND( deepMemberOf( 'geologyStudents'), OR( deepMemberOf('geologyFaculty'), OR( deepMemberOf('geologyStaff') ) )

which reduces to

AND( deepMemberOf( 'geologyStudents'), OR( deepMemberOf('geologyFaculty'), deepMemberOf('geologyStaff') )

which translates to:

The audience is those users who are members of the group geologyStudents AND are also members of either geologyFaculty or geologyStaff.

So when you say that the fragment appears for no users, are you testing it with a user that is a member of geologyStudents and is also a member of at least one of geologyFaculty or geologyStaff?

The 'AND' paren mode implements a logical AND, such that users must meet all of the ANDed conditions in order to be considered part of the audience.