...
inQuiry will provide Question & QuestionSet V2 api’s which will provide CRUD operation for multilingual data.
api version | qumlVersion | schemaVersion | version | compatibilityLevel |
---|---|---|---|---|
v1 | v1 but not stamped in the data as of now. | 1.0 | 1 | 5 |
v2 | 1.0 | 2.0 | 2 | 6 |
version or schemaVersion metadata will be set as 2 by default from micro-service for v2 api’s.
Current
compatibilityLevel
is set to 5 for the data created using v1 api’s. For v2 api’s, it will be set to 6 so that users should be able to discover and play only on latest app having latest player.async-questionset-publish flink job will handle different data validation based on schemaVersion / versionlatest app having latest player.async-questionset-publish flink job will handle different data validation based on schemaVersion / version.
schemaVersion will be used inside player, based on schemaVersion, player will switch the logic to process data.
player won't understand comaptibilityLevel, but will upgrade it to 6 for backward compatibility (existing apps).
data versioning will be implemented to store multiple version data at platform.
if quml specification will get updated in future,
if it is a minor change, the change can be accommodated in v2 api’s.
if spec will have major breaking change, we need to write next version of api’s.
For existing data created using v1 api’s, we have two approach as mentioned below:
No static Data Migration for existing objects and data transformation in question read & list api at run time to support v2 api spec.
One time static Data Migration
...
Old version of questionset-editor & mobile app works fine with v1 api.
Once older questions edited using v2 editor and api's, it will be migrated to v2 data model. So end user (consumption) won’t be affected on immediate basis . and at that point old player will not be able to discover the question (comaptibilityLevel will be upgraded to maintain backward compatibility of Sunbird-Ed mobile app).
Cons:
Platform need to understand all multi-language data (including editorState) and transform it to v2 api format for every read & list api call.
API Performance will be affected (specially question list api). To improve performance, cache will be implemented for list api to hold data post data transformation (currently no cache implementation present for list api).
Once the data is migrated to v2 data model, old player will not be able to discover the question (comaptibilityLevel will be upgraded).
...