From 22721c2389d29dc1800b817acc75225ba738cb7f Mon Sep 17 00:00:00 2001 From: Florian Kromer Date: Tue, 14 Oct 2025 09:18:50 +0000 Subject: [PATCH 1/2] docs: domain model relationship --- docs/datamodel.md | 4 + docs/graphics-source/domain_model.drawio | 121 +++++++++++++++++++++++ docs/images/domain_model.png | Bin 0 -> 50450 bytes 3 files changed, 125 insertions(+) create mode 100644 docs/graphics-source/domain_model.drawio create mode 100644 docs/images/domain_model.png diff --git a/docs/datamodel.md b/docs/datamodel.md index 08a4fcbd3b..8b9bdb2377 100644 --- a/docs/datamodel.md +++ b/docs/datamodel.md @@ -50,6 +50,10 @@ Software Content Definition: The public defined entities and their relation which are reflected by the Management API. +

+ Domain Model Entity Relationship +

+ --- ## Deleting and Archiving Software Modules diff --git a/docs/graphics-source/domain_model.drawio b/docs/graphics-source/domain_model.drawio new file mode 100644 index 0000000000..14b40cbfbd --- /dev/null +++ b/docs/graphics-source/domain_model.drawio @@ -0,0 +1,121 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/images/domain_model.png b/docs/images/domain_model.png new file mode 100644 index 0000000000000000000000000000000000000000..47b7057a9ea021e3d883a12e28827ebb90771ebe GIT binary patch literal 50450 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 NuisFtmbVQ5e*k2))_MQ{ literal 0 HcmV?d00001 From 1c13bf73bbd865afc2b27003ba0cbc8956f58d6b Mon Sep 17 00:00:00 2001 From: Florian Kromer Date: Tue, 14 Oct 2025 12:27:35 +0000 Subject: [PATCH 2/2] docs: domain model entities and high level types --- docs/datamodel.md | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/docs/datamodel.md b/docs/datamodel.md index 8b9bdb2377..09b98913cf 100644 --- a/docs/datamodel.md +++ b/docs/datamodel.md @@ -54,6 +54,34 @@ The public defined entities and their relation which are reflected by the Manage Domain Model Entity Relationship

+| Entity | Role | +|---|---| +| Action | Action delivered from backend to target side and potentially executed on a target. Can have an execution status of `closed`, `proceeding`, `canceled`, `scheduled`, `rejected`, `resumed`, `downloaded`, `download`. Can have a result of `success`, `failure`, `none`. | +| Artifact | Update data + metadata delivered to targets. | +| Distribution Set | Subset of targets used during a rollout. | +| Software Module | Child entity of distribution set. | +| Rollout | Root entity (overall backend side state machine). | +| Target | A physical device. | + +Information about the Rollout related behavior can be found in +[Rollout management](https://eclipse.dev/hawkbit/concepts/rollout-management/). +Information about target side behavior can be found in +[Target State Machine](https://eclipse.dev/hawkbit/concepts/targetstate/). +The behavior shown in *Target State Machine* needs to be implemented in the +update client used on target side (behavioral interface specification for +update clients). + +Additional information required to understand the high level functionality: + +| Type | Role | +|---|---| +| Action Type | Type of the action (`SOFT`, `FORCED`, `TIMEFORCED`, `DOWNLOAD_ONLY`). | +| Action Cancelation Type | Type of action cancelation responded from target to backend side via a DDI API feedback endpoint `SOFT`, `FORCE`, `NONE`. | +| Distribution Set Tag | Allows classification of distribution set. | +| Distribution Set Type | Allows classification of distribution set (according to type). Builtin are `os_app`, `os`, `app`. | +| Target Tag | Allows classification of target (e.g. for grouping, indicating target roles, ...). | +| Target Type | Allows classification of target (optional). | + --- ## Deleting and Archiving Software Modules