Automated Portal Registration
One area that uPortal has a hard time putting together accurate deployment statistics, primarily because anyone can just download and deploy uPortal without having to report back to Jasig. To help gather better data in this area automated deployment statistics gathering is being evaluated. The process would of course be opt-in but could provide very valuable information back to JASIG.
Goals and TimeLine
First Generation (uPortal 3.1.0)
- Present a "Register this uPortal Instance" portlet to portal administrators
- Portlet UI Components
- Institution Name
- Deployer Name
- Contact email address
- Checkboxes for submitted data
- uPortal Version
- Database Info (db name, db version, driver name, driver version)
- JVM Info (vendor, version, spec version)
- Container info (vendor, version, spec version)
- On submit of the form a POST to www.ja-sig.org/YetToBeDetermined/ is made with the provided/selected data
- Include a preview step that allows users to see what information is being submitted.
Second Generation (?.?.?)
- Add an additional options in the portlet for
- "Periodically send deployment information to Jasig (every 24 hours on average)"
- Number of users that have logged in (SELECT COUNT(*) FROM UP_USER)
- Watch for the portal login event to count logins/day (only submit data for days where the portal was up for all 24 hours)
Design
Portlet UI Ideas
- Text Inputs
- Portal Name
- Demo URL
- Institution Name
- Deployer (person) Name
- Contact Email
- Contact Phone
- Checkboxes
- One checkbox per collected data key
- Overall allow Publishing on www.jasig.org
- Per input and data key option for publishing on www.jasig.org
Portlet UI Mockups
deploymentRegistration.jsp
deploymentRegistrationSuccess.jsp
https://www.ja-sig.org/svn/uPortal/trunk/uportal-war/src/main/webapp/WEB-INF/flows/register-portal/
https://mywebspace.wisc.edu/dalquist/web/JA-SIG/uPortal/PortalRegistration/
Data Use Policy
A statement about how this information will be used is being drafted at Registration Policy Statement.
Data Collection API
/** * Implementation gets all possible data keys */ public Set<String> getPossibleDataKeys(); /** * Implementation gets all data the implementation knows how to collect */ public Map<String, Object> getCollectedData(); /** * Implementation gets data for only the keys specified in the keysToCollect Set */ public Map<String, Object> getCollectedData(Set<String> keysToCollect);
Data Submission API
/** * Submits the collected data to Jasig */ public void submitCollectedData(CollectedData data)
Object Model
public CollectedData { boolean canPublishGlobal String onePerTextInput boolean oneCanPublishPerTextInput Map<String, Object> collectedData }