Entity Broker Design
Information
This documents the general design for the entity broker system in Sakai
Entity interface
The entity is the object which represents some kind of system "thing", it is implemented and used by the webapp developer, all of the model objects in the webapp which need to exist in Sakai could be represented as entities
In our way of doing things, this is now simply an Object and the Entity interface is no longer needed
EntityProvider
The entity provider (EP) handles the movement of entities, it must be implemented by the webapp developer, it will be accessed by Sakai and possibly other tools in sakai
String getEntityPrefix() - returns the globally unique prefix for the entity handled by this provider
boolean entityExists(String id) - check if a specific entity exists
Addable interfaces for EntityProvider
AutoRegister - causes the provider to be registered automatically by spring
Resolvable - allows the actual entity objects to be accessed (resolved)
Importable - can be imported into Sakai using the archive service
Archivable - can be exported from Sakai into an archive using the archive service
Searchable - can be searched using the search service
Gradeable - can have an associated grade
Addressible - can be located via a URL
Attachable - can be attached to another entity
Versionable - the entity is versionable and versions are stored and acessible
Trackable - Events are emitted by this event manager (e.g. entity created, entity deleted, etc.)
EntityProviderManager
Manages entity providers
EP registration can be done via Spring instead of manually using the manager, the EP just has to have a spring bean definition and implement a specific interface
Set<String> getRegisteredPrefixes() - access the set of all registered provider prefixes
registerEntityProvider(EntityProvider) - register an EP programmatically
unregisterEntityProvider(EntityProvider) - unregister an EP programmatically
EntityProvider getProviderByReference(String reference) - get the EP that handles the entity identified by this reference
EntityBroker
Outward facing service, allows retrieval of entities metadata without knowledge of the entity type, used by Sakai and by other developers (to get entities)
boolean entityExists(String reference) - check if an entity defined by a reference exists
register events