Skip to content

Commit

Permalink
Merge branch 'master' into CivilSpatial
Browse files Browse the repository at this point in the history
  • Loading branch information
diegoalexdiaz authored Jan 17, 2025
2 parents a0abe6b + c4dbf3b commit e7f20ea
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 1 deletion.
14 changes: 14 additions & 0 deletions Domains/0-Core/BisCore.ecschema.xml
Original file line number Diff line number Diff line change
Expand Up @@ -1034,6 +1034,19 @@
</ECProperty>
<ECProperty propertyName="Format" typeName="string" displayLabel="Format" description="The format of the external repository."/>
</ECEntityClass>
<ECEntityClass typeName="RepositoryInfoAspect" displayLabel="Repository Info Aspect" modifier="None" description="A bis:ElementUniqueAspect that identifies a bis:Element as one of the roots of a *channel*, specified by its *channel-key*, which is a subset of the overall model-hierarchy and associated data, that is independently maintained.">
<BaseClass>ElementUniqueAspect</BaseClass>
<ECProperty propertyName="OriginatingSystem" typeName="string" displayLabel="Originating System" description="Name and optionally version of the software application or tool that created data in the External DataSource referenced through the owning RepositoryLink"/>
</ECEntityClass>
<ECRelationshipClass typeName="RepositoryLinkOwnsInfoAspect" strength="embedding" modifier="None">
<BaseClass>ElementOwnsUniqueAspect</BaseClass>
<Source multiplicity="(1..1)" roleLabel="owns" polymorphic="true">
<Class class="RepositoryLink"/>
</Source>
<Target multiplicity="(0..1)" roleLabel="is owned by" polymorphic="true">
<Class class="RepositoryInfoAspect"/>
</Target>
</ECRelationshipClass>

<ECEntityClass typeName="EmbeddedFileLink" displayLabel="Embedded File Link" description="A bis:EmbeddedFileLink is a bis:LinkElement that links to a file embedded within the iModel.">
<BaseClass>LinkElement</BaseClass>
Expand Down Expand Up @@ -1873,6 +1886,7 @@
<ECEntityClass typeName="ChannelRootAspect" displayLabel="Channel Root Aspect" modifier="Sealed" description="A bis:ElementUniqueAspect that identifies a bis:Element as one of the roots of a *channel*, specified by its *channel-key*, which is a subset of the overall model-hierarchy and associated data, that is independently maintained.">
<BaseClass>ElementUniqueAspect</BaseClass>
<ECProperty propertyName="Owner" typeName="string" description="Channel-key of the channel"/>
<ECProperty propertyName="Version" typeName="string" description="Semantic version of the data-organization and default content in the channel, set by the Owner that last edited it."/>
</ECEntityClass>
<ECRelationshipClass typeName="ElementOwnsChannelRootAspect" strength="embedding" modifier="None">
<BaseClass>ElementOwnsUniqueAspect</BaseClass>
Expand Down
7 changes: 6 additions & 1 deletion Domains/0-Core/BisCore.remarks.md
Original file line number Diff line number Diff line change
Expand Up @@ -396,7 +396,12 @@ Applications create channels to define portions of the model-hierarchy that they

Each Element (typically a `Subject` or `InformationPartitionElement`) that owns a `ChannelRootAspect` defines a root of the model-hierarchy that is included in a particular *channel*. It recursively descends down through `ElementOwnsChildElements` and `ModelModelsElement` relationships to include all of the child elements and sub-models into the specified *channel*. A *channel* is conceptually identified by its _Channel Key_ value of the `Owner` property of a `ChannelRootAspect`.

There may be more than one root `Subject`s or `InformationPartitionElement`s in a model-hierarchy that are included in the same *channel*. In that case, each `Subject` or `InformationPartitionElement` instance specifies the same _Channel Key_ value in their `ChannelRootAspect`.
Applications can optionally use the `ChannelRootAspect.Version` property in order to assign a _semantic version_ number to the data-organization in a *channel*. _Semantic versioning_ aims at efficiently advertising read and write backwards-compatibility with respect to previous versions of the owning Application of a *channel*.

_Semantic versioning_ of *channels* follows the "[read-version].[write-version].[minor-version]" format.
- [read-version] is incremented when the data-organization of a *channel* is changed in ways that older versions of an Application cannot safely understand it for reading purposes.
- [write-version] is incremented when the data-organization of a *channel* is changed in ways that it is not safe for older versions of an Application to add, modify or delete data in it.
- [minor-version] is incremented when the data-organization of a *channel* is changed in ways that older versions of an Application can still safely read it or write to it.

Note that *Channels* do not nest. That is, once a `Subject` or `InformationPartitionElement` instance defines a root to be included in a particular *channel*, no descendant Element of such root in the subject-hierarchy can be used to define a root for a different *channel*.

Expand Down

0 comments on commit e7f20ea

Please sign in to comment.