modelling
This commit is contained in:
		
							
								
								
									
										325
									
								
								doc/order_model.puml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										325
									
								
								doc/order_model.puml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,325 @@
 | 
			
		||||
@startuml
 | 
			
		||||
 | 
			
		||||
class AbstractObject {
 | 
			
		||||
  ID string 
 | 
			
		||||
  Name string
 | 
			
		||||
  IsDraft bool // is consider as a draft
 | 
			
		||||
  UpdateDate date 
 | 
			
		||||
  LastPeerWriter string 
 | 
			
		||||
  CreatorID string 
 | 
			
		||||
  AccessMode int // public or private
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
AbstractObject ^-- AbstractResource
 | 
			
		||||
AbstractObject ^-- Order
 | 
			
		||||
AbstractObject ^-- Booking
 | 
			
		||||
AbstractObject ^-- BuyingStatus
 | 
			
		||||
AbstractObject ^-- WorkflowExecution
 | 
			
		||||
AbstractObject ^-- Workflow
 | 
			
		||||
 | 
			
		||||
class AbstractResource {
 | 
			
		||||
  Logo string 
 | 
			
		||||
  Description string 
 | 
			
		||||
  ShortDescription string 
 | 
			
		||||
  Owners []string 
 | 
			
		||||
  UsageRestrictions string 
 | 
			
		||||
  
 | 
			
		||||
  VerifyAuth(request) bool
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
AbstractResource "1 " --* "many  " InstanceITF
 | 
			
		||||
AbstractCustomizedResource "1  " --* "1  " InstanceITF
 | 
			
		||||
 | 
			
		||||
AbstractResource ^-- ComputeResource
 | 
			
		||||
AbstractResource ^-- DataResource
 | 
			
		||||
AbstractResource ^-- ProcessingResource
 | 
			
		||||
AbstractResource ^-- StorageResource
 | 
			
		||||
AbstractResource ^-- WorkflowResource
 | 
			
		||||
class ComputeResource {
 | 
			
		||||
  Architecture string 
 | 
			
		||||
  Infrastructure string
 | 
			
		||||
}
 | 
			
		||||
class DataResource {
 | 
			
		||||
  Type string 
 | 
			
		||||
  Quality string 
 | 
			
		||||
  OpenData bool 
 | 
			
		||||
  Static bool 
 | 
			
		||||
  UpdatePeriod date 
 | 
			
		||||
  PersonalData bool 
 | 
			
		||||
  AnonymizedPersonalData bool
 | 
			
		||||
  SizeGB float64
 | 
			
		||||
  Licence string 
 | 
			
		||||
  Example string
 | 
			
		||||
}
 | 
			
		||||
ProcessingResource "1  " *-- "1  " ProcessingUsage
 | 
			
		||||
class ProcessingUsage {
 | 
			
		||||
  CPUs map[string]CPU 
 | 
			
		||||
  GPUs map[string]GPU 
 | 
			
		||||
  RAM RAM
 | 
			
		||||
  StorageGB float64 
 | 
			
		||||
  Hypothesis string 
 | 
			
		||||
  ScalingModel string
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
class ProcessingResource {
 | 
			
		||||
  Infrastructure string 
 | 
			
		||||
  Service bool 
 | 
			
		||||
  Usage ProcessingUsage
 | 
			
		||||
  OpenSource bool 
 | 
			
		||||
  License string 
 | 
			
		||||
  Maturity string 
 | 
			
		||||
}
 | 
			
		||||
class StorageResource {
 | 
			
		||||
  Type string 
 | 
			
		||||
  Accronym string
 | 
			
		||||
}
 | 
			
		||||
WorkflowResource "1  " --* "many  " ComputeResource
 | 
			
		||||
WorkflowResource "1  " --* "many  " DataResource
 | 
			
		||||
WorkflowResource "1  " --* "many  " ProcessingResource
 | 
			
		||||
WorkflowResource "1  " --* "many  " StorageResource
 | 
			
		||||
class WorkflowResource {
 | 
			
		||||
  WorkflowID string 
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
class ExploitResourceSet {}
 | 
			
		||||
 | 
			
		||||
AbstractCustomizedResource --^ AbstractResource
 | 
			
		||||
AbstractCustomizedResource --* ExploitResourceSet
 | 
			
		||||
ExploitResourceSet ^-- CustomizedComputeResource
 | 
			
		||||
ExploitResourceSet ^-- CustomizedDataResource
 | 
			
		||||
ExploitResourceSet ^-- CustomizedProcessingResource
 | 
			
		||||
ExploitResourceSet ^-- CustomizedStorageResource
 | 
			
		||||
ExploitResourceSet ^-- CustomizedWorkflowResource
 | 
			
		||||
class AbstractCustomizedResource {
 | 
			
		||||
// A customized resource is an 
 | 
			
		||||
// extended abstract resource not use in catalog
 | 
			
		||||
  ExplicitBookingDurationS float64 
 | 
			
		||||
  UsageStart date 
 | 
			
		||||
  UsageEnd date 
 | 
			
		||||
  SelectedPricing string
 | 
			
		||||
}
 | 
			
		||||
class CustomizedComputeResource {
 | 
			
		||||
  CPUsLocated map[string]float64
 | 
			
		||||
  GPUsLocated map[string]float64
 | 
			
		||||
  RAMLocated float64
 | 
			
		||||
}
 | 
			
		||||
class CustomizedDataResource {
 | 
			
		||||
  StorageGB float64
 | 
			
		||||
}
 | 
			
		||||
class CustomizedProcessingResource {
 | 
			
		||||
  Container Container
 | 
			
		||||
}
 | 
			
		||||
class CustomizedStorageResource {
 | 
			
		||||
  StorageGB bool
 | 
			
		||||
}
 | 
			
		||||
class CustomizedWorkflowResource {}
 | 
			
		||||
 | 
			
		||||
interface InstanceITF {
 | 
			
		||||
  GetID() string 
 | 
			
		||||
  VerifyPartnership() bool // eval if there is one partnership per peer groups in every instance
 | 
			
		||||
  GetPeerGroups() []ResourcePartnerITF, []map[string][]string 
 | 
			
		||||
  ClearPeerGroups()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
InstanceITF -- ResourceInstance
 | 
			
		||||
ResourceInstance ^-- ComputeResourceInstance
 | 
			
		||||
ResourceInstance ^-- StorageResourceInstance
 | 
			
		||||
ResourceInstance "many  " --* "1  " ResourcePartnerITF
 | 
			
		||||
class ResourceInstance {
 | 
			
		||||
  ID string 
 | 
			
		||||
  Location Geopoint
 | 
			
		||||
  Country CountryCode 
 | 
			
		||||
  AccessProtocol string 
 | 
			
		||||
}
 | 
			
		||||
class ComputeResourceInstance {
 | 
			
		||||
  SecurityLevel string 
 | 
			
		||||
  PowerSource string 
 | 
			
		||||
  CPUs map[string]CPU 
 | 
			
		||||
  GPUs map[string]GPU 
 | 
			
		||||
  RAM RAM
 | 
			
		||||
}
 | 
			
		||||
class StorageResourceInstance {
 | 
			
		||||
  Local bool 
 | 
			
		||||
  SecurityLevel string 
 | 
			
		||||
  SizeType string 
 | 
			
		||||
  SizeGB int 
 | 
			
		||||
  Encryption bool 
 | 
			
		||||
  Redundancy string 
 | 
			
		||||
  Throughput string
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
ResourcePartnerITF -- ResourcePartnership
 | 
			
		||||
ResourcePartnership ^-- ComputeResourcePartnership
 | 
			
		||||
ResourcePartnership ^-- DataResourcePartnership
 | 
			
		||||
ResourcePartnership ^-- StorageResourcePartnership
 | 
			
		||||
 | 
			
		||||
interface ResourcePartnerITF {
 | 
			
		||||
  GetPricing(id string) PricingProfileITF
 | 
			
		||||
  GetPeerGroups() []ResourcePartnerITF, []map[string][]string 
 | 
			
		||||
  ClearPeerGroups()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
ResourcePartnership "many  " --*  "1  " PricingProfileITF
 | 
			
		||||
class ResourcePartnership{
 | 
			
		||||
  Namespace string 
 | 
			
		||||
  PeerGroups map[string][]string 
 | 
			
		||||
}
 | 
			
		||||
class ComputeResourcePartnership {
 | 
			
		||||
  MaxAllowedCPUsCores map[string]int 
 | 
			
		||||
  MaxAllowedGPUsMemoryGB map[string]float64 
 | 
			
		||||
  RAMSizeGB float64
 | 
			
		||||
}
 | 
			
		||||
class DataResourcePartnership {
 | 
			
		||||
  MaxDownloadableGBAllowed float64
 | 
			
		||||
  PersonalDataAllowed bool
 | 
			
		||||
  AnonymizedPersonalDataAllowed bool
 | 
			
		||||
}
 | 
			
		||||
class StorageResourcePartnership {
 | 
			
		||||
  MaxSizeGBAllowed float64
 | 
			
		||||
  OnlyEncryptedAllowed bool
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
RefundType -- AccessPricingProfile
 | 
			
		||||
enum RefundType {
 | 
			
		||||
  REFUND_DEAD_END
 | 
			
		||||
  REFUND_ON_ERROR
 | 
			
		||||
  REFUND_ON_EARLY_END
 | 
			
		||||
}
 | 
			
		||||
PricingProfileITF -- AccessPricingProfile
 | 
			
		||||
PricingProfileITF -- ExploitPricingProfile
 | 
			
		||||
PricingProfileITF -- WorkflowResourcePricingProfile
 | 
			
		||||
AccessPricingProfile ^-- DataResourcePricingProfile
 | 
			
		||||
AccessPricingProfile ^-- ProcessingResourcePricingProfile
 | 
			
		||||
ExploitPricingProfile ^-- ComputeResourcePricingProfile
 | 
			
		||||
ExploitPricingProfile ^-- StorageResourcePricingProfile
 | 
			
		||||
interface PricingProfileITF {
 | 
			
		||||
  GetPrice(quantity float64, val float64, start date, end date, request) float64
 | 
			
		||||
  IsBuying() bool
 | 
			
		||||
}
 | 
			
		||||
class AccessPricingProfile {
 | 
			
		||||
  ID string 
 | 
			
		||||
  Pricing PricingStrategy
 | 
			
		||||
  DefaultRefundType RefundType 
 | 
			
		||||
  RefundRatio int // percentage of refund on price
 | 
			
		||||
}
 | 
			
		||||
class DataResourcePricingProfile {}
 | 
			
		||||
class ProcessingResourcePricingProfile {}
 | 
			
		||||
 | 
			
		||||
ExploitPrivilegeStrategy -- ExploitPricingProfile
 | 
			
		||||
enum ExploitPrivilegeStrategy {
 | 
			
		||||
  BASIC
 | 
			
		||||
  GARANTED_ON_DELAY
 | 
			
		||||
  GARANTED
 | 
			
		||||
} 
 | 
			
		||||
 | 
			
		||||
AccessPricingProfile --* PricingStrategy
 | 
			
		||||
AccessPricingProfile ^-- ExploitPricingProfile
 | 
			
		||||
class ExploitPricingProfile {
 | 
			
		||||
  AdditionnalRefundTypes RefundTypeint 
 | 
			
		||||
  PrivilegeStrategy ExploitPrivilegeStrategy 
 | 
			
		||||
  GarantedDelaySecond int 
 | 
			
		||||
  Exceeding bool 
 | 
			
		||||
  ExceedingRatio int // percentage of Exceeding based on price
 | 
			
		||||
}
 | 
			
		||||
class ComputeResourcePricingProfile {
 | 
			
		||||
  OverrideCPUsPrices map[string]float64
 | 
			
		||||
  OverrideGPUsPrices map[string]float64
 | 
			
		||||
  OverrideRAMPrice float64
 | 
			
		||||
}
 | 
			
		||||
class StorageResourcePricingProfile {}
 | 
			
		||||
WorkflowResourcePricingProfile "1  " --* "many  " ExploitResourceSet
 | 
			
		||||
 | 
			
		||||
class WorkflowResourcePricingProfile {
 | 
			
		||||
  ID string 
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
BuyingStrategy -- PricingStrategy
 | 
			
		||||
enum BuyingStrategy {
 | 
			
		||||
  UNLIMITED 
 | 
			
		||||
  SUBSCRIPTION 
 | 
			
		||||
  PAY_PER_USE
 | 
			
		||||
}
 | 
			
		||||
Strategy -- TimePricingStrategy
 | 
			
		||||
Strategy "0-1  " *-- " " PricingStrategy
 | 
			
		||||
interface Strategy {
 | 
			
		||||
  GetStrategy () string 
 | 
			
		||||
  GetStrategyValue() int
 | 
			
		||||
}
 | 
			
		||||
enum TimePricingStrategy {
 | 
			
		||||
  ONCE 
 | 
			
		||||
  PER_SECOND 
 | 
			
		||||
  PER_MINUTE
 | 
			
		||||
  PER_HOUR
 | 
			
		||||
  PER_DAY
 | 
			
		||||
  PER_WEEK
 | 
			
		||||
  PER_MONTH
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
class PricingStrategy {
 | 
			
		||||
  Price float64 
 | 
			
		||||
  BuyingStrategy 
 | 
			
		||||
  TimePricingStrategy TimePricingStrategy
 | 
			
		||||
  OverrideStrategy Strategy
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
PeerOrder "many  " *-- "1  " Order
 | 
			
		||||
PeerItemOrder "many  " *-- "1  " PeerOrder
 | 
			
		||||
PricedItemITF "many  " *-- "1  " PeerItemOrder
 | 
			
		||||
 | 
			
		||||
PricedItemITF -- AbstractCustomizedResource
 | 
			
		||||
 | 
			
		||||
class Order {
 | 
			
		||||
  OrderBy string 
 | 
			
		||||
  WorkflowExecutionIDs []string
 | 
			
		||||
  Status string 
 | 
			
		||||
  Total float64
 | 
			
		||||
}
 | 
			
		||||
class PeerOrder {
 | 
			
		||||
  PeerID string 
 | 
			
		||||
  Error string 
 | 
			
		||||
  Status string 
 | 
			
		||||
  BillingAddress string 
 | 
			
		||||
  Total float64
 | 
			
		||||
}
 | 
			
		||||
class PeerItemOrder {
 | 
			
		||||
  Quantity int 
 | 
			
		||||
  BuyingStatus string 
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
class BuyingStatus {}
 | 
			
		||||
 | 
			
		||||
WorkflowExecution "many  " --* "1  " Workflow
 | 
			
		||||
Workflow "1  " --* "many  " WorkflowScheduler
 | 
			
		||||
WorkflowScheduler "1  " --* "many  " WorkflowExecution
 | 
			
		||||
 | 
			
		||||
class WorkflowExecution {
 | 
			
		||||
  ExecDate date 
 | 
			
		||||
  EndDate date 
 | 
			
		||||
  State string 
 | 
			
		||||
  WorkflowID string 
 | 
			
		||||
  
 | 
			
		||||
  ToBookings() []Booking
 | 
			
		||||
}
 | 
			
		||||
class WorkflowScheduler* {
 | 
			
		||||
  Message string 
 | 
			
		||||
  Warning string 
 | 
			
		||||
  Start date 
 | 
			
		||||
  End date 
 | 
			
		||||
  DurationS float64
 | 
			
		||||
  Cron string
 | 
			
		||||
  
 | 
			
		||||
  Schedules(workflowID string, request) []WorkflowExecution
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Workflow "1  " --* "many  " ExploitResourceSet
 | 
			
		||||
 | 
			
		||||
class Workflow {}
 | 
			
		||||
 | 
			
		||||
interface PricedItemITF {
 | 
			
		||||
  getPrice(request) float64, error
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@enduml
 | 
			
		||||
		Reference in New Issue
	
	Block a user