2013년 7월 6일 토요일

QuestItem - 상태와 액션이란 무엇인가?

안녕하세요. hitapia입니다.
오늘은 상태와 액션에 대해서 조금더 집중적으로 소개드릴까합니다.

상태
상태는 무엇을 말할까요? 바로 퀘스트의 상태를 말합니다.
우리는 우리 주변의 모든 해야할 일 또는 주어진 업무에 대한 상태를 조사하고 연구해보았습니다. 어떠한 상태를 가지고 있는가? 를 말이죠.

그 조사와 연구 끝에 크게 4가지의 분류를 가지고 있다는 것을 알았습니다.


  • O : 미작업 상태 - 아직 작업이 시작되지 않은 상태를 말합니다. 
  • P : 진행중 상태 - 작업이 진행중인 상태입니다. 
  • R : 작업 완료 상태 - 작업이 완료된 상태입니다. 
  • C : 종료 상태 - 작업 완료된 것에 대한 모든 검증이나 평가가 끝난 상태를 말합니다.


물론 더 세분화된 상태도 있을 수 있습니다. 그러나 큰 분류로 나누자면 위와 같습니다.
그렇다면 각 Case에 대해서 예를 들어보겠습니다.

이과장(상사)에게 보고서를 작성해야합니다. 이과장은 이 업무를 김대리(누군가)에게 지시합니다. 지시하는 순간 그 업무는 미작업 상태(O)가 됩니다. 물론, 작업자를 지정하지 않은 상태도 미작업 상태(O)입니다.
김대리는 일정을 확인하고 내일 작업을 진행하면 되겠다고 생각합니다. 그리고 내일이 되었습니다. 보고서를 작성하게 되는 순간 그 작업은 진행중 상태(P)가 됩니다.
4시간만에 보고서 작성을 마치고 완료되었다고 이과장에게 전달합니다. 이때가 바로 작업 완료 상태(R)입니다.
보고서를 받은 이과장은 검토를 하겠죠. 잘 작성했는지 등의 여부를요. 그리고 잘 되었다면 '수고했네~'라는 말과 함께 해당 작업이 종료됩니다. 바로 이때가 종료 상태(C)가 됩니다. 물론, 보고서를 검토하던 중에 문제가 발생하거나 부족한 점이 있다고 한다면 다시 김대리를 불러서 보충하라고 전달하겠죠. 이렇게 되면 다시 미작업 상태(O)가 됩니다.

작업 완료와 작업 종료가 구분이 어려울 수 있겠지만, 개인 할일이 아니라 협업 업무의 경우, 보통 완료되었다고 해서 종료되지 않음을 쉽게 경험하셨을 겁니다.
대부분 누군가의 지시로 업무가 시작되기 때문에 해당 업무의 종료는 업무 지시자가 업무의 결과를 검토한 이후에 결정되기 때문입니다.

물론 QuestItem에서는 협업방식에 따라 매우 많은 상태가 있을 것이라고 판단하여 상태를 무한으로 만들 수 있는 기능을 제공합니다. 예를 들어 아래와 같은 상태도 만들 수 있습니다.

접수(O) -> 검토(O) -> 작업 계획중(P) -> 계획 검토중(P) -> 작업 진행중(P) -> 작업 완료(R)-> 1차 검토중(R) -> 최종 검토중(R) -> 종료(C)

위처럼 원하는 상태를 만들 수 있습니다. 다만, 상태는 4가지 분류중 하나에 지정되어야 합니다.

액션
액션은 위의 상태를 변경시킬때 사용되는 기능입니다.
상태를 변경시키기 위해서는 꼭 액션을 지정해야합니다. 퀘스트의 상태를 변경시키기 위해서는 액션을 만들고 각 액션이 어떠한 상태로부터 어떤 상태로 변경이 가능한지를 설정할 수 있습니다.



위의 스크린샷처럼 각 액션은 상태로부터 상태로 라는 속성을 가지게 됩니다. 결국, 퀘스트가 특정 상태인 상황에서 어떤 상태로 변경이 가능한지 설정이 가능한 것입니다.

아래는 상태에 따라서 사용할 수 있는 액션이 나타난 모습입니다.

음... 접수 상태에서는 P단계인 작업시작/작업검토, R단계인 작업 완료, C단계인 작업 종료로 바로 상태이동이 가능한 액션이 있네요.
물론, 접수 상태에서 절대로 R이나 C로 상태 변경이 안되도록 할수도 있습니다. 무조건 진행중(P)단계를 거쳐야만 R이나 C단계로 상태 변경이 되도록 할 수도 있습니다.

위의 액션들 중에서 사용할 액션들을 모아 하나의 세트를 만든것이 바로 액션 세트입니다.
이 액션 세트는 스토리마다 1:1매핑(지정)됩니다. 즉! 스토리마다 다른 상태와 다른 액션들을 사용할 수 있다는 것입니다.

회사라면, 부서마다 업무의 플로우가 다를것입니다. 부서마다의 업무성격상 어떤 부서에는 일반적인 업무 종결이 4단계일 수도 있고 어떤 부서는 더 복잡할 수도 있습니다.
그렇기 때문에 스토리마다 액션세트를 다르게 지정하도록 기능이 제공되는 것입니다.