...
Code Block |
---|
2010-08-21 15:24:13,032: [main] INFO RuleEngine.fireRule(248) - Rules engine processing rulesBean: group: stem:b, membership: Membership[createTime=1282418648019,creatorUuid=8b10ad84a2ab4e4d912aeca154866bbc,depth=0,listName=members,listType=list, memberUuid=ddbbbb1615964f109e4b5f85c05098f7,groupId=291dbf3b736e42de9985a70e2ac11177,type=immediate, uuid=4f249fd2636247a78158fc358aa58a32:bb46e541e12049618c199e162056e715], subject: Subject id: test.subject.0, sourceId: jdbc, , found 1 matching rule definitions, ruleDefinition should fire: attributeAssignTypeId: 446bb6b3bbd8417b9a3e386b3bc894c1, sourceId: g:isa, subjectId: GrouperSystem, checkOwnerName: stem:b, checkType: membershipRemove, ifConditionEnum: thisGroupHasImmediateEnabledMembership, thenEl: ${ruleUtils.removeMemberFromGroupId(ownerGroupId, memberId)}, , EL variables: membershipId(4f249fd2636247a78158fc358aa58a32:bb46e541e12049618c199e162056e715),groupId(291dbf3b736e42de9985a70e2ac11177), groupName(stem:b),ruleUtils,ownerGroupId(b38004ccf99d44f08f5a0971153ad6a9),subjectId(test.subject.0),memberId(ddbbbb1615964f109e4b5f85c05098f7), checkOwnerName(stem:b),sourceId(jdbc),, elResult: true, shouldFire count: 1 |
Custom EL classes
You can configure custom EL classes to help with logic you need if not in the Grouper API. Here is an example:
Code Block |
---|
# put in fully qualified classes to add to the EL context. Note that they need a default constructor
# comma separated. The alias will be the simple class name without a first cap.
# e.g. if the class is test.Test the alias is "test"
rules.customElClasses = edu.internet2.middleware.grouper.rules.MyRuleUtils
|
Make a class:
Code Block |
---|
/**
* @author mchyzer
* $Id: MyRuleUtils.java 6947 2010-08-23 15:33:36Z mchyzer $
*/
package edu.internet2.middleware.grouper.rules;
import org.apache.commons.logging.Log;
import edu.internet2.middleware.grouper.Group;
import edu.internet2.middleware.grouper.GroupFinder;
import edu.internet2.middleware.grouper.GrouperSession;
import edu.internet2.middleware.grouper.Member;
import edu.internet2.middleware.grouper.MemberFinder;
import edu.internet2.middleware.grouper.util.GrouperUtil;
/**
*
*/
public class MyRuleUtils {
/**
* remove a member of a group
* @param groupId
* @param memberId
* @return true if removed, false if not
*/
public static boolean removeMemberFromGroupId(String groupId, String memberId) {
if (LOG.isDebugEnabled()) {
LOG.debug("Removing member: " + memberId + ", from group: " + groupId);
}
Group group = GroupFinder.findByUuid(GrouperSession.staticGrouperSession(), groupId, true);
Member member = MemberFinder.findByUuid(GrouperSession.startRootSession(), memberId, true);
boolean result = group.deleteMember(member, false);
if (LOG.isDebugEnabled()) {
LOG.debug("Removing subject: " + member.getSubjectId()
+ ", from group: " + group.getName() + ", result: " + result);
}
return result;
}
/** logger */
private static final Log LOG = GrouperUtil.getLog(MyRuleUtils.class);
}
|
Use that in an EL:
Code Block |
---|
attributeAssign.getAttributeValueDelegate().assignValue(
RuleUtils.ruleThenElName(),
"${myRuleUtils.removeMemberFromGroupId(ownerGroupId, memberId)}");
|
sdf