...
For primary courses (not cross listings), lets setup a job which manages the memberships and security: !studentsLoader.gif! This shows:
- The data is coming from our warehouse (configured in grouper-loader.properties)
- There is a grouper group type applied to the group, which is addIncludeExclude. This automatically creates the includes, excludes, and overall groups
- The job runs once per day at 8am
- It is a SQL_GROUP_LIST which manages many groups at once
- The membership query: (penn_id and group_name one), returns data like this:
12345678 penn:community:student:course:2009C:EG:BE:099:001:students_systemOfRecord
12345679 penn:community:student:course:2009C:EG:BE:100:001:students_systemOfRecord
12345677 penn:community:student:course:2009C:EG:BE:100:001:students_systemOfRecord
12345676 penn:community:student:course:2009C:EG:BE:100:001:students_systemOfRecord
12345675 penn:community:student:course:2009C:EG:BE:101:001:students_systemOfRecord
12345678 penn:community:student:course:2009C:EG:BE:101:001:students_systemOfRecord - The groups query, controls empty groups, names groups, and sets the security. It returns data that looks like this:
GROUP_NAME
READERS
UPDATERS
penn:community:student:course:2009C:EG:BE:099:001:students_systemOfRecordpenn:community:student:security:courseReaders, penn:community:student:course:2009C:EG:BE:099:001:assistants,penn:community:student:course:2009C:EG:BE:099:001:instructors
penn:community:student:security:courseUpdaters, penn:community:student:course:2009C:EG:BE:099:001:assistants,penn:community:student:course:2009C:EG:BE:099:001:instructors
penn:community:student:course:2009C:EG:BE:100:001:students_systemOfRecord
penn:community:student:security:courseReaders, penn:community:student:course:2009C:EG:BE:100:001:assistants,penn:community:student:course:2009C:EG:BE:100:001:instructors
penn:community:student:security:courseUpdaters, penn:community:student:course:2009C:EG:BE:100:001:assistants,penn:community:student:course:2009C:EG:BE:100:001:instructors
penn:community:student:course:2009C:EG:BE:100:201:students_systemOfRecord
penn:community:student:security:courseReaders, penn:community:student:course:2009C:EG:BE:100:201:assistants,penn:community:student:course:2009C:EG:BE:100:201:instructors
penn:community:student:security:courseUpdaters, penn:community:student:course:2009C:EG:BE:100:201:assistants,penn:community:student:course:2009C:EG:BE:100:201:instructors
- Note that the queries in the loader job are built on views, it is important that you do this so you can see when upgrades make things not compile, and so the SQL can be changed without editing the job, and since there is a character limit for attribute values
- First I create a stem name view, which includes if a course is primary or not (cross listed). Note this also restricts which terms to select from
...