190 likes | 292 Views
Building a production quality Rice Application at SJDC. Kuali Days VI, Chicago Christopher Kirschenman – San Joaquin Delta Anthony Potts - rSmart. About San Joaquin Delta College. Large community college in Stockton, CA ~13,000 Students per semester ~1,000 employees
E N D
Building a production quality Rice Application at SJDC Kuali Days VI, Chicago Christopher Kirschenman – San Joaquin Delta Anthony Potts - rSmart
About San Joaquin Delta College Large community college in Stockton, CA ~13,000 Students per semester ~1,000 employees Currently 6 developers (2 primarily Java) Developed Student and HR System in Smalltalk 2
About rSmart Provider of support and services for OSS in higher education • Sakai CLE • Kuali Financials • Kuali Rice • Kuali KRA (soon) • Kuali Student (not so soon) • Founding Partner of Kuali • Founding partner of Open Source Portfolio Initiative • Sakai Partner and board member 3
The Problem • Current process highly manual • Thousands of timesheets printed each month • Errors common, lost papers, etc • Workflow goes through single person(single point of failure!) 4
Previously Attempted Solution Kronos: • Many more features than required • Chosen for the wrong reason • Hard to integrate with existing system • Project was passed around until it withered 5
Requirements • Replicate current process (simplify!) • Integrate with homegrown SIS/HR system • Integrate with CAS / LDAP • Implement workflow 6
Rice Framework Features • Maintenance Documents • Transactional Documents • Workflow • Web Services • Quartz batch processes 7
Maintenance Documents • XML-based • Used for maintaining individual business objects • Fully rules and workflow capable • No HTML or JSP page 8
<dictionaryEntry> <maintenanceDocument> <businessObjectClass>org.kuali.contrib.timekeeping.bo.TimecardType</businessObjectClass> <maintainableClass>org.kuali.core.maintenance.KualiMaintainableImpl</maintainableClass> <documentAuthorizerClass>org.kuali.core.document.authorization.MaintenanceDocumentAuthorizerBase</documentAuthorizerClass> <authorizations> <authorization action="initiate"> <workgroups> <workgroup>TIMEKEEPING_DEFAULT</workgroup> </workgroups> </authorization> </authorizations> <documentTypeName>TimecardTypeMaintenanceDocument</documentTypeName> <label>Timecard Type Maintenance Document</label> <maintainableSections> <maintainableSection title="Edit TimecardType"> <maintainableItems> <maintainableField name="name" required="true" /> <maintainableField name="description" required="true" /> </maintainableItems> </maintainableSection> </maintainableSections> </maintenanceDocument> </dictionaryEntry> 9
Transactional Documents • Transient documents that may modify one or more business objects • More coding than Maintenance Documents • Question framework • Extremely capable = potential for complexity 10
Workflow • Keep it simple • Easy to over engineer • BSF:Groovy -> Java -> Web Service 11
Document XML <routePaths> <routePath> <start name="Adhoc Routing" nextNode="Assignment Manager Approval" /> <requests name="Assignment Manager Approval" nextNode="Assignment Supervisor Approval" /> <requests name="Assignment Supervisor Approval" /> </routePath> </routePaths> <routeNodes> <start name="Adhoc Routing"> <activationType>S</activationType> <mandatoryRoute>false</mandatoryRoute> <finalApproval>false</finalApproval> </start> <requests name="Assignment Manager Approval"> <activationType>S</activationType> <ruleSelector>Named</ruleSelector> <ruleName>AssignmentManagerApproval</ruleName> </requests> <requests name="Assignment Supervisor Approval"> <activationType>S</activationType> <ruleSelector>Named</ruleSelector> <ruleName>AssignmentSupervisorApproval</ruleName> </requests> </routeNodes> 12
Rule XML <rule> <name>AssignmentManagerApproval</name> <documentType>TimekeepingDocument</documentType> <description>This rule requires an approval by manager</description> <expression type="BSF:groovy"> import org.kuali.contrib.timekeeping.workflow.TimekeepingWorkflowUtils; return TKWorkflowUtils.constructManagerApproval(routeContext, rule); </expression> </rule> 13
Real-time integration • Direct Access to legacy database through BOs • Database schema extremely limited • permissions kept to a minimum, read-only • Access to business logic through web services Issues: • Legacy database not normalized • Database not necessarily accurate • Security 14
Batch Integration • Nightly Jobs • Take advantage of idle servers • Timecard Initialization • Notification • Finalization 15
Deployment Choice • Embedded Rice • Simple Java access to Rice functions • Separate database for Rice • Minimize number of tables added to application database • Faster development cycle • Option to move to thin client at later date 16
Timecard Application Rice Server (future) Web Services Legacy SIS/HR System KEW KNS Legacy DB Rice DB 17
Future Plans for Rice at Delta • Bringing on Kuali Financial and eventually Kuali Student • Parts of Rice moved from embedded to standalone • Legacy application integration with standalone rice 18
Timecard Application Future • Source code going to be released to community • Another sample application for Rice • Community involvement should result in a better product over time. 19