uPortal tools
A page about administrative tools for managing a uPortal instance (bulk and individual user account management, channel publication, etc.)
Ant targets as tools
A primary approach to providing administrative bulk processing tools for uPortal to date has been to provide Ant targets. The following ant tools are available.
- DbLoader - a tool used to load the database required for uPortal
- Dbtest - a tool to test the database connection
- md5passwd - a tool for creating users passwords in the database
- deleteuser - a tool for deleting users
- Register Channel Type - a tool for registering new channel types
- Register Stylesheet - a tool for registering stylesheets
- DbConvert21 - a tool to convert the uPortal database from version 2.1 to 2.2.*
Future directions
Using Ant targets as administrative tools to manipulate a uPortal instance has some disadvantages. It introduces the requirement that the uPortal code run outside the context of a servlet container and complicates getting other container services to work. Anything that retrieves container-managed resources via JNDI needs to have a working fallback for operating outside the context of JNDI in order to work in the context of an Ant task.
The Deployed uPortal does more
One direction to go would be to build more functionality into the deployed uPortal instance. With the deployed uPortal doing more more easily, there's less need for tools running outside the uPortal.
This takes a page from the Confluence / Jira approach. The way you upgrade a Confluence is you create a new database schema for the new Confluence to use, you bring online a new version of the Confluence, and then you use the admin UI to import content and configuration exported by the previous confluence.
uPortal channels as tools
An alternative to using Ant targets for bulk processing is to build this functionality into the live uPortal itself, presumably in administrative channels. This has the advantage of the administrative functionality implementation - the channel - is running in the context of a live uPortal, where the resources have been provisioned and the service implementations are running. Also, this approach can take advantage of HTML / web technology for providing the adminstative UI and workflow navigation. It can apply authentication and authorization requirements. It leverages uPortal for administration of a uPortal.
A CBulkAddUsers channel that allows an administator to submit or upload a file containg a list of users to bulk add would alleviate the need to have an Ant target to bulk add users. CUserManager already alleviates the need for the Ant md5passwd task which adds users individually.
WebServices as interface to administrative functionality in a running uPortal
Sakai has adopted an interesting approach of exposing some Sakai services, especially administrative services, using Web Services. This allows service calls against the deployed Sakai, and the implementations backing those calls are supported by a full, running Sakai deployment in a container backed by a working DB, etc.
If uPortal were to adopt this approach, then a deployed uPortal could make some administrative functionality available via web services. Systems outside the uPortal - Perl scripts and Ant target and such - in some ways become much more lightweight in their interaction with uPortal. The Ant target would need neither know nor care what RDBMS the uPortal was using. It would provide a (presumably, command line) user interface for marshalling calls to the web service exposed by the uPortal.
Dependency injection for Ant tasks
Another direction would be to inject dependencies into the Ant targets. The Ant build would invoke Java executable classes which would use a Spring XMLBeanFactory to instantiate their dependencies (or a delegate executable class). Any given Ant target would have XML wiring tegether its particular dependencies.