D2Lang

[D2Lang] 10. D2의 Sequence 다이어그램의 사용법을 알아보자! (1)

o0zrone 2023. 5. 8. 12:40
728x90

Sequence 다이어그램의 경우 shape을 설정해서 사용할 수 있습니다.

다음과 같이 shape: sequence_diagram 사용합니다.

shape: sequence_diagram
alice -> bob: What does it mean\\nto be well-adjusted?
bob -> alice: The ability to play bridge or\\ngolf as if they were games.

아래와 같이 출력됩니다.

시퀀스 다이어그램의 자식은 전체에서 동일한 범위를 가집니다. (중첩되지 않고 사용됩니다.)

Office chatter: {
  shape: sequence_diagram
  alice: Alice
  bob: Bobby
  awkward small talk: {
    alice -> bob: uhm, hi
    bob -> alice: oh, hello
    icebreaker attempt: {
      alice -> bob: what did you have for lunch?
    }
    unfortunate outcome: {
      bob -> alice: that's personal
    }
  }
}

아래의 결과와 같이 자식은 부모를 참조한 영역을 가지게 됩니다.

선언 순서에 따라 좌측에서 우측으로 배치됩니다.

연결 순서에 따라 시퀀스가 정해집니다.

shape: sequence_diagram

a
b
c
d

c -> d
d -> a
b -> d

아래와 같이 생성됨을 확인할 수 있습니다.

다음 예제는 연결 및 라벨 재정의 등 여타 다른 컨테이너와 같이 다른 속성을 사용하는 예입니다.

direction: right

base: {
  first: First {
    shape: sequence_diagram
    a: A
    b: B
    setp 1: {
      a -> b: request
      b -> a: response
      data request: {
        a -> b: request
      }
      data response: {
        b -> a: response
      }
    }
  }

  second: Second {
    shape: sequence_diagram
    a: A
    b: B
    a -> b: request
    b -> a: response
    b -> a.verify: request verify
    a.verify -> b.verify: response verify
  }

  first -> second
}

아래와 같이 부모가 있고 그 안에서 시퀀스에서 시퀀스로 연결하는 것을 확인할 수 있습니다.

 

위의 결과에서 a.verify, b.verify 부분이 막대기가 있는 것을 확인할 수 있습니다.

이 영역은 span이라고 하며 시퀀스 다이어그램 내에서 상호 작용의 시작과 끝을 의미합니다.

D2에서 그 막대기의 범위는 다른 곳에서 "수명", "활성화 상자" 및 "활성화 막대"라고도 합니다.

다음 예는 span을 사용하는 예입니다.

shape: sequence_diagram
a.area2 -> b.b1
a.area2.a1 -> b.b1
a.area2.a1 <- b.b1
a.area2 <- b.b1

다음과 같이 중첩하기도 하고 서로 연결해서 사용할 수 있습니다.

 

다음에도 이어서 squence 다이어그램에 대해 이어가겠습니다.