Service - Unit Manager: Difference between revisions

From Izara Wiki
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)

Working documents

Unit Manager