# 상태등록부 (StateRegister)

상태등록부(state-register)는 **도메인 내에서 어떤 상태값을 영구적으로(퍼머넌트하게) 유지하고 싶을 때 사용하는 구조**입니다.

- 상태값은 퍼머넌트하게 저장됩니다.
- 자동 publish 용으로 설정된 경우, 값이 변경될 때마다 자동으로 publish(이벤트 발행)가 발생합니다.
- subscriber(구독자)는 구독을 시작하는 시점에 현재값을 자동으로 전달받습니다.

이 기능은 주로 [시나리오](../concept/scenario.md)에서 다음과 같은 패턴으로 활용됩니다:

- 도메인 내의 어떤 값을 영구적으로 유지하고자 할 때 사용합니다.
- 상태등록부에 값을 쓰거나 읽는 작업(state-write, state-read)으로 시나리오 내에서 상태를 활용할 수 있습니다.
- 클라이언트에 어떤 값을 publish할 때, publish tag와 동일한 이름의 state-register가 있다면 자동으로 값이 업데이트됩니다.

---

[상태등록부(state-register)](../concept/state-register.md)는 특정 의미를 가지는 상태의 값을 정의하는 화면이다.

- 이 기능은 보통 [시나리오](../concept/scenario.md)의 [state-write](../task/state-write.md), [state-read](../task/state-read.md) 태스크에 의해서 사용된다.

## 속성(properties)

- 이름(name)
  - 상태의 이름을 지정
  - 이름은 유니크해야함
- 설명(description)
- 구분(type)
  - 임의의 텍스트를 입력할 수 있으며, 각 상태들을 사용자가 구분하고자 하는 목적이다
- TTL (Time To Live)
  - 상태값이 유효한 시간을 초단위로 정의할 수 있다.
  - TTL 값이 0보다 크면, TTL이 설정된 것으로 판단한다.
  - 마지막에 설정된 상태값이 TTL 시간이 지나면 무효화된다
- 상태값(state)
  - 이 상태가 가지는 현재의 값을 의미한다.
- 수정일시(wrote at)
  - 상태값이 수정된 최종 시간

## operations

- 저장(save state-register)
  - 상태등록 수정사항을 저장한다.
- 삭제(delete state-register)
  - 선택된 상태등록을 삭제한다.
