Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions Domains/0-Core/BisCore.ecschema.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2852,6 +2852,7 @@
<Exceptions>
<string>Functional:FunctionalElement</string>
<string>Asset:AssetElement</string>
<string>Federation:FederationElement</string>
</Exceptions>
</NotSubclassableInReferencingSchemas>
</ECCustomAttributes>
Expand Down
66 changes: 66 additions & 0 deletions Domains/0-Core/Federation.ecschema.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- ==================================================================================
| * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
| * See LICENSE.md in the project root for license terms and full copyright notice.
======================================================================================= -->
<ECSchema schemaName="Federation" alias="fed" version="01.00.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2" description="Defines the 'Federation' domain. Contains base and concrete classes to be used to federate bis:Element instances.">
<ECSchemaReference name="CoreCustomAttributes" version="01.00.03" alias="CoreCA"/>
<ECSchemaReference name="BisCustomAttributes" version="01.00.00" alias="bisCA"/>
<ECSchemaReference name="BisCore" version="01.00.15" alias="bis"/>

<ECCustomAttributes>
<ProductionStatus xmlns="CoreCustomAttributes.01.00.03">
<SupportedUse>NotForProduction</SupportedUse>
</ProductionStatus>
<SchemaLayerInfo xmlns="BisCustomAttributes.01.00.00">
<Value>Core</Value>
</SchemaLayerInfo>
</ECCustomAttributes>

<ECEntityClass typeName="IFederationElement" modifier="Abstract" displayLabel="Federation Element Mix-in" description="An interface that can be mixed-into a bis:RoleElement subclass to indicate that it carries federation information - in the form of a Code, FederationGuid or both, applicable to other bis:Elements.">
<ECCustomAttributes>
<IsMixin xmlns="CoreCustomAttributes.01.00.03">
<!-- Only subclasses of bis:RoleElement can implement the ISubModeledElement interface -->
<AppliesToEntityClass>bis:RoleElement</AppliesToEntityClass>
</IsMixin>
</ECCustomAttributes>
</ECEntityClass>

<ECEntityClass typeName="FederationPartition" displayLabel="Federation Partition" description="A FederationPartition element establishes a 'Federated' Modeling Perspective for its parent bis:Subject.">
<BaseClass>bis:InformationPartitionElement</BaseClass>
</ECEntityClass>

<ECEntityClass typeName="FederationModel" displayLabel="Federation Model" description="A container for persisting FederationElement instances.">
<BaseClass>bis:RoleModel</BaseClass>
</ECEntityClass>

<ECRelationshipClass typeName="FederationModelBreaksDownFederationPartition" displayLabel="FederationModel Sub-Models FederationPartition" strength="embedding" strengthDirection="backward" modifier="None" description="Relates a FederationModel to the FederationPartition that it sub-models.">
<!-- @see Model.ModeledElement ECNavigationProperty -->
<BaseClass>bis:ModelModelsElement</BaseClass>
<Source multiplicity="(0..1)" roleLabel="models" polymorphic="false">
<Class class="FederationModel"/>
</Source>
<Target multiplicity="(0..1)" roleLabel="is modeled by" polymorphic="false">
<Class class="FederationPartition" />
</Target>
</ECRelationshipClass>

<ECEntityClass typeName="FederationElement" modifier="Abstract" displayLabel="Federation Element" description="A base class for IFederationElement implementations that model federation information applicable to one or more bis:Element instances.">
<BaseClass>bis:RoleElement</BaseClass>
<BaseClass>IFederationElement</BaseClass>
</ECEntityClass>

<ECEntityClass typeName="Federation" modifier="None" displayLabel="Federation" description="A generic concrete implementation of the IFederationElement mix-in.">
<BaseClass>FederationElement</BaseClass>
</ECEntityClass>

<ECRelationshipClass typeName="ElementFederatedByFederationElement" strength="referencing" modifier="None" description="Relates FederatedElement instances to the bis:Element instances that are federated by them." >
<BaseClass>bis:ElementRefersToElements</BaseClass>
<Source multiplicity="(0..*)" roleLabel="is federated by" polymorphic="true">
<Class class="bis:Element"/>
</Source>
<Target multiplicity="(0..*)" roleLabel="federates" polymorphic="true">
<Class class="IFederationElement"/>
</Target>
</ECRelationshipClass>
</ECSchema>
5 changes: 3 additions & 2 deletions Domains/0-Core/Functional.ecschema.xml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
<ECSchemaReference name="CoreCustomAttributes" version="01.00.04" alias="CoreCA"/>
<ECSchemaReference name="BisCustomAttributes" version="01.00.00" alias="bisCA"/>
<ECSchemaReference name="BisCore" version="01.00.15" alias="bis"/>
<ECSchemaReference name="Federation" version="01.00.00" alias="fed"/>
<ECSchemaReference name="ECDbMap" version="02.00.00" alias="ecdbmap"/>

<ECCustomAttributes>
Expand All @@ -34,7 +35,7 @@
</ECEntityClass>

<ECEntityClass typeName="FunctionalElement" modifier="Abstract" displayLabel="Functional Element" description="A func:FunctionalElement models required functionality that will ultimately be fulfilled by a physical Entity.">
<BaseClass>bis:RoleElement</BaseClass>
<BaseClass>fed:FederationElement</BaseClass>
<ECCustomAttributes>
<ShareColumns xmlns="ECDbMap.02.00.00">
<MaxSharedColumnsBeforeOverflow>32</MaxSharedColumnsBeforeOverflow>
Expand Down Expand Up @@ -102,7 +103,7 @@
</ECRelationshipClass>

<ECRelationshipClass typeName="PhysicalElementFulfillsFunction" strength="referencing" modifier="None" description="Relates func:FunctionalElement instances (which model a required function) to the bis:PhysicalElement instances that model the physical Entity that fulfills the function." >
<BaseClass>bis:ElementRefersToElements</BaseClass>
<BaseClass>fed:ElementFederatedByFederationElement</BaseClass>
<Source multiplicity="(0..*)" roleLabel="fulfills" polymorphic="true">
<Class class="bis:PhysicalElement"/>
</Source>
Expand Down
Loading