Service - Unit Manager: Difference between revisions

From Izara Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
Line 72: Line 72:
</syntaxhighlight>
</syntaxhighlight>
* Unit Manager is responsible for this object type because shared by all Unit Handlers
* 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.


= Working documents =
= Working documents =

Revision as of 08:30, 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.

Working documents

Unit Manager