# 업무정의(Activity)

Activity는 "업무정의" 라고 이해할 수 있다.

워크리스트 시스템에서는 업무의 인스턴스를 생성하고 수행, 검토, 결재 승인, 완료 까지의 업무인스턴스의 라이프사이클을 관리하며, 사용자와 인터렉션을 통해서 업무 수행의 효율을 높이는 시스템이다.
이 업무 인스턴스의 모델이 되는 것을 "Activity"라고 한다.

## 워크리스트 내부 엔티티 구조

- 업무정의 : Activity
- 업무인스턴스 : Activity Instance
- 업무쓰레드 : Activity Thread - 하나의 업무인스턴스는 여러 피할당자에 의해서 수행될 수 있는데, 각각의 피할당자의 업무 진행과정을 관리하는 엔티티이다.
- 승인 이력 : Activity Approval - 업무 쓰레드에 대한 각각의 승인과정을 관리하는 엔티티이다.

## 업무정의의 속성

- 이름 : 업무정의의 이름이며, 해당 업무정의로 생성된 업무인스턴스들의 디폴트 이름으로 제시된다.
- 설명 : 업무정의에 대한 설명이며, 해당 업무정의로 생성된 업무인스턴스들의 디폴트 설명으로 제시된다.
- 상태
  - 초안작업중 : 업무정의를 작성중이며 배포되기 전이다. 업무인스턴스를 생성할 수 없는 상태이다.
  - 배포됨 : 업무정의가 완료되어 배포된 상태이다.
  - 폐기 : 업무정의가 더 이상 사용되지 않고 폐기되었다.
- 업무타입
  - BPMN 2.0 명세에 의한 태스크 타입이다.
  - 사용자가 수행하는 업무는 'User' 태스크 타입을 지정한다.
- 시작 유형
  - [새업무 시작](./starter-list.md)의 시작업무 유형을 참고한다.
- 다중인스턴스 유형
  - 하나의 업무인스턴스의 피할당자를 한명만 할 것인지, 여러명을 할 것인지를 지정하며, 여러명인 경우 동시에 수행할지, 순차적으로 수행할지를 지정한다.
  - parallel : 여러 할당자가 동시에 하나의 업무인스턴스를 수행하는 경우
  - sequential : 여러 할당자가 순처적으로 하나의 업무인스턴스를 수행하는 경우
  - 설정하지 않으면, 단일 피할당자에 의해서만 수행됨을 의미한다.
- 검색 키
  - 업무인스턴스 이력에서 데이터를 기반으로 검색할 수 있도록, input 데이타들 중에서 5개까지 검색키로 지정할 수 있다.
  - 해당 업무정의의 업무인스턴스 중에서 내가 수행한 업무들은 '업무수행이력' 메뉴에서 검색해볼 수 있는데, '업무수행이력'의 하위메뉴 중에서 업무정의의 이름과 동일한 메뉴에서 검색해볼 수 있다.
  - 검색 키로 지정된 input 데이타는 이 메뉴에서 검색키로 활용된다.
- 우선순위
  - 업무인스턴스의 디폴트 우선순위로 제시된다.
- 스케쥴
  - 업무정의는 스케쥴에 의해서 인스턴스가 자동 생성될 수 있다. 여기서는 자동생성을 위한 스케쥴을 설정할 수 있다.
- 타임존
  - 스케쥴 설정의 타임존을 설정한다.
- 미리보기
  - 업무정의를 상징하는 이미지를 설정할 수 있다. 특히 모바일 환경에서 카드형식의 리스트에서 각 업무들을 식별하는데 효과적이다.
- 발급자 역할
  - 사용자의 [시작가능한 업무]('./start-list.md')에 리스트될 수 있기 위해서는 발급자 역할을 가진 사용자 이어야 한다.
  - 이 업무정의로 부터 업무 인스턴스를 생성할 수 있는 역할군을 지정한다.
- 피할당 역할
  - 이 업무정의의 인스턴스의 피할당자가 될 수 있는 역할 군을 지정한다.
  - [업무뱅크](./activity-bank.md)에 게시하는 경우, 해당 역할을 가진 사람만이 PICK할 수 있다.
- 관리자 역할
  - 이 업무정의의 관리자 역할 군을 지정한다.
  - 관리자는 이 업무정의의 모든 인스턴스의 현황과 이력을 조회할 수 있다.
- 피할당자들(assignees)
  - 업무인스턴스의 디폴트 피할당자들을 조직 체계 내에서 지정할 수 있다.
  - 이 피할당자들은 이 업무정의의 인스턴스가 issue될 때 자동으로 피할당된다.
- 결재선(approval line)
  - 피할당자에 의해서 업무쓰레드가 수행되어 제출(submit)되면, 해당 결재선을 타고 승인의 과정을 거치게 된다.
- 화면타입
  - 업무생성 및 수행과정에 시스템에 의해서 작성자에게 보여지게될 작업 화면의 유형
  - Generated : 업무정의 모델에 의해서 동적으로 자동 생성된다.
  - Template :
  - Board : 화면 소스에 설정한 보드가 보여진다.
  - CustomElement : 데이타 인터렉션 규약을 만족하는 커스텀 엘리먼트가 보여진다. 해당 커스텀엘리먼트는 in/out data를 입력으로 받고, in/out이 수정될 때 이벤트를 발생시키는 규약을 만족하여야 한다.
  - Page : 브라우저의 페이지 라우팅을 지정할 수 있다.
  - External URL : 외부 URL을 지정할 수 있다.
- 화면소스
  - 화면타입에 해당하는 상세 설정을 한다.
- 뷰타입
  - 업무수행과정 또는 이력을 조회할 때 보여지게될 작업 화면의 유형
  - Generated : 업무정의 모델에 의해서 동적으로 자동 생성된다.
  - Template :
  - Board : 화면 소스에 설정한 보드가 보여진다.
  - CustomElement : 데이타 인터렉션 규약을 만족하는 커스텀 엘리먼트가 보여진다. 해당 커스텀엘리먼트는 in/out data를 입력으로 받고, in/out이 수정될 때 이벤트를 발생시키는 규약을 만족하여야 한다.
  - Page : 브라우저의 페이지 라우팅을 지정할 수 있다.
  - External URL : 외부 URL을 지정할 수 있다.
- 뷰소스
  - 뷰타입에 해당하는 상세 설정을 한다.
- 리포트타입
  - 업무정의와 관련된 리포트를 제공할 때 보여지게될 작업 화면의 유형
  - Generated : 업무정의 모델에 의해서 동적으로 자동 생성된다.
  - Template :
  - Board : 화면 소스에 설정한 보드가 보여진다.
  - CustomElement : 데이타 인터렉션 규약을 만족하는 커스텀 엘리먼트가 보여진다. 해당 커스텀엘리먼트는 in/out data를 입력으로 받고, in/out이 수정될 때 이벤트를 발생시키는 규약을 만족하여야 한다.
  - Page : 브라우저의 페이지 라우팅을 지정할 수 있다.
  - External URL : 외부 URL을 지정할 수 있다.
- 리포트소스
  - 리포트타입에 해당하는 상세 설정을 한다.
- 표준시간(ST)
  - 이 업무정의로 만들어지는 업무인스턴스의 표준 수행시간을 의미한다.
  - 이 업무정의로 만들어지는 업무인스턴스의 만기시간을 계산하기위해 설정된다.
