Service - Unit Manager: Difference between revisions
Jump to navigation
Jump to search
(Created page with "= Overview = Each unit is handled by a Service - Unit (handlers) service. The Unit Manager service handles shared orchestration of the Unit Handler services. = Repository = https://bitbucket.org/izara-market-products/izara-market-products-unit-manager = DynamoDB tables = == Standard Config Table Per Service == === Configuration tags === <syntaxhighlight lang="JavaScript"> { configKey: "SupplyGraphServiceName" configTag: "SupplyGraphServiceName" configV...") |
No edit summary |
||
(2 intermediate revisions by the same user not shown) | |||
Line 46: | Line 46: | ||
* partition key: unitId | * partition key: unitId | ||
* sort key: (none) | * sort key: (none) | ||
= Graph database = | |||
== [[Service - Supply Graph]]== | |||
=== Nodes === | |||
<syntaxhighlight lang="JavaScript"> | |||
{ | |||
nodeLabel: "{UnitSharedLib.UNIT_GRAPH_NODE_LABEL}", // stored in shared npm, shared by all unit Handlers | |||
schema: { | |||
identifier: true, | |||
restrictProperties: true, | |||
restrictRelationships: true, | |||
properties: { | |||
unitId: { | |||
identifier: true, //(random uuid) | |||
}, | |||
unitHandlerServiceNameTag: { | |||
immutable: true, | |||
}, | |||
}, | |||
} | |||
} | |||
</syntaxhighlight> | |||
* Unit Manager is responsible for this object type because shared by all Unit Handlers | |||
=== Relationships === | |||
<syntaxhighlight lang="JavaScript"> | |||
{ | |||
relationshipType: "{UnitSharedLib.UNIT_OWNED_BY_USER_GRAPH_REL_TYPE}", // "unitOwnedBy_user" | |||
schema: { | |||
elementCanBeRemoved: true, | |||
allPropertiesImmutable: false, | |||
restrictProperties: true, | |||
properties: { | |||
originTimestamp: //timestamp the request to create/change this relationship was sent | |||
}, | |||
} | |||
} | |||
</syntaxhighlight> | |||
* Links to the user who currently owns the unit | |||
<syntaxhighlight lang="JavaScript"> | |||
{ | |||
relationshipType: "{UnitSharedLib.UNIT_PREVIOUSLY_OWNED_BY_USER_GRAPH_REL_TYPE}", // "unitPreviouslyOwnedBy_user" | |||
schema: { | |||
elementCanBeRemoved: false, | |||
allPropertiesImmutable: true, | |||
restrictProperties: true, | |||
properties: { | |||
originTimestamp: //timestamp the request to create/change this relationship was sent | |||
fromTimestamp: //timestamp ownership began | |||
toTimestamp: //timestamp ownership ended | |||
}, | |||
} | |||
} | |||
</syntaxhighlight> | |||
* Links to users who previously owned the unit | |||
* Method of creating this link will be similar to versionedData, creating a new unitOwnedBy_user relationship at the same time as creating a new unitPreviouslyOwnedBy_user relationship | |||
= Ownership = | |||
* Each Unit is owned by one user, who can transfer ownership to another user | |||
* Owner can set user level permissions for other users to manage their units, like any other user owned object | |||
* New owner needs to accept ownership transfer for it to complete (in future could setup automatic accepatance configuration) | |||
= Working documents = | = Working documents = |
Latest revision as of 12:19, 6 August 2023
Overview
Each unit is handled by a Service - Unit (handlers) service.
The Unit Manager service handles shared orchestration of the Unit Handler services.
Repository
https://bitbucket.org/izara-market-products/izara-market-products-unit-manager
DynamoDB tables
Standard Config Table Per Service
Configuration tags
{
configKey: "SupplyGraphServiceName"
configTag: "SupplyGraphServiceName"
configValue: xxx // eg: "SupplyGraph"
}
{
configKey: "UnitHandlerService"
configTag: xxx // unitHandlerServiceNameTag, eg: "UnitStandard"|"UnitPacking", this is what is saved in each record
configValue: {
serviceName: xxx // eg: "UnitStandard", this is the actual deployed service name}
}
}
UnitRecord
Records which Handler manages each unit
{
unitId
unitHandlerServiceNameTag
}
- partition key: unitId
- sort key: (none)
Graph database
Service - Supply Graph
Nodes
{
nodeLabel: "{UnitSharedLib.UNIT_GRAPH_NODE_LABEL}", // stored in shared npm, shared by all unit Handlers
schema: {
identifier: true,
restrictProperties: true,
restrictRelationships: true,
properties: {
unitId: {
identifier: true, //(random uuid)
},
unitHandlerServiceNameTag: {
immutable: true,
},
},
}
}
- Unit Manager is responsible for this object type because shared by all Unit Handlers
Relationships
{
relationshipType: "{UnitSharedLib.UNIT_OWNED_BY_USER_GRAPH_REL_TYPE}", // "unitOwnedBy_user"
schema: {
elementCanBeRemoved: true,
allPropertiesImmutable: false,
restrictProperties: true,
properties: {
originTimestamp: //timestamp the request to create/change this relationship was sent
},
}
}
- Links to the user who currently owns the unit
{
relationshipType: "{UnitSharedLib.UNIT_PREVIOUSLY_OWNED_BY_USER_GRAPH_REL_TYPE}", // "unitPreviouslyOwnedBy_user"
schema: {
elementCanBeRemoved: false,
allPropertiesImmutable: true,
restrictProperties: true,
properties: {
originTimestamp: //timestamp the request to create/change this relationship was sent
fromTimestamp: //timestamp ownership began
toTimestamp: //timestamp ownership ended
},
}
}
- Links to users who previously owned the unit
- Method of creating this link will be similar to versionedData, creating a new unitOwnedBy_user relationship at the same time as creating a new unitPreviouslyOwnedBy_user relationship
Ownership
- Each Unit is owned by one user, who can transfer ownership to another user
- Owner can set user level permissions for other users to manage their units, like any other user owned object
- New owner needs to accept ownership transfer for it to complete (in future could setup automatic accepatance configuration)