iTwin.js-core APIs to be updated according to new additions to the BisCore schema
Is your feature request related to a problem? Please describe.
A new version of BisCore (01.00.17) is now consumed by the upcoming iTwin.js-core v5. Such new schema version brings a number of additions. Typescript APIs should be reviewed and updated accordingly.
The list of changes can be found in the following announcement: https://github.com/iTwin/bis-schemas/discussions/444
Do not forget to deprecate SynchronizationConfigLink.lastSuccessfulRun, which is the Typescript side of the equivalent property deprecated in BisCore 01.00.17.
BTW, BisCore 01.00.18 was released with one addition, to be picked up by iTwin.js-core 5 as well: https://github.com/iTwin/bis-schemas/discussions/462
BTW, BisCore 01.00.18 was released with one addition, to be picked up by iTwin.js-core 5 as well: iTwin/bis-schemas#462
That one's already addressed.
FYI, BisCore 01.00.19 was just released, in time to be picked up by iTwin.js-core 5.0, with half a dozen enhancements: #505
@diegoalexdiaz is there anything we need to address in itwinjs-core to use these enhancements? Otherwise I'll only update imodel-native to consume these changes in our 5.0.x branch
Out of the list of enhancements added to BisCore since 01.00.17, I'd surface the following via iTwin.js-core APIs (in no particular order, with the exception of the first one, which I believe is the most urgent for authoring apps):
-
New ChannelRootAspect.Version property, to enable semantic versioning of the data organization in a channel --> Add/update existing APIs to allow reading/setting a Channel's version.
-
Refactored the existing MemberPriority property from the ElementGroupsMembers relationship to its base class, ElementRefersToElements, and added it to the unique-index for the corresponding table in the underlying database. --> Refactor the equivalent property in the API up to its base class.
-
New Rank properties on DefinitionContainer, DefinitionSet and SubCategory --> Similar APIs to existing CategoryProps.Rank.
-
Introduced several subclasses of ModelModelsElement to document and advertise the expected model-class for each concrete ISubModeledElement implementation --> These new relationship classes could be automatically set if a caller to insertModel doesn't provide modeledElement.relClassName. e.g. If the modeledElement is a PhysicalPartition, modeledElement.relClassName could be set to
bis:PhysicalModelBreaksDownPhysicalPartitionif not passed by the caller. Same if the modeledElement is a Drawing, modeledElement.relClassName could be set toDrawingModelBreaksDownDrawing. Same forSheetModelBreaksDownSheet,DocumentListModelBreaksDownDocumentPartition,SpatialLocationModelBreaksDownTemplateRecipe3dInPlan,GroupInformationModelBreaksDownGroupInformationPartition,PhysicalModelBreaksDownTemplateRecipe3d,DefinitionModelBreaksDownDefinitionContainer,DefinitionModelBreaksDownDefinitionPartition,DrawingModelBreaksDownTemplateRecipe2d,InformationRecordModelBreaksDownInformationRecordPartition,LinkModelBreaksDownLinkPartition,GraphicalModel3dBreaksDownGraphicalPartition3dandSpatialLocationModelBreaksDownSpatialLocationPartition. -
Deprecated SynchronizationConfigLink.LastSuccessfulRun --> Deprecate the [equivalent members in the API](https://www.itwinjs.org/reference/core-common/entities/synchronizationconfiglinkprops/]
-
New ScaleFactor property to the Drawing class --> Consider exposing such new property as Props for the equivalent Class.
-
New TemplateRecipe3dInPlan concrete class to be used with template geometry in SpatialLocation data modeled as PlanProjection --> Consider adding an equivalent class similar to TemplateRecipe3d
-
New SpatialLocationRepresentsElement and SpatialLocationTypeRepresentsTypeDefinition relationships --> Consider adding equivalent classes, similar to DrawingGraphicRepresentsElement. Same for the new abstract PhysicalTypeComposesSubTypes relationship.
-
New DefinitionThumbnail concrete class, to standardize the patterns to capture and associate Thumbnail images with a DefinitionElement --> Consider adding equivalent APIs to make it easier to capture and store an Image to be used as Thumbnail, as well as properly associate it with a DefinitionElement.
-
From BisCore 01.00.20: New PhysicalMaterial.RenderMaterial navigation property --> Consider adding an equivalent property to PhysicalMaterial - potentially also via a Props class.
cc @ColinKerr , @aruniverse
completed in the PR referenced above. To my understanding no other changes were needed to utilize this new version of bis core other than updating the version of bis schema used in the addon.