The following diagram shows the primary components that make up Fedora 4, and how they interact with each other and with external clients such as the Java client currently being developed, or a Hydra application.
- Authentication: authenticating requests is typically handled by the servlet container running the Fedora 4 webapp, and can usually be configured to support a wide range of authentication types.
- Authorization: there are currently modules for role-based authorization and XACML authorization, and custom authorization modules can be created to support other authorization types.
- PID Minter: there are currently PID minter modules that generate random UUID identifiers, or retrieve PIDs from an external web service, and custom PID minter modules can be created for other PID minting scenarios.
- Sequencers: the Modeshape API allows creating sequencers which are tightly-coupled asynchronous modules which can be configured to automatically process new and updated content.
- LevelDB: the default configuration uses LevelDB storage, but Infinispan supports several other storage mechanisms.
- Other Connectors (Git, Cloud, etc.): Modeshape supports a few other storage options with connector implementations, which could be extended to support Fedora 4. Custom connectors could also be developed to support other storage systems.
- Custom Message Consumer: the messaging system currently has modules for Solr and Elasticsearch indexing, triplestore synchronization using SPARQL Update, and serializing JRC/XML to disk. Custom modules can be created to support syncing with other systems, or performing a broader array of tasks such as format migration or fixity monitoring.