Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Boolean logic and wildcards are required

GroupTypeExpressionDescription
org:whatever:app:somePolicyref/basis groups as members(group.campus =~ ['palmer', southern'] and group.termStart - 7 > sysdate and group.termEnd + 7 < sysdate)Give me groups as members where campus and term match
org:whatever2:app2:somePolicy2subjects as membersperson.primaryAffiliation =~ ['faculty', 'staff'] and person.dept =~ ['physics', 'math']Subjects in a role and dept
org:whatever3:app3:somePolicy3could have some groups and subjects

(group.campus =~ ['palmer', southern'] and group.termStart - 7 > sysdate and group.termEnd + 7 < sysdate)

or (person.primaryAffiliation =~ ['faculty', 'staff'] and person.dept =~ ['physics', 'math'])

Take some group populations and some subjects

Requirements for expressions

NamePriorityDescriptionJSONGraphQLSQLJEXL
ParsableRequired

Needs to be parsed so we can 
check security, do real-time
updates, and analyze policies

YesProbablyProbablyYes
Library in Grouper alreadyNice to haveAvoid library bloatYesSoon perhapsNo (there are
Java SQL parsers)
Yes
Supports boolean logicRequiredand, or, not, etcClunkyYesYesYes
Supports groupingRequiredparensClunkyYesYesYes
Needs wildcardsRequiredSome way to have wildcards for valuesYesYesYesNot built in but we can use =^ for "like"

Seems like JEXL is a good place to start

...