Service - Unit Manager

From Izara Wiki
Jump to navigation Jump to search

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