i want to make my external actor go to the right of the system boundary can u write a plant uml code in draw.io for me?

0 votes
asked Mar 16 in Question / help by Gorn
@startuml
skinparam actorStyle stickman
left to right direction

' --- Styling ---
skinparam usecase {
    BackgroundColor<<Hub>> #FFCC99
    BackgroundColor<<Technical>> #E1D5E7
    BackgroundColor<<Action>> #FFFFFF
    BackgroundColor<<External>> #F5F5F5
}

' --- Actors (Left Side) ---
actor Passenger
actor "System Administrator" as SysAdmin

' --- System Boundary ---
rectangle "LongThangNaiKorTorMor System" {
    
    (View Station Maps) as UC2
    (Check Train/Bus Schedule) as UC3
    (Top up Travel Card) as UC4
    (View Travel History) as UC5
    (Report Issue) as UC6
    (Generate Payment QR / NFC) as UC_Pay
    (Check Crowd Density) as UC_Crowd
    (Plan Multi-Modal Journey) as UC1

    (Deploy System Updates) as UC13
    (Generate System Reports) as UC7
    (Handle Feedbacks) as UC8
    (API Management) as UC12
    (Manage User Accounts) as UC9
    (Monitor System Health) as UC11
    (Configure GTFS Data) as UC_GTFS

    (Login to Passenger Account) as LoginP <<Hub>>
    (Verify Wallet Balance) as VerifyW <<Hub>>
    (Login to Admin Panel) as LoginS <<Hub>>
    
    (Update Transit Channels) as T1 <<Technical>>
    (Upload Map Media) as T2 <<Technical>>
    (Set Route Milestones) as T3 <<Technical>>
}

' --- Actors (Right Side) ---
' Defining these AFTER the rectangle forces them to the right
actor "Payment Scanner" as Scanner <<External>>
actor "Transit Operator API" as TransitAPI <<External>>

' --- Relationships (Left) ---
Passenger --> UC1
Passenger --> UC2
Passenger --> UC3
Passenger --> UC4
Passenger --> UC5
Passenger --> UC6
Passenger --> UC_Crowd
Passenger --> UC_Pay

SysAdmin --> UC7
SysAdmin --> UC8
SysAdmin --> UC9
SysAdmin --> UC_GTFS
SysAdmin --> UC11
SysAdmin --> UC12
SysAdmin --> UC13

' --- Internal Logic ---
UC_Pay ..> LoginP : <<include>>
UC_Pay ..> VerifyW : <<include>>
UC4 ..> LoginP : <<include>>
UC5 ..> LoginP : <<include>>
UC9 ..> LoginS : <<include>>
UC11 ..> LoginS : <<include>>
UC12 ..> LoginS : <<include>>

UC_GTFS <.. T1 : <<extend>>
UC_GTFS <.. T2 : <<extend>>
UC_GTFS <.. T3 : <<extend>>

' --- Relationships (Right) ---
' Using the syntax "UseCase -- Actor" pushes the actor to the right
UC_Crowd -- TransitAPI
UC1 -- TransitAPI
UC_Pay -- Scanner

@enduml

1 Answer

0 votes
answered Mar 16 by The-Lu (89,080 points)

Hello G.,

Here is a proposal, change 'Passenger' and 'System Administrator' order and add a level for Relationships, as:

@startuml
skinparam actorStyle stickman
left to right direction

' --- Styling ---
skinparam usecase {
    BackgroundColor<<Hub>> #FFCC99
    BackgroundColor<<Technical>> #E1D5E7
    BackgroundColor<<Action>> #FFFFFF
    BackgroundColor<<External>> #F5F5F5
}

' --- Actors (Left Side) ---
actor "System Administrator" as SysAdmin
actor Passenger

' --- System Boundary ---
rectangle "LongThangNaiKorTorMor System" {
    
    (View Station Maps) as UC2
    (Check Train/Bus Schedule) as UC3
    (Top up Travel Card) as UC4
    (View Travel History) as UC5
    (Report Issue) as UC6
    (Generate Payment QR / NFC) as UC_Pay
    (Check Crowd Density) as UC_Crowd
    (Plan Multi-Modal Journey) as UC1

    (Deploy System Updates) as UC13
    (Generate System Reports) as UC7
    (Handle Feedbacks) as UC8
    (API Management) as UC12
    (Manage User Accounts) as UC9
    (Monitor System Health) as UC11
    (Configure GTFS Data) as UC_GTFS

    (Login to Passenger Account) as LoginP <<Hub>>
    (Verify Wallet Balance) as VerifyW <<Hub>>
    (Login to Admin Panel) as LoginS <<Hub>>
    
    (Update Transit Channels) as T1 <<Technical>>
    (Upload Map Media) as T2 <<Technical>>
    (Set Route Milestones) as T3 <<Technical>>
}

' --- Actors (Right Side) ---
' Defining these AFTER the rectangle forces them to the right
actor "Payment Scanner" as Scanner <<External>>
actor "Transit Operator API" as TransitAPI <<External>>

' --- Relationships (Left) ---
Passenger --> UC1
Passenger --> UC2
Passenger --> UC3
Passenger --> UC4
Passenger --> UC5
Passenger --> UC6
Passenger --> UC_Crowd
Passenger --> UC_Pay

SysAdmin --> UC7
SysAdmin --> UC8
SysAdmin --> UC9
SysAdmin --> UC_GTFS
SysAdmin --> UC11
SysAdmin --> UC12
SysAdmin --> UC13

' --- Internal Logic ---
UC_Pay ..> LoginP : <<include>>
UC_Pay ..> VerifyW : <<include>>
UC4 ..> LoginP : <<include>>
UC5 ..> LoginP : <<include>>
UC9 ..> LoginS : <<include>>
UC11 ..> LoginS : <<include>>
UC12 ..> LoginS : <<include>>

UC_GTFS <.. T1 : <<extend>>
UC_GTFS <.. T2 : <<extend>>
UC_GTFS <.. T3 : <<extend>>

' --- Relationships (Right) ---
' Using the syntax "UseCase -- Actor" pushes the actor to the right
UC_Crowd --- TransitAPI
UC1 --- TransitAPI
UC_Pay --- Scanner

@enduml

Enjoy,
Regards,
Th.

...