== 유즈 케이스 다이어그램 Let's have few examples : Note that you can disable the shadowing using the `+skinparam shadowing false+` command. == 유즈케이스 유즈케이스는 (두개의 괄호는 원으로 보이기 때문에) 괄호로 싸서 표현합니다. 아니면 `+usecase+` 키워를 이용하여 정의할 수 있습니다. 그리고 `+as+` 키워드를 이용하여 별칭을 정의 할 수 있습니다. 별칭은 관계를 정의할 때 사용됩니다. @startuml (First usecase) (Another usecase) as (UC2) usecase UC3 usecase (Last\nusecase) as UC4 @enduml == Actors The name defining an actor is enclosed between colons. You can also use the `+actor+` keyword to define an actor. An alias can be assigned using the `+as+` keyword and can be used later instead of the actor's name, e. g. when defining relations. You can see from the following examples, that the actor definitions are optional. @startuml :First Actor: :Another\nactor: as Man2 actor Woman3 actor :Last actor: as Person1 @enduml == Change Actor style You can change the actor style from stick man __(by default)__ to: * an awesome man with the `+skinparam actorStyle awesome+` command; * a hollow man with the `+skinparam actorStyle hollow +` command. === Stick man __(by default)__ @startuml :User: --> (Use) "Main Admin" as Admin "Use the application" as (Use) Admin --> (Admin the application) @enduml === Awesome man @startuml skinparam actorStyle awesome :User: --> (Use) "Main Admin" as Admin "Use the application" as (Use) Admin --> (Admin the application) @enduml __[Ref. https://forum.plantuml.net/10493/how-can-i-customize-the-actor-icon-in-svg-output?show=10513#c10513[QA-10493]]__ === Hollow man @startuml skinparam actorStyle Hollow :User: --> (Use) "Main Admin" as Admin "Use the application" as (Use) Admin --> (Admin the application) @enduml __[Ref. https://github.com/plantuml/plantuml/pull/396[PR#396]]__ == 유즈케이스 종류 If you want to have description on several lines, you can use quotes. You can also use the following separators: `+--+` `+..+` `+==+` `+__+`. And you can put titles within the separators. @startuml usecase UC1 as "You can use several lines to define your usecase. You can also use separators. -- Several separators are possible. == And you can add titles: ..Conclusion.. This allows large description." @enduml == Use package You can use packages to group actors or use cases. @startuml left to right direction actor Guest as g package Professional { actor Chef as c actor "Food Critic" as fc } package Restaurant { usecase "Eat Food" as UC1 usecase "Pay for Food" as UC2 usecase "Drink" as UC3 usecase "Review" as UC4 } fc --> UC4 g --> UC1 g --> UC2 g --> UC3 @enduml You can use `+rectangle+` to change the display of the package. @startuml left to right direction actor "Food Critic" as fc rectangle Restaurant { usecase "Eat Food" as UC1 usecase "Pay for Food" as UC2 usecase "Drink" as UC3 } fc --> UC1 fc --> UC2 fc --> UC3 @enduml == 기본 예제 To link actors and use cases, the arrow `+-->+` is used. The more dashes `+-+` in the arrow, the longer the arrow. You can add a label on the arrow, by adding a `+:+` character in the arrow definition. In this example, you see that __User__ has not been defined before, and is used as an actor. @startuml User -> (Start) User --> (Use the application) : A small label :Main Admin: ---> (Use the application) : This is\nyet another\nlabel @enduml == Extension If one actor/use case extends another one, you can use the symbol `+<|--+`. @startuml :Main Admin: as Admin (Use the application) as (Use) User <|-- Admin (Start) <|-- (Use) @enduml == Using notes You can use the `+note left of+` , `+note right of+` , `+note top of+` , `+note bottom of+` keywords to define notes related to a single object. A note can be also define alone with the `+note+` keywords, then linked to other objects using the `+..+` symbol. @startuml :Main Admin: as Admin (Use the application) as (Use) User -> (Start) User --> (Use) Admin ---> (Use) note right of Admin : This is an example. note right of (Use) A note can also be on several lines end note note "This note is connected\nto several objects." as N2 (Start) .. N2 N2 .. (Use) @enduml == Stereotypes You can add stereotypes while defining actors and use cases using `+<<+` and `+>>+`. @startuml User << Human >> :Main Database: as MySql << Application >> (Start) << One Shot >> (Use the application) as (Use) << Main >> User -> (Start) User --> (Use) MySql --> (Use) @enduml == 화살표 방향 변경 기본적으로, 클래스간의 링크는 대쉬2개 `+--+` 로 표시하고 수직방향이다. 다음 처럼 대쉬1개 (혹은 점)을 넣어서 수평방향 링크를 사용할 수 있다: @startuml :user: --> (Use case 1) :user: -> (Use case 2) @enduml You can also change directions by reversing the link: @startuml (Use case 1) <.. :user: (Use case 2) <- :user: @enduml It is also possible to change arrow direction by adding `+left+`, `+right+`, `+up+` or `+down+` keywords inside the arrow: @startuml :user: -left-> (dummyLeft) :user: -right-> (dummyRight) :user: -up-> (dummyUp) :user: -down-> (dummyDown) @enduml You can shorten the arrow by using only the first character of the direction (for example, `+-d-+` instead of `+-down-+`) or the two first characters (`+-do-+`). Please note that you should not abuse this functionality : __Graphviz__ gives usually good results without tweaking. == Splitting diagrams The `+newpage+` keywords to split your diagram into several pages or images. @startuml :actor1: --> (Usecase1) newpage :actor2: --> (Usecase2) @enduml == Left to right direction The general default behavior when building diagram is **top to bottom**. @startuml 'default top to bottom direction user1 --> (Usecase 1) user2 --> (Usecase 2) @enduml You may change to **left to right** using the `+left to right direction+` command. The result is often better with this direction. @startuml left to right direction user1 --> (Usecase 1) user2 --> (Usecase 2) @enduml == Skinparam You can use the link::skinparam[skinparam] command to change colors and fonts for the drawing. You can use this command : * In the diagram definition, like any other commands, * In an link::preprocessing[included file], * In a configuration file, provided in the link::command-line[command line] or the link::ant-task[ANT task]. You can define specific color and fonts for stereotyped actors and usecases. @startuml skinparam handwritten true skinparam usecase { BackgroundColor DarkSeaGreen BorderColor DarkSlateGray BackgroundColor<< Main >> YellowGreen BorderColor<< Main >> YellowGreen ArrowColor Olive ActorBorderColor black ActorFontName Courier ActorBackgroundColor<< Human >> Gold } User << Human >> :Main Database: as MySql << Application >> (Start) << One Shot >> (Use the application) as (Use) << Main >> User -> (Start) User --> (Use) MySql --> (Use) @enduml == Complete example @startuml left to right direction skinparam packageStyle rectangle actor customer actor clerk rectangle checkout { customer -- (checkout) (checkout) .> (payment) : include (help) .> (checkout) : extends (checkout) -- clerk } @enduml == Business Use Case You can add `+/+` to make Business Use Case. === Business Usecase @startuml (First usecase)/ (Another usecase)/ as (UC2) usecase/ UC3 usecase/ (Last\nusecase) as UC4 @enduml === Business Actor @startuml :First Actor:/ :Another\nactor:/ as Man2 actor/ Woman3 actor/ :Last actor: as Person1 @enduml __[Ref. https://forum.plantuml.net/12179/[QA-12179]]__