KR20210060998A - 유한 상태기계 생성 방법, 유한 상태기계 운영 방법, 이를 수행하는 서버 및 컴퓨터 프로그램 - Google Patents

유한 상태기계 생성 방법, 유한 상태기계 운영 방법, 이를 수행하는 서버 및 컴퓨터 프로그램 Download PDF

Info

Publication number
KR20210060998A
KR20210060998A KR1020190148702A KR20190148702A KR20210060998A KR 20210060998 A KR20210060998 A KR 20210060998A KR 1020190148702 A KR1020190148702 A KR 1020190148702A KR 20190148702 A KR20190148702 A KR 20190148702A KR 20210060998 A KR20210060998 A KR 20210060998A
Authority
KR
South Korea
Prior art keywords
state
event
machine
state machine
finite state
Prior art date
Application number
KR1020190148702A
Other languages
English (en)
Other versions
KR102276230B1 (ko
Inventor
김현승
조규태
Original Assignee
주식회사 카카오뱅크
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 카카오뱅크 filed Critical 주식회사 카카오뱅크
Priority to KR1020190148702A priority Critical patent/KR102276230B1/ko
Publication of KR20210060998A publication Critical patent/KR20210060998A/ko
Application granted granted Critical
Publication of KR102276230B1 publication Critical patent/KR102276230B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q30/00Commerce
    • G06Q30/02Marketing; Price estimation or determination; Fundraising
    • G06Q30/0207Discounts or incentives, e.g. coupons or rebates
    • G06Q30/0212Chance discounts or incentives
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q30/00Commerce
    • G06Q30/02Marketing; Price estimation or determination; Fundraising
    • G06Q30/0207Discounts or incentives, e.g. coupons or rebates
    • G06Q30/0235Discounts or incentives, e.g. coupons or rebates constrained by time limit or expiration date

Landscapes

  • Business, Economics & Management (AREA)
  • Engineering & Computer Science (AREA)
  • Accounting & Taxation (AREA)
  • Development Economics (AREA)
  • Strategic Management (AREA)
  • Finance (AREA)
  • Game Theory and Decision Science (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Economics (AREA)
  • Marketing (AREA)
  • Physics & Mathematics (AREA)
  • General Business, Economics & Management (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Debugging And Monitoring (AREA)

Abstract

유한 상태기계 생성 방법이 개시된다. 본 방법은 유한 상태기계를 구성하는 복수의 상태 각각에 대하여 상태 정보와 해당 상태에서 실행되어야 할 액션 정보를 할당하는 단계, 복수의 상태 각각에 대하여 해당 상태에서 이후 상태로의 전이를 위한 이벤트 정보를 할당하는 단계 및 할당된 상태 정보, 액션 정보 및 이벤트 정보를 이용하여 유한 상태기계를 생성하는 단계를 포함한다. 여기서, 생성된 유한 상태기계는 서비스 페이지를 통한 고객의 입력에 대응되는 사용자 이벤트를 발생시키거나 유한 상태기계 내부적으로 발생하는 기계 이벤트를 발생시키는 이벤트 로직을 포함할 수 있다.

Description

유한 상태기계 생성 방법, 유한 상태기계 운영 방법, 이를 수행하는 서버 및 컴퓨터 프로그램{METHOD FOR GENERATING FINITE STATE MACHINE, METHOD FOR OPERATING FINITE STATE MACHINE, SERVER AND COMPUTER PROGRAM FOR PERFORMING THE SAME}
본 발명은 유한 상태기계 생성 방법, 유한 상태기계 운영 방법, 이를 수행하는 서버 및 컴퓨터 프로그램에 관한 것으로, 보다 상세하게는 무어 기계(Moore machine) 기반의 유한 상태기계 생성 방법, 유한 상태기계 운영 방법, 이를 수행하는 서버 및 컴퓨터 프로그램에 관한 것이다.
유무선 통신 기술의 발달에 힘입어 인터넷 사용자가 급격하게 증가하고 있고, 인터넷은 세계 각지의 수많은 컴퓨터 네트워크가 연계된 거대하고 효율적인 정보 축적매체 및 정보 제공 매체로서, 기업과 개인, 개인과 개인 간의 상호 커뮤니케이션을 실시간으로 가능하게 해주고 있다.
이러한 인터넷의 대중적인 활용에 의해 수많은 업체들은 자신들의 사이트를 개설하여 각종 유의미한 정보, 특히 자신들의 홍보를 위한 마케팅 정보들을 고객에게 제공하고 있다.
이러한 마케팅 방법 중 하나로 최적화된 랜딩 페이지가 많이 활용되고 있다. 여기서, 랜딩 페이지는 검색엔진, 광고 등을 경유하여 접속하는 고객이 최초로 보게 되는 웹 페이지를 의미한다.
일반적으로 랜딩 페이지에서 고객이 원하는 웹 페이지를 찾을 때 메뉴나 사이트 검색 기능 등이 충실하지 않을 경우, 유저는 원하는 웹 페이지를 찾는 것을 단념하고 해당 사이트를 떠나버리는 경우가 많이 있다. 이렇게 이탈하는 고객을 잡고 동시에 고객이 랜딩 페이지에서 목적 페이지로 간단히 이동할 수 있도록, 랜딩 페이지에는 불필요하거나 혼란을 주는 내용을 최대한 피하고 고객이 방문 목적을 쉽고 빠르게 달성할 수 있도록 안내해주기 위한 정보만을 담아 최적화 하고 있다.
예를 들어, 랜딩 페이지는 고객의 이탈을 최소화시키기 위하여 기업연혁, 인사말 등과 같은 불필요한 내용을 제거하고 고객이 필요로 할 것 같은 정보만 한 개의 페이지로 만들고 있다.
한편, 기업에서 홍보하고자 하는 고객 대상 프로모션, 온라인 행사 등의 컨텐츠를 담고 있는 응모 행사 페이지도 검색엔진, 광고 등을 경유하여 접속하는 고객이 최초로 보게 되는 특성상 랜딩 페이지와 속성이 유사하다.
이러한 응모 행사 페이지는 그 형태에 큰 변형이 없으나, 잦은 추가, 변경이 필요한 속성을 갖는다. 일 예로, 방문자에게 이모티콘을 지급하기 위한 응모 행사 페이지는 방문자가 해당 페이지를 방문만 하면 이모티콘이 지급되도록 구성될 수 있다. 다른 예로, 방문자에게 이모티콘을 지급하기 위한 응모 행사 페이지는 방문자가 해당 페이지를 방문하고 응모해서 당첨되어야만 이모티콘이 지급되도록 구성될 수 있다. 또 다른 예로, 방문자에게 이모티콘을 지급하기 위한 응모 행사 페이지는 방문자가 어떤 작품을 감상하여야만 이모티콘이 지급되도록 구성될 수 있다.
이와 같이 응모 행사 페이지는 달성하려는 목적이 동일(예를 들어, 위 예시에서는 이모티콘의 지급)하다면 그 형태에 큰 변형이 없으나, 회사의 정책, 마케팅 방식, 소비자들의 반응 등에 따라 응모 행사 페이지의 추가, 응모 행사 페이지의 형식, 구조 등의 변경은 빈번하게 발생할 수 있다.
특히, 마케팅 환경이 급변하는 상황에서는 응모 행사 페이지의 추가, 변경이 빈번하게 발생할 것으로 예상되는데, 이러한 응모 행사 페이지의 코드가 고객센터, 회사소개 및 앱(애플리케이션) 컨텐츠 등과 같이 게시 기간이 정해지지 않은 일반 페이지의 코드와 함께 배포된다면, 리스크가 클 것으로 예상된다.
일 예로, 응모 행사 페이지의 개발 관련하여, PC/모바일 프론트엔드 개발 및 운영, 서버 개발 및 운영, 외주 필요 시 해당 외주 일정관리 등의 업무가 필요하다. 그리고, 응모 행사 페이지에 대한 개발 필요 시, 기획, 마케팅, CRM(Customer Relationship Management)과 같은 여러 부서의 업무 협업이 필요하다. 다만, 이 과정에서 응모 행사 페이지의 코드와 일반 페이지의 코드를 함께 배포한다면 각 부서의 협업 과정에서 불편 및 어려움이 예상된다.
따라서, 이러한 리스크를 줄이기 위하여, 응모 행사 페이지와 일반 페이지를 분리시켜 응모 행사 페이지만을 따로 작업할 수 있는 환경을 제공하고, 응모 행사 페이지의 추가, 변경에 유연하게 대응하기 위한 방안이 필요하다.
본 발명은 상술한 문제점을 해결하기 위해 안출된 것으로, 본 발명의 목적은 서비스 페이지의 추가, 변경 등 서비스 페이지의 운영에 유연하게 대응 가능하도록 하는 유한 상태기계 생성 방법, 이를 수행하는 서버 및 컴퓨터 프로그램을 제공함에 있다.
또한, 본 발명의 목적은 유한 상태기계에서 고객의 현재 상태를 판단하고, 고객의 현재 상태에 맞는 액션을 수행하며, 고객의 현재 상태에 맞는 서비스 페이지를 제공하는 유한 상태기계 운영 방법, 이를 수행하는 서버 및 컴퓨터 프로그램을 제공함에 있다.
상술한 목적을 달성하기 위한 본 발명의 일 실시 예에 따른 유한 상태기계(finite state machine) 운영 서버에 의한 유한 상태기계 생성 방법은, 유한 상태기계를 구성하는 복수의 상태 각각에 대하여 상태 정보와 해당 상태에서 실행되어야 할 액션 정보를 할당하는 단계, 상기 복수의 상태 각각에 대하여 해당 상태에서 이후 상태로의 전이를 위한 이벤트 정보를 할당하는 단계 및 상기 할당된 상태 정보, 액션 정보 및 이벤트 정보를 이용하여 유한 상태기계를 생성하는 단계를 포함하고, 상기 생성된 유한 상태기계는 서비스 페이지를 통한 고객의 입력에 대응되는 사용자 이벤트를 발생시키거나 상기 유한 상태기계 내부적으로 발생하는 기계 이벤트를 발생시키는 이벤트 로직을 포함할 수 있다.
그리고, 상기 할당된 상태 정보 및 액션 정보를 이용하여 상기 복수의 상태 각각에 대응되는 상태 블록을 생성하는 단계 및 상기 할당된 이벤트 정보를 이용하여 상기 생성된 복수의 상태 블록 간의 연결 관계를 형성한 유한 상태기계 다이어그램을 생성하는 단계 및 상기 생성된 유한 상태기계 다이어그램을 포함하는 관리자 인터페이스를 관리자의 단말 장치에 제공하는 단계를 더 포함할 수 있다.
또한, 고객의 단말 장치에 표시할 서비스 페이지를 해당 상태에 매칭시켜 저장하는 단계를 더 포함할 수 있다.
그리고, 상기 유한 상태기계를 생성하는 단계는, 상태에 이전 상태에서 해당 상태로의 전이를 위한 이벤트 정보만이 할당된 경우, 해당 상태를 종료 상태로 자동으로 설정하는 단계 및 상태에 해당 상태로부터 이후 상태로의 전이를 위한 이벤트 정보만이 할당된 경우, 해당 상태를 시작 상태로 자동으로 설정하는 단계를 더 포함할 수 있다.
또한, 상기 생성된 유한 상태기계를 검증하는 단계를 더 포함하고, 상기 검증하는 단계는, 상태에 할당된 액션이 기 등록된 액션인지 여부, 상태에 할당된 액션을 실행하기 위한 API의 인자(ARGUMENT) 체크를 통과하였는지 여부, 상태에 할당된 액션의 실행 결과 발생한 이벤트를 이후 상태에 연결했는지 여부 및 상태에 지정된 필수 항목이 저장부에 정의되었는지 여부 중 적어도 하나를 검증할 수 있다.
그리고, 상기 검증에 따라 에러로 판단된 상태 상태 블록은 에러가 없는 상태 블록과 구별되도록 상기 유한 상태기계 다이어그램에 표시하는 단계를 더 포함할 수 있다.
또한, 상기 유한 상태기계를 생성하는 단계는, 복수의 상태들 중 순서가 서로 영향을 주지 않는 액션들로 구성된 연속된 상태들을 검출하는 단계 및 상기 검출된 상태들의 각 액션이 발생시키는 이벤트를 가능한 모든 경우의 수를 조합하여 새로운 이벤트로 매핑시켜 액션을 합성하는 단계를 더 포함할 수 있다.
그리고, 상기 서비스 페이지에 접속한 복수의 고객들이 복수의 상태들 중 어느 상태에 해당하는지 상기 유한 상태기계 다이어그램에 표시하는 단계를 더 포함할 수 있다.
또한, 상기 사용자 이벤트를 나타내는 연결선과 상기 기계 이벤트를 나타내는 연결선을 구별하여 상기 유한 상태기계 다이어그램에 표시하는 단계를 더 포함할 수 있다.
한편, 상술한 목적을 달성하기 위한 본 발명의 일 실시 에에 따른 유한 상태기계 운영 서버는, 유한 상태기계의 생성을 위한 인터페이스를 제공하는 관리자 인터페이스, 상기 관리자 인터페이스를 통한 관리자 입력을 기초로 상기 유한 상태기계를 구성하는 복수의 상태 각각에 대하여 상태 정보, 해당 상태에서 실행되어야 할 액션 정보를 할당하고, 상기 복수의 상태 각각에 대하여 해당 상태에서 이후 상태로의 전이를 위한 이벤트 정보를 할당하며, 상기 할당된 상태 정보, 액션 정보 및 이벤트 정보를 이용하여 유한 상태기계를 생성하는 생성부를 포함하고, 상기 생성된 유한 상태기계는 서비스 페이지를 통한 고객의 입력에 대응되는 사용자 이벤트를 발생시키거나 상기 유한 상태기계 내부적으로 발생하는 기계 이벤트를 발생시키는 이벤트 로직을 포함할 수 있다.
그리고, 상기 생성부는, 상기 할당된 상태 정보 및 액션 정보를 이용하여 상기 복수의 상태 각각에 대응되는 상태 블록을 생성하고, 상기 할당된 이벤트 정보를 이용하여 상기 생성된 복수의 상태 블록 간의 연결 관계를 형성한 유한 상태기계 다이어그램을 생성하는 다이어그램 생성부를 포함하고, 상기 관리자 인터페이스는 상기 생성된 유한 상태기계 다이어그램을 포함하는 관리자 인터페이스를 관리자의 단말 장치에 제공할 수 있다.
또한, 상기 복수의 상태들 중 상기 서비스 페이지의 노출이 필요한 상태에는 상기 고객의 단말 장치에 표시할 서비스 페이지를 해당 상태에 매칭시켜 저장하는 저장부를 더 포함할 수 있다.
그리고, 상기 생성부는, 상태에 이전 상태에서 해당 상태로의 전이를 위한 이벤트 정보만이 할당된 경우, 해당 상태를 종료 상태로 자동으로 설정하고, 상태에 해당 상태로부터 이후 상태로의 전이를 위한 이벤트 정보만이 할당된 경우, 해당 상태를 시작 상태로 자동으로 설정할 수 있다.
또한, 상기 생성된 유한 상태기계를 검증하는 검증부를 더 포함하고, 상기 검증부는, 상태에 할당된 액션이 기 등록된 액션인지 여부, 상태에 할당된 액션을 실행하기 위한 API의 인자(ARGUMENT) 체크를 통과하였는지 여부, 상태에 할당된 액션의 실행 결과 발생한 이벤트를 이후 상태에 연결했는지 여부 및 상태에 지정된 필수 항목이 저장부에 정의되었는지 여부 중 적어도 하나를 검증할 수 있다.
그리고, 상기 다이어그램 생성부는, 상기 검증에 따라 에러로 판단된 상태 상태 블록은 에러가 없는 상태 블록과 구별되도록 상기 유한 상태기계 다이어그램에 표시할 수 있다.
또한, 상기 생성부는, 복수의 상태들 중 순서가 서로 영향을 주지 않는 액션들로 구성된 연속된 상태들을 검출하고, 상기 검출된 상태들의 각 액션이 발생시키는 이벤트를 가능한 모든 경우의 수를 조합하여 새로운 이벤트로 매핑시켜 액션을 합성하는 합성부를 더 포함할 수 있다.
그리고, 상기 다이어그램 생성부는, 상기 서비스 페이지에 접속한 복수의 고객들이 복수의 상태들 중 어느 상태에 해당하는지 상기 유한 상태기계 다이어그램에 표시할 수 있다.
또한, 상기 다이어그램 생성부는, 상기 사용자 이벤트를 나타내는 연결선과 상기 기계 이벤트를 나타내는 연결선을 구별하여 상기 유한 상태기계 다이어그램에 표시할 수 있다.
한편, 상술한 목적을 달성하기 위한 본 발명의 일 실시 예에 따른 유한 상태기계 운영 서버에 의한 유한 상태기계 운영 방법은, 고객 단말 장치로부터 요청 데이터를 수신하는 단계, 상기 수신된 요청 데이터에 대응되는 사용자 이벤트를 발생시키고, 상기 유한 상태기계를 구성하는 복수의 상태들 중 고객의 현재 상태인 제1 상태에서 상기 발생된 사용자 이벤트에 일치하는 전이를 갖는 이후의 상태인 제2 상태로 고객의 상태를 전이시키는 단계, 상기 제2 상태에 할당된 액션 정보를 검출하고, 검출된 액션 정보를 기초로 상기 제2 상태에 할당된 액션을 실행하는 단계 및 상기 실행된 액션에 연계된 기계 이벤트의 발생 여부를 판단하고, 상기 기계 이벤트의 발생 여부에 따라 상기 고객의 최종 상태를 결정하는 단계를 포함한다.
그리고, 상기 실행된 액션에 연계되어 기계 이벤트가 발생하면, 상기 제2 상태에서 상기 발생된 기계 이벤트에 일치하는 전이를 갖는 이후의 상태인 제3 상태로 상기 고객의 상태를 전이시키는 단계를 더 포함할 수 있다.
또한, 상기 실행된 액션에 연계되어 기계 이벤트가 발생하지 않으면, 상기 고객의 최종 상태를 상기 제2 상태로 결정하는 단계, 상기 제2 상태에 매칭되는 서비스 페이지를 검출하는 단계 및 상기 검출된 서비스 페이지를 상기 고객의 단말 장치에 전송하는 단계를 더 포함할 수 있다.
그리고, 상기 유한 상태기계는 상기 서비스 페이지를 통한 고객 입력에 대응되는 사용자 이벤트를 발생시키는 사용자 발생 이벤트 API와 상기 유한 상태기계 내부적으로 발생하는 기계 이벤트를 발생시키는 기계 발생 이벤트 API를 포함할 수 있다.
또한, 상기 실행하는 단계는, 상기 제2 상태에 할당된 액션을 실행하기 위한 API(Application Program Interface)의 인자(argument)를 검출하는 단계, 상기 검출된 인자를 기초로 상기 제2 상태에 대응되는 API를 실행하는 단계 및 상기 제2 상태에 대응되는 API의 실행 후 인자들을 변경하는 단계를 포함할 수 있다.
한편, 상술한 목적을 달성하기 위한 본 발명의 일 실시 예에 따른 유한 상태기계 운영 서버는, 고객 단말 장치로부터 요청 데이터를 수신하는 요청 수신부, 상기 수신된 요청 데이터에 대응되는 사용자 이벤트를 발생시키고, 유한 상태기계를 구성하는 복수의 상태들 중 제1 상태에서 상기 발생된 사용자 이벤트에 일치하는 전이를 갖는 이후의 상태인 제2 상태로 고객의 상태를 전이시키며, 상기 제2 상태에 할당된 액션 정보를 검출하고 검출된 액션 정보를 기초로 상기 제2 상태에 할당된 액션을 실행하는 실행부를 포함하고, 상기 실행부는 상기 실행된 액션에 연계된 기계 이벤트의 발생 여부를 판단하고, 상기 기계 이벤트의 발생 여부에 따라 상기 고객의 최종 상태를 결정할 수 있다.
그리고, 상기 실행부는, 상기 실행된 액션에 연계되어 기계 이벤트가 발생하면, 상기 제2 상태에서 상기 발생된 기계 이벤트에 일치하는 전이를 갖는 이후의 상태인 제3 상태로 상기 고객의 상태를 전이시킬 수 있다.
또한, 상기 실행부는, 상기 실행된 액션에 연계되어 기계 이벤트가 발생하지 않으면, 상기 고객의 최종 상태를 상기 제2 상태로 결정하고, 상기 제2 상태에 매칭되는 서비스 페이지를 검출하며, 상기 검출된 서비스 페이지를 상기 고객의 단말 장치에 전송하는 인터페이스 제공부를 더 포함할 수 있다.
그리고, 상기 유한 상태기계는 상기 서비스 페이지를 통한 고객 입력에 대응되는 사용자 이벤트를 발생시키는 사용자 발생 이벤트 API와 상기 유한 상태기계 내부적으로 발생하는 기계 이벤트를 발생시키는 기계 발생 이벤트 API를 포함할 수 있다.
또한, 상기 실행부는, 상기 제2 상태에 할당된 액션을 실행하기 위한 API(Application Program Interface)의 인자(argument)를 검출하고, 상기 검출된 인자를 기초로 상기 제2 상태에 대응되는 API를 실행하며, 상기 제2 상태에 대응되는 API의 실행 후 인자들을 변경할 수 있다.
한편, 상술한 목적을 달성하기 위한 본 발명의 일 실시 예에 따른 프로그램은 컴퓨터 판독 가능한 기록 매체에 저장되어 유한 상태기계 생성 방법을 실행시킬 수 있다.
또한, 상술한 목적을 달성하기 위한 본 발명의 일 실시 예에 따른 프로그램은 컴퓨터 판독 가능한 기록 매체에 저장되어 유한 상태기계 운영 방법을 실행시킬 수 있다.
상술한 본 발명의 다양한 실시 예에 따르면, 고객센터, 회사소개 등과 같은 일반 페이지와 응모 행사 페이지와 같은 서비스 페이지를 별도로 개발 및 배포할 수 있기에, 서로 간의 서비스 영향을 최소화할 수 있다.
또한, 본 발명의 다양한 실시 예에 따르면, 서비스 페이지를 유한 상태기계 기반의 툴로 운영 가능하게 하고, 필요 시 서비스 페이지의 템플릿 및 게시 관리를 관리자가 직접 수정할 수 있도록 함으로써, 개발 리소스 및 일정을 감소시킬 수 있다.
또한, 본 발명의 다양한 실시 예에 따르면, 서비스 페이지에 대한 처리를 별도 서버로 운영함으로써, 트래픽으로 인하여 증명서, 약관 페이지 등의 타 서비스에 영향을 미치는 것을 서로 분리시킬 수 있다.
또한, 본 발명의 다양한 실시 예에 따르면, 서비스 페이지의 운영에 적합한 유한 상태기계 기반의 툴을 제공함으로써, 단발적으로 발생할 수 있는 에러에 대한 대응 속도를 향상시킬 수 있다.
또한, 본 발명의 다양한 실시 예에 따르면, 서비스 페이지의 운영에 적합한 유한 상태기계 기반의 툴을 제공함으로써, 개발자 편의성, 유지보수 용이성을 높일 수 있다.
도 1은 본 발명의 일 실시 예에 따른 서비스 시스템을 나타내는 블록도 이다.
도 2a는 본 발명의 일 실시 예에 따른 유한 상태기계 운영 서버의 구성을 나타내는 블록도이다.
도 2b는 유한 상태기계에 할당된 데이터 형태를 나타내는 도면이다.
도 3a는 본 발명의 일 실시 예에 따른 유한 상태기계를 도식화한 유한 상태기계 다이어그램을 나타내는 예시도이다.
도 3b는 본 발명의 일 실시 예에 따른 유한 상태기계 생성 방법을 나타내는 흐름도이다.
도 4는 본 발명의 일 실시 예에 따른 서비스 시스템의 동작을 나타내는 타이밍도 이다.
도 5는 본 발명의 일 실시 예에 따른 유한 상태기계 운영 서버의 서비스 운영 방법을 나타내는 흐름도 이다.
도 6은 본 발명의 일 실시 예에 따른 이모티콘 지급 응모 행사의 유한 상태기계 다이어그램 이다.
도 7은 본 발명의 일 실시 예에 따른 유한 상태기계 다이어그램을 나타내는 예시도 이다.
도 8은 본 발명의 일 실시 예에 따른 유한 상태기계 검증 방법을 나타내는 흐름도 이다.
도 9a 내지 9b는 본 발명의 일 실시 예에 따른 액션 합성 과정을 나타내는 유한 상태기계 다이어그램을 나타내는 도면이다.
이하의 내용은 단지 본 발명의 원리를 예시한다. 그러므로 당업자는 비록 본 명세서에 명확히 설명되거나 도시되지 않았지만 본 발명의 원리를 구현하고 본 발명의 개념과 범위에 포함된 다양한 장치를 발명할 수 있는 것이다. 또한, 본 명세서에 열거된 모든 조건부 용어 및 실시 예들은 원칙적으로, 본 발명의 개념이 이해되도록 하기 위한 목적으로만 명백히 의도되고, 이와 같이 특별히 열거된 실시 예들 및 상태들에 제한적이지 않는 것으로 이해되어야 한다.
또한, 본 발명의 원리, 관점 및 실시 예들뿐만 아니라 특정 실시 예를 열거하는 모든 상세한 설명은 이러한 사항의 구조적 및 기능적 균등물을 포함하도록 의도되는 것으로 이해되어야 한다. 또한 이러한 균등물들은 현재 공지된 균등물뿐만 아니라 장래에 개발될 균등물, 즉 구조와 무관하게 동일한 기능을 수행하도록 발명된 모든 소자를 포함하는 것으로 이해되어야 한다.
따라서, 모든 흐름도, 상태 변환도, 의사 코드 등은 컴퓨터가 판독 가능한 매체에 실질적으로 나타낼 수 있고 컴퓨터 또는 프로세서가 명백히 도시되었는지 여부를 불문하고 컴퓨터 또는 프로세서에 의해 수행되는 다양한 프로세스를 나타내는 것으로 이해되어야 한다.
프로세서 또는 이와 유사한 개념으로 표시된 기능 블럭을 포함하는 도면에 도시된 다양한 소자의 기능은 전용 하드웨어뿐만 아니라 적절한 소프트웨어와 관련하여 소프트웨어를 실행할 능력을 가진 하드웨어의 사용으로 제공될 수 있다. 프로세서에 의해 제공될 때, 상기 기능은 단일 전용 프로세서, 단일 공유 프로세서 또는 복수의 개별적 프로세서에 의해 제공될 수 있고, 이들 중 일부는 공유될 수 있다.
상술한 목적, 특징 및 장점은 첨부된 도면과 관련한 다음의 상세한 설명을 통하여 보다 분명해질 것이며, 그에 따라 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 것이다. 또한, 본 발명을 설명함에 있어서 본 발명과 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에 그 상세한 설명을 생략하기로 한다.
이하, 첨부된 도면을 참조하여 본 발명의 다양한 실시 예를 상세히 설명하기로 한다.
도 1은 본 발명의 일 실시 예에 따른 서비스 시스템을 나타내는 블록도 이다. 도 1을 참조하면, 서비스 시스템(1000)은 사용자가 이용하는 복수의 단말 장치(100-1,..100-N : 100), 및 유한 상태기계 운영 서버(200)를 포함할 수 있다.
단말 장치(100)는 사용자들이 구비한 단말 장치로, 유무선 통신 기능을 구비한 스마트 폰, 태블릿 컴퓨터, 노트북 컴퓨터, PC(Personal computer), PDA(personal digital assistant), PMP(portable multimedia player), 웨어러블 디바이스(wearable device)로 구현되거나, 사용자의 몸에 착용 가능한 스마트 글래스, 스마트 워치 등의 웨어러블 디바이스로 구현될 수 있다.
여기서, 단말 장치(100)의 사용자는 응모 행사 페이지의 운영을 위한 유한 상태기계의 생성, 변경, 조작, 갱신, 에러 처리 등과 같은 관리 업무를 수행하기 위한 권한을 가진 관리자를 포함한다. 일 예로, 응모 행사 페이지에 대한 개발 필요 시, 기획, 마케팅, CRM(Customer Relationship Management)과 같은 여러 부서의 업무 협업이 필요하기에, 기획팀, 마케팅팀, CRM 팀 등의 멤버에게 유한 상태기계의 관리를 위한 권한이 부여될 필요가 있고, 그 외의 일반 사용자에게는 해당 권한을 부여되지 않는 것이 바람직하다. 본 발명에서는 유한 상태기계 운영 서버(200)에 접속하여 유한 상태기계를 관리하는 사용자를 "관리자"로 지칭하기로 한다.
또한, 단말 장치(100)의 사용자는 단말 장치(100)의 인터넷 기능을 이용하여 응모 행사 페이지에 접속하여 각종 응모 행사에 참여하는 일반 사용자를 포함할 수 있다. 일 예로, 사용자는 단말 장치(100)를 이용하여 검색엔진, 광고 등을 경유하여 특정 회사의 고객 대상 프로모션 컨텐츠를 담고 있는 응모 행사 페이지에 접속할 수 있고, 사용자는 단말 장치(100)에 표시된 응모 행사 페이지를 확인하며 응모 행사 페이지에서 제공하는 응모 행사에 참여할 수 있다. 본 발명에서는 유한 상태기계 운영 서버(200)에 접속하여 응모 행사 페이지에서 제공하는 응모 행사에 참여하는 외부 사용자를 "고객"으로 지칭하기로 한다. 일 실시예로서, 고객이 유한 상태기계 진입 시, 유한 상태기계는 사용자 정보에 개인 식별자와 현재 상태 정보를 매핑하여 식별하고, 고객의 현재 상태에 해당하는 화면 정보를 고객 단말장치에 응답으로 전송할 수 있다.
한편, 본 발명에서 사용되는 용어들은 다음과 같이 정의될 수 있다.
구체적으로, 본 발명에서 유한 상태기계(finite state machine)는 유한개의 상태(state)들과 이런 상태들 간의 전이(변화)로 구성된 계산 모형을 의미한다. 하나의 유한 상태기계는 복수의 사용자들, 상태들, 전이들로 구성된다. 이러한 유한 상태기계는 이벤트 발생에 의하여 상태 간의 전이를 일으킬 수 있다. 또한, 유한 상태기계는 소정의 도식화 툴을 이용하여 유한 상태기계를 시각화하여 표시할 수 있고, 복수의 상태 블록들의 연결 관계를 도시한 도면을 "유한 상태기계 다이어그램"이라고 한다.
본 발명에서 상태(state)는 유한 상태기계를 구성하는 복수의 상태들을 지칭할 수 있고, 유한 상태기계를 구성하는 각각의 상태는 전이를 시작하기 위해 대기하고 있는 시스템의 노드와 같다. 본 발명에 의한 유한 상태기계에 진입한 사용자는 오직 하나의 상태와 매핑되어, 매핑된 상태명을 나타내는 "현재 상태명" 정보를 갖는다. 사용자의 현재 상태는, 전이에 따라 계속 바뀔 수 있다.
그리고, 본 발명에서 상태 정보는 상태명 정보, 상태에 할당된 액션 정보를 포함하고, 상태에 할당된 이벤트 정보 등 관련 정보를 더 포함할 수 있다.
그리고, 본 발명에서 액션(action)은 유한 상태기계를 구성하는 복수의 상태들 각각에 대하여 해당 상태에서 수행해야 할 동작을 실행하는 것을 의미한다.
그리고, 본 발명에서 액션 정보는 해당 상태에서 실행되어야 할 액션(실행 데이터)을 나타내는 정보로서, 상태별로 하나씩 지정된다. 여기서, 액션 정보는 해당 상태에서 실행되어야 할 액션에 관련된 API(Application Programming Interface)의 실행정보를 포함할 수 있다.
그리고, 본 발명에서 이벤트(event)는 유한 상태기계를 구성하는 복수의 상태들 간에 전이(변화)되도록 하는 사건으로서, 외부 시스템 또는 액션의 실행 결과로 발생된다. 이벤트는 응모 행사 페이지를 통한 고객 입력을 통하여 발생하는 "사용자 이벤트"와 머신 내부적으로 자동으로 발생하는 "기계 이벤트"를 포함할 수 있다. 일 실시예로서, 사용자 이벤트는 고객들의 행위에 의해 발생되는 고객용 이벤트(외부 사용자 이벤트)와, 이벤트 관리자의 행위에 의해 발생되는 관리자용 이벤트(내부 사용자 이벤트)로도 구분할 수 있다.
그리고, 본 발명에서 이벤트 정보는 복수의 상태들 간의 전이를 구성하는 이벤트의 명칭 정보, 사용자 이벤트 또는 기계 이벤트와 같은 이벤트 타입 정보, 전이 방향 정보 등을 포함할 수 있다.
여기서, 상태 정보, 액션 정보, 이벤트 정보는 유한 상태기계의 생성, 갱신 등의 관리를 수행하는 관리자 단말장치(100)에서 입력 데이터(또는 코딩 데이터)를 기초로 생성될 수 있다. 일 실시 예로서, 관리자는 관리자 단말장치(100)를 이용하여 유한 상태기계 운영 서버(200)에 접속할 수 있고, 서버(200)가 제공하는 관리자 인터페이스를 통해 유한 상태기계를 생성할 수 있다. 일 실시예로서, 관리자는 텍스트 형태의 프로그래밍 언어를 통해 유한 상태기계의 생성, 갱신 등의 관리를 위한 상태 정보, 액션 정보, 이벤트 정보를 입력할 수 있다.
그리고, 본 발명에서 전이(transition)는 각 상태 간에 정의된 이벤트가 발생하였을 때 수행되는 일련의 동작을 의미한다. 전이 데이터는 제1 상태명, 이벤트명, 제2 상태명을 포함하고, 이 때, 제1 상태명은 전이 전(前) 사용자의 현재 상태명에 해당하고, 제2 상태명은 전이 후(後) 사용자의 다음 상태명을 가리킨다. 액션의 결과에 따라 이벤트가 발생하여 연속적으로 전이를 일으킬 수 있고, 더 이상의 이벤트가 발생하지 않아 전이가 중단되면 응답처리를 하게 된다.
일반적인 유한 상태기계와 달리, 본 발명에 따른 유한 상태 기계는 액션의 실행 결과가 이벤트의 발생이 되도록 구현할 수 있다. 예컨대, 제1 상태에서 제2 상태로의 전이를 구성하는 이벤트(E1)가 액션(A1)에 의해 발생되는 것으로만 구현하면, 제1 상태로 진입하는 경우 액션(A1)의 실행에 따라 무조건 S2로 전이되는 이벤트(E1)가 발생하고, 연쇄적으로 전이(S2->S3->…)가 일어나게 된다.
전이가 중단되어 사용자의 최종 상태가 결정된 경우에는, 유한 상태기계가 사용자의 최종 상태에 따른 화면을 출력할 수 있다. 예컨대, 액션의 결과가 OK 이벤트 또는 FAIL 이벤트로 구성된 경우, 액션의 출력으로 정의된 이벤트 중 추가 전이가 없는 일부(FAIL)로만 연결되거나, 액션에 정의되지 않은 이벤트(예컨대, YES 또는 NO)로 다른 상태에 연결된 경우에는, 연쇄적인 전이가 멈추고, 해당 상태가 최종 상태가 되어, 마치 사용자가 특정 상태 내에 머무르는(stay)것처럼 보인다.
즉, 본 발명의 유한 상태기계는 관리자로 하여금 서비스 페이지(예컨대, 응모 행사 페이지)가 필요한 상태를 구분할 수 있도록 한다. 여기서, 서비스 페이지는, 고객 단말장치에 디스플레이되는 웹페이지 또는 모바일 어플리케이션 화면을 말하며, 해당 서비스(예컨대, 응모 행사)와 관련된 적어도 하나의 화면을 가리킨다. 본 발명에서 서비스 페이지는 응모 행사에 관한 서비스 페이지, 응모 행사 페이지, 고객 인터페이스, 또는 고객 단말 장치에 표시되는 화면 정보로 지칭될 수도 있고, 서로 동일한 의미로 사용된다. 이러한 본 발명에 의하면, 응모 행사를 위한 유한 상태기계 설계 시 화면이 누락되는 일이 없도록 하고, 설계 기간을 예측하는 데에도 도움을 줄 수 있다.
예를 들어, 응모 행사에 관한 서비스 페이지는 기업에서 홍보하고자 하는 고객 대상 프로모션, 응모 행사 내용 등의 컨텐츠를 담은 복수의 페이지로 구성될 수 있다. 일 예로, 고객에게 이모티콘을 지급하는 응모 행사의 경우, 서비스 페이지는 고객의 최초 접속 시 "초기 상태"에 대응되는 "응모 페이지" 화면을 출력할 수 있고, 응모 페이지에서 고객의 입력(응모버튼 클릭)에 따라 "이모티콘 지급 완료"에 대응되는 "이모티콘 지급 완료 페이지" 화면을 표시할 수 있다. 또한 응모 페이지에서 고객의 응모에 대해 이모티콘 지급이 실패하면 "지급 실패 상태"에 대응되는 "이모티콘 지급 실패 페이지"를 표시할 수 있다. 이러한 서비스 페이지는 고객의 입력을 수신함으로써, 사용자의 입력에 의한 사용자 이벤트를 발생시킬 수 있고, 사용자 이벤트에 의한 상태 전이가 가능하다. 이 때, 고객의 입력은 응모 행사 페이지에서 제안하는 응모 행사에 참여하기 위한 고객의 모든 행위를 포함하는 개념이므로, 일 예로, 응모 행사 페이지에 방문하는 행위, 응모 행사 페이지의 응모 버튼을 클릭하는 행위, 응모 행사 페이지의 개인 정보란에 개인 정보를 입력하는 행위 등 고객의 모든 행위를 포함할 수 있다.
도 2a는 본 발명의 일 실시 예에 따른 유한 상태기계 운영 서버(200)의 구성을 나타내는 블록도이다. 유한 상태기계 운영 서버(200)는 유한 상태기계의 생성과 관리를 위한 생성부(210), 운영부(220), 검증부(230)를 포함하고, 서버의 일반적인 동작과 외부 단말과의 연동을 위한 제어부(250), 저장부(240), 통신부(260) 및 관리자 인터페이스(270)를 포함할 수 있다. 다만, 유한 상태기계 운영 서버(200)의 구성이 이에 한정되는 것은 아니며, 본 발명의 다양한 실시예를 위해 필요한 구성(예컨대, 입출력부)을 더 포함하거나 생략될 수 있고, 둘 이상의 구성이 통합된 형태로 구현될 수 있다. 일 실시예로서, 제어부(250)는 서버를 구동하기 위한 중앙처리장치(CPU)일 수 있고, 저장부(240, 227)는 기억장치 또는 별도의 데이터베이스 형태로 구현될 수 있으며, 그 외 구성들은 프로세서에 의해 구동하고 서버의 기록매체에 기록된 컴퓨터 프로그램 형태로 구현될 수 있다.
먼저, 생성부(210)는 설계자 또는 관리자의 입력을 기초로 유한 상태기계를 생성할 수 있다. 구체적으로, 생성부(210)는 최초 설계자나 관리자로부터 입력받은 복수의 상태 각각에 대한 상태 정보, 액션 정보 및 이벤트 정보를 기초로 유한 상태기계를 생성할 수 있다. 이러한 생성부(210)는 할당부(211), 다이어그램 생성부(212), 합성부(213)를 포함한다.
할당부(211)는 관리자로부터 입력받은 데이터를 기초로 유한 상태기계를 구성하는 복수의 상태들 각각에 대하여 상태 정보, 해당 상태에서 실행되어야 할 액션을 나타내는 액션 정보를 할당할 수 있다. 이 때, 할당부(211)는 상태에 할당된 액션의 실행 결과가 값의 리턴(Return)이 아닌 해당 상태에서 타 상태로의 전이를 위한 이벤트의 발생과 연계되도록 구성될 수 있다.
또한, 할당부(211)는 관리자로부터 입력받은 데이터를 기초로 유한 상태기계를 구성하는 복수의 상태들 각각에 대하여 제1 상태에서 제2 상태로의 전이를 위한 이벤트 정보를 할당할 수 있다. 여기서, 이벤트 정보는 이벤트명을 포함한다. 이하에서는 설명의 편의를 위해, 전이가 일어나기 이전 상태를 나타내는 제1 상태명, 상기 이벤트명에 따라 전이가 일어난 후의 상태를 나타내는 제2 상태명이라 지칭하고, 상기 전이 정보는 제1 상태명, 제2 상태명, 이벤트명을 포함하는 형태로 정의될 수 있다. 본 명세서에서는 설명의 편의상 전이가 일어나기 이전 상태를 제1 상태, 이벤트에 의해 전이가 일어난 이후의 상태를 제2 상태라 지칭한다.
일 실시예로서, 할당부(211)는 유한 상태기계 생성 시 복수의 상태 정보, 전이 정보 등을 정의한 데이터를 생성할 수 있고, 데이터의 형태는 도 2b와 같이 정의될 수 있다. 도 2b에 도시된 것처럼, 요청 데이터는 고객의 개인식별자를 요청 개인식별자 정보로 포함하고, 요청 이벤트명을 포함할 수 있다. 유한 상태기계는 요청 개인식별자에 따른 현재 상태명을 불러오고(예컨대, 최초 진입 시 초기 상태명), 요청 이벤트명은 "신규 이벤트명" 이라는 처리 예정 이벤트 변수에 할당한다. 다음으로, 전이 데이터에서, 현재 상태명과 신규 이벤트명이 각각 제1 이벤트명과 이벤트명에 일치하는 전이를 찾고, 해당하는 전이가 있을 시에 전이를 일으켜 제2 상태명을 사용자의 현재 상태명에 할당한다. 이 때 신규 이벤트명 변수값에는 다시 null값을 할당함으로써, 액션이 반환하는 이벤트가 더이상 없을 때, null값이 유지되어 최종 상태임을 알 수 있도록 한다.
유한 상태기계는 제2 상태에 진입한 사용자에 대해 제2 이벤트에 매핑된 진입 액션을 실행하고, 진입액션의 실행 결과로 이벤트명이 반환되면, 그 반환 이벤트명을 신규 이벤트명에 할당한다. 이처럼, 신규 이벤트명이라는 변수에 null값이 아닌 실제 이벤트값이 할당되면, 다시 전이 확인 단계로 돌아가, 사용자의 현재 상태명과 신규 이벤트명이 일치하는 전이 데이터를 찾아내고, 전이를 일으킬지 여부를 판단할 수 있다. 예컨대, 일치하는 전이 데이터가 없어 전이가 중단될 경우에는, 그 시점에 사용자에게 할당된 현재 상태명을 최종 상태로 보고, 해당 상태명에 매핑되어 있던 화면 정보를 응답으로 출력한다.
이처럼, 본 발명의 유한 상태기계는 일반적인 유한 상태기계와 달리, 액션의 실행 결과가 이벤트의 발생으로 이어지도록 구현할 수 있다. 현재 상태명에 해당하는 상태를 판별하여, 해당 상태에 할당된 진입 액션을 실행하고, 진입 액션의 실행 결과로 이벤트명이 반환되면, 이 이벤트명을 신규 이벤트명 변수에 할당함으로써 전이를 일으킨다. 이러한 메커니즘을 통해 연쇄적인 전이를 일으킬 수 있고, 전이가 중단되어 최종 상태가 결정되면 해당 상태에 매핑된 화면 정보를 응답으로 송신할 수 있어, 응모 행사와 같은 서비스 구현에 용이하다.
한편, 액션은 해당 상태에서 수행되어야 할 동작에 대해 API의 실행정보를 실행하는 것으로, 각각의 상태별로 하나씩 지정될 수 있다. 이 때, 유한 상태기계는 액션 실행을 위해 저장부(227)로부터 참조할 값(ARGUMENT)을 받아 액션 수행 시 해당 값들을 액션 알고리즘에 채워주고, 액션은 참조 값에 따른 액션을 수행하게 된다. 즉, 액션은 API의 인자(ARGUMENT)와 함께 호출되고, 액션 완료 후에는 저장부(227)의 변경(CHANGE)을 요청하여 반영하도록 한다. 이처럼 액션은 저장부(227)에 직접 접근하거나 내부적으로 연관되지 않도록 구현되고, 유한 상태기계를 통해서만 저장부(227)의 값을 조회 및 수정하도록 하여, State-less(무상태)의 특성을 갖는다.
여기서, State-less라 함은 입력된 인자로만 출력이 결정되는 특성을 말하며, 다음번 작동을 위해 필요로 하는 값들을 함수가 저장하지 않고 리턴하는 것을 말한다. 본 발명의 실시예에 따라, 액션이 인자 값을 저장하지 않고 유한 상태기계를 통해 호출한 인자 값으로만 작동하도록 구현하면, 같은 프로그램이 여러 개 실행되더라도 각자 할당된 메모리 공간에서 작동하는 것과 유사한 효과를 내고, 원격에 있는 액션을 수행시키기에 용이하며, 액션 전후로 참조되거나 변경되는 저장부의 값에 대한 식별도 용이하다는 이점이 있다.
이와 같이, 할당부(211)는 유한 상태기계를 구성하는 복수의 상태 각각에 대하여 상태 정보와 액션 정보를 할당하고, 표 1과 같이, 상태 정보와 액션 정보가 매핑된 데이터를 저장할 수 있다.
상태 정보 S0 S1
액션 정보 A0 A1
또한, 이벤트는 제1 상태에서 제2 상태로의 전이를 구성할 수 있다. 일 예로, 이모티콘 지급 응모 행사의 경우, 유한 상태기계는 "응모 이벤트"의 발생에 따라 고객의 현재 상태를 "방문 상태"에서 다음 상태인 "이모티콘 지급 중 상태"로 전이시킬 수 있다. 이와 같이, 할당부(211)는 유한 상태기계를 구성하는 복수의 상태 간의 전이를 구성하는 이벤트 정보를 할당하고, 표 2와 같이, 상태 정보와 이벤트 정보가 매핑된 데이터를 저장할 수 있다.
상태 정보 S0-> S1 S1 ->S2
이벤트 정보 E0 E1
이벤트 타입은 서비스 페이지를 통한 사용자 입력에 따라 발생되는 "사용자 이벤트" 와 상태에 할당된 액션의 실행에 따라 머신에서 자동적으로 발생시키는 "기계 이벤트" 를 포함한다. 상술한 것처럼, 사용자는 고객뿐만 아니라 관리자를 포함한다. 이러한 사용자 이벤트와 기계 이벤트는 이벤트 API로 표현될 수 있다.
만약, 상태에 할당된 액션의 실행 결과 이벤트의 발생이 요청되지 않으면, 유한 상태기계는 해당 상태에 매칭된 서비스 페이지를 고객의 단말 장치(100)에 표시하도록 제어한다. 이후에, 고객의 단말 장치(100)에 표시된 서비스 페이지를 통하여 고객의 입력이 수신되면, 유한 상태기계의 사용자 발생 이벤트 API는 고객 입력에 부합하는 사용자 이벤트를 발생시킬 수 있다.
이렇게, 사용자 발생 이벤트 API와 기계 발생 이벤트 API 를 분리시켜 이벤트를 발생시킴으로써, 악용(abusing)의 문제를 해결할 수 있다. 예를 들어, "NAME_INPUT(이름 입력) 이벤트"와 "GIVE_MONEY(돈 지급) 이벤트"를 예로 설명하면, 응모 행사 페이지를 통한 고객 입력에 따라 "GIVE_MONEY(돈 지급) 이벤트"를 발생시킬 수 있다면, 이는 악용의 문제를 발생할 수 있다.
이러한 문제점을 해결하기 위하여, 본 발명에 따른 유한 상태기계는 사용자 발생 이벤트 API와 기계 발생 이벤트 API의 분리를 통해 양 이벤트를 구분할 수 있다. 유한 상태기계는 사용자가 접근하는 사용자 발생 이벤트 API에서는 첫문자가 대문자인 이벤트만을 호출 가능하게 하여, 고객은 특정 이벤트만 발생시키도록 권한을 제한할 수 있다. 예컨대, 악용의 소지가 있는 일반사용자에 대해서는 대문자 외의 이벤트는 무시(또는 제외)하고, 사용자 이벤트만 인식, 처리하도록 필터링된 API 실행정보를 제공할 수 있다. 반면, 유한 상태기계 내부 서비스들은 모든 이벤트 이름을 허용하여 기계 발생 이벤트 API를 호출 가능하게 할 수 있다.
다이어그램 생성부(212)는 텍스트 형태의 프로그래밍 언어로 구성된 유한 상태기계를 도식화하는 것으로, 관리자 인터페이스(270)와 연계되어 동작하거나 전문 툴(tool)을 이용할 수 있다. 유한 상태기계의 다이어그램 생성부(212)는 할당부(211)에서 할당된 상태 정보 및 액션 정보를 이용하여 상기 복수의 상태 각각에 대응되는 상태 블록을 생성하고 할당된 액션을 표시할 수 있다. 그리고, 다이어그램 생성부(212)는 이벤트 정보를 이용하여 생성된 복수의 상태 블록 간의 전이 데이터를 판별하고, 복수의 상태 블록 간의 연결 관계를 형성할 수 있다. 이에 따라, 다이어그램 생성부(212)는 복수의 상태 블록 각각을 연결하되, 연결선의 화살표 방향을 전이 데이터에 따라 표시한 그래프를 생성할 수 있다.
일 실시예로서, 관리자는 관리자 단말장치(100)를 이용하여 유한 상태기계 생성을 위한 유저 인터페이스(User Interface: UI)(예컨대, 관리자 인터페이스(270))를 제공하고, 관리자는 자신의 단말장치(100)에 표시된 관리자 인터페이스(270)를 통하여 유한 상태기계를 구성하는 복수의 상태 각각에 대한 상태 정보, 액션 정보, 이벤트 정보를 입력할 수 있다.
다이어그램 생성부(212)는 관리자 인터페이스(270)를 통해 유한 상태기계를 도식화하여 제공함으로써, 관리자가 생성, 수정 작업을 용이하게 수행할 수 있다. 즉, 관리자는 다이어그램의 작성과 수정을 통해 서비스 페이지의 운영을 위한 유한 상태기계를 용이하게 생성하고 관리할 수 있다. 이는 유한 상태기계 설계 시 수천, 수만 줄(line) 이상의 텍스트로 된 프로그래밍 언어로 작성하는 것보다 시간과 노력이 적게 들고, 도식화된 유한 상태기계를 직관적으로 볼 수 있어 효율적인 개발과 관리가 가능하다는 장점이 있다.
나아가, 전문 개발자가 아닌 관리자도 다이어그램을 이해할 수 있어, 최초 개발자 외 다른 운영자(예컨대, 광고, 마케팅 부서)에 의한 관리도 가능하다는 이점이 있다. 이러한 유한 상태기계 다이어그램에 대해서는 도 3 및 7을 참조하여 더 상세히 설명하기로 한다.
한편, 상술한 바에 따르면, 유한 상태기계 운영 서버(200)에 유한 상태기계 관리를 위한 관리자 인터페이스(270)로서, 어플리케이션(또는 프로그램)이 설치되는 것을 예로 설명하였으나, 이에 한정되는 것은 아니고 관리자 단말장치(100)에 해당 어플리케이션이 설치되는 것으로 구현될 수도 있다. 이처럼, 관리자가 관리자 단말장치(100)에 설치된 관리자 인터페이스를 이용하거나, 서버(200)에 접속하여 관리자 인터페이스(270)를 이용할 경우, 보안 네트워크를 통하거나 인증을 통해 접속하도록 구현할 수 있다.
합성부(213)는 복수의 상태들 중 순서가 서로 영향을 주지 않는 액션들로 구성된 상태들을 합성하여 유한 상태기계를 생성할 수 있다. 구체적으로 액션 합성부(213)는 복수의 상태들 중 순서가 서로 영향을 주지 않는 액션들로 구성된 연속된 상태들을 검출하고, 검출된 상태들의 각 액션이 발생시키는 이벤트를 가능한 모든 경우의 수를 조합하여 새로운 이벤트로 매핑시켜 액션을 합성할 수 있다. 이에 대해서는 도 7을 참조하여 후술하기로 한다.
다음으로, 운영부(220)는 본 발명의 일 실시예에 의한 유한 상태기계를 운영, 관리하기 위한 구성으로서, 사용자로부터 요청을 수신하는 요청 수신부(221), 진입한 사용자에 대해 유한 상태기계를 실행시키는 실행부(223), 실행부(223)의 동작에 따라 결정되는 사용자의 상태에 기초하여 사용자 단말장치에 응답을 송신하는 인터페이스 제공부(225)를 포함하고, 저장부(227)를 더 포함할 수 있다. 상기 구성요소들(221 내지 227)은 기능별로 각각이 분리된 것처럼 기재하였으나, 이에 한정되는 것은 아니며, 하나의 프로세서 또는 프로그램에 의해 동작될 수 있고, 하나 이상의 구성요소가 통합된 형태로 구현될 수 있다.
일 실시예로서, 운영부(220)는 실행부(223)에 의해 미리 설계된 유한 상태기계의 동작에 따라 특정 서비스(예컨대, 응모 행사)를 제공하며, 사용자의 요청에 대해 상태를 결정하고, 해당 상태에 매핑된 화면 정보를 응답으로서 송신한다. 저장부(227)는 도 2b와 같이 정의된 데이터들을 저장하여, 유한 상태기계의 실행 시 실행부(223)와 연계하여 사용자의 상태, 전이 등이 결정되도록 할 수 있다.
요청 수신부(221)는 사용자 단말장치(100)로부터 요청 데이터를 수신하고, 이를 실행부(223)에 전달하여, 유한 상태기계의 실행을 개시할 수 있다. 일 실시예로서, 요청 수신부(221)는 요청 데이터가 정의된 구성을 포함하고 있지 않거나 서비스 미실행 버튼(예컨대, 팝업창의 닫힘 버튼)을 클릭한 경우 등 일부 경우에 요청 데이터를 실행부(223)에 전달하지 않도록 구현될 수 있다.
실행부(223)가 요청 수신부(221)로부터 요청 데이터를 수신하면, 요청 데이터에 포함된 요청 개인 식별자 및 요청 이벤트명을 초기 입력값으로 하여, 해당 사용자에 대한 유한 상태기계의 실행을 개시할 수 있다. 기 설계된 유한 상태기계는 저장부(227)에 저장될 수 있고, 실행부(223)의 호출에 의해 실행부(223)와 저장부(227), 인터페이스 제공부(225)의 연동에 의해 실행될 수 있다. 다만, 이에 한정되는 것은 아니며, 실행부(223)가 유한 상태기계를 동작시키는데 필요한 다른 구성요소들도 연계될 수 있고, 관련 데이터는 저장부(227)뿐만 아니라 저장부(240)에도 저장될 수 있다.
유한 상태기계는 복수의 상태들 각각에 할당된 상태 정보, 복수의 상태 각각에 할당된 액션 정보 및 상기 복수의 상태 간의 전이를 구성하는 이벤트 정보를 포함하고, 요청 데이터의 개인식별자에 할당되는 상태 정보에 따라 액션과 전이 등의 동작이 수행될 수 있다.
도 2b를 참조하여 설명한 것처럼, 유한 상태기계의 실행부(223)는 요청 데이터를 수신하여, 요청 개인식별자에 따른 현재 상태명을 불러오고(예컨대, 최초 진입 시 초기 상태명), 요청 이벤트명은 "신규 이벤트명" 이라는 처리 예정 이벤트 변수에 할당한다. 다음으로, 전이 데이터에서, 현재 상태명과 신규 이벤트명이 각각 제1 이벤트명에 일치하는 전이를 찾고, 해당하는 전이가 있을 시에 전이를 일으켜 제2 상태명을 사용자의 현재 상태명에 할당한다. 이 때 신규 이벤트명 변수값에는 다시 null값을 할당함으로써, 액션이 반환하는 이벤트가 더 이상 없을 때, null값이 유지되어 최종 상태임을 알 수 있도록 한다.
실행부(223)는 제2 상태에 진입한 사용자에 대해 제2 이벤트에 매핑된 진입 액션을 실행하고, 진입액션의 실행 결과로 이벤트명이 반환되면, 그 반환 이벤트명을 신규 이벤트명에 할당한다. 이처럼, 신규 이벤트명이라는 변수에 null값이 아닌 실제 이벤트값이 할당되면, 다시 전이 확인 단계로 돌아가, 사용자의 현재 상태명과 신규 이벤트명이 일치하는 전이 데이터를 찾아내고, 전이를 일으킬지 여부를 판단할 수 있다. 예컨대, 일치하는 전이 데이터가 없어 전이가 중단될 경우에는, 그 시점에 사용자에게 할당된 현재 상태명을 최종 상태로 보고, 해당 상태명에 매핑되어 있던 화면 정보를 응답으로 출력할 수 있다.
한편, 본 발명의 일 실시예에 따른 실행부(223)는 고객에 의한 이벤트 발생 시에, 해당 고객에 할당된 현재 상태(PC(Program Counter))와 저장소(Memory)를 불러와 컨텍스트를 복원하고, 이벤트에 따라 프로그램의 작동을 진행할 수 있다. 구체적으로, 고객은 유한 상태기계에서 하나의 상태에 머무르는데, 상태 만으로는 의미있는 결과를 만들어낼 수 없고 임의의 값들을 입력받아 저장하고, 복원하여 출력할 필요가 있다.
여기서, 한명의 고객의 상태와 해당 고객에 대한 메모리 공간을 묶어서 "컨텍스트" 라고 부르고, 유한 상태기계에서 한명의 고객은 하나의 컨텍스트를 가질 수 있다. 저장부(227)에는 유한 상태기계 운영 서버(200)에 접속하는 복수의 고객 각각에 대한 메모리 공간이 할당될 수 있고, 고객 별 메모리 공간에는 고객 별 프로그램 코드, 메모리 구성과 프로그램 카운터(실행위치)가 저장될 수 있다. 이 경우, 유한 상태기계는 고객 이벤트 발생 시 해당 고객에 할당된 현재 상태(프로그램 카운터)와 메모리 공간에 저장된 데이터를 독출하여 컨텍스트(context)를 복원할 수 있다.
설계된 유한 상태기계에 따라, 상태 전이와 액션 실행 등 일련의 전이과정을 거치고, 이벤트에 대한 응답을 내려줄 때, 다시 현재 상태와 저장소를 기록하여 컨텍스트를 저장할 수 있다.
즉, 본 발명에 따른 저장부(227)에는 접속하는 복수의 고객 각각에 대한 메모리 공간이 할당될 수 있고, 고객 별 메모리 공간에는 고객 별 프로그램 코드, 메모리 구성과 프로그램 카운터가 저장될 수 있다. 이 경우, 실행부(223)는 사용자 이벤트 발생 시 해당 고객에 할당된 메모리 공간에 저장된 데이터를 추출하여 컨텍스트를 복원하고, 프로그램을 실행시키며, 이벤트에 대한 응답을 내려줄 때 다시 현재 상태를 기록하여 컨텍스트를 저장할 수 있다. 이에 따라, 컨텍스트를 복원하고 기록하는 과정을 통해 고객 별로 프로그램을 멈추고 재가동 시킬 수 있다.
또한 이벤트와 관련하여, 실행부(223)의 유한 상태기계는 사용자 이벤트 및 기계 이벤트를 자동으로 생성하고 발생시키는 이벤트 로직을 포함할 수 있다. 이벤트 로직은 서비스 페이지를 통한 고객 입력에 대응되는 사용자 이벤트를 발생시키는 사용자 발생 이벤트 API와 유한 상태기계 내부적으로 발생하는 기계 이벤트를 발생시키는 기계 발생 이벤트 API를 포함할 수 있다. 실행부(223)는 서비스 페이지를 통한 고객 입력을 기초로 사용자 이벤트를 발생시키거나 또는 상태에 할당된 액션의 실행과 연계하여 기계 이벤트를 발생시켜, 고객의 최종 상태에 적합한 서비스 페이지(즉, 화면 정보)를 고객의 단말 장치(100)에 제공할 수 있다.
일 실시예로서, 고객의 단말장치(100)로부터 요청 데이터가 수신되면, 실행부(223)는 요청 데이터를 통해 고객의 서비스 페이지 진입을 감지하고, 사용자 이벤트 발생 여부를 판단할 수 있다. 예를 들어, 유한 상태기계의 사용자 발생 이벤트 API는 고객의 응모 행사 페이지의 진입에 따라 사용자 이벤트를 발생시킬 수 있다.
사용자 이벤트가 발생하면, 실행부(223)는 고객의 현재 상태에서 해당 사용자 이벤트를 통해 다음 상태로 고객의 상태를 전이시킬 수 있다. 구체적으로, 고객의 단말 장치(100)에 표시된 서비스 페이지를 통하여 고객의 입력(예컨대, 페이지에 표시된 응모 버튼을 클릭하는 입력 행위)이 수신되면, 유한 상태기계는 사용자 발생 이벤트 API 를 실행시켜 고객의 입력에 대응되는 사용자 이벤트를 발생시킬 수 있다. 유한 상태기계는 고객의 현재 상태(제1 상태)에서 상기 사용자 이벤트가 발생됨에 따라 전이 데이터를 확인한 후, 제1 상태명과 이벤트명이 일치하는 전이 데이터 존재 시 고객의 상태를 다음 상태(제2 상태)로 전이시킨다.
그리고, 실행부(223)는 전이에 따른 고객의 상태에 할당된 액션 정보를 검출하고, 검출된 액션 정보를 기초로 고객의 상태에 할당된 액션을 실행할 수 있다. 이 때, 실행부(223)는 저장부(227)로부터 고객의 상태에 할당된 액션을 실행하기 위한 API의 인자를 검출하고, 검출된 인자를 기초로 고객의 상태에 대응되는 API를 실행하며, 실행 후 인자들을 변경할 수 있다.
반면, 기계 이벤트의 경우에는 기계 발생 이벤트 API가 액션의 실행에 연계된 기계 이벤트를 발생시킬 수 있다. 기계 이벤트의 발생은 유한 상태기계에서 고객의 상태 전이를 반복적으로 수행되도록 할 수 있다. 일 예로, 유한 상태기계가 제1 상태부터 제 N 상태까지의 복수의 상태로 구성되고 복수의 상태에 할당된 액션의 실행 결과 기계 이벤트가 지속적으로 발생하는 경우, 유한 상태기계는 고객의 상태를 복수의 상태들 중 하나로 자동으로 전이시킬 수 있다.
다른 실시예로서, 더 이상의 기계 이벤트가 발생하지 않을 경우, 실행부(223)는 그 시점에 사용자의 고객의 최종 상태를 결정한다. 즉, 전이가 중단됨으로써, 해당 시점에 사용자 데이터에 할당되어 있던 "현재 상태명"이 최종 상태가 된다. 실행부(223)는 인터페이스 제공부(225)에 고객의 최종 상태를 전달하고, 인터페이스 제공부(225)는 고객의 단말 장치(100)에 고객의 최종 상태에 부합하는 인터페이스 화면을 표시되도록 제어할 수 있다. 즉, 인터페이스 제공부(225)에 저장되어 있던 화면 정보를 응답 데이터로서 고객의 단말장치(100)에 송신할 수 있다.
이러한 실시예에 따르면, 생성부(210) 또는 운영부(220)가 유한 상태기계를 구성하는 각각의 상태에 대해 고객의 단말 장치(100)에서 서비스 페이지의 출력이 필요한 상태인지 여부를 구분할 수 있다. 예를 들어, 제1 상태에서 제2 상태로의 상태 전이를 위하여 사용자 이벤트의 발생이 필요한 경우(즉, 기계 이벤트의 발생에 따른 전이 없이 특정 상태에 머무는(stay) 경우), 유한 상태기계는 특정 상태는 응모 행사 페이지의 표출이 필요한 상태로 판단할 수 있다. 이와 달리, 특정 상태에서 이후 상태로 상태 전이를 위하여 사용자 이벤트의 발생이 불필요한 경우, 즉 기계 이벤트 발생(예컨대, 이모티콘 지급)만으로 특정 상태에서 이후 상태로 상태 전이가 가능한 경우, 유한 상태기계는 특정 상태는 서비스 페이지의 표출이 불필요한 상태로 판단할 수 있다.
상술한 것처럼, 인터페이스 제공부(225)는 기업에서 홍보하고자 하는 고객 대상 프로모션, 온라인 행사 등의 컨텐츠를 담고 있는 서비스 페이지를 저장하고, 실행부(223)에 의해 결정된 상태에 대응한 서비스 페이지를 제공한다. 인터페이스 제공부(225)는 각각의 유한 상태기계를 구성하는 복수의 상태들에 대해 서비스 페이지를 일대일로 매핑하여 저장할 수 있다. 인터페이스 제공부(225)는 실행부(223)로부터 상태 정보를 전달받아, 해당 상태에 대응하는 화면을 표시할 수 있다.
이 때, 고객에게 화면(웹 페이지)을 표시하는 방식은, 유한 상태기계 운영 서버(200)의 화면 저장부(410)에 미리 저장된 여러 화면들 중 하나를 불러오는 방식(호출 방식)이나, 개별 상태에 각각에 저장되어 있던 화면을 표시하는 방식(개별 매칭 방식) 중 선택적으로 구현될 수 있다.
검증부(230)는 검증 결과에 따라 에러가 있다고 판단되면, 해당 에러가 무엇인지를 나타내는 에러 상세 정보, 해당 에러의 해결을 위한 솔루션을 나타내는 솔루션 정보를 생성하여 제공할 수 있다. 이에 따라, 관리자는 단말 장치(100)를 통해 생성된 유한 상태기계에서 에러가 발생한 영역, 해당 에러가 무엇인지를 나타내는 에러 상세 정보, 해당 에러의 해결을 위한 솔루션을 나타내는 솔루션을 확인하고, 에러를 용이하게 해결할 수 있다. 검증부(230)의 구체적인 동작에 관해서는 도 8을 참조하여 더 상세히 설명하도록 한다.
한편, 제어부(250)는 유한 상태기계 운영 서버(200)의 전반적인 동작을 제어한다. 구체적으로, 제어부(250)는 유한 상태기계의 생성과 운영을 관리하기 위하여, 생성부(210), 운영부(220), 검증부(230), 저장부(240), 제어부(250), 통신부(260), 관리자 인터페이스(270)의 전부 또는 일부 기능을 제어할 수 있다.
저장부(240)는 유한 상태기계 운영 서버(200)의 동작에 필요한 데이터들을 기록하는 저장 장치로서, 생성부(210)에 의해 생성된 유한 상태기계 데이터를 저장할 수 있고, 다른 구성요소들의 각종 기능을 구현을 위한 데이터들을 저장할 수 있다. 또한 본 도면에서는 서버의 저장부(240)와 운영부(230)의 저장부(227)를 분리하여 도시하였으나, 이에 한정되는 것은 아니며, 통합된 하나의 저장 장치에 의해 구현되거나 다수의 저장 장치(예컨대, 여러 타입의 메모리)로 구현될 수 있다.
통신부(260)는 단말 장치(100)와 유한 상태기계 운영 서버 (200) 사이의 통신이 가능하도록 통신 구성(configuration) 등을 설정할 수 있다. 이에 따라, 통신부(260)는 접속한 고객 단말 장치(100)에 데이터를 전송하거나 데이터를 수신할 수 있다. 일 예로, 통신부(260)는 응모 행사 페이지에 대한 고객 입력을 수신하여 요청 수신부(221)에 전달하고, 인터페이스 제공부(225)에서 나온 응답 데이터를 고객 단말장치(100)에 전달할 수 있다.
도 3a는 본 발명의 일 실시 예에 따른 유한 상태기계를 도식화한 유한 상태기계 다이어그램을 나타내는 예시도이다. 도 3a를 참조하면, 예를 들어, 관리자는 관리자 페이지를 통하여 액션으로 "A0"이 할당된 "S0" 상태를 입력하고, 액션으로 "A1"이 할당된 "S1" 상태를 입력하며, 액션으로 "A2"가 할당된 "S2" 상태를 입력할 수 있다. 그리고, 관리자는 관리자 페이지를 통하여 상태 "S0"으로부터 상태 "S1"으로의 전이를 구성하는 이벤트 "E0"를 입력하고, 상태 "S1"으로부터 상태 "S2"로의 전이를 구성하는 이벤트 "E1"을 입력할 수 있다. 일 실시 예로서, 관리자는 텍스트 형태의 프로그래밍 언어를 입력하여 유한 상태기계를 생성할 수 있고, 모델링 툴(예컨대, plantUML)을 통해 입력된 유한 상태기계가 도식화되도록 구현할 수 있다. 이처럼 본 발명은 유한 상태기계를 다이어그램으로 도식화함으로써, 각각의 상태와 액션, 이벤트 정보를 용이하게 파악할 수 있고, 유지보수가 용이하다는 장점이 있다.
이 경우, 일 실시 예로서, 유한 상태기계 다이어그램 생성부(212)는, 도 3a와 같이, 각각의 상태를 도식화한 "S0" 상태 블록과 "S1" 상태 블록과 "S2" 상태 블록을 생성할 수 있다.
그리고, 유한 상태기계 다이어그램 생성부(212)는, 도 3a와 같이,"S0" 에서 "S1"을 향하는 화살표선을 "S0" 상태 블록에 "S1" 상태 블록 사이에 연결하고, "S1" 에서 "S2" 를 향하는 화살표선을 "S1" 상태 블록과 "S2" 상태 블록 사이에 연결한 유한 상태기계 다이어그램을 생성할 수 있다.
도 3b는 본 발명의 일 실시 예에 따른 유한 상태기계 생성 방법을 나타내는 흐름도이다. 도 3b를 참조하면, 먼저 유한 상태기계를 구성하는 복수의 상태 각각에 대하여 상태 정보와 해당 상태에서 실행되어야 할 액션을 나타내는 액션 정보를 할당할 수 있다(S101). 일 실시 예로서, 액션 정보는 하나의 상태 정보에 하나씩 할당되는 것이 원칙이나, 액션의 합성이 필요한 경우 둘 이상의 액션 정보가 할당될 수도 있다.
그리고, 복수의 상태 각각에 대하여 해당 상태에서 이후 상태로의 전이를 위한 이벤트 정보를 할당할 수 있다(S102).
그리고, 할당된 상태 정보, 액션 정보 및 이벤트 정보를 이용하여 유한 상태기계를 생성할 수 있다(S103).
여기서, 생성된 유한 상태기계는 상태에 할당된 액션의 실행 결과가 타 상태로의 전이를 위한 이벤트의 발생이 되도록 구성될 수 있다.
또한, 유한 상태기계를 생성하는 단계(S103)는 상태에 이전 상태에서 해당 상태로의 전이를 위한 이벤트 정보만이 할당되어 있는 경우, 해당 상태를 종료 상태로 자동으로 설정하는 단계 및 상태에 해당 상태로부터 이후 상태로의 전이를 위한 이벤트 정보만이 할당되어 있는 경우, 해당 상태를 시작 상태로 자동으로 설정하는 단계를 포함할 수 있다.
또한, 유한 상태기계를 생성하는 단계(S103)는 복수의 상태들 중 순서가 서로 영향을 주지 않는 액션들로 구성된 상태들을 합성하여 유한 상태기계를 생성하는 합성 단계를 더 포함할 수 있다.
한편, 유한 상태기계 생성 방법은 복수의 상태들 중 응모 행사 페이지의 표시가 필수인 상태에는 고객 단말 장치(100)에 표시할 페이지를 해당 상태에 매칭하여 저장하는 단계를 더 포함할 수 있다.
또한, 본 발명의 일 실시 예에 따른 유한 상태기계 생성 방법은 생성된 유한 상태기계에 할당된 상태 정보 및 액션 정보를 이용하여 유한 상태기계를 도식화한 유한 상태기계 다이어그램을 생성하는 단계를 더 포함할 수 있다. 구체적으로, 유한 상태기계 다이어그램을 생성하는 단계는 복수의 상태 각각에 대응되는 상태 블록을 생성하는 단계, 이벤트 정보를 이용하여 생성된 복수의 상태 블록 간의 전이 데이터를 판별하고 복수의 상태 블록 간의 연결 관계를 형성하는 단계를 포함할 수 있다.
본 발명의 일 실시 예에 따른 유한 상태기계 생성 방법은 생성된 유한 상태기계를 검증하는 단계를 더 포함할 수 있다. 여기서, 검증하는 단계는 상태에 할당된 액션이 기 등록된 액션인지 여부, 상태에 할당된 액션을 실행하기 위한 API의 인자 체크를 통과하였는지 여부, 상태에 할당된 액션의 실행 결과 발생한 이벤트를 이후 상태에 연결했는지 여부 및 상태에 지정된 필수 항목이 저장부에 정의되었는지 여부 중 적어도 하나를 검증할 수 있다.
도 4는 본 발명의 일 실시 예에 따른 서비스 시스템의 동작을 나타내는 타이밍도 이다. 도 4를 참조하면, 유한 상태기계는, 일 예로, 제1 상태, 제2 상태 및 제3 상태로 구성되고, 제1 상태에서 제2 상태로의 전이는 "VISIT" 이벤트로 구성되고, 제2 상태에서 제3 상태로의 전이는 "JOIN" 이벤트로 구성될 수 있다. 이러한 유한 상태기계는 미리 생성되어 저장부(240) 또는 저장부(227)에 관련 데이터가 저장되어 있을 수 있다.
일 실시예로서, 인터페이스 제공부(225)는 상태와 매핑된 서비스 페이지를 저장하는 화면 저장부(410) 및 고객 단말장치(100)에 서비스 페이지(화면 정보)를 출력하는 화면 표시부(420)를 포함한다. 도 4를 참조하면, 인터페이스 제공부(225)의 화면 저장부(410)는 고객의 단말 장치(100)에서 표시될 응모 행사를 위한 서비스 페이지들을 저장할 수 있다. 일 예로, 응모 행사 페이지는 고객 인터페이스(또는 서비스 페이지)로, "NONE 화면", "VISITED 화면", "JOINED 화면", "FAILED 화면", "DONE 화면"을 포함한다. 이러한 복수의 고객 인터페이스 화면은 미리 생성되어 화면 저장부(410)에 저장되고, 각각의 상태와 일대일로 매핑되어 저장된다.
고객이 응모 행사 페이지에 최초로 진입하면, 화면 표시부(420)는 초기 화면인 응모 행사 시작 화면을 화면 저장부(410)로부터 검출하여 최초 진입한 고객 단말 장치(100)에 표시되도록 할 수 있다(S201). 이 경우, 화면 표시부(420)는 고객이 응모 행사 시작 화면에 진입하였음을 알리는 "VISIT EVENT"를 생성하여 유한 상태기계에 전송할 수 있다(S202).
유한 상태기계는 "VISIT EVENT"를 수신하는 등 고객이 응모 행사에 진입한 것으로 판단되면, 고객의 상태를 확인하고 응답을 생성할 수 있다(S203). 구체적으로, S203 단계에서, 유한 상태기계의 사용자 발생 이벤트 API는 고객 입력(페이지 최초 진입)에 따라 사용자 이벤트인 "VISIT EVENT"를 발생시킨다. 그리고 실행부(223)는 제1 상태에서 상기 "VISIT EVENT"를 통해 전이를 일으켜 이후 상태인 제2 상태(VISITED STATE)로 고객의 상태를 전이시킬 수 있다.
실행부(223)에는 상태 전이에 따라 고객의 상태를 제2 상태(VISITED STATE)로 변경하고, 추가적인 전이 이벤트 없이 최종 상태가 VISITED 상태로 결정되면 해당 상태(VISITED STATE)에서 표시할 화면을 인터페이스 제공부(225)에 요청한다(S204).
화면 표시부(420)는 화면 저장부(410)에 "VISITED 화면"을 요청하고(S205), 화면 저장부(410)는 기 저장된 복수의 화면들 중 "VISITED 화면"을 검출하여 화면 표시부(420)에 전송할 수 있다(S206). 이에 따라, 화면 표시부(420)는 고객 단말 장치(100)에 "VISITED 화면"이 표시되도록 할 수 있다 (S207). 즉, 인터페이스 제공부(225)는 유한 상태기계의 요청에 따라 표시될 화면을 제공하여, 사용자의 상태에 따른 화면이 표시되도록 한다.
한편, 고객이 "VISITED 화면"에서 응모 버튼을 클릭하면(S208), 화면 표시부(420)는 고객이 응모 버튼을 클릭하는 행위(사용자 이벤트)가 발생하였음을 실행부(223)에 알린다(S209).
유한 상태기계는 "JOIN 이벤트 발생" 메시지가 수신되면 고객의 상태를 확인하고 응답을 생성할 수 있다(S210). 구체적으로, S210 단계에서, 실행부(223)의 사용자 발생 이벤트 API는 고객 입력(고객의 응모 버튼 클릭)에 따라 사용자 이벤트인 "JOIN 이벤트"를 발생시키고, 실행부(223)는 제2 상태에서 전이를 구성하는 상기 "JOIN 이벤트"를 통해, 이후 상태인 제3 상태로 고객의 상태를 전이시킬 수 있다.
실행부(223)는 상태 전이에 따라 고객의 상태를 제3 상태(JOINED 상태)로 변경하고, 추가적인 전이 이벤트 없이 최종 상태가 JOINED 상태로 결정되면 해당 상태(JOINED 상태)에서 표시할 화면을 인터페이스 제공부(225)에 요청한다(S211).
이 경우, 화면 표시부(420)는 화면 저장부(410)에 "JOINED 화면"을 요청하고(S212), 화면 저장부(410)는 기 저장된 복수의 화면들 중 "JOINED 화면"을 검출하여 화면 표시부(420)에 전송할 수 있다(S213). 이에 따라, 화면 표시부(420)는 고객 단말 장치(100)에 "JOINED 화면"이 표시되도록 할 수 있다 (S214).
이처럼, 실행부(223)는 유한 상태기계에 포함된 복수의 상태 중 화면 표시가 필요한 상태를 구분하여, 인터페이스 제공부(225)에 화면 표시를 요청할 수 있다. 본 실시예에서는, 화면 저장부(410)에 관련 화면 데이터를 미리 저장해두고, 실행부(223)의 요청에 따라 표시할 화면을 출력하는 방식을 위주로 설명하였다. 그러나 이에 한정되는 것은 아니며, 각각의 화면은 유한 상태기계의 개별 상태와 매칭되어 저장되거나 표시될 수도 있다. 또한, 도 4에서 화면 저장부(410)에 저장된 화면의 로딩은 URL(Uniform Resource Locator)을 이용하여 수행될 수 있다.
이와 같이, 본 발명에 따르면, 유한 상태기계는 응모 행사 페이지를 통한 고객 입력을 기초로 사용자 이벤트를 발생시키거나 또는 상태에 할당된 액션의 실행과 연계하여 기계 이벤트를 발생시켜, 고객의 현재 상태에 적합한 응모 행사 페이지를 고객의 단말 장치(100)에 표시하도록 제어할 수 있다.
도 5는 본 발명의 일 실시 예에 따른 유한 상태기계 운영 서버(200)의 서비스 운영 방법을 나타내는 흐름도 이다. 도 5를 참조하면, 먼저 고객은 자신의 단말 장치(100)를 이용하여 서비스 페이지에 진입할 수 있다(S301). 일 예로, 고객은 자신의 단말 장치(100)에 응모 행사 페이지에 대응되는 URL 입력하여 응모 행사 페이지에 진입할 수 있다.
그리고, 유한 상태기계는 실행부(223)에 의해 고객의 진입이 감지되면 사용자 이벤트 발생 여부를 판단할 수 있다(S302). 예컨대, 고객에게 행사 응모 관련 팝업창을 띄우거나, 광고 배너를 노출한 경우, 사용자가 응모 행사 페이지에 진입한 것으로 볼 수 있다. 이 때, 응모 행사 배너나 창(window)을 클릭하여 응모 행사를 위한 상세 페이지로 이동할 경우 유한 상태기계는 사용자 이벤트(방문(VISIT) 이벤트)가 발생한 것으로 판단할 수 있다.
만약, 사용자 이벤트가 발생하지 않으면(S302 : NO), 예컨대, 팝업창을 닫거나 광고배너를 클릭하지 않으면, 실행부(223)는 진행을 종료할 수 있다(S303).
사용자 이벤트가 발생하면(S302 : YES), 유한 상태기계는 고객의 현재 상태에서 전이를 구성하는 이벤트가 발생한 것으로 보고, 고객의 상태를 다음 상태로 전이시킬 수 있다(S304). 구체적으로, 유한 상태기계가 제 1 부터 제 N 까지의 상태로 구성되는 경우, 실행부(223)는 고객의 현재 상태에서 상기 발생된 사용자 이벤트를 통해 이후의 상태로 고객의 상태를 전이시킬 수 있다.
그리고, 실행부(223)는 전이에 따른 고객의 상태에 할당된 액션 정보를 검출하고, 검출된 액션 정보를 기초로 고객의 상태에 할당된 액션을 실행할 수 있다(S305). 여기서, 실행하는 단계(S305)는 저장부로부터 고객의 상태에 할당된 액션을 실행하기 위한 API의 인자를 검출하는 단계, 검출된 인자를 기초로 고객의 상태에 대응되는 API를 실행하는 단계 및 실행 후 인자들을 변경하고, 액션의 실행에 연계된 이벤트를 발생시키는 단계를 포함할 수 있다.
그리고, 실행부(223)는 실행된 액션에 연계된 기계 이벤트의 발생이 있는지 여부를 판단할 수 있다(S306). 구체적으로, S306 단계에서, 실행부(223)의 기계 발생 이벤트 API는 S305 단계에서 실행되는 액션에 기계 이벤트가 매핑되어 있는 경우, 액션의 실행과 함께 해당 기계 이벤트를 발생한다.
기계 이벤트가 발생하면(S306 : YES), 실행부(223)는 고객의 현재 상태에서 상기 발생된 기계 이벤트를 통해 이후의 상태로 고객의 상태를 전이시킬 수 있다(S304).
이러한 S304, S305 및 S306 단계는 유한 상태기계를 구성하는 제1 부터 제N 까지의 복수의 상태 모두에 대해서 기계 발생 이벤트 API에서 기계 이벤트 발생을 조건으로 반복적으로 수행될 수 있고, 기계 이벤트가 발생하는 경우(S306) 연속적인 전이가 일어날 수 있다.
다만, 기계 이벤트가 발생하지 않으면(S306 : NO), 실행부(223)는 고객의 최종 상태로 결정하고(S307), 인터페이스 제공부(225)에 고객의 최종 상태를 전달하며 인터페이스 제공부(225)는 고객의 단말 장치(100)에 고객의 최종 상태에 부합하는 인터페이스 화면을 표시할 수 있다(S308).
도 6은 본 발명의 일 실시 예에 따른 이모티콘 지급 응모 행사의 유한 상태기계 다이어그램 이다. 도 6을 참조하면, 유한 상태기계는 이모티콘 지급을 위한 응모 행사에 대해, 시작 상태(30), 방문함 상태(31), 이모티콘 지급 중 상태(32), 지급 실패 상태(33), 지급 완료 상태(34)를 포함할 수 있다.
고객이 이모티콘 지급 응모 행사에 참여하기 위하여 자신의 단말 장치(100)를 이용하여 서비스 페이지에 접속하면, 유한 상태기계의 사용자 발생 이벤트 API는 "방문 이벤트"(VISIT 이벤트)를 발생시킬 수 있다. 이 경우, 유한 상태기계에서 고객의 상태는 시작 상태(30)에서 방문함 상태(31)로 전이될 수 있다.
그리고, 유한 상태기계는 방문함 상태(31)에서 기계 이벤트에 의한 자동적인 전이가 없는 경우, 고객이 방문함 상태(31)를 최종 상태로 보고, 방문함 상태에 매칭된 "응모를 위한 페이지"를 검출하여 고객에게 제공할 수 있다. 이 경우, 고객 단말 장치(100)는 "응모를 위한 페이지"를 표시할 수 있다.
이 후, 이모티콘 지급 응모 행사에 참여하기 위하여, "응모를 위한 페이지" 의 응모 버튼을 클릭하는 고객 입력이 수신되면, 유한 상태기계의 사용자 발생 이벤트 API는 "응모 이벤트"(JOIN 이벤트)를 발생시킨다. 이벤트 발생에 따라, 유한 상태기계에서 고객의 상태는 방문함 상태(31)에서 이모티콘 지급 중 상태(32)로 전이될 수 있다. 그리고, 유한 상태기계는 이모티콘 지급 중 상태(32)에 할당된 이모티콘 지급 API를 실행할 수 있다.
이모티콘 지급 API의 실행 결과 이모티콘 지급이 성공하면, 유한 상태기계의 기계 발생 이벤트 API는 "지급 완료 이벤트"(기계 이벤트)를 발생시킬 수 있다. 이 때, 유한 상태기계에서 고객의 상태는 이모티콘 지급 중 상태(32)에서 지급 완료 상태(34)로 전이된다. 유한 상태기계는 추가적인 전이가 일어나지 않으므로, 고객이 현재 도달한 최종 상태를 지급 완료 상태(34)로 보고, 지급 완료 상태(34)에 매칭된 "이모티콘 지급 완료 알림을 위한 페이지"를 검출하여 고객에게 해당 페이지를 제공할 수 있다. 이 경우, 고객 단말 장치(100)는 매칭된 "이모티콘 지급 완료 알림을 위한 페이지"를 표시할 수 있다.
그러나 이모티콘 지급 API의 실행 결과 이모티콘 지급이 실패하면, 유한 상태기계의 기계 발생 이벤트 API는 "지급 실패 이벤트"를 발생시킬 수 있다. 이 경우, 유한 상태기계에서 고객의 상태는 이모티콘 지급 중 상태(32)에서 지급 실패 상태(33)로 전이된다. 마찬가지로, 유한 상태기계는 추가적인 전이가 일어나지 않으면, 고객이 현재 도달한 최종 상태를 지급 실패 상태(33)로 보고, 유한 상태기계는 지급 실패 상태(33)에 매칭된 "이모티콘 지급 실패 알림을 위한 페이지"를 검출하여 방문함 상태(33)의 고객에게 해당 페이지 화면을 제공할 수 있다.
일 실시예로서, 관리자는 지급 실패 시 지급을 재시도하도록 설계할 수 있다(RESEND 기능). 예를 들어, 지급 실패 이벤트가 발생한 경우 유한 상태기계는 고객을 지급 실패 상태(33)로 전이시키고 지급 실패 페이지를 출력할 수 있다. 동시에(또는 수 초가 지난 후), 자동으로 지급을 재시도하도록, 이모티콘 지급중 상태(32)로 상태를 전이시켜 지급을 한번 더 시도하도록 구현할 수 있다. 이는 선택적 기능으로서, 관리자의 설계에 따라 적절히 구현될 수 있다.
다른 실시예로, 관리자에 의해 수동으로 재시도되도록 RESESND 기능을 관리자에 의한 사용자 이벤트로 구현할 수 있다. 또 다른 실시예로, 일정시간마다 자동으로 재시도되도록 REPEAT_10M(예컨대, 10분마다 재시도)와 같은 기계 이벤트를 구현할 수도 있다.
이러한 도 6에 따른 상태 블록을 도 5에 따른 알고리즘 관점에서 설명하면 다음과 같다. 후술하는 유한 상태기계의 동작은 서버(200)의 운영부(220)에 의해 동작하며, 설명의 편의상 유한 상태기계가 전이, 이벤트, 액션 등의 동작을 수행하는 것처럼 혼용하여 표현될 수 있다. 이는 유한 상태기계가 실질적으로 운영부(220)에 포함된 구성요소들(221, 223, 225, 227)의 유기적인 동작에 의해 구현되기 때문이다.
고객이 이모티콘 지급 응모 행사에 참여하기 위하여 자신의 단말 장치(100)를 이용하여 응모 행사 페이지에 진입하면(S301), 유한 상태기계의 사용자 발생 이벤트 API는 고객의 입력인 "응모 행사 페이지 진입"에 대응되는 "방문 이벤트"를 발생시키고(S302 : YES), 유한 상태기계에서 고객의 상태를 시작 상태(30)에서 방문함 상태(31)로 전이시킬 수 있다(S304).
그리고, 유한 상태기계는 방문함 상태(31)에 할당된 액션을 실행하고(S305), 액션의 결과로, 유한 상태기계의 기계 발생 이벤트 API에서 기계 이벤트를 발생시키는지 판단한다(S306). 본 실시예에서, 유한 상태기계는 방문함 상태(31)에 할당된 액션의 실행에 연계되어 기계 이벤트를 발생시키지 않기에(S306 : NO), 유한 상태기계는 고객의 최종 상태를 방문함 상태(31)로 결정(S307)한다. 실행부(223)는 인터페이스 제공부(225)에 고객의 현재 상태명을 방문항 상태(31)명으로 전달하고, 인터페이스 제공부(225)는 고객의 최종 상태인 방문함 상태(31)에 부합하는 "응모를 위한 페이지"를 고객의 단말 장치(100)에 표시되도록 할 수 있다(S308).
한편, 방문한 상태(31)의 고객이 자신의 단말 장치(100)에 표시된 "응모를 위한 페이지"에서 응모창을 클릭하면(S301), 유한 상태기계의 사용자 발생 이벤트 API는 고객의 입력인 "응모창 클릭"에 대응되는 "응모 버튼 클릭 이벤트"를 발생시키고(S302 : YES), 유한 상태기계가 고객의 상태를 방문함 상태(31)에서 이모티콘 지급 중 상태(32)로 전이시킬 수 있다(S304).
그리고, 유한 상태기계는 이모티콘 지급 중 상태(32)에 할당된 이모티콘 지급 API를 실행한다. 유한 상태기계는 이모티콘 지급 API의 실행 결과 이모티콘 지급이 성공하면, 유한 상태기계의 기계 발생 이벤트 API는 상기 액션의 실행에 연계된 기계 이벤트인 "지급 완료 이벤트"를 발생시킬 수 있다(S306 : YES).
이 경우, 유한 상태기계는 고객의 상태를 이모티콘 지급 중 상태(32)에서 지급 완료 상태(34)로 전이시키고(S304), 지급 완료 상태(34)에 할당된 액션을 실행하고(S305), 유한 상태기계의 기계 발생 이벤트 API에서 기계 발생 이벤트를 발생시키는지 판단할 수 있다(S306). 본 실시예에서, 유한 상태기계는 지급 완료 상태(34)에 할당된 액션의 실행에 연계되어 기계 발생 이벤트 API에서 기계 발생 이벤트를 발생시키지 않으므로(S306 : NO), 유한 상태기계는 고객의 현재 상태(최종 상태)를 지급 완료 상태(34)로 결정(S307)한다. 실행부(223)는 인터페이스 제공부(210)에 고객의 최종 상태를 전달하며, 인터페이스 제공부(225)는 고객의 최종 상태인 지급 완료 상태(34)에 부합하는 "이모티콘 지급 완료 알림을 위한 페이지"를 고객의 단말 장치(100)에 표시되도록 할 수 있다(S308).
반면, 유한 상태기계는 이모티콘 지급 API의 실행 결과 이모티콘 지급이 실패하면, 유한 상태기계의 기계 발생 이벤트 API는 상기 액션의 실행에 연계된 기계 이벤트인 "지급 실패 이벤트"를 발생시킬 수 있다(S306 : YES). 이 경우, 유한 상태기계는 고객의 상태를 이모티콘 지급 중 상태(32)에서 지급 실패 상태(33)로 전이시키고(S304), 지급 실패 상태(33)에 할당된 액션을 실행하고(S305), 유한 상태기계의 기계 발생 이벤트 API에서 기계 이벤트를 발생시키는지 판단한다(S306). 유한 상태기계는 지급 실패 상태(33)에 할당된 액션의 실행에 연계되어 기계 발생 이벤트 API에서 기계 이벤트를 발생시키지 않기에(S306 : NO), 유한 상태기계는 고객의 최종 상태를 지급 실패 상태(33)로 결정하고(S307), 인터페이스 제공부(225)에 고객의 최종 상태를 전달하며, 인터페이스 제공부(225)는 고객의 최종 상태인 지급 실패 상태(33)에 부합하는 "이모티콘 지급 실패 알림을 위한 페이지"를 고객의 단말 장치(100)에 표시되도록 할 수 있다(S308).
도 7은 본 발명의 일 실시 예에 따른 유한 상태기계 다이어그램을 나타내는 예시도 이다. 일 실시예로서, 관리자는 텍스트 형태의 프로그래밍 언어를 입력하여 유한 상태기계를 생성할 수 있고, 모델링 툴(예컨대, plantUML)을 통해 입력된 유한 상태기계가 도식화되도록 구현할 수 있다.
도 7(a)를 참조하면, 예를 들어, 관리자는 관리자 인터페이스(270)를 통해 유한 상태기계를 설계하되, 생서부(210)를 통해, "S0" 상태에 "A0" 액션을 할당하고, "S1" 상태에는 "A1"액션을 할당하고, "S2" 상태에는 "A2"액션을 할당한 유한 상태기계를 생성할 수 있다. 그리고, 관리자는 상태 "S0"으로부터 상태 "S1"으로의 전이를 구성하는 이벤트 "E0"를 입력하고, 상태 "S1"으로부터 상태 "S2"로의 전이를 구성하는 이벤트 "E1"을 입력할 수 있다.
이처럼 본 발명은 유한 상태기계를 다이어그램으로 도식화함으로써, 각각의 상태와 액션, 이벤트 정보 및 전이 방향 등을 용이하게 파악할 수 있고, 유지보수가 용이하다는 장점이 있다.
이 경우, 일 실시예로서, 다이어그램 생성부(212)는, 도 7(a)와 같이, "S0" 상태 블록과 "S1" 상태 블록과 "S2" 상태 블록을 생성할 수 있다. 생성된 상태 블록에는 각각의 블록에서 수행될 액션들을 할당하여 함께 표시할 수 있다.
그리고, 다이어그램 생성부(212)는, 도 7(a)와 같이,"S0" 에서 "S1"을 향하는 화살표선을 "S0" 상태 블록에 "S1" 상태 블록 사이에 연결하고, "S1" 에서 "S2" 를 향하는 화살표선을 "S1" 상태 블록과 "S2" 상태 블록 사이에 연결한 유한 상태기계 다이어그램을 생성할 수 있다.
본 발명의 다른 실시예로서, 유한 상태기계에서 사용자 이벤트를 나타내는 연결선과 기계 이벤트를 나타내는 연결선을 구별하여 표시할 수 있다. 이에 대해서는 도 7(b)를 참조하여 보다 구체적으로 설명하기로 한다.
도 7(b)는 본 발명의 일 실시 예에 따른 유한 상태기계 다이어그램을 나타내는 예시도 이다. 관리자는 상태 "S0"으로부터 상태 "S1"으로의 전이를 구성하는 사용자 이벤트 "E0"를 입력하고, 상태 "S1"으로부터 상태 "S2"로의 전이를 구성하는 기계 이벤트 "E1"을 입력할 수 있다. 이 경우, 도 7(b)와 같이, 다이어그램 생성부(212)는 "S0" 상태 블록에서 "S1" 상태 블록으로의 전이를 구성하는 연결선을 점선으로 표시하고, "S1" 상태 블록에서 "S2" 상태 블록으로의 전이를 구성하는 연결선을 실선으로 구분하여 표시한 유한 상태기계 다이어그램을 생성할 수 있다. 다만, 이는 일 실시 예일 뿐, 이러한 표현 방식에 한정되는 것은 아니며, 사용자 이벤트에 대응되는 연결선과 기계 이벤트에 대응되는 연결선은 서로 다른 색깔이나 형태로 구별될 수도 있다.
도 7(c)는 본 발명의 일 실시 예에 따른 유한 상태기계 검증부(230)의 동작 결과 에러가 발견된 경우 표시되는 상태 블록을 나타내는 도면이다. 도 7(c)를 참조하면, 유한 상태기계 검증부(230)의 검증 결과 "S1" 상태에 에러가 있는 경우, 유한 상태기계 검증부(230)는 에러가 발생한 "S1" 상태를 나타내는 상태 블록은 에러가 없는 상태를 나타내는 상태 블록과 색깔, 명암 등으로 구별되도록 표시할 수 있다. 이처럼, 에러가 발생한 상태 블록을 구별되도록 표시함에 따라, 관리자는 신속하고 직관적으로 에러 발생 여부를 확인할 수 있다.
유한 상태기계 검증부(230)는 검증 결과에 따라 에러가 있다고 판단되면, 해당 에러가 무엇인지를 나타내는 에러 상세 정보, 해당 에러의 해결을 위한 솔루션을 나타내는 솔루션 정보를 생성하여 제공할 수 있다. 이에 따라, 관리자는 단말 장치(100)를 통해 생성된 유한 상태기계에서 에러가 발생한 영역, 해당 에러가 무엇인지를 나타내는 에러 상세 정보, 해당 에러의 해결을 위한 솔루션을 나타내는 솔루션을 확인하고, 에러를 용이하게 해결할 수 있다.
한편, 유한 상태기계 다이어그램에는 응모 행사 페이지에 접속한 복수의 고객들이 복수의 상태들 중 어느 상태에 해당하는지 표시될 수 있다. 구체적으로, 저장부(227)에는 응모 행사 페이지에 접속한 복수의 고객 별로 메모리 공간이 할당될 수 있고, 해당 메모리 공간에는 유한 상태기계에서 고객 별 현재 상태가 저장될 수 있다. 이에 따라, 본 발명에 따르면 고객 별 메모리 공간에 저장된 데이터를 독출하여 이벤트 페이지에 접속한 복수의 고객들이 유한 상태기계를 구성하는 복수의 상태들 중 어느 상태에 머무르고 있는지 판단할 수 있고, 유한 상태기계 다이어그램에 이 정보를 표출(예컨대, 상태 블록 내에 고객들 수를 숫자로 표시함)할 수 있다.
도 8은 본 발명의 일 실시 예에 따른 유한 상태기계 검증 방법을 설명하기 위한 흐름도 이다. 본 도면에서는 유한 상태기계 검증을 위한 판단 요건들(S402 내지 S405)이 순차적으로 판단되는 것처럼 도시하였으나, 이에 한정되는 것은 아니며, 각각의 판단 요건들의 순서가 변경되거나 병렬적으로 검증이 수행될 수 있다. 또한 본 도면에서는 제1 내지 제4 검증 단계를 수행한 검증 방법에 대해 설명하였으나, 추가적인 검증 단계를 더 포함하거나 일부 검증 단계를 생략할 수 있다.
도 8을 참조하면, 먼저 생성된 유한 상태기계를 검증하는 단계가 개시되면(S401), 액션이 기 등록된 액션인지 검증할 수 있다(S402: 제1 검증담계). 만약, 액션이 기 등록된 액션인 경우(S402 : YES), 유한 상태기계 검증부(240)는 본 사항에 대한 검증은 통과하였다고 판단하고 다음 검증 단계를 진행할 수 있다. 다만, 액션이 기 등록된 액션인 아닌 경우(S402 : NO), 유한 상태기계 검증부(230)는 해당 상태에 에러가 있다고 판단할 수 있다(S407).
또한, 상태에 할당된 액션을 실행하기 위한 API의 인자(아규먼트(Argument)) 체크를 통과하였는지 여부를 검증할 수 있다(S403: 제2 검증 단계). 만약, 상태에 할당된 액션을 실행하기 위한 API의 인자 체크를 통과하지 못하는 경우(S403 : NO), 유한 상태기계 검증부(240)는 해당 상태에 에러가 있다고 판단할 수 있다(S407). 다만, 상태에 할당된 액션을 실행하기 위한 API의 인자 체크를 통과하는 경우(S403 : YES), 유한 상태기계 검증부(230)는 본 사항에 대한 검증은 통과하였다고 판단하고 다음 검증 단계를 진행할 수 있다.
또한, 상태에 할당된 액션의 실행 결과 발생한 이벤트를 이후 상태에 연결했는지 여부를 검증할 수 있다(S404: 제3 검증 단계). 만약, 상태에 할당된 액션의 실행 결과 발생한 이벤트를 이후 상태에 연결한 경우(S404 : YES), 유한 상태기계 검증부(230)는 본 사항에 대한 검증은 통과하였다고 판단하고 다음 검증 단계를 진행할 수 있다. 상태에 할당된 액션의 실행 결과 발생한 이벤트를 이후 상태에 연결하지 않은 경우(S404 : NO), 유한 상태기계 검증부(230)는 해당 상태에 에러가 있다고 판단할 수 있다(S407).
또한, 액션의 인자(ARGUMENT) 중에서 필수로 지정된 항목이 프로퍼티에 저장되어 있는지 여부를 검증할 수 있다(S405: 제4 검증 단계). 만약, 액션의 인자 중에서 필수로 지정된 항목이 프로퍼티에 저장되어 있지 않다고 판단되면(S405 : NO), 유한 상태기계 검증부(230)는 해당 상태에 에러가 있다고 판단할 수 있다(S407). 다만, 액션의 인자 중에서 필수로 지정된 항목이 프로퍼티에 저장되어 있다고 판단되면(S405 : YES), 유한 상태기계 검증부(230)는 검증을 종료하고 유한 상태기계에는 에러가 미존재한다고 판단할 수 있다(S406).
한편, 본 발명의 일 실시 예에 따른 방법은 유한 상태기계에서 검증에 따라 에러로 판단된 상태 블록은 에러가 없는 상태 블록과 구별되도록 표시하는 단계를 더 포함할 수 있다.
또한, 본 발명의 일 실시 예에 따른 방법은 이벤트 페이지에 접속한 복수의 고객들이 복수의 상태들 중 어느 상태에 해당하는지 유한 상태기계에 표시하는 단계를 더 포함할 수 있다.
또한, 본 발명의 일 실시 예에 따른 방법은 사용자 발생 이벤트 API와 상기 기계 발생 이벤트 API 중 적어도 하나를 실행하여 해당 상태에서 타 상태로의 전이를 위한 사용자 이벤트 및 기계 이벤트 중 적어도 하나를 발생시키는 단계를 더 포함할 수 있다.
또한, 본 발명의 일 실시 예에 따른 방법은 유한 상태기계에서 사용자 이벤트를 나타내는 연결선과 상기 기계 이벤트를 나타내는 연결선은 구별하여 표시하는 단계를 더 포함할 수 있다.
도 9a 내지 9b는 본 발명의 일 실시 예에 따른 액션 합성 과정을 나타내는 유한 상태기계 다이어그램을 나타내는 도면이다. 도 9a는 둘 이상의 상태를 설계하여 각각의 결과값을 갖도록 하여 복수의 결과로 분기되도록 하는 액션의 합성 방법을 나타내고, 도 9b는 하나의 상태에 둘 이상의 액션을 합성 후 복수의 결과로 분기되도록 하는 합성 방법을 나타낸다. 도 9a, 도 9b는 모두 CHECK1, CHECK2라는 2가지 조건의 충족 여부를 판단하여 ERROR1, ERROR2, OK라는 3가지 결과값(경우의 수)으로 분기되도록 하기 위한 것이며, 도 9a, 도 9b 각각이 다른 방식으로 구현된 예를 나타낸다. 도 9a 내지 9b를 참조하는 액션의 합성은, 유한 상태기계 생성 시 합성부(213)에 의해 수행될 수 있다.
도 9a를 참조하면, 유한 상태기계 다이어그램은 상태 "INITED(11)", 상태 "INITED(11)"에서 "CHECK1" 액션을 실행하여 "False" 이벤트 발생시 상태 "INITED(11)"로부터 전이되는 상태인 "ERROR1(12)", 상태 "INITED(11)"에서 "CHECK1" 액션을 실행하여 "True" 이벤트 발생시 상태 "INITED(11)"로부터 전이되는 상태인 "TEMP(13)", 상태 "TEMP(13)"에서 "CHECK2" 액션을 실행하여 "False" 이벤트 발생시 상태 "TEMP(13)"로부터 전이되는 상태인 "ERROR2(14)", 상태 "TEMP(13)"에서 "CHECK2" 액션을 실행하여 "True" 이벤트 발생시 상태 "TEMP(13)"로부터 전이되는 상태인 "OK(15)"로 구성될 수 있다. 여기서, 도 9a에 따른 유한 상태기계 다이어그램은 상태 "INITED(11)"에서 실행되는 "CHECK1" 액션과 상태 "TEMP(13)"에서 실행되는 "CHECK2" 액션의 순서가 서로 영향을 주지 않을 수 있다.
이 경우, 도 9b와 같이, 액션 합성부(213)는 복수의 상태들 중 순서가 서로 영향을 주지 않는 액션인 "CHECK1"과 "CHECK2"를 하나의 상태(INITED(21))에 합성하여 유한 상태기계를 생성할 수 있다. 구체적으로, 액션 합성부(213)에서 합성된 유한 상태기계를 나타내는 유한 상태기계 다이어그램은 상태 "INITED(21)", 상태 "INITED(21)"에서 "CHECK1" 액션과 "CHECK2" 액션을 실행하여 어느 하나라도 통과하지 못하여 "False#1" 이벤트 발생시 상태 "INITED(21)"로부터 전이되는 상태인 "ERROR1(22)", 상태 "INITED(21)"에서 "CHECK1" 액션과 "CHECK2" 액션을 실행하여 어느 하나라도 통과하지 못하여 "False#2" 이벤트 발생시 상태 "INITED(21)"로부터 전이되는 상태인 "ERROR2(23)", 상태 "INITED(21)"에서 "CHECK1" 액션과 "CHECK2" 액션을 실행하여 둘 다 통과하여 "True" 이벤트 발생시 상태 "INITED(21)"로부터 전이되는 상태인 "OK(24)" 로 구성될 수 있다.
이러한 본 발명에 따른 합성부(213)에 의하면, 유한 상태기계 다이어그램의 크기를 줄일 수 있어 관리자들의 가독성을 높이며, 연관된 상태와 액션들을 뭉쳐서 모듈화 할 수 있어서 재사용성에 큰 도움이 될 수 있다.
이와 같이, 본 발명의 다양한 실시 예에 따르면, 응모 행사와 같은 서비스의 설계, 추가, 변경 등 서비스 페이지의 운영에 유연하게 대응 가능하도록 하는 유한 상태기계를 제공함으로써, 관리자의 편의성이 향상되고 효율적인 설계와 운영이 가능해진다.
또한, 본 발명의 다양한 실시 예에 따르면, 유한 상태기계를 통해 기계 이벤트 또는 사용자 이벤트에 따른 서비스 절차들(액션 수행, 상태 전이, 화면 제공 등)을 자동화하고, 복잡한 순서의 비즈니스 로직을 동적으로 구성함으로써, 응모 행사를 위한 서버의 부하와 용량을 최소화할 수 있다.
한편, 명세서 및 청구범위에서 "제 1", "제 2", "제 3" 및 "제 4" 등의 용어는, 만약 있는 경우, 유사한 구성요소 사이의 구분을 위해 사용되며, 반드시 그렇지는 않지만 특정 순차 또는 발생 순서를 기술하기 위해 사용된다. 그와 같이 사용되는 용어는 여기에 기술된 본 발명의 실시예가, 예컨대, 여기에 도시 또는 설명된 것이 아닌 다른 시퀀스로 동작할 수 있도록 적절한 환경하에서 호환 가능한 것이 이해될 것이다. 마찬가지로, 여기서 방법이 일련의 단계를 포함하는 것으로 기술되는 경우, 여기에 제시된 그러한 단계의 순서는 반드시 그러한 단계가 실행될 수 있는 순서인 것은 아니며, 임의의 기술된 단계는 생략될 수 있고/있거나 여기에 기술되지 않은 임의의 다른 단계가 그 방법에 부가 가능할 것이다.
또한 명세서 및 청구범위의 "왼쪽", "오른쪽", "앞", "뒤", "상부", "바닥", "위에", "아래에" 등의 용어는, 설명을 위해 사용되는 것이며, 반드시 불변의 상대적 위치를 기술하기 위한 것은 아니다. 그와 같이 사용되는 용어는 여기에 기술된 본 발명의 실시예가, 예컨대, 여기에 도시 또는 설명된 것이 아닌 다른 방향으로 동작할 수 있도록 적절한 환경하에서 호환 가능한 것이 이해될 것이다. 여기서 사용된 용어 "연결된"은 전기적 또는 비 전기적 방식으로 직접 또는 간접적으로 접속되는 것으로 정의된다. 여기서 서로 "인접하는" 것으로 기술된 대상은, 그 문구가 사용되는 문맥에 대해 적절하게, 서로 물리적으로 접촉하거나, 서로 근접하거나, 서로 동일한 일반적 범위 또는 영역에 있는 것일 수 있다. 여기서 "일실시예에서"라는 문구의 존재는 반드시 그런 것은 아니지만 동일한 실시예를 의미한다.
또한 명세서 및 청구범위에서 '연결된다', '연결하는', '체결된다', '체결하는', '결합된다', '결합하는' 등과 이런 표현의 다양한 변형들의 지칭은 다른 구성요소와 직접적으로 연결되거나 다른 구성요소를 통해 간접적으로 연결되는 것을 포함하는 의미로 사용된다.
또한, 본 명세서에서 사용되는 구성요소에 대한 접미사 "모듈" 및 "부"는 명세서 작성의 용이함만이 고려되어 부여되거나 혼용되는 것으로서, 그 자체로 서로 구별되는 의미 또는 역할을 갖는 것은 아니다.
또한 본 명세서에서 사용된 용어들은 실시예를 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 '포함한다(comprise)' 및/또는 '포함하는(comprising)'은 언급된 구성요소, 단계, 동작 및/또는 소자는 하나 이상의 다른 구성요소, 단계, 동작 및/또는 소자의 존재 또는 추가를 배제하지 않는다.
한편, 상술한 본 발명의 다양한 실시 예들에 따른 방법들은 프로그램으로 구현되어 서버 또는 기기들에 제공될 수 있다. 이에 따라 각 장치들은 프로그램이 저장된 서버 또는 기기에 접속하여, 상기 프로그램을 다운로드할 수 있다.
또한, 상술한 본 발명의 다양한 실시 예들에 따른 방법들은 프로그램으로 구현되어 다양한 비일시적 판독 가능 매체(non-transitory computer readable medium)에 저장되어 제공될 수 있다. 비일시적 판독 가능 매체란 레지스터, 캐쉬, 메모리 등과 같이 짧은 순간 동안 데이터를 저장하는 매체가 아니라 반영구적으로 데이터를 저장하며, 기기에 의해 판독(reading)이 가능한 매체를 의미한다. 구체적으로는, 상술한 다양한 어플리케이션 또는 프로그램들은 CD, DVD, 하드 디스크, 블루레이 디스크, USB, 메모리카드, ROM 등과 같은 비일시적 판독 가능 매체에 저장되어 제공될 수 있다.
또한, 이상에서는 본 발명의 바람직한 실시 예에 대하여 도시하고 설명하였지만, 본 발명은 상술한 특정의 실시 예에 한정되지 아니하며, 청구범위에서 청구하는 본 발명의 요지를 벗어남이 없이 당해 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 의해 다양한 변형실시가 가능한 것은 물론이고, 이러한 변형실시들은 본 발명의 기술적 사상이나 전망으로부터 개별적으로 이해되어져서는 안될 것이다.
100 : 단말 장치 200 : 유한 상태기계 운영 서버
210 : 생성부 211 : 할당부
212 : 다이어그램 생성부 213 : 합성부
220 : 운영부 221 : 요청 수신부
223 : 실행부 225 : 인터페이스 제공부
227 : 저장부 230 : 검증부
240: 저장부 250 : 제어부
260 : 통신부 270 : 관리자 인터페이스

Claims (30)

  1. 유한 상태기계(finite state machine) 운영 서버에 의한 유한 상태기계 생성 방법에 있어서,
    유한 상태기계를 구성하는 복수의 상태 각각에 대하여 상태 정보와 해당 상태에서 실행되어야 할 액션 정보를 할당하는 단계;
    상기 복수의 상태 각각에 대하여 해당 상태에서 이후 상태로의 전이를 위한 이벤트 정보를 할당하는 단계; 및
    상기 할당된 상태 정보, 액션 정보 및 이벤트 정보를 이용하여 유한 상태기계를생성하는 단계;를 포함하고,
    상기 생성된 유한 상태기계는 서비스 페이지를 통한 고객의 입력에 대응되는 사용자 이벤트를 발생시키거나 상기 유한 상태기계 내부적으로 발생하는 기계 이벤트를 발생시키는 이벤트 로직을 포함하는 것을 특징으로 하는 유한 상태기계 생성 방법.
  2. 제1항에 있어서,
    상기 할당된 상태 정보 및 액션 정보를 이용하여 상기 복수의 상태 각각에 대응되는 상태 블록을 생성하는 단계;
    상기 할당된 이벤트 정보를 이용하여 상기 생성된 복수의 상태 블록 간의 연결 관계를 형성한 유한 상태기계 다이어그램을 생성하는 단계; 및
    상기 생성된 유한 상태기계 다이어그램을 포함하는 관리자 인터페이스를 관리자의 단말 장치에 제공하는 단계;를 더 포함하는 것을 특징으로 하는 유한 상태기계 생성 방법.
  3. 제1항에 있어서,
    상기 복수의 상태들 중 상기 서비스 페이지의 노출이 필요한 상태에는 상기 고객의 단말 장치에 표시할 서비스 페이지를 해당 상태에 매칭시켜 저장하는 단계;를 더 포함하는 것을 특징으로 하는 유한 상태기계 생성 방법.
  4. 제1항에 있어서,
    상기 유한 상태기계를 생성하는 단계는,
    상태에 이전 상태에서 해당 상태로의 전이를 위한 이벤트 정보만이 할당된 경우, 해당 상태를 종료 상태로 자동으로 설정하는 단계; 및
    상태에 해당 상태로부터 이후 상태로의 전이를 위한 이벤트 정보만이 할당된 경우, 해당 상태를 시작 상태로 자동으로 설정하는 단계;를 더 포함하는 것을 특징으로 하는 유한 상태기계 생성 방법.
  5. 제2항에 있어서,
    상기 생성된 유한 상태기계를 검증하는 단계;를 더 포함하고,
    상기 검증하는 단계는,
    상태에 할당된 액션이 기 등록된 액션인지 여부, 상태에 할당된 액션을 실행하기 위한 API의 인자(ARGUMENT) 체크를 통과하였는지 여부, 상태에 할당된 액션의 실행 결과 발생한 이벤트를 이후 상태에 연결했는지 여부 및 상태에 지정된 필수 항목이 저장부에 정의되었는지 여부 중 적어도 하나를 검증하는 것을 특징으로 하는 유한 상태기계 생성 방법.
  6. 제5항에 있어서,
    상기 검증에 따라 에러로 판단된 상태 상태 블록은 에러가 없는 상태 블록과 구별되도록 상기 유한 상태기계 다이어그램에 표시하는 단계;를 더 포함하는 것을 특징으로 하는 유한 상태기계 생성 방법.
  7. 제1항에 있어서,
    상기 유한 상태기계를 생성하는 단계는,
    복수의 상태들 중 순서가 서로 영향을 주지 않는 액션들로 구성된 연속된 상태들을 검출하는 단계; 및
    상기 검출된 상태들의 각 액션이 발생시키는 이벤트를 가능한 모든 경우의 수를 조합하여 새로운 이벤트로 매핑시켜 액션을 합성하는 단계;를 더 포함하는 것을 특징으로 하는 유한 상태기계 생성 방법.
  8. 제2항에 있어서,
    상기 서비스 페이지에 접속한 복수의 고객들이 복수의 상태들 중 어느 상태에 해당하는지 상기 유한 상태기계 다이어그램에 표시하는 단계;를 더 포함하는 것을 특징으로 하는 유한 상태기계 생성 방법.
  9. 제2항에 있어서,
    상기 사용자 이벤트를 나타내는 연결선과 상기 기계 이벤트를 나타내는 연결선을 구별하여 상기 유한 상태기계 다이어그램에 표시하는 단계;를 더 포함하는 것을 특징으로 하는 유한 상태기계 생성 방법.
  10. 유한 상태기계 운영 서버에 있어서,
    유한 상태기계의 생성을 위한 인터페이스를 제공하는 관리자 인터페이스;
    상기 관리자 인터페이스를 통한 관리자 입력을 기초로 상기 유한 상태기계를 구성하는 복수의 상태 각각에 대하여 상태 정보, 해당 상태에서 실행되어야 할 액션 정보를 할당하고, 상기 복수의 상태 각각에 대하여 해당 상태에서 이후 상태로의 전이를 위한 이벤트 정보를 할당하며, 상기 할당된 상태 정보, 액션 정보 및 이벤트 정보를 이용하여 유한 상태기계를 생성하는 생성부;를 포함하고,
    상기 생성된 유한 상태기계는 서비스 페이지를 통한 고객의 입력에 대응되는 사용자 이벤트를 발생시키거나 상기 유한 상태기계 내부적으로 발생하는 기계 이벤트를 발생시키는 이벤트 로직을 포함하는 것을 특징으로 하는 유한 상태기계 운영 서버.
  11. 제10항에 있어서,
    상기 생성부는,
    상기 할당된 상태 정보 및 액션 정보를 이용하여 상기 복수의 상태 각각에 대응되는 상태 블록을 생성하고, 상기 할당된 이벤트 정보를 이용하여 상기 생성된 복수의 상태 블록 간의 연결 관계를 형성한 유한 상태기계 다이어그램을 생성하는 다이어그램 생성부;를 포함하고,
    상기 관리자 인터페이스는 상기 생성된 유한 상태기계 다이어그램을 포함하는 관리자 인터페이스를 관리자의 단말 장치에 제공하는 것을 특징으로 하는 유한 상태기계 운영 서버.
  12. 제10항에 있어서,
    상기 복수의 상태들 중 상기 서비스 페이지의 노출이 필요한 상태에는 상기 고객의 단말 장치에 표시할 서비스 페이지를 해당 상태에 매칭시켜 저장하는 저장부;를 더 포함하는 것을 특징으로 하는 유한 상태기계 운영 서버.
  13. 제10항에 있어서,
    상기 생성부는,
    상태에 이전 상태에서 해당 상태로의 전이를 위한 이벤트 정보만이 할당된 경우, 해당 상태를 종료 상태로 자동으로 설정하고, 상태에 해당 상태로부터 이후 상태로의 전이를 위한 이벤트 정보만이 할당된 경우, 해당 상태를 시작 상태로 자동으로 설정하는 것을 특징으로 하는 유한 상태기계 운영 서버.
  14. 제11항에 있어서,
    상기 생성된 유한 상태기계를 검증하는 검증부;를 더 포함하고,
    상기 검증부는,
    상태에 할당된 액션이 기 등록된 액션인지 여부, 상태에 할당된 액션을 실행하기 위한 API의 인자(ARGUMENT) 체크를 통과하였는지 여부, 상태에 할당된 액션의 실행 결과 발생한 이벤트를 이후 상태에 연결했는지 여부 및 상태에 지정된 필수 항목이 저장부에 정의되었는지 여부 중 적어도 하나를 검증하는 것을 특징으로 하는 유한 상태기계 운영 서버.
  15. 제14항에 있어서,
    상기 다이어그램 생성부는,
    상기 검증에 따라 에러로 판단된 상태 상태 블록은 에러가 없는 상태 블록과 구별되도록 상기 유한 상태기계 다이어그램에 표시하는 것을 특징으로 하는 유한 상태기계 운영 서버.
  16. 제10항에 있어서,
    상기 생성부는,
    복수의 상태들 중 순서가 서로 영향을 주지 않는 액션들로 구성된 연속된 상태들을 검출하고, 상기 검출된 상태들의 각 액션이 발생시키는 이벤트를 가능한 모든 경우의 수를 조합하여 새로운 이벤트로 매핑시켜 액션을 합성하는 합성부;를 더 포함하는 것을 특징으로 하는 유한 상태기계 운영 서버.
  17. 제11항에 있어서,
    상기 다이어그램 생성부는,
    상기 서비스 페이지에 접속한 복수의 고객들이 복수의 상태들 중 어느 상태에 해당하는지 상기 유한 상태기계 다이어그램에 표시하는 것을 특징으로 하는 유한 상태기계 운영 서버.
  18. 제11항에 있어서,
    상기 다이어그램 생성부는,
    상기 사용자 이벤트를 나타내는 연결선과 상기 기계 이벤트를 나타내는 연결선을 구별하여 상기 유한 상태기계 다이어그램에 표시하는 것을 특징으로 하는 유한 상태기계 운영 서버.
  19. 유한 상태기계 운영 서버에 의한 유한 상태기계 운영 방법에 있어서,
    고객 단말 장치로부터 요청 데이터를 수신하는 단계;
    상기 수신된 요청 데이터에 대응되는 사용자 이벤트를 발생시키고, 상기 유한 상태기계를 구성하는 복수의 상태들 중 고객의 현재 상태인 제1 상태에서 상기 발생된 사용자 이벤트에 일치하는 전이를 갖는 이후의 상태인 제2 상태로 고객의 상태를 전이시키는 단계;
    상기 제2 상태에 할당된 액션 정보를 검출하고, 검출된 액션 정보를 기초로 상기 제2 상태에 할당된 액션을 실행하는 단계; 및
    상기 실행된 액션에 연계된 기계 이벤트의 발생 여부를 판단하고, 상기 기계 이벤트의 발생 여부에 따라 상기 고객의 최종 상태를 결정하는 단계;를 포함하는 유한 상태기계 운영 방법.
  20. 제19항에 있어서,
    상기 실행된 액션에 연계되어 기계 이벤트가 발생하면, 상기 제2 상태에서 상기 발생된 기계 이벤트에 일치하는 전이를 갖는 이 후의 상태인 제3 상태로 상기 고객의 상태를 전이시키는 단계를 포함하는 유한 상태기계 운영 방법.
  21. 제20항에 있어서,
    상기 실행된 액션에 연계되어 기계 이벤트가 발생하지 않으면, 상기 고객의 최종 상태를 상기 제2 상태로 결정하는 단계;
    상기 제2 상태에 매칭되는 서비스 페이지를 검출하는 단계; 및
    상기 검출된 서비스 페이지를 상기 고객의 단말 장치에 전송하는 단계;를 포함하는 유한 상태기계 운영 방법.
  22. 제19항에 있어서,
    상기 유한 상태기계는 상기 서비스 페이지를 통한 고객 입력에 대응되는 사용자 이벤트를 발생시키는 사용자 발생 이벤트 API와 상기 유한 상태기계 내부적으로 발생하는 기계 이벤트를 발생시키는 기계 발생 이벤트 API를 포함하는 것을 특징으로 하는 유한 상태기계 운영 방법.
  23. 제19항에 있어서,
    상기 실행하는 단계는,
    상기 제2 상태에 할당된 액션을 실행하기 위한 API(Application Program Interface)의 인자(argument)를 검출하는 단계;
    상기 검출된 인자를 기초로 상기 제2 상태에 대응되는 API를 실행하는 단계; 및
    상기 제2 상태에 대응되는 API의 실행 후 인자들을 변경하는 단계;를 포함하는 유한 상태기계 운영 방법.
  24. 유한 상태기계 운영 서버에 있어서,
    고객 단말 장치로부터 요청 데이터를 수신하는 요청 수신부;
    상기 수신된 요청 데이터에 대응되는 사용자 이벤트를 발생시키고, 유한 상태기계를 구성하는 복수의 상태들 중 제1 상태에서 상기 발생된 사용자 이벤트에 일치하는 전이를 갖는 이 후의 상태인 제2 상태로 고객의 상태를 전이시키며, 상기 제2 상태에 할당된 액션 정보를 검출하고 검출된 액션 정보를 기초로 상기 제2 상태에 할당된 액션을 실행하는 실행부;를 포함하고,
    상기 실행부는 상기 실행된 액션에 연계된 기계 이벤트의 발생 여부를 판단하고, 상기 기계 이벤트의 발생 여부에 따라 상기 고객의 최종 상태를 결정하는 것을 특징으로 하는 유한 상태기계 운영 서버.
  25. 제24항에 있어서,
    상기 실행부는,
    상기 실행된 액션에 연계되어 기계 이벤트가 발생하면, 상기 제2 상태에서 상기 발생된 기계 이벤트에 일치하는 전이를 갖는 이 후의 상태인 제3 상태로 상기 고객의 상태를 전이시키는 것을 특징으로 하는 유한 상태기계 운영 서버.
  26. 제25항에 있어서,
    상기 실행부는,
    상기 실행된 액션에 연계되어 기계 이벤트가 발생하지 않으면, 상기 고객의 최종 상태를 상기 제2 상태로 결정하고, 상기 제2 상태에 매칭되는 서비스 페이지를 검출하며,
    상기 검출된 서비스 페이지를 상기 고객의 단말 장치에 전송하는 인터페이스 제공부;를 더 포함하는 것을 특징으로 하는 유한 상태기계 운영 서버.
  27. 제24항에 있어서,
    상기 유한 상태기계는 상기 서비스 페이지를 통한 고객 입력에 대응되는 사용자 이벤트를 발생시키는 사용자 발생 이벤트 API와 상기 유한 상태기계 내부적으로 발생하는 기계 이벤트를 발생시키는 기계 발생 이벤트 API를 포함하는 것을 특징으로 하는 유한 상태기계 운영 서버.
  28. 제24항에 있어서,
    상기 실행부는,
    상기 제2 상태에 할당된 액션을 실행하기 위한 API(Application Program Interface)의 인자(argument)를 검출하고, 상기 검출된 인자를 기초로 상기 제2 상태에 대응되는 API를 실행하며, 상기 제2 상태에 대응되는 API의 실행 후 인자들을 변경하는 유한 상태기계 운영 서버.
  29. 컴퓨터 판독 가능한 기록 매체에 저장되어 제1항 내지 제9항 중 어느 한 항에 기재된 유한 상태기계 생성 방법을 실행시키는 프로그램.
  30. 컴퓨터 판독 가능한 기록 매체에 저장되어 제19항 내지 제23항 중 어느 한 항에 기재된 유한 상태기계 운영 방법을 실행시키는 프로그램.
KR1020190148702A 2019-11-19 2019-11-19 유한 상태기계 생성 방법, 유한 상태기계 운영 방법, 이를 수행하는 서버 및 컴퓨터 프로그램 KR102276230B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020190148702A KR102276230B1 (ko) 2019-11-19 2019-11-19 유한 상태기계 생성 방법, 유한 상태기계 운영 방법, 이를 수행하는 서버 및 컴퓨터 프로그램

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190148702A KR102276230B1 (ko) 2019-11-19 2019-11-19 유한 상태기계 생성 방법, 유한 상태기계 운영 방법, 이를 수행하는 서버 및 컴퓨터 프로그램

Publications (2)

Publication Number Publication Date
KR20210060998A true KR20210060998A (ko) 2021-05-27
KR102276230B1 KR102276230B1 (ko) 2021-07-12

Family

ID=76135727

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190148702A KR102276230B1 (ko) 2019-11-19 2019-11-19 유한 상태기계 생성 방법, 유한 상태기계 운영 방법, 이를 수행하는 서버 및 컴퓨터 프로그램

Country Status (1)

Country Link
KR (1) KR102276230B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102518773B1 (ko) * 2021-12-30 2023-04-06 주식회사 닷밀 유한 상태 기계를 이용한 초실감 콘텐츠 전시 공간의 IoT 티켓 운용 장치

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20080048454A (ko) * 2005-07-12 2008-06-02 수오멘 3씨 오와이 유한 상태 기계 모델 구축
KR20110109146A (ko) * 2010-03-30 2011-10-06 한국전자통신연구원 행위 오류 분석 장치 및 그 방법
KR20180105678A (ko) * 2016-03-03 2018-09-28 텐센트 테크놀로지(센젠) 컴퍼니 리미티드 상태 제어 방법 및 장치

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20080048454A (ko) * 2005-07-12 2008-06-02 수오멘 3씨 오와이 유한 상태 기계 모델 구축
KR20110109146A (ko) * 2010-03-30 2011-10-06 한국전자통신연구원 행위 오류 분석 장치 및 그 방법
KR20180105678A (ko) * 2016-03-03 2018-09-28 텐센트 테크놀로지(센젠) 컴퍼니 리미티드 상태 제어 방법 및 장치

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102518773B1 (ko) * 2021-12-30 2023-04-06 주식회사 닷밀 유한 상태 기계를 이용한 초실감 콘텐츠 전시 공간의 IoT 티켓 운용 장치

Also Published As

Publication number Publication date
KR102276230B1 (ko) 2021-07-12

Similar Documents

Publication Publication Date Title
US10681212B2 (en) Virtual assistant aided communication with 3rd party service in a communication session
US20200104668A1 (en) Virtual assistant in a communication session
US10474974B2 (en) Reciprocal models for resource allocation
US20160063145A1 (en) Dynamic and collaborative workflow authoring with cloud-supported live feedback
CN108292383B (zh) 与通信相关联的任务的自动提取
CN107836007A (zh) 发现并发布api信息
JP2014527651A (ja) 対人的対話からのテキストコンテンツを用いて、対人関係影響情報を判定するためのシステム及び方法
US20200175403A1 (en) Systems and methods for expediting rule-based data processing
US11455337B2 (en) Preventing biased queries by using a dictionary of cause and effect terms
US8838799B2 (en) Command management in a networked computing environment
US20210158406A1 (en) Machine learning-based product and service design generator
CN104574044A (zh) 办公自动化中发起任务的方法与办公自动化系统
US10679003B2 (en) Assisting with written communication style based on recipient dress style
CN112102099B (zh) 保单数据处理方法、装置、电子设备及存储介质
KR102276230B1 (ko) 유한 상태기계 생성 방법, 유한 상태기계 운영 방법, 이를 수행하는 서버 및 컴퓨터 프로그램
US11609976B2 (en) Method and system for managing image based on interworking face image and messenger account
US11394668B1 (en) System and method for executing operations in a performance engineering environment
US11734586B2 (en) Detecting and improving content relevancy in large content management systems
US11295355B1 (en) User feedback visualization
CA3106998C (en) System and method for executing operations in a performance engineering environment
US20230418598A1 (en) Modernizing application components to reduce energy consumption
CN109584116A (zh) 开盘方案的生成方法、装置及计算机可读存储介质
US20170161692A1 (en) Providing reminders related to contextual data on lock screens
CN108369694A (zh) 提供面向任务的通信组织
ICCS et al. HORIZON2020 FRAMEWORK PROGRAMME TOPIC EUK-03-2016 “Federated Cloud resource brokerage for mobile cloud services”

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant