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
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
}