Branches (aka EntitySets)
1. Overview / Introduction
A branch in SBE is a logical collection of models (Clazzes, Mappings, and models) stored within a Partition. Each branch provides a structured workspace for managing and evolving these models in alignment with a specific Channel and Ontology context .
Branches form the primary container for working models, versioned commits, and associated metadata. They are fundamental to synchronization, publish/refresh operations, and subscription mechanisms in SBE.
2. Conceptual Role
branches solve the problem of isolating model data for a given scope (such as a tool integration, channel, or project domain) while keeping it under the security boundary of its partition.
They abstract the complex lifecycle of models (creation, modification, merging, publishing, archiving) into a single container that can be managed independently, tracked by commit history, and synchronized with external systems .
Without branches, the platform would lack the ability to version models, track lineage, and manage changes in a controlled way.
3. Design Rationale
Key design decisions for branches include:
Tight binding to a Partition to inherit security and access controls.
Context-aware operations so that all publish, refresh, diff, merge, and subscription actions respect the ontology and configuration context of the branch.
Support for subscriptions to share lifecycle data across channels while maintaining independence of commits.
4. Relationship to Other Resources
Partition – branches are always contained within a partition.
Data Source – Models in an branch are sourced from or synchronized to a specific external system.
Ontology – An branch operates within a defined ontology context (branch/tag).
Channels – Channels reference branches with a one-to-one relation to manage publishing and refresh operations.
Subscriptions – branches can be subscribed to by other branches, allowing controlled replication of lifecycle data .
5. Conceptual Usage Patterns
Branches typically follow this lifecycle:
Creation – Often occurs when connecting a new channel, creating a new subscription, forking an existing branch, or creating a new ontology.
Population – Models are imported from an external data source (via publish/refresh). Classes are authored in the explorer UI.
Modification – Entity sets are managed and modified in the explorer and channel manager UI.
Archival or Deletion – When no longer in active use, the branch can be archived.
6. Common Pitfalls, Misunderstandings, and Troubleshooting
Ontology mismatch – Using an branch with the wrong ontology context can cause diff/merge errors.
Large set performance – Very large branches can slow operations, especially during non-isomorphic transformations.