Order Process

Client->Api: GET Catalogue
Api->Client: Catalogue

Client->Api: GET CatalogueItem
Api->Client: CatalogueItem

Client->Api: POST Cart (Name, Description)
Api->Client: Cart

Client->Api: POST CartItem
note right of Client: Configuration, Name, CartId, CatalogueItemId
note right of Client: !!!Validate Configuration!!!
Api->Client: CartItem

Client->Api: POST Orders/Create (CartId)
Api->OrderManager: Create(CartId)
OrderManager->CartDataManager: Get(CartId)
CartDataManager->OrderManager: Cart
OrderManager->JobManager: Create
JobManager->OrderManager: Job
OrderManager->OrderManager: Create

loop For every CartItem

  • OrderManager->CatalogueItemManager: Get(cartItem.CatalogueItemId)
  • CatalogueItemManager->OrderManager: CatalogueItem
  • OrderManager->BlueprintManager: Get(catalogueItem.BlueprintId)
  • BlueprintManager->OrderManager: Blueprint
  • OrderManager->JobManager: Create
  • JobManager->OrderManager: Job
  • OrderManager->OrderItemManager: Create

end

OrderManager->CartManager: Delete

loop For every OrderItem

  • OrderManager->BlueprintManager: Get(orderItem.BlueprintId)
  • BlueprintManager->OrderManager: Blueprint
  • OrderManager->ModelManager: Get(blueprint.ModelId)
  • ModelManager->OrderManager: Model
  • loop For every configuration entry
    • OrderManager->ModelAttributeManager: Get(configEntry.Id)
    • ModelAttributeManager->OrderManager: ModelAttribute
  • end
  • OrderManager->WorkflowManager: Invoke(activity, inputs)

end
OrderManager->Api: Job
Api->Client: Job

WorkflowManager->Activity: Invoke(inputs)
Activity->Queue: SendMessage(inputs)

loop

  • Activity->Queue: Check for message
  • Queue->Activity: Message

end

MessageProcessor->Queue: GetMessage
Queue->MessageProcessor: Message
MessageProcessor->ModelManager: GetModel(modelName)
ModelManager->MessageProcessor: Model
MessageProcessor->ItemManager: Create
ItemManager->MessageProcessor: Item
MessageProcessor->AttributeManager: Create