Download presentation
Presentation is loading. Please wait.
Published byJacob Kelly Modified over 9 years ago
1
Kuali eDoclite and Grouper for access forms workflow at Penn 9-Nov-2010, Kuali Days Chris Hyzer, University of Pennsylvania developer
2
eForms description Integration with Grouper Demo Making an eForm Production deployment Future plans Customizations Documentation contributions Wishlist 2 – 9/7/2015, © 2009 Internet2 Agenda
3
eForms description
4
In 2009 Penn wanted to convert paper access management forms to eForms 4 – 9/7/2015, © 2009 Internet2 Paper form screenshot
5
5 – 9/7/2015, © 2009 Internet2 Paper form screenshot (continued)
6
6 – 9/7/2015, © 2009 Internet2 Paper form screenshot (continued)
7
7 – 9/7/2015, © 2009 Internet2 Paper form screenshot (continued)
8
8 – 9/7/2015, © 2009 Internet2 Paper form screenshot (continued)
9
9 – 9/7/2015, © 2009 Internet2 Paper form existing list
10
Autofill personal information Common includes (privacy statement) Fill out form on behalf of someone else Org chart picker for data access Person picker from group (employee) Notification to requester when complete Report on form data Should require no Java to create forms 10 – 9/7/2015, © 2009 Internet2 Requirements
11
Route to members of Grouper group Route to selected group (pick school) Ability to return to previous route node Route to multiple groups at once Conditional routing Dynamic routing to someone entered on form 11 – 9/7/2015, © 2009 Internet2 Routing requirements
12
Submitters can see current and past forms Approvers can see current and past forms Certain people can edit certain forms 12 – 9/7/2015, © 2009 Internet2 Security requirements
13
Not a current Kuali customer (will be with OLE Library system) Integrate Rice with Grouper (yummy) – 2, 3, 4 on google for “rice grouper” Use eDoclite If gaps: – Ajax (haven’t had to do this yet, but will) – External picker screens – Java customizations, e.g. post processors Meets the requirements 13 – 9/7/2015, © 2009 Internet2 Design
14
Rice and Grouper integration
15
15 – 9/7/2015, © 2009 Internet2 Kuali Rice Middleware used by other Kuali and non-Kuali products KIM: Kuali Identity Management KSB: Kuali service bus KEN: Kuali enterprise notification KEW: Kuali enterprise workflow Components UI SOAP web services Web framework eDocLite: declarative workflow applications
16
16 – 9/7/2015, © 2009 Internet2 Internet2 Grouper Access management middleware Central groups and permissions store Components UI SOAP/Rest web services Loader to load groups from source systems Provisioning e.g. to LDAP or XMPP Lightweight Java client
17
17 – 9/7/2015, © 2009 Internet2 Internet2 Grouper advanced features Delegated privileges Adhoc groups based on loaded groups (includes/excludes) Composite groups: union, intersection, minus (e.g. require employee) UI screen for simple group management (customizable, skinnable) New in next release Rules, e.g. email when membership list changes, auto- deprovision Point in time auditing, e.g. what groups has someone been in, who was a member 6 months ago Manage federated members
18
18 – 9/7/2015, © 2009 Internet2 Kuali Rice overridable services Group service getMembers, hasMember, assignMember, etc Identity service getPersonById, getPersonByPrincipal, etc Permissions service etc
19
19 – 9/7/2015, © 2009 Internet2 How to connect Rice to Grouper? Add two jars to Rice (grouperRice.jar and grouperClient.jar) Add and configure grouper.client.properties Configure Rice spring override to group and/or identity service Setup a Grouper folder for the “Rice root”
20
20 – 9/7/2015, © 2009 Internet2 Kuali Rice overridable services Rice request grouperRice.jar Kuali DB Rice server Grouper Registry Grouper WS server Grouper.client.properties grouperClient.jar
21
21 – 9/7/2015, © 2009 Internet2 Grouper client One jar (no conflicts with existing libraries) Supports all of Grouper WS API Command line example java –jar grouperClient.jar --operation=hasMemberWs --groupName=aStem:aGroup --subjectIds=1234567 Java library example new GcHasMember().assignGroupName("aStem:aGroup").addSubjectId("1234567").execute(); Grouper WS server Grouper.client.properties grouperClient.jar REST LDAP
22
22 – 9/7/2015, © 2009 Internet2 Grouper client continued The debug flag shows XML (useful for examples)
23
23 – 9/7/2015, © 2009 Internet2 Grouper client continued
24
24 – 9/7/2015, © 2009 Internet2 eForms workflow with Grouper Initiator fills out form Grouper Registry Kuali DB Get members to route to and emails Grouper WS Routes to approver group Routes to approver groupN Final Add a member to a Grouper group/role and/or assign permissions On login to Rice, get subject details Archive the document data, and workflow history One in group approves 1 3 4 5 Grouper UI Person / org pickers 2
25
25 – 9/7/2015, © 2009 Internet2 KIM and Grouper differences KIM uses incrementor IDs and Grouper uses UUIDs Handled by not using any groups originating in Rice KIM has a name for a group. Grouper has two names for a group, a system name, and a friendly name Handled by only using the system name KIM services are largely driven by ID, the Grouper client generally used system name In Grouper 1.6, all client operations can use UUID KIM has no namespace on subjects, Grouper has one level deep namespace for subjects (sourceId) Concatenate sourceId::::subjectId, e.g. pennperson::::12345678 KIM groups have active flags, not Grouper Inactive groups stored to grouper throw an exception
26
26 – 9/7/2015, © 2009 Internet2 KIM and Grouper differences (continued) KIM has one level deep namespace on Groups Designate “KIM” root folder in Grouper, which has one level deep folders inside, and groups in those folders KIM group desc is 4000 chars, Grouper is 1024 chars Descriptions > 1024 will be abbrev to 1024 (with ellipses) KIM has operations for adding or updating a group. Grouper can add, update, or add_or_update a group The grouper add_or_update will not be used KIM has operation to select multiple groups by ID This was added in Grouper KIM has lookupIds method for criteria to return groupIds This is not [yet] implemented in Grouper KIM can get groups for a subject only in one folder Grouper client and WS were enhanced to support this KIM gets all or direct or indirect groups for a subject Grouper client and WS were enhanced to support this
27
27 – 9/7/2015, © 2009 Internet2 KIM and Grouper differences (continued) Kim gets immediate / non immediate members of group Grouper client and WS were enhanced to support this KIM gets groups or people which are members of group Grouper client and WS were enhanced to support this Kim could get the memberships of a group Grouper client and WS were enhanced to support this Kim can create new groups in new namespaces Grouper added param "createParentStemsIfNotExist" Kim caches group information for 30 seconds There is a 30 second propagation delay from Grouper to Kim KIM has principalName, Grouper has subjectIdentifiers Configure attribute that is identifier for each applicable source in grouper.client.properties. Note not concatenated with the sourceId so it matches the principalName from the authn service
28
28 – 9/7/2015, © 2009 Internet2 KIM and Grouper differences (continued) KIM has principalId, the id of the principalName Grouper connector will use sourceId::::subjectIdentifier. KIM has phone numbers, affiliations, etc. Grouper subjects have id, name, description and attributes. The connector assumes you configure at least the name, subjectIdentifier (principalName), and email address. Other stuff will be blank in Kuali. KIM has first, middle, and last name, Grouper has name. The connector splits the name into first, middle, and last Kuali can have multiple names Grouper connector will set only one name per subject Methods like getPrincipalByPrincipalNameAndPassword() are not applicable in Grouper and throw unimplemented exception Others like search by params, are unimplemented, return no results.
29
29 – 9/7/2015, © 2009 Internet2 Salary management eForm
30
30 – 9/7/2015, © 2009 Internet2 Salary management eForm (continued)
31
31 – 9/7/2015, © 2009 Internet2 Salary management eForm (continued)
32
32 – 9/7/2015, © 2009 Internet2 eForms demo workflow Initiator fills out form If on behalf of someone else, they need to approve it, unless it is a ‘remove access’ 1 4 Supervisor (person picker) 2 On behalf of remove? 3 No Yes Grouper group selected from available schools Note: supervisor cannot be the same as ‘On behalf of’ School adminHRPayroll HR and payroll could approve in parallel in future 8 Operations Grant access that isn’t automatically provisioned Change KEW initiator to ‘on behalf of’ user 7 Data admin Assert that form is valid 9 Data admin Assert that privileges were granted correctly Final Send email to ‘on behalf of’ user 10 5 6
33
33 – 9/7/2015, © 2009 Internet2 Grouper Rice demo Demo movie
34
Making an eForm
35
35 – 9/7/2015, © 2009 Internet2 Make an eForm Attributes Rule templates Doctype Settings and security Route nodes and rules Route paths eDocLite Screen fields HTML via XSL Email template
36
36 – 9/7/2015, © 2009 Internet2 Attributes – in this case for dynamic routing salaryManagementAccessForm.onBehalfOfPennId onBehalfOfPennId salaryManagementAccessForm.supervisorPennIdRoleAttribute supervisorPennId salaryManagementAccessForm.groupName Supervisor selects the group name who is the third approver groupName Note: XML not complete
37
37 – 9/7/2015, © 2009 Internet2 Rule templates – group of rules salaryManagementAccessForm.onBehalfOfPennId salaryManagementAccessForm.supervisorPennIdRoleAttribute salaryManagementAccessForm.groupName Note: XML not complete or correct
38
38 – 9/7/2015, © 2009 Internet2 Doctype – settings and security GrouperEdocliteDatabasePostProcessor financialBalancesAdmins kualiAdmins HumanResourcesReaders … noreply@isc.upenn.edu eforms_test@lists.upenn.edu initiator salaryManagementAccessForm.emailInitiatorTemplate org.kuali.rice.kew.mail.EmailNode Note: XML not complete or correct
39
39 – 9/7/2015, © 2009 Internet2 Doctype – route nodes and rules salaryManagementAccessForm.onBehalfOfRuleTemplate Note: XML not complete or correct
40
40 – 9/7/2015, © 2009 Internet2 Doctype – route paths Note: XML not complete or correct
41
41 – 9/7/2015, © 2009 Internet2 eDocLite – link attributes with screen fields Note: XML not complete or correct
42
42 – 9/7/2015, © 2009 Internet2 eDocLite – define all screen fields Please find your supervisor add update remove Please select 'Privilege change' … Note: XML not complete or correct
43
43 – 9/7/2015, © 2009 Internet2 eDocLite – XSL variables Note: XML not complete
44
44 – 9/7/2015, © 2009 Internet2 eDocLite – custom Javascript validations //get the value from the privilege change radio button var privilegeChange = $('input[name=privilegeChange]:checked').val(); //if we are updating or removing, then the oracle ID is required if (privilegeChange == 'update' || privilegeChange == 'remove') { if (riceIsBlank($('input[type=text][name=oracleId]').val())) { alert('Please enter the Oracle ID that needs to be ' + privilegeChange + 'd'); return false; } Note: uses jquery
45
45 – 9/7/2015, © 2009 Internet2 eDocLite – screen HTML with XSL variables … Expiration date (yyyy-Mon-dd) … …
46
46 – 9/7/2015, © 2009 Internet2 eDocLite – associate style, def, doctype salaryManagementAccessForm salaryManagementAccessForm.form salaryManagementAccessForm.style true
47
47 – 9/7/2015, © 2009 Internet2 eDocLite – rules onBehalfOfRuleTemplate basRuleTemplate2 Route to financial balances bas true hrReviewRuleTemplate HumanResources Note: not complete or correct XML
48
48 – 9/7/2015, © 2009 Internet2 eDocLite – email template for initiator when final Salary Management Data Warehouse Access You now have access to the Salary Management data collection in the Warehouse. Your ID, for the Data Warehouse and Business Objects, is: … Note: note complete XML
49
49 – 9/7/2015, © 2009 Internet2 Setup or re-use groups in Grouper
50
50 – 9/7/2015, © 2009 Internet2 Setup or re-use groups in Grouper (continued)
51
51 – 9/7/2015, © 2009 Internet2 Setup or re-use groups in Grouper - continued Create a group Allow the Rice grouperClient user to READ members Add members (usually ~2 for approvers, one primary, one backup) Grant privileges if self managed (maybe the approvers can delegate to others) If so, send the link to the Grouper simple management UI for the group
52
52 – 9/7/2015, © 2009 Internet2 Setup or re-use groups in Grouper - continued Send link for simple membership UI to editors
53
53 – 9/7/2015, © 2009 Internet2 Make an eForm - summary Lots of XML to write Lots of copy/paste (don’t mess that part up, could affect existing forms) Not too hard Could be time consuming and require an expert for troubleshooting Penn only uses central data administration to manage the forms (no one else can use the ingester)
54
Penn production deployment
55
55 – 9/7/2015, © 2009 Internet2 Penn stats 26 forms in “soft launch”, users can use paper or eForms Live for 1 month A few dozen eForms initiated A dozen users A few user comments that we are incorporating (included in this presentation) Lots of interest to expand the conversion of paper forms to eForms
56
56 – 9/7/2015, © 2009 Internet2 Penn internal guidelines Keep all parts of form in CVS CVS is the system of record (cannot get XML out of Rice) Naming standard for all parts Starts with unique camel-case prefix, e.g. salaryManagementAccessForm. Note, the doctype should just be salaryManagementAccessForm since user sees it
57
57 – 9/7/2015, © 2009 Internet2 CVS screenshot of forms
58
58 – 9/7/2015, © 2009 Internet2 CVS screenshot of form history Note, this could be subversion, or whatever
59
59 – 9/7/2015, © 2009 Internet2 Our copy of Rice is in CVS
60
60 – 9/7/2015, © 2009 Internet2 Separate out customized files
61
61 – 9/7/2015, © 2009 Internet2 Externalize parts that change per env
62
62 – 9/7/2015, © 2009 Internet2 Ant script generates four warfiles Warfiles for local dev, integrated dev, test, prod Once the tomcat is setup (5.5, config stub in /conf with password, encryption files, etc) Similar to this documentdocument Each tar.gz has a different kualiRice.war in it
63
Future plans
64
64 – 9/7/2015, © 2009 Internet2 Future plans More code generation to ease form creation Convert more access management forms Roll-out a service for other schools in the University Not sure how this will be structured
65
Customizations
66
66 – 9/7/2015, © 2009 Internet2 Change “Route” button text Our users didn’t know what “route” meant, vs. “save” We changed “route” to “submit”, and put an alert on “save” and “save note”
67
67 – 9/7/2015, © 2009 Internet2 Change Save alert Our users didn’t know that Save doesn’t Route We put an alert on “save” and “save note” Note: we should probably clarify “disapprove” and “return to previous” similarly…
68
68 – 9/7/2015, © 2009 Internet2 Link to My Submissions Would be nice to have a link to My Submissions from static HTML Similar to links to start documents, or action list
69
69 – 9/7/2015, © 2009 Internet2 Link to My Submissions (continued) Just add a JSP to kuali webapp
70
70 – 9/7/2015, © 2009 Internet2 Generate parts of eDocLite Supports up to 50 orgs, all be defined
71
71 – 9/7/2015, © 2009 Internet2 Generate parts of eDocLite Generate HTML for orgs
72
72 – 9/7/2015, © 2009 Internet2 Generate “custom tag” with Java in XSL Screenshot
73
73 – 9/7/2015, © 2009 Internet2 Generate “custom tag” with Java in XSL Generate HTML for orgs (java source)
74
74 – 9/7/2015, © 2009 Internet2 Generate “custom tag” with Java in XSL (continued) Generate HTML for orgs (XSL)
75
75 – 9/7/2015, © 2009 Internet2 Pickers from external applications On eDoclite External application Press ‘Select’ on popup Javascript in the edoclite sets the ‘readonly’ fields Popup.close() Note: a variable is passed to the picker and back so the Javascript knows which fields to set. Can have multiple person pickers on the same screen. 1 3 3a 3b Rice eDocLite Press button for popup 2 Submit GET to edoclite HTML page that calls javascript opener.handle(), due to browser restrictions Note: this is a lot simpler if the external application is hosted on the same URL base as eDocLite… Note: another issue, ahem…
76
76 – 9/7/2015, © 2009 Internet2 Authentication service override More flexible with SSO Requires Grouper group (e.g. active Penn member)
77
77 – 9/7/2015, © 2009 Internet2 Immediate and daily email notifications Penn wants immediate notifications on action items If an item is more than one day old, send daily email
78
78 – 9/7/2015, © 2009 Internet2 Immediate and daily email notifications (continued) Make a view to hold people to send to Note: sometimes there are orphans in krew_actn_itm_t From FINAL docs From CANCELLED docs We manually delete them from the table
79
79 – 9/7/2015, © 2009 Internet2 Remove title column from search results For eDocLite only Rice deployments, this col is redundant
80
80 – 9/7/2015, © 2009 Internet2 On behalf of vs. initiator Access management admins would like on behalf of to be initiator… for ‘my forms’, searching, results lists, etc
81
81 – 9/7/2015, © 2009 Internet2 Message to user when buttons pressed eDocLite by default shows a readonly screen (confusing) (granted if exceptions happen, might not be accurate ) Several pieces to make this happen… threadlocal for request, and request parameters… and the XSL logic
82
82 – 9/7/2015, © 2009 Internet2 Add vs. remove branch code If ‘remove’ then ‘on behalf of’ doesn’t approve form Doctype: Java Note: would be nice to be able to do this without Java
83
83 – 9/7/2015, © 2009 Internet2 Group and permission provisioning to Grouper When eForm is complete, initiator can be automatically granted group memberships or permissions in Grouper Doctype: Or, to not save in database also: Note: would be nice to be able attach multiple post processors to pick and choose…
84
84 – 9/7/2015, © 2009 Internet2 Group provisioning to Grouper (continued) Example screenshot of form
85
85 – 9/7/2015, © 2009 Internet2 Group provisioning to Grouper (continued) Configure in the grouper config file
86
86 – 9/7/2015, © 2009 Internet2 Group provisioning to Grouper (continued) Result is initiator is in group, and optional email sent to admins
87
87 – 9/7/2015, © 2009 Internet2 Permission provisioning to Grouper (continued) Sample screenshot
88
88 – 9/7/2015, © 2009 Internet2 Permission provisioning to Grouper (continued) Note, you can provision groups and permissions in same form Configure in the grouper config file for roles to provision
89
89 – 9/7/2015, © 2009 Internet2 Permission provisioning to Grouper (continued) Configure in the grouper config file for operation to provision Note, had to add enhancement of “replace” as a Grouper permissions web service operation…
90
90 – 9/7/2015, © 2009 Internet2 Permission provisioning to Grouper (continued) Configure in the grouper config file for actions to provision
91
91 – 9/7/2015, © 2009 Internet2 Permission provisioning to Grouper (continued) Configure in the grouper config file for permissions to provision
92
92 – 9/7/2015, © 2009 Internet2 Permission provisioning to Grouper (continued) Configure in the grouper config file for permissions to provision (continued)
93
93 – 9/7/2015, © 2009 Internet2 Permission provisioning to Grouper (continued) Email once permissions provisioned
94
Documentation contributions
95
95 – 9/7/2015, © 2009 Internet2 Doc additions – quick start Windows / Mysql quick start Linux / Oracle quick start
96
96 – 9/7/2015, © 2009 Internet2 Doc additions – eDocLite examples
97
97 – 9/7/2015, © 2009 Internet2 Doc additions – eDocLite example
98
98 – 9/7/2015, © 2009 Internet2 Doc additions – eDocLite example (continued)
99
99 – 9/7/2015, © 2009 Internet2 Doc additions – eDocLite example (continued)
100
100 – 9/7/2015, © 2009 Internet2 Doc additions – eDocLite example (continued)
101
101 – 9/7/2015, © 2009 Internet2 Doc additions – eDocLite example (continued)
102
102 – 9/7/2015, © 2009 Internet2 Doc additions – eDocLite example (continued)
103
103 – 9/7/2015, © 2009 Internet2 Doc additions – eDocLite example (continued)
104
104 – 9/7/2015, © 2009 Internet2 Doc additions – eDocLite example (continued) These examples work start to finish Would be nice to get contributions like this from other users
105
105 – 9/7/2015, © 2009 Internet2 Doc additions – service overrides The group and entity service overrides of the Grouper KIM connector are open source, can be used as examples All the design and discussion is on the Grouper KIM connector wiki
106
Wishlist
107
107 – 9/7/2015, © 2009 Internet2 Penn’s eDoclite wishlist (most things have been discussed with Kuali team and might be Jiras) Note: things might exist already, and I don’t know about them Workflow GUI Improved security Fewer silent failures E.g. in a mail node is in non prod and doesn’t have testAddress, then it silently doesn’t send the email E.g. if route to inputted user is not quite correct, the user data will be blank, and skips that node E.g. XSL you do instead of: java.lang.NullPointerException at org.kuali.rice.kew.edl.EDLControllerChain.renderEDL(EDLControllerChain.java:50)
108
108 – 9/7/2015, © 2009 Internet2 Penn’s eDoclite wishlist (continued) Dynamic split node that doesn’t require Java Maybe I will contribute this? On upgrade from 1.0.1 to 1.0.2.1, Grouper connector broke due to Rice API changes, prefer backwards compatible The Rice ingester sometimes has orphaned rules / templates / etc. Nice to be able to replace with ingester Sometimes orphans in krew_actn_itm_t, nice to have daemon to clean it up (erroneous daily emails) Would be nice if search screens had default sort order (e.g. eDocLite search could default to sort by document type) Would be nice of all overridable services had good Javadoc Would be nice if Document Operation Screen were better documented including examples
109
109 – 9/7/2015, © 2009 Internet2 Penn’s Email / Jira requests 51 emails to rice-collab, all answered 13 Jira’s initiated, 5 closed
110
Phew…. We made it…
111
Kuali eDoclite and Grouper for access forms workflow at Penn 9-Nov-2010, Kuali Days Chris Hyzer, University of Pennsylvania developer For more information, visit www.internet2.edu 111 – 9/7/2015, © 2009 Internet2
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.