# Activity Instance Start 사용자 가이드

## 개요

Activity Instance Start 페이지는 새로운 작업 인스턴스를 시작하거나, 초안 상태의 작업 인스턴스를 편집하고 발행하는 화면입니다. 이 페이지에서는 작업에 필요한 데이터를 입력하고, 작업 흐름을 시작할 수 있습니다.

## 화면 구성

Activity Instance Start 페이지는 크게 다음과 같은 요소로 구성됩니다:

1. **작업 정보 리본**: 작업 인스턴스의 기본 정보(이름, 설명, 상태 등)를 표시합니다.
2. **작업 내용 영역**: 작업 유형에 따라 다양한 형태의 내용이 표시됩니다.
3. **작업 버튼 영역**: 작업을 초안으로 저장하거나 발행할 수 있는 버튼이 제공됩니다.

## 주요 기능

### 작업 내용 입력

작업 인스턴스의 UI 유형에 따라 다양한 형태의 내용 입력 방식이 제공됩니다:

#### 1. 템플릿 기반 (uiType: 'template')

HTML 템플릿을 기반으로 한 정적인 형태의 내용을 표시합니다. 템플릿 내에서 사용자 입력 요소를 포함할 수 있습니다.

#### 2. 자동 생성 폼 (uiType: 'generated')

활동 모델을 기반으로 자동으로 생성된 입력 폼이 표시됩니다. 다음과 같은 두 섹션으로 구분됩니다:

- **Input**: 작업 시작에 필요한 입력 데이터 필드
- **Output**: 작업 결과로 생성될 출력 데이터 필드

각 필드는 활동 모델에서 정의된 유형(텍스트, 숫자, 날짜, 선택 등)에 따라 적절한 입력 컴포넌트로 표시됩니다.

#### 3. 보드 뷰어 (uiType: 'board')

보드 형태의 시각적 인터페이스를 통해 작업 내용을 표시합니다. 보드는 다양한 위젯과 컴포넌트를 포함할 수 있으며, 입력값과 출력값이 보드 내에 통합되어 표시됩니다.

#### 4. 사용자 정의 요소 (uiType: 'custom-element')

사용자 정의 웹 컴포넌트를 사용하여 완전히 맞춤화된 인터페이스를 제공합니다. 정의된 태그 이름에 따라 해당 컴포넌트가 로드되어 표시됩니다.

### 작업 저장 및 발행

페이지 상단의 버튼을 통해 다음과 같은 작업을 수행할 수 있습니다:

1. **초안 저장 (Draft)**: 현재 작업 상태를 초안으로 저장합니다. 이후에 다시 수정할 수 있습니다.
2. **발행 (Issue/Post)**: 작업을 발행하여 실제 업무 흐름을 시작합니다. 활동의 시작 유형에 따라 버튼 이름이 'Issue' 또는 'Post'로 표시됩니다.

### 입력 및 출력 데이터 관리

작업 인스턴스의 UI 유형에 따라 입력 및 출력 데이터가 다음과 같이 처리됩니다:

- **템플릿**: 템플릿 내의 입력 요소를 통해 데이터가 수집됩니다.
- **자동 생성 폼**: Input 및 Output 섹션의 폼을 통해 데이터가 관리됩니다.
- **보드 뷰어**: 보드 내의 위젯과 컴포넌트를 통해 데이터가 관리됩니다.
- **사용자 정의 요소**: 컴포넌트 내부 로직에 따라 데이터가 관리됩니다.

작업 발행 시, 입력 데이터는 작업 인스턴스의 'input' 속성에, 출력 데이터는 'output' 속성에 저장됩니다.

## 추가 기능

### 활동 모델 기반 데이터 구조화

활동에 정의된 모델에 따라 입력 및 출력 데이터의 구조가 결정됩니다. 각 필드는 다음과 같은 속성을 가질 수 있습니다:

- **name**: 필드 이름
- **description**: 필드 설명
- **tag**: 데이터 태그(JSON 경로)
- **inout**: 입력/출력 유형(in, out, inout)
- **type**: 데이터 유형(string, number, date 등)
- **unit**: 데이터 단위
- **options**: 추가 옵션(선택 목록 등)
- **quantifier**: 수량화 방식
- **spec**: 추가 명세

### 입출력 필드 연동

'inout' 유형으로 정의된 필드는 입력과 출력이 연동됩니다. 입력 데이터를 변경하면 자동으로 출력 데이터도 함께 변경됩니다.

### 승인 라인 관리

작업 인스턴스에는 승인 라인이 설정될 수 있습니다. 승인 라인은 다음과 같은 속성을 갖습니다:

- **type**: 승인자 유형(user, role, department 등)
- **value**: 승인자 식별자
- **approver**: 승인자 정보(이름, 설명 등)

작업 발행 시 설정된 승인 라인에 따라 승인 프로세스가 진행됩니다.

### 마감일 설정

작업 인스턴스에는 마감일(dueAt)이 설정될 수 있습니다. 마감일은 작업이 완료되어야 하는 기한을 나타내며, 달력 컨트롤을 통해 설정할 수 있습니다.
