Service - Unit Manager: Difference between revisions

From Izara Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
 
Line 110: Line 110:
= Ownership =
= 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.
* 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