Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
submodels [2026/08/16 02:28]
hermann
submodels [2026/09/08 20:44] (current)
hermann
Line 181: Line 181:
 ==== Dependency Propagation When Publishing as a User Submodel ==== ==== Dependency Propagation When Publishing as a User Submodel ====
  
-If the local submodel ​being published ​depends on other local submodelsthose dependencies ​are published ​as user submodels ​as well.+When a local submodel ​is published ​as a user submodelits dependencies ​become local submodels of the published ​submodel, rather than independent ​user submodels ​of their own.
  
-Consider a local submodel **A** that depends on local submodels **B** and **C**, where **B** also depends on **C**. Publishing **A** as a user submodel produces ​three independenttop-level user submodels: ​**A**, **B**and **C**. ​The dependency relationships between them are preserved — **A** uses the user submodel **B** and the user submodel **C****B** uses the user submodel **C** — but all three now exist as separate entries in the user's submodel ​seteach individually available for use in other models.+Consider a local submodel **A** that depends on local submodels **B** and **C**, where **B** also depends on **C**. Publishing **A** as a user submodel produces ​a single user submodel, **A**, ​containing ​**B** and **C** as local submodels of **A**. **B** and **C** sit side by side inside ​**A**'s own local submodel set, so **B** does not get a separate copy of **C** — it uses the single copy of **C** held by their common parent **A**, the same way one local submodel ​depends on another local submodel of the same model. ​**B** and **C** are not added to the user'​s ​submodel ​set as independent,​ top-level entries — only **A** is. 
 + 
 +This flat structure holds regardless of whether **A** uses **C** directly. Even if **C** is used only by **B**, and not by **A** itself, publishing **A** still places **B** and **C** side by side as local submodels of **A** — **C** is not nested inside **B**. 
 + 
 +==== Republishing and Naming Collisions ==== 
 + 
 +Publishing or sending a submodel again — whether because ​the local submodel changed, or because a user submodel ​of the same name already exists for some other reason — behaves differently depending on the target: 
 + 
 +  ​* **User submodels are overwritten by name.** Publishing a local submodel ​as a user submodel always replaces whatever user submodel currently holds that name, whether that is an earlier published version of the same submodel or an unrelated existing ​user submodel that happens to share the name. Since dependencies become local submodels of the published submodel rather than independent user submodels (see [[#​dependency_propagation_when_publishing_as_a_user_submodel|Dependency Propagation When Publishing as a User Submodel]] above), republishing **A** does not touch any independently named user submodels **B** or **C** — it simply replaces **A**'​s ​local submodels **B** and **C** with their current definitions. 
 + 
 +  * **Store submodels are versioned, not overwritten.** Sending a submodel ​to the Store again does not replace the previous submission; it creates a new versiontagged with the Dinamica EGO version in use at the time, following the same versioning behavior described ​in [[#​versioning_and_compatibility|Versioning and Compatibility]].
  
 ==== Sending a Submodel to the Store ==== ==== Sending a Submodel to the Store ====
Line 202: Line 212:
  
 The store submodel package therefore ends up containing two independent copies of **C**: one local to **A**, and one local to **B**. Once packaged, these copies are independent of each other, the same as any other local submodels obtained through copying (see [[#​copying_importing_a_local_submodel_between_models|Copying (Importing) a Local Submodel Between Models]]). The store submodel package therefore ends up containing two independent copies of **C**: one local to **A**, and one local to **B**. Once packaged, these copies are independent of each other, the same as any other local submodels obtained through copying (see [[#​copying_importing_a_local_submodel_between_models|Copying (Importing) a Local Submodel Between Models]]).
 +
 +Unlike publishing to a user submodel, this nesting follows the actual dependency graph. If **C** is used only by **B**, and not by **A** itself, the store submodel package nests **C** inside **B** instead of placing it directly inside **A**: **C** becomes a local submodel of **B**, and **B** a local submodel of **A**.
 +
 +==== Dependencies Are Scoped to Their Store Submodel ====
 +
 +The local submodel copies of **B** and **C** packaged inside store submodel **A** exist only because **A** depends on them — they have no independent identity of their own. A packaged dependency inside one store submodel is entirely independent of a same-named dependency packaged inside a different store submodel, and of any unrelated user or store submodel that might share the same name; each store submodel'​s packaged dependencies are private to it.
  
 ===== The Submodel Store ===== ===== The Submodel Store =====
Line 210: Line 226:
  
 To browse and install submodels from the Submodel Store, choose //​Submodels//​ → //Submodel Store// on the model toolbar. Select the desired submodel from the list and click //Install Selected// to download it; it then becomes available locally as a store submodel. To browse and install submodels from the Submodel Store, choose //​Submodels//​ → //Submodel Store// on the model toolbar. Select the desired submodel from the list and click //Install Selected// to download it; it then becomes available locally as a store submodel.
 +
 +> **Tip:** To publish your own submodel to the Store instead of installing one, see [[#​sending_a_submodel_to_the_store|Sending a Submodel to the Store]].
  
 ==== Versioning and Compatibility ==== ==== Versioning and Compatibility ====
Line 259: Line 277:
   * [[dinamica_console|Dinamica Console]]   * [[dinamica_console|Dinamica Console]]
   * [[ego_script#​submodels|EGO Script — Submodels]]   * [[ego_script#​submodels|EGO Script — Submodels]]
- 
- 
-