-
Notifications
You must be signed in to change notification settings - Fork 5
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
3bec459
commit 7571eaa
Showing
2 changed files
with
154 additions
and
161 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |