Download presentation
Presentation is loading. Please wait.
1
JA-SIG Summer 2006 – New Directions in PersonDirectory Services Presenters: Andrew Wills drew@unicon.net Darren Kraker dkraker@calpoly.edu New Directions in PersonDirectory Services: Lessons Learned from my.calpoly.edu JA-SIG Summer Conference 2006
2
JA-SIG Summer 2006 – New Directions in PersonDirectory Services California Polytechnic University San Luis Obispo 100 Years Old 20,000 Students uPortal adoption since Sept 2001 “Learn by Doing”: technical and professional curricula.
3
JA-SIG Summer 2006 – New Directions in PersonDirectory Services UNICON Our Vision: To be recognized as the leading independent provider of portal and learning technologies to the Educational market. Corporate Profile Over 100 employees Over 2 million users have experienced Unicon solutions Focus is Higher Education Technologies Enterprise Collaborative Portals Learning Management Web Content Management Content and Assessment Authoring and Delivery software Open source involvement Leading commercial supporter of uPortal Sakai Commercial Affiliate
4
JA-SIG Summer 2006 – New Directions in PersonDirectory Services Unicon Services Academus / Sakai Sakai / uPortal Implementation Planning Session Project Planning and Assessment Installation Configuration Branding Training Optional Services Software Development Application Hosting System Upgrades Academus Implementation Planning Session Project Planning and Assessment Installation Configuration Branding Training Optional Services Software Development Application Hosting System Upgrades uPortal Sakai Implementation Planning Session Project Planning and Assessment Installation Configuration Branding Training Optional Services Software Development Application Hosting System Upgrades
5
JA-SIG Summer 2006 – New Directions in PersonDirectory Services Introduction
6
JA-SIG Summer 2006 – New Directions in PersonDirectory Services PersonDirs.xml to personDirectory.xml Originally person attribute technology was a part of the uPortal Framework uPortal 2.5 introduced the new technology by copy & paste uPortal 2.6 is expected to include the stand- alone version by Java archive (jar) Stand-alone project began October 2005
7
JA-SIG Summer 2006 – New Directions in PersonDirectory Services Stand-Alone JA-SIG Project Housed and managed in JA-SIG CVS cvs -d:pserver:anonymous@developer.ja- sig.org:2401/home/cvs/jasig co PersonDirectory More information is accumulating at the JA- SIG wiki http://www.ja-sig.org/wiki/display/UPC/Person+Directory Spearheaded by Eric Dalquist & Andrew Petro
8
JA-SIG Summer 2006 – New Directions in PersonDirectory Services PersonDirectory JA-SIG Project Goals Reasons for the new technology More Powerful (greater sum of features) More Flexible (use the features you want) More Maintainable (bug fixes are less complicated & risky) More Extensible (much easier to add technology that covers unanticipated scenarios)
9
JA-SIG Summer 2006 – New Directions in PersonDirectory Services Agenda Cal Poly person attribute scenarios Tour of the new person attribute technology Conceptual background for the new technology Cal Poly solution & contributions
10
JA-SIG Summer 2006 – New Directions in PersonDirectory Services Cal Poly Person Attribute Scenarios
11
JA-SIG Summer 2006 – New Directions in PersonDirectory Services Cal Poly Person Attribute Scenarios User Base Students Faculty (incl. some emeritus) Staff (incl. some emeritus) Applicants (2 flavors) Data Sources for Person Attributes LDAP eComs RDBMS Data Warehouse RDBMS Algorithm(s)
12
JA-SIG Summer 2006 – New Directions in PersonDirectory Services Applicant Users Introduction to the portal begins as early as an applicant or prospective student An applicant’s role changes as part of the admissions process Prospect Applicant Conditionally Admitted Admitted Matriculated Student
13
JA-SIG Summer 2006 – New Directions in PersonDirectory Services Cal Poly Person Attribute Scenarios Special Challenges Not all data sources apply to all users Some data sources key off of things other than username Application timeline and status determines layout content Status must be “evaluated” at login Applicants may apply for multiple terms Applicants who are enrolled must be transitioned to new attribute scenarios and data sources
14
JA-SIG Summer 2006 – New Directions in PersonDirectory Services Tour of the new Person Attribute API
15
JA-SIG Summer 2006 – New Directions in PersonDirectory Services IPersonAttributeDao Interface IPersonAttributeDao interface is the central type of PersonDirectory Methods Map getUserAttributes(final Map seed) Map getUserAttributes(final String uid) Set getPossibleUserAttributeNames() Interface Driven PersonDirectory features are completely open- ended because clients can provide custom implementations and configure the portal to use them via Spring IoC
16
JA-SIG Summer 2006 – New Directions in PersonDirectory Services IPersonAttributeDao Implementations List uPortal 2.5.x AbstractDefaultQueryPersonAttributeDao CachingPersonAttributeDaoImpl CascadingPersonAttributeDao EchoPersonAttributeDaoImpl JdbcPersonAttributeDaoImpl LdapPersonAttributeDaoImpl LegacyPersonAttributeDao MergingPersonAttributeDaoImpl StubPersonAttributeDao
17
JA-SIG Summer 2006 – New Directions in PersonDirectory Services IPersonAttributeDao Implementations List PersonDirectory (stand-alone JA-SIG project) AbstractDefaultAttributePersonAttributeDao AbstractAggregatingDefaultQueryPersonAttributeDao AbstractQueryPersonAttributeDao AbstractJdbcPersonAttributeDao StubPersonAttributeDao EchoPersonAttributeDaoImpl CachingPersonAttributeDaoImpl CascadingPersonAttributeDao MergingPersonAttributeDaoImpl LdapPersonAttributeDaoImpl SingleRowJdbcPersonAttributeDao MultiRowJdbcPersonAttributeDao
18
JA-SIG Summer 2006 – New Directions in PersonDirectory Services IPersonAttributeDao Type Hierarchy
19
JA-SIG Summer 2006 – New Directions in PersonDirectory Services IPersonAttributeDao Type Hierarchy AbstractDefaultAttributePersonAttributeDao All original implementations of IPersonAttributeDao extend from AbstractDefaultAttributePersonAttributeDao except StubPersonAttributeDao (used in testing) Provides a final implementation for getUserAttributes(String uid) that associates the specified uid with a single, configureable attribute name This implementation then invokes the getUserAttributes(Map seed) overload (viz. implemented on a subclass) using the Map it created You can configure the default attribute name by calling setDefaultAttributeName(String name), presumably in the Spring configuration file If you don't explicitly set it, the "default" default is username
20
JA-SIG Summer 2006 – New Directions in PersonDirectory Services IPersonAttributeDao Type Hierarchy AbstractAggregatingDefaultQueryPersonAttri buteDao Implements common elements of attribute aggregation, leaving specialized details to subclasses Subclasses add value to the aggregation process by implementing getAttributesFromDao(), which they are required to do since it is an abstract method on this class Subclasses CascadingPersonAttributeDao MergingPersonAttributeDaoImpl
21
JA-SIG Summer 2006 – New Directions in PersonDirectory Services IPersonAttributeDao Type Hierarchy AbstractQueryPersonAttributeDao Implements some validity checking & mashaling associated with querying a data source with multiple inputs Subclasses add value by implementing getUserAttributesIfNeeded(), which they are required to do since it is an abstract method on this class Subclasses LdapPersonAttributeDaoImpl AbstractJdbcPersonAttributeDao
22
JA-SIG Summer 2006 – New Directions in PersonDirectory Services IPersonAttributeDao Type Hierarchy AbstractJdbcPersonAttributeDao Implements common elements of obtaining person attributes from an RDBMS data source Subclasses must implements two abstract methods getAttributeQuery() [provide an appropriate implementation of AbstractPersonAttributeMappingQuery] parseAttributeMapFromResults() [convert the query results to mapped user attributes] Subclasses SingleRowJdbcPersonAttributeDao MultiRowJdbcPersonAttributeDao
23
JA-SIG Summer 2006 – New Directions in PersonDirectory Services IPersonAttributeDao Type Hierarchy StubPersonAttributeDao Always returns the same Map of values Used primarily in writing unit tests EchoPersonAttributeDaoImpl Returns the seed Map that was passed in as an argument Useful for unit testing and in concert with CascadingPersonAttributeDao
24
JA-SIG Summer 2006 – New Directions in PersonDirectory Services IPersonAttributeDao Type Hierarchy CachingPersonAttributeDaoImpl Caches results generated by a nested IPersonAttributeDao implementation Cache size and duration can be managed in the properties/whirlycache.xml configuration file Can be highly effective at improving performance, particularly in a DLM/PAGS portal
25
JA-SIG Summer 2006 – New Directions in PersonDirectory Services IPersonAttributeDao Type Hierarchy CascadingPersonAttributeDao Combines aggregation with a seed that grows with the results provided by each IPersonAttributeDao instance in the chain This approach allows a later instance to rely on information from an earlier instance to obtain its data Merging rules can be configured to handle situations where different implementations return values for the same attribute (default merging strategy is replacement) Use EchoPersonAttributeDaoImpl as the first instance to include the original seed in the results
26
JA-SIG Summer 2006 – New Directions in PersonDirectory Services IPersonAttributeDao Type Hierarchy MergingPersonAttributeDaoImpl Aggregates results from nested implementations by invoking each with the original seed Offers the same merging rule configuration options as CascadingPersonAttributeDao (though default is combining) LdapPersonAttributeDaoImpl Obtains person attributes from a directory (LDAP) data source Details of connecting to and querying LDAP are configurable (Server/Query/BaseDN/Timeout) You must explicitly specify the set of LDAP entry/person attribute mappings
27
JA-SIG Summer 2006 – New Directions in PersonDirectory Services IPersonAttributeDao Type Hierarchy SingleRowJdbcPersonAttributeDao Obtains person attribute information from an RDBMS data source Throws an exception if more than one record is returned for the specified query You must explicitly specify the set of column name/person attribute mappings MultiRowJdbcPersonAttributeDao Obtains person attribute information from an RDBMS data source Support multi-values person attributes (viz. more than one record) You must explicitly specify the set of column name/person attribute mappings
28
JA-SIG Summer 2006 – New Directions in PersonDirectory Services Conceptual Background for the new Technology
29
JA-SIG Summer 2006 – New Directions in PersonDirectory Services Conceptual Background Two key technologies/patterns… Nested Enclosure Spring Dependency Injection
30
JA-SIG Summer 2006 – New Directions in PersonDirectory Services Nested Enclosure Overview Wrap or "nest" one object with a particular contract inside another that implements the same contract. Allows you to combine the desirable characteristics of different implementations in mix- and-match fashion Design for nested enclosure by representing your central contract as an interface or abstract class One implementation adds value to another by enclosing it IPersonAttributeDao is the central contract in the case of PersonDirectory
31
JA-SIG Summer 2006 – New Directions in PersonDirectory Services Nested Enclosure Several implementations of IPersonAttributeDao were written to "enclose" other instances CachingPersonAttributeDaoImpl CascadingPersonAttributeDao MergingPersonAttributeDaoImpl EchoPersonAttributeDaoImpl was written (in large part) to be enclosed
32
JA-SIG Summer 2006 – New Directions in PersonDirectory Services Spring Dependency Injection Used by uPortal for many areas of system configuration, including person directory services Allows you to describe dependencies between Java objects in XML format When dependencies change, simply change the XML (no need for a new build) The Spring Framework does the heavy lifting of instantiating and associating the beans you define
33
JA-SIG Summer 2006 – New Directions in PersonDirectory Services Cal Poly Solution & Contributions
34
JA-SIG Summer 2006 – New Directions in PersonDirectory Services Cal Poly Solution Using new Technology
35
JA-SIG Summer 2006 – New Directions in PersonDirectory Services
37
Cal Poly Solution & Contributions RegexGatewayPersonAttributeDao Allows a nested DAO instance to operate if an existing attribute matches a specified pattern May key off of any existing attribute (not just username) Implements pattern matching via String.matches(pattern) Works with attribute values of String String[] List If any value matches the pattern, the enclosed DAO is processed
38
JA-SIG Summer 2006 – New Directions in PersonDirectory Services Cal Poly Solution & Contributions DeclaredRulePersonAttributeDao evaluates person directory information based on configurable rules or algorithm(s) Rules may be chained, though the present implementation applies at most one rule Applies the first rule that "triggers“ AttributeRule Interface that defines the contract for rules Members appliesTo(Map) evaluate(Map) getPossibleUserAttributeNames()
39
JA-SIG Summer 2006 – New Directions in PersonDirectory Services Cal Poly Solution & Contributions SimpleAttributeRule Only existing implementation of AttributeRule Sets the value of an attribute when a seed value matches a pattern You specify Comparison attribute Pattern Target attribute Value Implements pattern matching via String.matches(pattern) Works with attribute values of String String[] List If any value matches the pattern, the rule triggers Current implementation overwrites existing value(s) (viz. no configurable collision strategy)
40
JA-SIG Summer 2006 – New Directions in PersonDirectory Services Cal Poly Solution & Contributions
41
JA-SIG Summer 2006 – New Directions in PersonDirectory Services Questions?
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.