Skip to content

Commit

Permalink
Remade ExtEvSimulationClasses.puml
Browse files Browse the repository at this point in the history
  • Loading branch information
marvinheintze committed Oct 6, 2024
1 parent 3bec459 commit 7571eaa
Show file tree
Hide file tree
Showing 2 changed files with 154 additions and 161 deletions.
3 changes: 2 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Updated AUTHORS.md [#904](https://github.com/ie3-institute/simona/issues/904)
- Updated `Gradle` to version V8.10 [#829](https://github.com/ie3-institute/simona/issues/829)
- Updated AUTHORS.md [#905](https://github.com/ie3-institute/simona/issues/905)
- Rewrote BMModelTest from groovy to scala [#646](https://github.com/ie3-institute/simona/issues/646)
- Rewrote BMModelTest from groov to scala [#646](https://github.com/ie3-institute/simona/issues/646)
- Updated `ExtEvSimulationClasses` [#898](https://github.com/ie3-institute/simona/issues/898)

### Fixed
- Removed a repeated line in the documentation of vn_simona config [#658](https://github.com/ie3-institute/simona/issues/658)
Expand Down
312 changes: 152 additions & 160 deletions docs/uml/main/ExtEvSimulationClasses.puml
Original file line number Diff line number Diff line change
@@ -1,223 +1,215 @@
@startuml
'https://plantuml.com/class-diagram
skinparam linetype ortho

package ev-simulation {
class ExtLink
class ExternalSampleSim
class EvModelImpl
skinparam linetype ortho
skinparam nodesep 50
skinparam ranksep 40

' adding hidden elements for layout purposes
class placeholderA {
w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w
skinparam node{
borderColor Transparent
fontColor Transparent
}
hide placeholderA

class placeholderB {
w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w
package MobilitySimulator {
class ExtLink
class MobilitySim
class ElectricVehicle
}
hide placeholderB

ExtLink -[hidden]> placeholderA
placeholderA -[hidden]> ExternalSampleSim
ExternalSampleSim -[hidden]> placeholderB
placeholderB -[hidden]> EvModelImpl
}

package simona-api {
' MIDDLE PART
class ExtEvData {
~ LinkedBlockingQueue<EvDataResponseMessageToExt> receiveTriggerQueue
- ActorRef dataService
- ActorRef extSimAdapter
+ List<UUID> requestAvailablePublicEvCs()
+ List<EvModel> sendEvPositions(EvMovementsMessage evMovementsMessage)
- void sendData(ExtEvMessage msg)
+ void queueExtMsg(ExtEvResponseMessage extEvResponse)
}

class ExtSimAdapterData {
~ LinkedBlockingQueue<ExtTrigger> receiveTriggerQueue
- ActorRef extSimAdapter
+ void queueExtMsg(ExtTrigger trigger)
+ void send(ExtTriggerResponse msg)
}

interface ExtData
'top to bottom direction

abstract class ExtSimulation {
- ExtSimAdapterData data
+ void setup(ExtSimAdapterData data, List<ExtData> adapters)
+ void run()
# {abstract} List<Long> doActivity(long tick)
# {abstract} Optional<Long> doActivity(long tick)
# {abstract} Long intitialize()
}
ExtSimulation --r> ExtData
MobilitySim -|> ExtSimulation

interface ExtLinkInterface {
+ ExtSimulation getExtSimulation()
+ List<ExtDataSimulation> getExtDataSimulations()
}

ExtLink --|> ExtLinkInterface
'ExtLinkInterface --d> ExtSimulation

interface ExtEvSimulation {
+ void setExtEvData(ExtEvData evData)
+ void setExtEvData(ExtEvData evData)
}

MobilitySim --|> ExtEvSimulation

interface ExtDataSimulation

ExternalSampleSim --|> ExtSimulation
ExternalSampleSim --|> ExtEvSimulation
ExtEvSimulation --|> ExtDataSimulation

ExtSimulation -[hidden]> ExtDataSimulation
ExtEvSimulation -|> ExtDataSimulation
ExtEvSimulation --> ExtEvData
'ExtLinkInterface -[norank]> ExtDataSimulation

ExtSimulation --> ExtData
ExtSimulation --> ExtSimAdapterData

ExtSimAdapterData -[hidden]> ExtEvData
ExtData <|-- ExtEvData
interface EvModel {
+ UUID getUuid()
+ String getId()
+ ComparableQuantity<Power> getSRatedAC()
+ ComparableQuantity<Power> getSRatedDC()
+ ComparableQuantity<Energy> getEStorage()
+ ComparableQuantity<Energy> getStoredEnergy()
+ Long getDepartureTick()
+ EvModel copyWith(ComparableQuantity<Energy> newStoredEnergy)
}

' placeholder
class plchldr1 {
w-w-w-w-w
}
hide plchldr1
class placeholder2 {
w-w-w-w-w-w-w-w-w-w-w-w-w-w-w
}
hide placeholder2
class placeholder3 {
w-w-w-w-w-w-w-w-w-w-w
}
hide placeholder3
class placeholder4 {
w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w-w
}
hide placeholder4
ElectricVehicle --|> EvModel

ExtData -[hidden]> plchldr1
plchldr1 -[hidden]> placeholder4
placeholder4 -[hidden]> EvMovement
ExtSimulation -[hidden]-> placeholder2
placeholder2 -[hidden]-> placeholder3
placeholder3 -[hidden]-> ExtSimAdapterData
placeholder2 -[hidden]> ExtData

interface ExtData

' RIGHT PART
abstract class EvMovement
class Arrival
class Departure
Arrival --|> EvMovement
Departure --|> EvMovement
Arrival -[hidden]> Departure
class ExtEvData {
+ LinkedBlockingQueue<EvDataResponseMessageToExt> receiveTriggerQueue
- ActorRef dataService
- ActorRef extSimAdapter
+ Map<UUID, Integer> requestAvailablePublicEvcs()
+ Map<UUID, Double> requestCurrentPrices()
+ List<EvModel> requestDepartingEvs(Map<UUID, List<UUID>> departures)
+ void provideArrivingEvs(Map<UUID, List<EvModel>> arrivals, Optional<Long> maybeNextTick)
+ void sendExtMsg(EvDataMessageFromExt msg)
+ void queueExtResponseMsg(EvDataResponseMessageToExt extEvResponse)
}

node sub2{
interface EvDataMessageFromExt

interface EvModel {
+ UUID getUuid()
+ String getId()
+ ComparableQuantity<Power> getSRated()
+ ComparableQuantity<Energy> getEStorage()
+ ComparableQuantity<Energy> getStoredEnergy()
+ EvModel copyWith(ComparableQuantity<Energy> newStoredEnergy)
}
interface DataMessageFromExt

ExtDataSimulation -[hidden]> Arrival
EvMovement *-> EvModel
EvModelImpl --|> EvModel
class ProvideArrivingEvs

class RequestCurrentPrices

class RequestDepartingEvs

interface EvDataMessageFromExt
class EvMovementsMessage {
- Map<UUID, List<EvMovement>> movements
}
class RequestEvcsFreeLots
RequestEvcsFreeLots --|> EvDataMessageFromExt
EvMovementsMessage --|> EvDataMessageFromExt
RequestEvcsFreeLots -[hidden]> EvMovementsMessage

}
RequestDepartingEvs --u|> EvDataMessageFromExt
RequestEvcsFreeLots --u|> EvDataMessageFromExt
ProvideArrivingEvs --u|> EvDataMessageFromExt
RequestCurrentPrices --u|> EvDataMessageFromExt

DataMessageFromExt --d|> EvDataMessageFromExt
ExtEvData --r[norank]> EvDataMessageFromExt
ExtEvData --u|> ExtData
ExtEvSimulation -u> ExtEvData




node sub1{
interface DataResponseMessageToExt

interface EvDataResponseMessageToExt
class AllDepartedEvsRepsonse {
- Map<UUID, List<EvMovement>> movements
}
class ProvideEvcsFreeLots
ProvideEvcsFreeLots --|> EvDataResponseMessageToExt
AllDepartedEvsRepsonse --|> EvDataResponseMessageToExt
ExtEvData -> EvDataMessageFromExt
ExtEvData -> EvDataResponseMessageToExt
EvMovement -[hidden]-> RequestEvcsFreeLots
EvDataMessageFromExt -[hidden]> EvDataResponseMessageToExt
EvMovementsMessage -[hidden]> ProvideEvcsFreeLots
ProvideEvcsFreeLots -[hidden]> AllDepartedEvsRepsonse

class ScheduleDataServiceMessage {
- ExtEvDataService dataService
}
EvDataResponseMessageToExt -[hidden]> ScheduleDataServiceMessage
ExtEvData -> ScheduleDataServiceMessage

class ProvideCurrentPrices{
+ ProvideCurrentPrices()
}

' LEFT PART
interface ExtLinkInterface {
+ ExtSimulation getExtSimulation()
+ List<ExtDataSimulation> getExtDataSimulations()
class ProvideDepartingEvs{
+ ProvideDepartingEvs()
}
ExtLinkInterface -[hidden]> ExtSimulation
ExtLink --|> ExtLinkInterface

interface ExtTrigger
class ActivationMessage {
- Long tick
class ProvideEvcsFreeLots{
+ ProvideEvcsFreeLots()
}
ActivationMessage --|> ExtTrigger

interface ExtTriggerResponse
class CompletionMessage {
- List<Long> newTriggers
ProvideEvcsFreeLots --|> EvDataResponseMessageToExt
ProvideDepartingEvs --|> EvDataResponseMessageToExt
ProvideCurrentPrices --|> EvDataResponseMessageToExt
ExtEvData --> EvDataResponseMessageToExt
DataResponseMessageToExt --|> EvDataResponseMessageToExt
}


node sub3{
class ExtSimAdapterData {
+ LinkedBlockingQueue<ExtTrigger> receiveTriggerQueue
- ActorRef extSimAdapter
- String[] mainArgs
+ void queueExtMsg(ControlMessageToExt msg)
+ void send(ControlResponseMessageFromExt msg)
+ String[] getMainArgs()
}

interface ControlMessageToExt

interface ControlResponseMessageFromExt

class CompletionMessage

class ActivationMessage

ExtSimAdapterData --u> ControlMessageToExt
ExtSimAdapterData --u> ControlResponseMessageFromExt
CompletionMessage --d|> ControlResponseMessageFromExt
ActivationMessage --d|> ControlMessageToExt
ExtSimulation -----> ExtSimAdapterData
}
CompletionMessage --|> ExtTriggerResponse

ExtTrigger -[hidden]> ExtTriggerResponse
ExtTrigger <- ExtSimAdapterData
ExtTriggerResponse <- ExtSimAdapterData

}



package simona {
abstract class ParticipantAgent
abstract class ParticipantAgent

class EvcsModel
class EvcsModel

class EvcsAgent
class EvcsAgent

interface SecondaryData
class EvMovementData {
movements: Set[EvMovement]
}
interface SecondaryData
class EvMovementData {
movements: Set[EvMovement]
}

class SimonaSim

class SimonaSim
class Scheduler

class Scheduler
class SimonaStandaloneSetup

class SimonaStandaloneSetup
class ExtSimLoader

class ExtSimLoader
class ExtSimAdapter

class ExtSimAdapter
class ExtEvDataService

class ExtEvDataService
Scheduler -- SimonaSim
SimonaSim *- SimonaStandaloneSetup
SimonaStandaloneSetup *- ExtSimLoader

Scheduler -- SimonaSim
SimonaSim *- SimonaStandaloneSetup
SimonaStandaloneSetup *- ExtSimLoader
ExtSimAdapter - Scheduler
ExtEvDataService -- Scheduler

ExtSimAdapter -- Scheduler
ExtEvDataService -- Scheduler
SecondaryData <|-- EvMovementData

SecondaryData <|-- EvMovementData
SimonaService <|- ExtEvDataService
ExtEvData --- ExtEvDataService

SimonaService <|- ExtEvDataService
ExtEvData <--- ExtEvDataService
ExtSimAdapterData <--- ExtSimAdapter

ExtSimAdapterData <--- ExtSimAdapter
ExtEvDataService "n" <-> "1" EvcsAgent
EvcsAgent --|> ParticipantAgent
EvcsAgent *- EvcsModel

' 1 and n are swapped here due to bug with linetype ortho and labels
ExtEvDataService "n" <-> "1" EvcsAgent
EvcsAgent --|> ParticipantAgent
EvcsAgent *- EvcsModel
}

'Order of classes/interfaces established through hidden connections:

ExtSimAdapter -[hidden]> SimonaService
}
sub1 ---[hidden]d> sub2
ExtLink -[hidden]> ElectricVehicle
ExtSimulation -[hidden]> ExtEvSimulation
ExtSimulation -[hidden]> DataResponseMessageToExt
RequestDepartingEvs --[hidden]> SecondaryData

@enduml

0 comments on commit 7571eaa

Please sign in to comment.