...
The outcome of this analysis is to move forward with API version as a significant entity, accepting some limitations in the multiple connection release, while using a design that supports future enhancements to increase the flexibility of Data Import when working with different versions of the ODS API.
Note: The earlier recommendation of using a natural key for the ApiVersions table is reversed in favor of any identity column. This minimizes impact to the data model when implementing future enhancements.
Future Enhancements:
- Enhance the versioning concept to understand variations on standard Ed-Fi versions resulting from extensions.
- Enhance the import feature to make it easier to permit data maps targeting one version to be used with another compatible version (for example, to enable a 3.2 shared template to be imported and used with a 3.4 version).
Bootstrap Data Applicability
...
UI Feature | Modifications |
Activity |
|
Data Browser -> Assessments / Schools |
|
Agents |
|
Maps |
|
Logs -> Files tab |
|
Lookups |
|
Configuration |
|
API Connections |
|
Export |
|
Import |
|
Template Sharing |
|
Data Model Changes
Table | Change | Justification |
ApiServers |
| To help differentiate between API connections, each is associated with a name. |
Agents |
| An agent executes against an API connection. |
IngestionLogs |
| Denormalize columns to preserve history. |
ApiVersions |
| A master table is established to support ApiVersion as a first-class citizen (e.g. to populate dropdown list of versions in UI) and FK relationships associated with it. |
Resources |
| Supports the persistence of resource metadata per API version. |
DataMaps |
| Maps are version specific. |
BootstrapDatas |
| Migrate connection specific bootstrap information to a new table. |
BootstrapDataAgents |
| Associate a bootstrap data item with an agent. Plays a role similar to the DataMapAgents table and related UI on Agent definition screen. |
BootstrapDataApiConnections |
| Migrate ProcessedDate from BootstrapDatas to track if bootstrap data needs to be posted to the API. |
Alternate Design
Another design approach for adding multiple connection support is for Data Import to operate within a current connection context. This approach was originally taken by Certica for their enhancements to Data Flow.
...