KR20230172244A - 로보틱 프로세스 자동화 시스템 - Google Patents

로보틱 프로세스 자동화 시스템 Download PDF

Info

Publication number
KR20230172244A
KR20230172244A KR1020220072864A KR20220072864A KR20230172244A KR 20230172244 A KR20230172244 A KR 20230172244A KR 1020220072864 A KR1020220072864 A KR 1020220072864A KR 20220072864 A KR20220072864 A KR 20220072864A KR 20230172244 A KR20230172244 A KR 20230172244A
Authority
KR
South Korea
Prior art keywords
rpa
bot
task
work items
main
Prior art date
Application number
KR1020220072864A
Other languages
English (en)
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 KR1020220072864A priority Critical patent/KR20230172244A/ko
Publication of KR20230172244A publication Critical patent/KR20230172244A/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/541Interprogram communication via adapters, e.g. between incompatible applications
    • 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
    • G06Q10/00Administration; Management
    • G06Q10/06Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
    • G06Q10/063Operations research, analysis or management
    • G06Q10/0633Workflow analysis

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Human Resources & Organizations (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Strategic Management (AREA)
  • Economics (AREA)
  • Educational Administration (AREA)
  • Game Theory and Decision Science (AREA)
  • Development Economics (AREA)
  • Marketing (AREA)
  • Operations Research (AREA)
  • Quality & Reliability (AREA)
  • Tourism & Hospitality (AREA)
  • General Business, Economics & Management (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

로보틱 프로세스 자동화(Robotic Process Automation, RPA) 워크플로우를 수행하는 RPA 시스템에 있어서, 프로세스를 구성하는 복수의 워크 아이템들을 저장하기 위한 제1 메모리 영역, 상기 워크 아이템들을 인큐잉 및 디큐잉하기 위한 큐 및 상기 워크 아이템들 각각에 대응하는 메타데이터 아이템을 저장하기 위한 제2 메모리 영역을 포함하는 RPA 워크로드 관리 데이터베이스; 소정의 RPA 언어 규칙에 따라 생성된 컴퓨터 프로그램 인스트럭션들인 마스터 태스크, 로드 밸런싱 태스크, 메인 태스크 및 서브 태스크를 배포 및 관리하기 위한 RPA 엔진; 상기 배포된 마스터 태스크에 의해 정의되는 RPA 마스터 봇; 상기 배포된 로드 밸런싱 태스크에 의해 정의되는 RPA 로드 밸런싱 봇; 상기 배포된 메인 태스크에 의해 정의되는 RPA 메인 봇; 및 상기 배포된 서브 태스크에 의해 정의되는 하나 또는 그 이상의 RPA 서브 봇들을 포함하는 RPA 시스템을 제공할 수 있다.

Description

로보틱 프로세스 자동화 시스템{ROBOTIC PROCESS AUTOMATION SYSTEM}
실시예는 정보 처리 분야에 관한 것으로, 더욱 상세하게는 로보틱 프로세스 오토메이션(Robotic Process Automation, RPA) 시스템에 관한 것이다.
RPA는 ‘봇(bot)’(이하, RPA 봇)의 개념에 기반을 두고 있는 비즈니스 프로세스 자동화 기술이다. RPA 시스템을 통해 사용자는 규칙 기반 비즈니스 프로세스를 학습, 모방 및 실행할 수 있는 RPA 봇을 생성한다. RPA 시스템을 통해, 사용자는 인간의 디지털 활동을 모방하는 RPA 봇을 생성할 수 있다. 간략하게 설명하면, RPA와 관련된 인간의 디지털 활동은 인간의 사고 활동이 개입되지 않으며 단순하고 반복적으로 수행되는 로보틱 프로세스(robotic process), 예를 들어 특정 애플리케이션에 데이터를 입력하는 행위, 특정 웹사이트에 게시된 데이터를 추출하는 행위, 원천 데이터를 특정 수식에 입력함으로써 가공 데이터를 생산하는 행위, 애플리케이션 레벨 또는 오퍼레이팅 시스템 레벨에서 데이터 또는 파일을 복사 및 붙여넣기 하는 행위, 이메일의 구문을 분석하는 행위, 특정 프로그램에 로그인하는 행위, 어플리케이션 프로그래밍 인터페이스(application programming interface, API)를 연결하는 행위, 비정형 데이터를 추출하는 행위 등으로 이해될 수 있다. 사용자는 특정 디지털 행위를 정의함으로써 당해 디지털 행위를 RPA 봇이 수행하도록 할 수 있다. 즉, RPA 봇은 사용자 레벨의 모든 인터페이스와 워크플로우에 적응할 수 있으며 따라서 자동화를 위해 비즈니스 시스템, 애플리케이션 또는 기존 프로세스를 변경할 필요가 없다.
RPA 시스템에서, 사용자는 애플리케이션 레벨 또는 오퍼레이팅 시스템 레벨에서의 그래픽 사용자 인터페이스(graphic user interface, GUI)를 통해 수행되는 작업의 동작들을 관찰함으로써 당해 동작들에 대한 목록을 만든 다음 GUI에 직접 해당 동작을 반복함으로써 RPA 봇을 생성할 수 있다.
RPA 시스템을 통해 사용자는 반복적으로 처리해야 하는 업무를 RPA 봇을 통해 자동화할 수 있기 때문에, 빈번하고 대량으로 실행되는 작업, 다수의 인력이 수행하는 작업, 휴먼 에러가 자주 발생하는 작업, 단순 규칙과 로직에 기반한 작업, 예외사항이 적은 작업, 다양한 시스템 액세스가 필요한 작업, 표준화/구조화된 데이터를 처리하는 작업, 특정 기간에 집중되는 작업 등에 적용이 가능하다.
RPA 봇은 설정, 사용 및 공유가 간편하다. RPA 봇의 생성과정은 녹화, 재생, 정지 버튼을 누르고 드래그 앤 드롭으로 파일을 옮기는 것처럼 직관적이다. RPA 봇은 조직 전체에 걸쳐 비즈니스 프로세스를 실행하기 위해 예약, 클로닝, 커스터마이징 및 공유될 수 있다.
실시예는 효율적인 RPA 시스템을 제공하는 데 있다.
실시예에 따르면, 로보틱 프로세스 자동화(Robotic Process Automation, RPA) 워크플로우를 수행하는 RPA 시스템에 있어서, 프로세스를 구성하는 복수의 워크 아이템들을 저장하기 위한 제1 메모리 영역, 상기 워크 아이템들을 인큐잉 및 디큐잉하기 위한 큐 및 상기 워크 아이템들 각각에 대응하는 메타데이터 아이템을 저장하기 위한 제2 메모리 영역을 포함하는 RPA 워크로드 관리 데이터베이스; 소정의 RPA 언어 규칙에 따라 생성된 컴퓨터 프로그램 인스트럭션들인 마스터 태스크, 로드 밸런싱 태스크, 메인 태스크 및 서브 태스크를 배포 및 관리하기 위한 RPA 엔진; 상기 배포된 마스터 태스크에 의해 정의되는 RPA 마스터 봇; 상기 배포된 로드 밸런싱 태스크에 의해 정의되는 RPA 로드 밸런싱 봇; 상기 배포된 메인 태스크에 의해 정의되는 RPA 메인 봇; 및 상기 배포된 서브 태스크에 의해 정의되는 하나 또는 그 이상의 RPA 서브 봇들을 포함하는 RPA 시스템을 제공할 수 있다.
상기 RPA 마스터 봇, RPA 로드 밸런싱 봇, RPA 메인 봇 및 RPA 서브 봇들 각각은 상기 배포된 마스터 태스크, 로드 밸런싱 태스크, 메인 태스크 및 서브 태스크 중에서 대응하는 태스크를 저장하기 위한 메모리; 및 상기 대응하는 태크스를 실행하기 위한 적어도 하나의 프로세서를 포함할 수 있다.
상기 RPA 마스터 봇은 상기 태스크들 전체 구성을 사전에 미리 설정하고, 상기 RPA 시스템이 사용자 또는 다른 시스템과 커뮤니케이션을 수행할 수 있는 수단을 설정하고, 폴더를 정의하고 가비지를 삭제하고, 상기 배포된 로드 밸런싱 태스크, 메인 태스크 및 서브 태스크를 상기 RPA 로드 밸런싱 봇, RPA 메인 봇 및 RPA 서브 봇들이 처리하는 과정에서 오류가 발생하는 경우에 당해 태스크에 대해 예외 처리를 수행하고 상기 오류와 관련된 스크린 샷을 캡쳐하여 RPA 엔진으로 전송하고, 상기 워크 아이템들을 처리하기 위하여 상기 RPA 로드 밸런싱 봇을 호출하며, 상기 프로세스가 정상적으로 완료된 경우에 정상 종료에 필요한 작업을 수행할 수 있다.
상기 RPA 로드 밸런싱 봇은 상기 RPA 마스터 봇의 호출에 의해 동작하고, 상기 프로세스를 상기 복수의 워크 아이템들로 생성하여 상기 큐에 인큐잉함으로써 상기 RPA 워크로드 관리 데이터베이스에 등록하고, 상기 등록된 워크 아이템들 각각에 대응하는 상기 메타데이터 아이템들을 생성하여 상기 제2 메모리 영역에 저장하고, 상기 RPA 엔진으로부터 상기 메인 태스크 및 서브 태스크를 상기 RPA 메인 봇 및 RPA 서브 봇들에게 배포하며, 상기 인큐잉된 워크 아이템을 디큐잉하고 상기 디큐잉된 워크 아이템을 처리하도록 상기 RPA 메인 봇을 호출할 수 있다.
상기 메타 데이터 아이템들은 상기 등록된 워크 아이템들에 대응하는 수행 식별자 필드들을 각각 포함할 수 있다.
상기 RPA 메인 봇은 상기 RPA 로드 밸런싱 봇의 호출에 의해 동작하고, 상기 등록 워크 아이템들 각각에 대응하는 상기 수행 식별자 필드의 값들에 따라 상기 디큐잉된 워크 아이템을 스스로 처리하거나 상기 RPA 서브 봇들이 처리하도록 서브 태스크를 호출할 수 있다.
상기 RPA 서브 봇들 각각은 상기 RPA 메인 봇의 호출에 의해 동작하고, 상기 등록 워크 아이템들 각각에 대응하는 상기 수행 식별자 필드의 값들에 따라 상기 디큐잉된 워크 아이템을 처리할 수 있다.
상기 RPA 서브 봇들은 상기 등록 워크 아이템들 각각에 대응하는 상기 수행 식별자 필드의 값들에 따라 상기 디큐잉된 워크 아이템들을 순차적으로 병렬 처리할 수 있다.
상기 RPA 메인 봇은 상기 디큐잉된 워크 아이템들을 상기 RPA 서브 봇들에게 라운드 로빈 방식으로 할당하고, 상기 RPA 서브 봇들은 상기 라운드 로빈 방식으로 할당된 워크 아이템들을 순차적으로 병렬 처리할 수 있다.
상기 메타 데이터 아이템들은 상기 등록된 워크 아이템들에 대응하는 재처리 식별자 필드들을 각각 더 포함할 수 있다.
상기 재처리 식별자 필드는 소정의 초기값을 가질 수 있다.
상기 RPA 로드 밸런싱 봇은 상기 RPA 메인 봇 및 RPA 서브 봇들이 상기 디큐잉된 워크 아이템들을 처리하는 과정에서 어느 하나의 워크 아이템에 대하여 오류가 발생한 경우에, 상기 오류가 발생한 워크 아이템에 대응하는 상기 재처리 식별자 필드의 값을 1만큼 감소시키는 업데이트를 수행하고, 상기 오류가 발생한 워크 아이템을 상기 큐에 다시금 인큐잉함으로써 재등록하며, 상기 큐에 재등록된 워크 아이템을 다시금 디큐잉하고 상기 다시금 디큐잉된 워크 아이템을 처리하도록 상기 RPA 메인 봇을 호출할 수 있다.
상기 RPA 로드 밸런싱 봇은 상기 재등록된 워크 아이템의 처리가 성공하거나 상기 재처리 식별자 필드의 값이 0이 될 때까지 상기 재등록된 워크 아이템에 대하여 상기 업데이트, 재등록 및 상기 RPA 메인 봇의 호출을 반복할 수 있다.
상기 메타 데이터 아이템들은 상기 등록된 워크 아이템들에 대응하는 레코드 필드들을 각각 더 포함할 수 있다.
상기 RPA 워크로드 관리 데이터베이스는 0의 값을 가지는 상기 재처리 식별자 필드에 대응하는 적어도 하나의 워크 아이템만이 상기 큐에 인큐잉되어 있는 경우에 상기 인큐잉되어 있는 워크 아이템에 대응하는 레코드 필드에 포함된 값의 수정을 허용할 수 있다.
상기 RPA 로드 밸런싱 봇은 상기 수정 이후에 상기 큐에 인큐잉되어 있는 워크 아이템을 디큐잉하고 상기 디큐잉된 워크 아이템을 처리하도록 상기 RPA 메인 봇을 호출할 수 있다.
실시예에 따르면, RPA 시스템이 효율적으로 운영될 수 있다.
도1은 예시적인 RPA 시스템의 구성도이다.
도2는 예시적인 프로세스 설정 방식을 나타낸다.
도3은 예시적인 태스크 설정 방식을 나타낸다.
도4는 예시적인 태스크 설정 방식을 나타낸다.
도5는 스크립트 실행부의 태스크 실행을 예시한다.
도6은 이벤트 실행부의 구성을 예시한다.
도7은 실시예에 따른 RPA 시스템의 개략 구조를 나타내는 개념도이다.
도8은 실시예에 따른 RPA 시스템의 전체 구조를 나타내는 개념도이다.
도9는 실시예에 따른 RPA 봇을 나타내는 개념도이다.
도10은 RPA 마스터 봇, RPA 로드 밸런싱 봇, RPA 메인 봇 및 RPA 서브 봇 간의 태스크 수행 관계를 예시하는 도면이다.
도11은 수행 식별자의 값에 따라 RPA 메인 봇 및 RPA 서브 봇이 병렬 처리하도록 할당되는 워크 아이템의 관계를 나타내는 도면이다.
도12는 복수의 워크 아이템들이 라운드 로빈 방식으로 복수의 RPA 서브 봇들에게 할당되는 과정을 나타내는 개념도이다.
도13은 종래기술에 따른 워크 아이템 처리 스킴을 나타내는 개념도이다.
도14는 실시예에 따른 워크 아이템 처리 스킴을 나타내는 개념도이다.
도15 내지 도17은 종래기술과 실시예에 따른 RPA 워크로드 관리 데이터베이스의 차이점을 나타내는 표들이다.
도18은 컴퓨팅 디바이스를 나타내는 블록도이다.
실시예의 이점 및 특징, 그리고 그것을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예를 통해 설명될 것이다. 그러나 실시예는 여기에서 설명되는 것에 한정되지 않고 다른 형태로 구체화될 수도 있다. 단지, 본 실시예는 당해 기술분야에서 통상의 지식을 가진 자에게 실시예의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여 제공되는 것이다.
도면들에 있어서, 실시예는 도시된 특정 형태로 제한되는 것이 아니며 명확성을 기하기 위하여 과장된 것이다. 본 명세서에서 특정한 용어들이 사용되었으나. 이는 실시예를 설명하기 위한 목적에서 사용된 것이며, 의미 한정이나 특허 청구 범위에 기재된 실시예의 권리 범위를 제한하기 위하여 사용된 것은 아니다.
본 명세서에서 ‘및/또는’이란 표현은 전후에 나열된 구성요소들 중 적어도 하나를 포함하는 의미로 사용된다. 또한, ‘연결되는/결합되는’이란 표현은 다른 구성 요소와 직접적으로 연결되거나 다른 구성 요소를 통해서 간접적으로 연결되는 것을 포함하는 의미로 사용된다. 본 명세서에서 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 또한, 명세서에서 사용되는 ‘포함한다’ 또는 ‘포함하는’으로 언급된 구성 요소, 단계, 동작 및 소자는 하나 이상의 다른 구성 요소, 단계, 동작 및 소자의 존재 또는 추가를 의미한다.
이하에서 개시되는 실시예는 하드웨어 및 소프트웨어의 조합으로 구현될 수 있다. 예를 들어, 실시예는 프로세서, 컨트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서, 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 인스트럭션을 실행하고 응답할 수 있는 요소를 포함하는 하나 이상의 컴퓨팅 디바이스들을 통해 구현될 수 있다. 컴퓨팅 디바이스는 오퍼레이팅 시스템 및 상기 오퍼레이팅 시스템상에서 실행되는 하나 이상의 애플리케이션에 의해 데이터 접근, 저장, 조작, 처리 및 생성이 가능하다. 이해의 편의를 위하여, 컴퓨팅 디바이스는 하나가 사용되는 것으로 설명된 경우도 있지만, 컴퓨팅 디바이스가 복수 개의 프로세싱 엘리먼트들 및/또는 복수 유형의 프로세싱 엘리먼트들을 포함할 수 있음은 자명하다. 예를 들어, 컴퓨팅 디바이스는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 컨트롤러를 포함할 수 있다. 또한, 병렬 프로세서와 같은 구성도 가능하다.
소프트웨어는 프로그램, 코드, 인스트럭션, 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 동작을 수행하기 위해 컴퓨팅 디바이스를 구성하거나 독립적으로 또는 조합에 의해 컴퓨팅 디바이스를 제어할 수 있다. 소프트웨어 및/또는 데이터는, 컴퓨팅 디바이스에 의하여 해석되거나 컴퓨팅 디바이스에게 명령 또는 데이터를 제공하기 위하여, 임의 유형의 기계, 엘리먼트, 물리적 디바이스, 가상 디바이스, 컴퓨팅 디바이스 저장 매체 또는 장치, 또는 전송되는 시그널 웨이브에 영구적 또는 일시적으로 구현될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨팅 시스템 상에 분산되어, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨팅 디바이스 판독 가능 기록 매체에 저장될 수 있다.
실시예는 다양한 컴퓨팅 디바이스를 통해 실행될 수 있는 코드 형태의 명령 또는 인스트럭션으로 구현되어 컴퓨팅 디바이스 판독 가능 매체에 기록될 수 있다. 상기 컴퓨팅 디바이스 판독 가능 매체는 코드, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 코드는 실시예를 위하여 특별히 설계되고 구성된 것들이거나 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨팅 디바이스 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 마그네틱 미디어, CD-ROM, DVD와 같은 옵티컬 미디어, 플롭티컬 디스크(floptical disk)와 같은 마그네토-옵티컬 미디어, 및 롬, 램, 플래시 메모리 등과 같이, 데이터를 저장하고 독출하도록 특별히 구성된 하드웨어 장치가 포함된다. 코드는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드 뿐만 아니라 인터프리터 등을 사용해서 컴퓨팅 디바이스에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
즉, RPA 시스템은 이를 구현하기 위한 하드웨어 및 소프트웨어의 조합이 유형적으로 구현됨으로써, 컴퓨팅 디바이스를 통해 판독될 수 있는 기록매체에 포함되어 제공될 수도 있음을 당업자들이 쉽게 이해할 수 있을 것이다. 다시 말해, 다양한 컴퓨팅 디바이스를 통하여 수행될 수 있는 코드 형태로 구현되어, 컴퓨팅 디바이스 판독 가능한 기록매체에 기록될 수 있다. 상기 컴퓨팅 디바이스 판독 가능한 기록매체는 코드, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 컴퓨팅 디바이스 판독 가능한 기록매체에 기록되는 코드는 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨팅 디바이스 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다.
이하, 도면들을 참조하여 실시예에 대해 상세히 설명하기로 한다.
우선, 예시적인 RPA 시스템에 대해 설명한다. 도1 내지 도7에 개시된 예시적인 RPA 시스템은 RPA 개념의 이해를 돕기 위해 예시된 것으로서, 실시예의 특징을 구성하지 아니한다. 다만, 도1 내지 도7에 대한 이하의 설명에서 기본적인 RPA 개념과 시스템 요소들은 실시예와 관련될 수 있다.
도1은 예시적인 RPA 시스템의 구성도이다.
도1을 참조하면, 예시적인 RPA 시스템은 적어도 하나의 프로세스 설정 장치(100-1 내지 100-m), 적어도 하나의 프로세스 실행 장치(200-1 내지 200-n), 프로세스 관리 장치(300), 적어도 하나의 프로세스 제어 장치(400-1 내지 400-n) 등을 포함한다.
참고로, 예시적인 RPA 시스템의 경우, 프로세스 관리 장치(300)가 적어도 하나의 프로세스 설정 장치(100-1 내지 100-m)(이하에서는 도면부호 100으로 통칭함) 및 적어도 하나의 프로세스 실행 장치(200-1 내지 200-n)를 관리하며, 적어도 하나의 프로세스 실행 장치(200-1 내지 200-n)(이하에서는 도면부호 200으로 통칭함)와 적어도 하나의 프로세스 제어 장치(400-1 내지 400-n)(이하에서는 도면부호 400으로 통칭함)는 각각 1 대 1로 연동되어 하나의 프로세스 제어 장치(400)가 하나의 프로세스 실행 장치(200)를 제어하는 구조이다.
프로세스 설정 장치(100)는 사용자가 반복적이거나 정형화된 컴퓨팅 업무에 대해 자동화 스크립트를 제작할 수 있는 요소이다. 프로세스 설정 장치(100)는 사용자에게 프로세스를 실행하는 자동화 스크립트를 제작할 수 있는 에디터를 제공하고, 사용자가 에디터를 통해 프로세스, 태스크, 이벤트 등을 구체적으로 설정하면 이에 대해 디버깅하여 자동화 스크립트를 생성하고, 이를 프로세스 실행 장치(200) 및/또는 프로세스 관리 장치(300)로 전송하여 자동화 스크립트가 실행될 수 있도록 한다.
본 예시에서 이벤트는 디지털 객체에 대한 사용자의 임의 동작 또는 시스템, 예를 들어 오퍼레이팅 시스템 또는 어플리케이션의 독립 동작을 의미하는 것으로, 윈도우 오브젝트 검출, 웹 오브젝트 검출, 유저 인터페이스 개체 검출, 이미지 검출, OCR(Optical Character Reader) 검출, 키 입력, 마우스 입력 등이 이벤트의 예이다. 태스크는 하나 이상의 이벤트들로 구성된 단위 실행 동작을 의미한다. 프로세스는 하나 이상의 태스크들로 구성된 단위 컴퓨팅 업무를 의미한다.
본 예시에 따르면, 프로세스 설정 장치(100)는 프로세스 설정부(110), 태스크 설정부(120), 스크립트 생성부(130) 등을 포함한다.
프로세스 설정부(110)는 사용자에게 프로세스를 설정하고 편집할 수 있는 기능을 제공한다. 예컨대, 프로세스 설정부(110)는 사용자에게 프로세스를 설정하고 편집할 수 있는 프로세스 에디터를 제공하고, 사용자는 프로세스 에디터를 통해 하나 이상의 태스크를 생성하거나 선택하고 이에 대한 속성, 실행조건, 실행순서 등을 결정하여 프로세스를 설정한다. 이를 위해, 프로세스 에디터는 하나 이상의 태스크의 생성을 관리하는 태스크 생성 관리자, 하나 이상의 태스크의 속성을 관리하는 태스크 속성 관리자, 하나 이상의 태스크의 상호 연결을 관리하는 태스크 연결 관리자 등을 포함할 수 있다.
도2는 예시적인 프로세스 설정 방식을 나타낸다.
도2를 참조하면, 사용자는 프로세스 설정부(110)가 제공하는 프로세스 에디터를 통해 하나 이상의 태스크를 생성하고 이들의 속성, 실행조건, 실행순서 등을 설정한다. 태스크의 속성은 태스크의 명칭, 입력자료, 입력방법, 출력자료, 출력방법, 처리시간, 및 지연시간 중 적어도 하나가 될 수 있으며, 실행조건은 기 설정된 선행 태스크가 종료되면 실행, 기 설정된 입력자료가 수신되면 실행, 및 기 설정된 실행시각에 실행 중 적어도 하나가 될 수 있다. 그리고, 실행순서는 각각의 태스크가 연속적으로 입력 및 출력 관계가 되어 복수개의 태스크가 상호 연결됨으로써 하나의 프로세스를 생성할 수 있다.
보험회사에서 보험 가입한 고객목록을 작성하는 프로세스를 예로 들면, 사용자는 신청자를 확인하는 제1 태스크, 고객정보를 추출하는 제2 태스크, 고객목록을 작성하는 제3 태스크를 생성하여 속성, 실행조건 등을 각각 설정하고, 이들 태스크를 화살표로 연결하여 실행순서를 결정한다. 참고로, 도2에서는 태스크들이 일방향으로 순차 진행되는 경우를 예시하였지만, 조건에 따른 분기, 반복 실행, 에러 처리 등이 포함된 형태로 구현하는 것도 가능하다.
태스크 설정부(120)는 사용자에게 태스크를 설정하고 편집할 수 있는 기능을 제공한다. 예컨대, 태스크 설정부(120)는 사용자에게 태스크를 설정하고 편집할 수 있는 태스크 에디터를 제공하고, 사용자는 태스크 에디터를 통해 하나 이상의 이벤트를 생성하거나 선택하고 이에 대한 속성, 실행조건, 실행순서 등을 결정하여 태스크를 설정한다. 이를 위해, 태스크 에디터는 하나 이상의 이벤트의 생성을 관리하는 이벤트 생성 관리자, 하나 이상의 이벤트의 속성을 관리하는 이벤트 속성 관리자, 하나 이상의 이벤트의 상호 연결을 관리하는 이벤트 연결 관리자 등을 포함할 수 있다.
도3은 예시적인 태스크 설정 방식을 나타낸다.
도3을 참조하면, 사용자는 태스크 설정부(120)가 제공하는 태스크 에디터를 통해 하나 이상의 이벤트를 생성하고 이들의 속성, 실행조건, 실행순서 등을 설정한다. 이벤트의 속성은 이벤트의 명칭, 대상(예; 텍스트, 이미지, 오브젝트, 파일), 실행방법(예; 오브젝트 검출, 키 입력, 마우스 입력), 실행결과(예; 단순 실행, 텍스트 저장, 이미지 저장, 파일 생성), 및 실행시간 중 적어도 하나가 될 수 있으며, 실행조건은 기 설정된 선행 이벤트가 종료되면 실행, 기 설정된 선행 이벤트가 종료되면 일정 시간 경과 후 실행, 및 기 설정된 실행시각에 실행 중 적어도 하나가 될 수 있다. 그리고, 실행순서는 각각의 이벤트가 연속적으로 입력 및 출력 관계가 되어 복수개의 이벤트가 상호 연결됨으로써 하나의 태스크를 생성할 수 있다.
전술한 보험회사에서 보험 가입한 고객 목록을 작성하는 프로세스 중 고객정보를 추출하는 제2 태스크를 예로 들면, 사용자는 바탕화면에서 고객폴더 이미지를 검출하는 제1 이벤트, 검출된 고객폴더에 대해 마우스를 클릭하는 제2 이벤트, 고객폴더에 저장되어 있는 고객파일에 대해 마우스를 클릭하는 제3 이벤트, 만약 고객파일이 텍스트 파일인 경우 텍스트를 복사하는 제4 이벤트, 만약 고객파일이 이미지 파일인 경우 이미지를 OCR 검출하는 제5 이벤트 및 OCR 검출된 결과에서 텍스트를 추출하는 제6 이벤트, 제4 또는 제6 이벤트의 결과인 텍스트에 대해 고객정보를 추출하는 제7 이벤트를 생성하여 속성, 실행조건 등을 각각 설정하고, 이들 이벤트를 화살표로 연결하여 실행순서를 결정한다. 참고로, 도3에서는 설명을 용이하게 하기 위해 핵심적인 이벤트 위주로 나열하였지만, 실제 구현에 있어서는 보다 세분화된 이벤트들이 더 포함될 수 있다.
도4는 예시적인 태스크 설정 방식을 나타낸다.
도3과 비교하여 도4를 참조하면, 도4에서는 도3의 제1 이벤트(바탕화면에서 고객폴더 이미지를 검출하는 이벤트), 제2 이벤트(검출된 고객폴더에 대해 마우스를 클릭하는 이벤트), 및 제3 이벤트(고객폴더에 저장되어 있는 고객파일에 대해 마우스를 클릭하는 이벤트)를 하나로 통합하여 하나의 이벤트로 구현하였으며, 나머지 제4 내지 제7 이벤트는 동일하다. 즉, 본 예시에서는 태스크를 구성하는 이벤트들 중 순차적으로 실행되는 복수개의 이벤트를 하나의 통합 이벤트로 설정할 수 있으며, 프로세스를 구성하는 태스크들 중 순차적으로 실행되는 복수개의 태스크를 하나의 통합 태스크로 설정할 수 있다. 그리고, 이는 프로세스까지 확대 적용되어, 순차적으로 실행되는 복수개의 프로세스를 하나의 통합 프로세스로 설정할 수 있다.
한편, 본 예시에 따르면, 프로세스 설정부(110)와 태스크 설정부(120)는 사용자가 프로세스와 태스크를 실행하는 행동 패턴을 레코딩하여 프로세스 레코딩 자료와 태스크 레코딩 자료(참고로, 컴퓨팅 환경 정보가 반영됨)를 생성하고, 프로세스/태스크 레코딩 자료에 기초하여 프로세스와 태스크의 속성, 실행조건, 실행순서 등을 추출할 수 있다.
전술한 보험회사에서 보험 가입한 고객 목록을 작성하는 프로세스 중 고객정보를 추출하는 제2 태스크를 예로 들면, 사용자는 태스크 설정부(120)에서 제2 태스크에 대해 레코딩을 선택하고 실제로 제2 태스크를 수행한다. 즉, 사용자는 현재의 컴퓨팅 환경 하에서 실제로 바탕화면에서 고객폴더 이미지를 검출하고(제1 이벤트), 검출된 고객폴더에 대해 마우스를 클릭한 후(제2 이벤트), 고객폴더에 저장되어 있는 고객파일에 대해 마우스를 클릭하여(제3 이벤트) 고객파일을 열면, 태스크 설정부(120)는 이러한 과정을 레코딩한다. 그리고, 만약 고객파일이 텍스트 파일이어서 사용자가 텍스트를 복사하고(제4 이벤트), 해당 텍스트에 대해 고객정보를 추출하면(제7 이벤트), 태스크 설정부(120)는 마찬가지로 이러한 과정을 레코딩한다. 한편, 만약 고객파일이 이미지 파일이어서 사용자가 이미지에 대해 OCR 검출을 수행하고(제5 이벤트), OCR 검출된 결과에서 텍스트를 추출한 후(제6 이벤트), 추출된 텍스트에 대해 고객정보를 추출하면(제7 이벤트), 태스크 설정부(120)는 마찬가지로 이러한 과정을 레코딩한다. 그리고, 레코딩이 완료되면, 태스크 설정부(120)는 레코딩된 자료에 기초하여 제2 태스크를 구성하는 이벤트들의 속성, 실행조건, 실행순서 등을 추출하고, 이와 함께 제2 태스크를 실행할 때의 컴퓨팅 환경 정보(화면 해상도, 화면 배치, 화면 크기 등)를 추출한다. 참고로, 프로세스/태스크를 실행하는 사용자의 행동 패턴 및 이에 대한 레코딩은 특별한 조건이나 분기 등이 없는 경우(도2 참조)에는 한번의 실행으로 완료될 수 있으며, 조건이나 분기 등이 있는 경우(도3 참조)에는 각 경우의 수에 해당하는 횟수만큼 실행하여 완료될 수 있다.
다시 도1을 참조하면, 스크립트 생성부(130)는 사용자가 프로세스 설정부(110) 및 태스크 설정부(120)를 통해 설정한 프로세스와 태스크가 실제 자동으로 실행될 수 있도록 자동화 스크립트를 생성한다. 예컨대, 스크립트 생성부(130)는 프로세스 설정부(110)에서 설정된 프로세스를 수행하는 프로세스 자동화 스크립트를 생성하고, 마찬가지로 태스크 설정부(120)에서 설정된 태스크를 수행하는 태스크 자동화 스크립트를 생성한다. 그리고, 스크립트 생성부(130)는 이벤트 실행부(220)와 연동하여 태스크를 구성하는 하나 이상의 이벤트가 실제 실행순서대로 정상적으로 동작할 수 있는지 검증하여 디버깅하고, 마찬가지로 프로세스를 구성하는 하나 이상의 태스크가 실제 실행순서대로 정상적으로 동작할 수 있는지 검증하여 디버깅한다.
또한, 스크립트 생성부(130)는 이와 같이 생성된 프로세스 자동화 스크립트와 태스크 자동화 스크립트를 실제 실행을 위해 스크립트 실행부(210)로 전송하고, 또한 추후 재사용 및 관리를 위해 제1 스크립트 관리부(320)로 전송한다.
프로세스 실행 장치(200)는 프로세스 설정 장치(100)에서 생성된 자동화 스크립트를 실제로 실행하여 사용자의 컴퓨팅 업무를 자동으로 처리하는 요소이다. 프로세스 실행 장치(200)는 적어도 하나의 프로세스 설정 장치(100) 및/또는 프로세스 관리 장치(300)로부터 프로세스 자동화 스크립트와 태스크 자동화 스크립트를 수신하고, 프로세스 관리 장치(300) 및/또는 프로세스 제어 장치(400)로부터 실행 명령을 수신하면 프로세스/태스크 자동화 스크립트를 실행하여 프로세스를 처리한다. 또한, 프로세스 실행 장치(200)는 프로세스 관리 장치(300)와 프로세스 제어 장치(400) 사이에서 이들을 상호 연동시켜 프로세스 제어 장치(400)가 프로세스 관리 장치(300)를 통해 원격의 프로세스 실행 장치를 제어할 수 있도록 해준다.
이를 위해, 예시적인 프로세스 실행 장치(200)는 스크립트 실행부(210), 이벤트 실행부(220), 제1 커멘드 처리부(230), 보안 관리부(240), 로그 관리부(250) 등을 포함한다.
스크립트 실행부(210)는 프로세스 설정 장치(100) 및/또는 프로세스 관리 장치(300)로부터 전송된 프로세스/태스크 자동화 스크립트를 실행한다. 예컨대, 스크립트 실행부(210)는 프로세스/태스크 자동화 스크립트를 해석하여 각각의 이벤트, 태스크, 프로세스에 대해 속성, 실행조건, 우선순위 등을 판단하고 실행순서를 스케줄링한다. 그리고, 스크립트 실행부(210)는 이벤트 실행부(220)와 연동하여 각각의 이벤트들을 실행순서에 따라 순차적으로 실행하여 태스크를 실행하고 또한 각각의 태스크들을 실행순서에 따라 순차적으로 실행하여 프로세스를 실행한다.
도5는 스크립트 실행부(210)의 태스크 실행을 예시한다.
참고로, 도5는 전술한 보험회사에서 보험 가입한 고객 목록을 작성하는 프로세스 중 사용자가 고객정보를 추출하는 제2 태스크를 레코딩하여 생성된 태스크 자동화 스크립트를 스크립트 실행부(210)가 이벤트 실행부(220)와 연동하여 자동 실행하는 경우를 예시한 것이다.
도5를 참조하면, 먼저 스크립트 실행부(210)는 레코딩 시의 컴퓨팅 환경 정보를 참조하여 현재의 컴퓨팅 환경(화면 해상도, 화면 배치, 화면 크기 등)을 조정하는 시스템 설정 이벤트를 실행한다. 참고로, 현재의 컴퓨팅 환경이 레코딩 시의 컴퓨팅 환경과 동일한 경우에는 시스템 설정 이벤트는 생략된다.
그리고, 스크립트 실행부(210)는 바탕화면에서 고객폴더 이미지를 검출하는 제1 이벤트를 실행하고, 검출된 고객폴더에 대해 마우스를 클릭하는 제2 이벤트를 실행한 후, 고객폴더에 저장되어 있는 고객파일에 대해 마우스를 클릭하는 제3 이벤트를 실행한다. 그리고, 만약 고객파일이 텍스트 파일이면, 스크립트 실행부(210)는 고객파일에 있는 텍스트를 복사하는 제4 이벤트를 실행하고, 해당 텍스트에 대해 고객정보를 추출하는 제7 이벤트를 실행한다. 한편, 만약 고객 파일이 이미지 파일이면, 스크립트 실행부(210)는 해당 이미지에 대해 OCR 검출을 수행하는 제5 이벤트를 실행하고, OCR 검출된 결과에서 텍스트를 추출하는 제6 이벤트를 실행한 후, 추출된 텍스트에 대해 고객정보를 추출하는 제7 이벤트를 실행한다.
다시 도1을 참조하면, 이벤트 실행부(220)는 이벤트 특성별(종류별)로 이를 관리하고 실행하는 하나 이상의 관리자를 구비하며, 스크립트 실행부(210)와 연동하여 프로세스와 태스크를 구성하는 모든 이벤트를 컴퓨팅 환경에 맞추어 순차적으로 실행한다.
도6은 이벤트 실행부(220)의 구성을 예시한다.
도6을 참조하면, 예시적인 이벤트 실행부(220)는 이미지 오브젝트 관리자(221), 웹 오브젝트 관리자(222), UI 개체 관리자(223), OCR 관리자(224), 시스템 이벤트 관리자(225), 사용자 이벤트 관리자(226), 기타 이벤트 관리자(227) 등을 포함한다.
이미지 오브젝트 관리자(221)는 바탕화면이나 실행화면 상에 있는 이미지를 객체(오브젝트)로 인식하여 검출하는 이미지 오브젝트 검출 이벤트를 수행하고, 웹 오브젝트 관리자(222)는 웹 상에서 웹 오브젝트를 검출하는 웹 오브젝트 검출 이벤트를 수행한다. 그리고, UI 개체 관리자(223)는 오퍼레이팅 시스템 상의 애플리케이션들의 요소들을 개체로 인식하는 UI 개체 검출 이벤트를 수행하며, OCR 관리자(224)는 OCR을 사용하여 텍스트를 인식하는 OCR 검출 이벤트를 수행하고, 시스템 이벤트 관리자(225)는 오퍼레이팅 시스템이 발생시키거나 수행하는 시스템 이벤트를 처리하는 기능을 수행한다. 그리고, 사용자 이벤트 관리자(226)는 키 입력, 마우스 입력 등과 같은 사용자 이벤트를 처리하는 기능을 수행하고, 기타 이벤트 관리자(227)는 시스템 이벤트와 사용자 이벤트를 제외한 기타 이벤트를 처리하는 기능을 수행한다.
다시 도1을 참조하면, 제1 커멘드 처리부(230)는 프로세스 관리 장치(300)의 제2 커멘드 처리부(340) 및/또는 프로세스 제어 장치(400)의 제3 커멘드 처리부(430)와 연동하여 프로세스/태스크 실행 명령, 실행결과 보고, 스크립트 요청, 보안정보 요청, 로그정보 요청, 과금정보 요청 등의 커멘드를 송수신하고 처리하는 기능을 수행한다.
보안 관리부(240)는 프로세스 실행 장치(200)에 대하여 사용자 계정을 확인하여 사용자의 권한을 검증하고, 검증된 사용자 권한에 따라 프로세스/태스크 자동화 스크립트에 대한 실행 여부를 결정한다.
로그 관리부(250)는 프로세스 실행 장치(200)에 대해 사용자의 로그인 시각, 로그아웃 시각, 실행 시작 시각, 실행 종료 시각, 실제 실행 시간, 실행한 자동화 스크립트, 실행 횟수 등을 관리한다.
실시예에 따르면, RPA 봇은 RPA 엔진이 제공하는 RPA 인스트럭션 세트로 구성된다. RPA 봇은 하나 또는 그 이상의 파일들로 구성될 수 있다. 앞서 설명된 바와 같이, 이벤트는 디지털 객체에 대한 오퍼레이팅 시스템 또는 어플리케이션의 독립 동작을 의미하는 것으로, 오퍼레이팅 시스템(예를 들어 “윈도우”) 오브젝트 검출, 웹 오브젝트 검출, 유저 인터페이스 개체 검출, 이미지 검출, 키 입력, 마우스 입력 등이 이벤트의 예이다. 태스크는 하나 이상의 이벤트들로 구성된 단위 실행 동작을 의미한다. 프로세스는 하나 이상의 태스크들로 구성된 단위 컴퓨팅 업무를 의미한다. 1개 태스크는 1개 실행 동작을 정의하는 단위로서 1개 파일로 구성될 수 있다. 따라서, 1개의 파일이 1개 태스크로 간주될 수 있다. RPA 봇 프레임워크는 추후 설명될 RPA 워크로드 관리 데이터베이스와 RPA 봇으로 구성될 수 있다. RPA 봇 프레임워크는 단위 RPA 봇을 구성하는 태스크의 구조와 역할을 정의할 수 있도록 사전 정의된 하나 또는 그 이상의 RPA 인스트럭션 세트들을 제공할 수 있다. 사용자는 상기 RPA 인스트럭션 세트들을 이용하여 RPA 봇을 정의할 수 있다.
도7은 실시예에 따른 RPA 시스템의 개략 구조를 나타내는 개념도이며 도8은 실시예에 따른 RPA 시스템의 전체 구조를 나타내는 개념도이다.
도7 및 도8에 도시된 바와 같이, 실시예에 따른 RPA 시스템은 기본적으로 클라이언트-서버 구조의 시스템이다.
도면에서 컨트롤 룸으로 표현되는 서버, 즉 RPA 엔진은 클라이언트, 즉 RPA 봇 크리에이터 또는 RPA 봇 러너의 요청에 따라 클라이언트로부터 제공되는 관련 RPA 데이터를 RPA 엔진 또는 RPA 워크로드 관리 데이터베이스에 저장하거나 당해 RPA 엔진 또는 RPA 워크로드 관리 데이터베이스에 저장된 RPA 데이터를 클라이언트로 제공할 수 있다. 여기서, RPA 데이터는 앞서 설명된 바 있는 사전 정의된 인스트럭션 세트 및 클라이언트(RPA 봇 크리에이터 또는 RPA 봇 러너)의 RPA 동작과 관련된 데이터를 포함할 수 있다. RPA 엔진은 RPA 봇 코드를 제작할 수 있는 개발 환경을 제공할 수 있고, 당해 제작된 RPA 봇 코드를 저장할 수 있다. 당해 저장된 RPA 봇 코드는 컴퓨팅 디바이스(이하, ‘RPA 봇 러너’)로 배포될 수 있으며, 당해 배포되어 실행되는 RPA 봇 러너는 RPA 봇으로서 동작할 수 있다.
RPA 봇 크리에이터는 RPA 봇을 정의하는 하나 또는 그 이상의 파일, 즉 태스크를 생성하거나 편집할 수 있는 컴퓨팅 디바이스이다. RPA 봇 러너는 RPA 봇을 정의하는 하나 또는 그 이상의 파일들, 즉 태스크들을 실행할 수 있는 컴퓨팅 디바이스이다. 본 개시에서 소프트웨어 코드 또는 프로그램 코드로 특별히 명시되지 아니하는 한, 워크 아이템을 처리하는 태스크인 프로그램 코드 즉 논리적 디바이스인 RPA 봇과 당해 논리적 디바이스가 로딩 또는 탑재되어 운용되는 물리적 디바이스인 RPA 봇 러너는 동일한 의미로 지칭될 수 있다. 실행 관점에서, RPA 봇을 정의하는 파일, 즉 태스크 자체는 프로그램 코드 이상의 의미가 없으며 당해 파일들이 물리적 컴퓨팅 디바이스(예를 들어 상용 데스크탑 컴퓨팅 디바이스, 랩탑 컴퓨팅 디바이스, 모바일 컴퓨팅 디바이스 등)로 배포되어 당해 컴퓨팅 디바이스, 즉 RPA 봇 러너에서 실행되었을 때 당해 파일들을 실행하는 RPA 봇 러너가 RPA 봇으로서 기술적 의미를 가질 수 있다.
RPA 봇은 유인 RPA 봇(attended bot)과 무인 RPA 봇(unattended bot)으로 구분될 수 있다. 유인 RPA 봇은 사용자, 즉 인간의 행동(예를 들어 명령어 또는 데이터 입력)에 인터랙티브하게 반응하여 프로세스를 처리하는 RPA 봇으로서 사용자의 개입이 요구되는 RPA 봇이다. 무인 RPA 봇은 사용자의 행동에 독립적으로 프로세스를 처리하는 RPA 봇으로서 사용자의 개입을 요구하지 않는 RPA 봇이다.
도9는 실시예에 따른 RPA 봇을 나타내는 개념도이다.
도9는 RPA 봇이 실행하는 동작의 계층(hierarchy) 관점에서 실시예에 따른 RPA 봇을 도시하고 있다. 도10에 도시된 바와 같이, 실시예에 따른 RPA 봇은 4가지 태스크로 정의될 수 있다: 마스터 태스크(Master Task), 로드 밸런싱 태스크(LB(Load Balancing) Task), 메인 태스크(Main Task) 및 서브 태스크(Sub Task). 참고로, 앞서 설명된 바와 같이, RPA 시스템에서 프로세스는 하나 이상의 태스크들로 구성된 단위 컴퓨팅 업무를, 태스크는 하나 이상의 이벤트들로 구성된 단위 실행 동작을, 이벤트는 디지털 객체에 대한 오퍼레이팅 시스템 또는 어플리케이션의 독립 동작을 의미한다.
실시예에 따라, 마스터 태스크는 RPA 엔진에 포함되어 있는 스케줄러에 등록되는 단위 태스크이다. 마스터 태스크가 정의하는 RPA 봇은 RPA 마스터 봇이다. 당해 마스터 태스크가 정의된 RPA 봇이 실행될 때 여타 태스크에 우선하여 최초로 호출된다. 실시예에 따라, 스케줄러에 등록되지 아니한 상태에서 당해 마스터 태스크가 정의된 RPA 봇이 실행될 때에도 당해 마스터 태스크는 여타 태스크에 우선하여 최초로 호출된다. RPA 마스터 봇은 프로세스를 구성하는 태스크들 전체 구성을 사전에 미리 설정하거나, SNS(Social Networking Service), SMS(Short Message Service), 챗봇(Chat-Bot) 서비스, 포털 서비스의 로그 시스템, 기타 메신저 서비스와 연계하여, RPA 봇이 사용자 또는 다른 시스템과 커뮤니케이션을 수행할 수 있는 수단을 설정한다. RPA 마스터 봇은 관련 RPA 봇의 실행 과정에서 필요한 경우에 폴더를 정의하고 가비지를 삭제한다. RPA 마스터 봇은 관련 RPA 봇이 실행되는 RPA 봇 러너에서 리소스 부족 등의 원인으로 오류가 발생하는 경우에 당해 태스크에 대해 예외 처리를 수행하고 이에 필요한 RPA 봇의 스크린 샷을 캡쳐하여 RPA 엔진으로 전송할 수 있다. RPA 마스터 봇은 관련 프로세스에 포함된 태스크가 정의하는 RPA 봇을 호출할 수 있다. RPA 마스터 봇은 관련 프로세스가 정상적으로 완료된 경우에 정상 종료에 필요한 작업을 수행한다.
로드 밸런싱 태스크는 프로세스에 포함된 태스크들에 대한 로드 밸런싱, 즉 RPA 봇들간 태스크의 병렬 처리를 위한 준비 작업을 수행한다. 로드 밸런싱 태스크가 정의하는 RPA 봇은 RPA 로드 밸런싱 봇이다. RPA 로드 밸런싱 봇은 사용자 변수를 초기화 하며, 실시예에 따라 사이트별로 다른 변수를 설정할 수 있다. 실시예에 따라, 로드 밸런싱 태스크가 정의된 RPA 봇 러너가 RPA 마스터 봇인 경우, 즉 RPA 봇 러너가 로드 밸런싱 태스크뿐만 아니라 마스터 태스크를 수행하는 경우에, 당해 RPA 마스터-로드 밸런싱 봇은 대량의 작업을 복수의 워크 아이템들(예를 들어, 구매 오더 1000건을 처리하는 대량의 작업에서 개별 구매 오더 각 건이 워크 아이템임)로 생성하여 RPA 워크로드 관리 데이터베이스에 등록한다. 당해 등록 작업이 완료되면, 당해 등록된 대량의 작업에 대한 병렬 처리를 위해 RPA 봇 러너 풀에 포함되어 있으며 사용 가능한 모든 RPA 봇 러너들로 RPA 봇 프로그램을 복제하여 배포한다. 당해 복제 및 배포된 RPA 봇은 차일드 봇이라 명칭될 수 있다. 실시예에 따라, RPA 로드 밸런싱 봇이 RPA 마스터 봇은 아닌 경우, 즉 당해 RPA 봇 러너가 마스터 태스크는 수행하지 아니하는 경우에, RPA 워크로드 관리 데이터베이스에 등록되어 있는 워크 아이템을 독출하여 메인 태스크를 호출한다. 후술되는 바와 같이, RPA 로드 밸런싱 봇은 리트라이되어야 할 워크 아이템에 대하여 리트라이 작업을 수행하도록 RPA 메인 봇을 호출한다. RPA 워크로드 관리 데이터베이스는 등록되어 있는 워크 아이템에 대하여 재처리 식별자를 부여하는데, RPA 로드 밸런싱 봇은 당해 재처리 식별자의 값에 따라 당해 워크 아이템에 대하여 리트라이 작업을 수행하도록 RPA 메인 봇을 호출한다.
실시예에 따라, 메인 태스크는 RPA 워크로드 관리 데이터베이스에 등록되어 있는 워크 아이템을 조회하여 당해 워크 아이템을 처리한다. 메인 태스크가 정의하는 RPA 봇은 RPA 메인 봇이다. 실시예에 따라, RPA 메인 봇은 RPA 워크로드 관리 데이터베이스에 등록되어 있는 워크 아이템을 조회하여 당해 워크 아이템을 스스로 처리하거나 RPA 서브 봇이 처리하도록 서브 태스크를 호출한다. RPA 워크로드 관리 데이터베이스는 등록되어 있는 워크 아이템에 대하여 수행 식별자를 부여하는데, RPA 메인 봇은 당해 수행 식별자의 값에 따라 당해 워크 아이템을 스스로 처리하거나 RPA 서브 봇이 당해 워크 아이템을 처리하도록 서브 태스크를 호출한다.
서브 태스크는 RPA 워크로드 관리 데이터베이스에 등록되어 있는 워크 아이템을 조회하여 당해 워크 아이템을 처리한다. 서브 태스크가 정의하는 RPA 봇은 RPA 서브 봇이다. 도9에 도시된 바와 같이, RPA 메인 봇은 하나 또는 그 이상의 RPA 서브 봇들을 호출하여 워크 아이템들을 처리하도록 제어함으로써 대량의 작업을 병렬로 처리할 수 있다. 앞서 설명된 바와 같이, RPA 로드 밸런싱 봇은 대량의 작업을 복수의 워크 아이템들로 분할하여 RPA 워크로드 관리 데이터베이스에 등록할 수 있고, RPA 워크로드 관리 데이터베이스는 등록되어 있는 워크 아이템들 각각에 대하여 수행 식별자를 부여하며, RPA 메인 봇 및 RPA 서브 봇은 당해 수행 식별자의 값에 따라 당해 워크 아이템을 처리한다. 따라서, 당해 대량의 작업은 병렬로 처리될 수 있다.
도10은 RPA 마스터 봇, RPA 로드 밸런싱 봇, RPA 메인 봇 및 RPA 서브 봇 간의 태스크 수행 관계를 예시하는 도면이다. 도10에 도시된 바와 같이 RPA 마스터 봇, RPA 로드 밸런싱 봇, RPA 메인 봇 및 RPA 서브 봇은 상호간 태스크 호출을 통해 워크 아이템을 처리한다.
도11은 수행 식별자의 값에 따라 RPA 메인 봇 및 RPA 서브 봇이 병렬 처리하도록 할당되는 워크 아이템의 관계를 나타내는 도면이다.
앞서 설명된 바와 같이, RPA 로드 밸런싱 봇은 대량의 작업을 복수의 워크 아이템들로 분할하여 RPA 워크로드 관리 데이터베이스에 등록할 수 있고, RPA 워크로드 관리 데이터베이스는 등록되어 있는 워크 아이템들 각각에 대하여 수행 식별자를 부여하며, RPA 메인 봇 및 RPA 서브 봇은 당해 수행 식별자의 값에 따라 당해 워크 아이템을 처리한다.
도11에 도시된 “Biz Step 1” 내지 “Biz Step N”은 앞서 설명된, 워크 아이템들에 대하여 부여되는 수행 식별자들을 나타낸다. 도면에 도시되지는 아니했으나, 특정 워크 아이템에 대하여 수행 식별자 “Biz Step 0”이 부여될 수 있다. 수행 식별자 “Biz Step 0”이 부여된 워크 아이템은 RPA 메인 봇(도11에서 “Main Task”로 표시됨)에 의해 처리되며 수행 식별자들 “Biz Step 1” 내지 “Biz Step N”이 부여된 워크 아이템들은 복수의 RPA 서브 봇들(도12에서 “Biz Sub Task #1” 내지 “Biz Sub Task #N”로 표시됨)에게 라운드 로빈 방식으로 할당되어 수행 식별자들 “Biz Step 1” 내지 “Biz Step N”의 값에 따라 병렬 처리되거나 순차 처리될 수 있다.
도12는 복수의 워크 아이템들이 라운드 로빈 방식으로 복수의 RPA 서브 봇들에게 할당되는 과정을 나타내는 개념도이다.
도12에 도시된 바와 같이, RPA 워크로드 관리 데이터베이스의 큐에 워크 아이템1 내지 워크 아이템4가 순차적으로 인큐잉되고, 워크 아이템을 처리할 RPA 메인 봇 및/또는 RPA 서브 봇으로서 RPA 봇 러너1 및 RPA 봇 러너2가 배정된 경우에, 워크 아이템1 및 워크 아이템2가 순차적으로 RPA 봇 러너1 및 RPA 봇 러너2에 할당되고 워크 아이템3 및 워크 아이템4가 순차적으로 RPA 봇 러너1 및 RPA 봇 러너2에 할당될 수 있다. 이러한 방식으로 복수의 워크 아이템들이 라운드 로빈 방식으로 복수의 RPA 서브 봇들에게 할당되어 처리될 수 있다. 이때, 워크 아이템1 내지 워크 아이템4에 대응하는 수행 식별자들(도12에서 “Biz Step”으로 표기됨)이 순차적으로 1 내지 3 및 999의 값을 가지며, 당해 값에 따라 해당 워크 아이템들이 순차적으로 수행될 수 있다. 따라서, 순차적으로 RPA 봇 러너1이 워크 아이템1을 처리하고 RPA 봇 러너2가 워크 아이템2를 처리하고 다시 RPA 봇 러너1이 워크 아이템3을 처리하며 다시 RPA 봇 러너2가 워크 아이템4를 처리한다.
다시 도11로 돌아와, RPA 메인 봇은 호출하는 복수의 RPA 서브 봇들의 실행 순서를 제어함으로써 대량의 작업을 구성하는 워크 아이템들을 분할 처리하거나 순차 처리할 수 있다.
또한, 앞서 설명된 바와 같이, RPA 워크로드 관리 데이터베이스는 등록되어 있는 워크 아이템에 대하여 재처리 식별자를 부여하는데, RPA 로드 밸런싱 봇은 당해 재처리 식별자의 값에 따라 당해 워크 아이템에 대하여 리트라이 작업을 수행하도록 RPA 메인 봇을 호출한다.
구체적으로, RPA 워크로드 관리 데이터베이스는 RPA 로드 밸런싱 봇에 의해 대량의 작업으로부터 분할된 워크 아이템들을 큐에 인큐잉함으로써 등록하고, 당해 등록 즉 인큐잉된 워크 아이템들 각각에 대응하는 재처리 식별자를 소정 값, 예를 들어 M으로 초기화한다. 이때, RPA 로드 밸런싱 봇은 당해 등록 즉 인큐잉된 워크 아이템들 각각에 대응하는 수행 식별자의 값도 설정한다. RPA 메인 봇 및/또는 RPA 서브 봇은 인큐잉된 워크 아이템들의 수행 식별자에 설정된 값을 참조하여 해당 워크 아이템들을 디큐잉하여 병렬로 또는 순차로 처리한다.
당해 디큐잉된 워크 아이템들을 처리하는 과정에서 오류가 발생한 경우에, 당해 오류가 발생한 워크 아이템을 처리하는 RPA 메인 봇 또는 RPA 서브 봇은 RPA 마스터 봇을 통해 당해 오류를 운영자에게 리포팅하는 한편, RPA 로드 밸런싱 봇은 당해 오류가 발생한 워크 아이템에 대응하는 재처리 식별자의 값을 1만큼 감소시키는 업데이트를 하고 당해 업데이트된 재처리 식별자에 대응하는 워크 아이템, 즉 오류가 발생했던 워크 아이템을 RPA 워크로드 관리 데이터베이스에 다시금 인큐잉함으로써 재등록한다. 재등록 즉 다시금 인큐잉된 워크 아이템을 다시금 RPA 메인 봇 및/또는 RPA 서브 봇에 의해 처리, 즉 리트라이된다. 이러한 워크 아이템의 리트라이 과정은 재처리 식별자의 값이 초기값 M으로부터 0으로 될 때까지 반복될 수 있다.
만일 재처리 식별자의 값이 0이 될 때까지 오류가 반복적으로 발생한 경우에 운영자는 당해 0의 재처리 식별자 값을 가지는 워크 아이템에 대해서만 선별적으로 오류를 수정할 수 있으며 당해 수정된 워크 아이템은 다시금 RPA 워크로드 관리 데이터베이스에 등록되어 RPA 메인 봇 및/또는 RPA 서브 봇에 의해 오류없이 처리될 수 있다. 예를 들어, 하나의 프로세스를 구성하는 모든 태스크의 모든 워크 아이템들을 성공적으로 처리하고 나면 0의 재처리 식별자 값을 가지는 워크 아이템만이 선별적 인큐잉되어 있을 것이다. 운영자는 당해 인큐잉되어 있는 잔존 워크 아이템 즉 0의 재처리 식별자 값을 가지는 워크 아이템에 대해서만 오류를 수정하면 당해 프로세스 전체를 성공적으로 처리할 수 있기 때문에 당해 프로세스 전체의 성공적인 처리를 위한 오류 수정의 로드 및 오류 수정된 워크 아이템에 대한 재처리의 로드가 상당히 감소될 수 있다.
여기서, RPA 워크로드 관리 데이터베이스에 워크 아이템을 등록할 때 당해 워크 아이템에 대해 앞서 설명된 수행 식별자 및 재처리 식별자에 더하여 레코드 필드를 포함하는 메타데이터 아이템을 생성하고 당해 워크 아이템에 대하여 수시로 변경되거나 오류가 발생할 가능성이 높은 데이터는 대응하는 메타 데이터 아이템의 레코드 필드에 기록할 수 있도록 함으로써 상기 오류가 레코드 필드에 기록된 데이터로부터 발생한 경우에는 신속하게 오류를 정정할 수 있다. 예를 들어, RPA 워크로드 관리 데이터베이스에 등록된 워크 아이템에 대응하는 메타데이터 아이템의 레코드 필드가 값 “사번, 34567”을 가지고 있으나 실제 사번은 “54567”인 경우에는, 사번 “34567”에 해당하는 디지털 객체가 없어서 당해 워크 아이템을 처리하는 과정에서 오류가 발생할 것이다. 그러나, 당해 오류는 레코드 필드의 값만 수정함으로써 신속하게 정정될 수 있으며 따라서 당해 오류가 발생한 워크 아이템에 대해 신속하게 리트라이할 수 있다.
도13 및 도14는 종래기술과 실시예에 따른 워크 아이템 처리 스킴을 비교하는 도면들로서, 도13은 종래기술에 따른 워크 아이템 처리 스킴을 나타내는 개념도이고 도14는 실시예에 따른 워크 아이템 처리 스킴을 나타내는 개념도이다.
도13에 도시된 바와 같이, 종래기술에 따르면, 1000개의 워크 아이템들(“구매 오더 1000건”)을 처리함에 있어서, 당해 1000개 워크 아이템들을 등록 즉 인큐잉하고 봇들이 당해 인큐잉된 워크 아이템들을 병렬 처리 또는 순차 처리한다. 예를 들어 560 번째 워크 아이템을 처리하는 과정에서 오류가 발생한 경우에 당해 560번째 워크 아이템에 대한 오류를 수정한 다음에는 1000개의 워크 아이템들을 처음부터 다시금 처리해야 하는 문제점이 있다. 또한, 종래기술에 따르면, 1개의 봇 프로그램에 1000개의 워크 아이템들을 처리하는 로직을 모두 포함시켜야 하기 때문에 봇 프로그램의 복잡성이 높고 유지 보수가 어렵다는 단점이 있다. 나아가, 종래기술에 따르면 인큐잉되는 1000개의 워크 아이템들이 고정되기 때문에 당해 1000개의 워크 아이템들이 모두 처리될 때까지 다른 프로세스를 진행할 수 없다는 한계가 있다.
반면, 도14에 도시된 바와 같이, 실시예에 따르면, RPA 로드 밸런싱 봇은 서로 다른 종류의 대량 작업들(구매 오더 처리 1000건, 교육 이수 완료 처리 1300건 및 생산 물품 분류 처리 2300건)을 각각 1000건, 1300건 및 2300건의 워크 아이템들로 분할하여 RPA 워크로드 관리 데이터베이스(도14에서 “WLMDB”로 표기됨)의 큐에 인큐잉, 즉 등록한다. 이 과정에서 각 워크 아이템에 대한 메타데이터 리스트를 생성한다. 앞서 설명된 바와 같이 메타데이터 리스트에 포함된 각 아이템은 등록된 워크 아이템과 1:1로 대응하며 재처리 식별자, 수행 식별자 및 레코드를 필드로 갖는다. RPA 메인 봇은 메타 데이터 리스트에 포함된 수행 식별자를 참조하여 해당 워크 아이템을 처리하거나 RPA 서브 봇이 해당 워크 아이템을 처리하도록 호출한다. 등록된 워크 아이템을 RPA 워크로드 관리 데이터베이스로부터 디큐잉하여 처리하는 과정에서 오류가 발생한 경우에, 당해 오류가 발생한 워크 아이템을 처리하는 RPA 메인 봇 또는 RPA 서브 봇은 RPA 마스터 봇을 통해 당해 오류를 운영자에게 리포팅하는 한편, RPA 로드 밸런싱 봇은 당해 오류가 발생한 워크 아이템에 대응하는 재처리 식별자의 값을 1만큼 감소시키는 업데이트를 하고 당해 업데이트된 재처리 식별자에 대응하는 워크 아이템, 즉 오류가 발생했던 워크 아이템을 RPA 워크로드 관리 데이터베이스에 다시금 인큐잉함으로써 재등록한다. 재등록 즉 다시금 인큐잉된 워크 아이템을 다시금 RPA 메인 봇 및/또는 RPA 서브 봇에 의해 처리, 즉 리트라이된다. 이러한 워크 아이템의 리트라이 과정은 재처리 식별자의 값이 초기값 M으로부터 0으로 될 때까지 반복될 수 있다. 예를 들어, 하나의 프로세스를 구성하는 모든 태스크의 모든 워크 아이템들을 성공적으로 처리하고 나면 0의 재처리 식별자 값을 가지는 워크 아이템만이 선별적 인큐잉되어 있을 것이다. 운영자는 당해 인큐잉되어 있는 잔존 워크 아이템 즉 0의 재처리 식별자 값을 가지는 워크 아이템에 대해서만 오류를 수정하면 당해 프로세스 전체를 성공적으로 처리할 수 있기 때문에 당해 프로세스 전체의 성공적인 처리를 위한 오류 수정의 로드 및 오류 수정된 워크 아이템에 대한 재처리의 로드가 상당히 감소될 수 있다. 이러한 실시예에 따르면, RPA 워크로드 관리 데이터베이스와 RPA 봇 러너 풀의 조합을 통해 서로 다른 종류의 대량 작업들을 동시에 병렬적으로 처리할 수 있다. 이 과정에서, RPA 워크로드 관리 데이터베이스에 서로 다른 종류의 워크 아이템들이 함께 등록될 수 있으며 따라서 서로 다른 종류의 워크 아이템들에 대한 다중 처리를 통해 효율적인 프로세스 처리가 가능하다.
도15 내지 도17은 종래기술과 실시예에 따른 RPA 워크로드 관리 데이터베이스의 차이점을 나타내는 표들이다.
도15 내지 도17에 도시된 바와 같이, 실시예에 따르면, RPA 워크로드 관리 데이터베이스는 RPA 봇 러너 풀에 배정된 RPA 봇 러너를 실행/스케줄링 용도로 사용할 수 있으며, RPA 봇 러너 풀들 간에 RPA 봇 러너를 공유할 수 있다. RPA 봇 러너 아이들 타임 발생 여부 관련, 워크 아이템은 클라이언트, 즉 RPA 봇 러너에서 처리되므로 아이들 타임이 발생할 가능성이 적으며, 업무량 및 총 처리 시간이 다양한 경우에도 효과적으로 업무 부하 분산이 가능하다. 큐잉된 워크 아이템의 배포 및 실행 단위 관련, RPA 워크로드 관리 데이터베이스는 프로세스/비즈니스 키 단위로 배포 및 실행되며 워크 아이템 단위로 페치하기 위한 백엔드 서비스 호출만 발생하기 때문에 경량화가 가능하다. 동일 큐에 큐잉된 워크 아이템들은 우선순위 베이스로 처리될 수 있다. 또한, 테크니컬 오류가 발생한 워크 아이템에 대해 자동으로 리트라이될 수 있다.
이하에서는, 도18를 참조하여 실시예에 따른 장치를 구현할 수 있는 예시적인 컴퓨팅 디바이스(2000)에 대하여 설명한다.
도18은 컴퓨팅 디바이스(2000)를 나타내는 블록도이다.
도18에 도시된 바와 같이, 컴퓨팅 디바이스(2000)는 하나 이상의 프로세서(2100), 프로세서(2100)에 의하여 수행되는 소프트웨어 코드를 로드(load)하는 메모리(2200), 버스(2500), 통신 인터페이스(2400)와 소프트웨어 코드(2310)을 저장하는 스토리지(2300)를 포함할 수 있다. 실시예가 속한 기술분야의 통상의 기술자에게는 도18에 도시된 구성요소들 외에 다른 범용적인 구성 요소들이 더 포함될 수 있다는 점이 자명하다.
프로세서(2100)는 컴퓨팅 디바이스(2000)의 각 구성의 전반적인 동작을 제어한다. 프로세서(3100)는 CPU(Central Processing Unit), MPU(Micro Processor Unit), MCU(Micro Controller Unit), GPU(Graphic Processing Unit) 또는 실시예의 기술 분야에 잘 알려진 임의의 형태의 프로세서를 포함하여 구성될 수 있다. 또한, 프로세서(2100)는 실시예에 따른 방법/동작을 실행하기 위한 적어도 하나의 애플리케이션 또는 프로그램에 대한 연산을 수행할 수 있다. 컴퓨팅 디바이스(2000)는 하나 이상의 프로세서를 구비할 수 있다.
메모리(2200)는 각종 데이터, 명령 및/또는 정보를 저장한다. 메모리(2200)는 실시예에 따른 방법/동작을 실행하기 위하여 스토리지(2300)로부터 하나 이상의 소프트웨어 코드(2310)를 로드할 수 있다. 메모리(2200)는 RAM과 같은 휘발성 메모리로 구현될 수 있을 것이나, 실시예의 기술적 범위가 이에 한정되는 것은 아니다.
버스(2500)는 컴퓨팅 디바이스(2000)의 구성 요소 간 통신 기능을 제공한다. 버스(2500)는 주소 버스(Address Bus), 데이터 버스(Data Bus) 및 제어 버스(Control Bus) 등 다양한 형태의 버스로 구현될 수 있다.
통신 인터페이스(2400)는 컴퓨팅 디바이스(2000)의 유무선 인터넷 통신을 지원한다. 또한, 통신 인터페이스(2400)는 인터넷 통신 외의 다양한 통신 방식을 지원할 수도 있다. 이를 위해, 통신 인터페이스(2400)는 본 개시의 기술 분야에 잘 알려진 통신 모듈을 포함하여 구성될 수 있다. 경우에 따라, 통신 인터페이스(2400)는 생략될 수도 있다.
스토리지(2300)는 상기 하나 이상의 소프트웨어 코드(2310)과 각종 데이터 등을 비임시적으로 저장할 수 있다. 스토리지(2300)는 ROM(Read Only Memory), EPROM(Erasable Programmable ROM), EEPROM(Electrically Erasable Programmable ROM), 플래시 메모리 등과 같은 비휘발성 메모리, 하드 디스크, 착탈형 디스크, 또는 실시예가 속하는 기술 분야에서 잘 알려진 임의의 형태의 컴퓨팅 디바이스로 읽을 수 있는 기록 매체를 포함하여 구성될 수 있다.
소프트웨어 코드(2310)은 메모리(2200)에 로드될 때 프로세서(2100)로 하여금 실시예에 따른 방법/동작을 수행하도록 하는 하나 이상의 인스트럭션을 포함할 수 있다. 즉, 프로세서(2100)는 상기 하나 이상의 인스트럭션을 실행함으로써, 실시예에 따른 방법/동작들을 수행할 수 있다.
지금까지 도면을 참조하여 설명된 실시예의 기술적 사상은 컴퓨팅 디바이스가 읽을 수 있는 매체 상에 컴퓨팅 디바이스가 읽을 수 있는 코드로 구현될 수 있다. 상기 컴퓨팅 디바이스로 읽을 수 있는 기록 매체는, 예를 들어 이동형 기록 매체(CD, DVD, 블루레이 디스크, USB 저장 장치, 이동식 하드 디스크)이거나, 고정식 기록 매체(ROM, RAM, 컴퓨팅 디바이스 구비 형 하드 디스크)일 수 있다. 상기 컴퓨팅 디바이스로 읽을 수 있는 기록 매체에 기록된 상기 소프트웨어 코드는 인터넷 등의 네트워크를 통하여 다른 컴퓨팅 디바이스에 전송되어 상기 다른 컴퓨팅 디바이스에 설치될 수 있고, 이로써 상기 다른 컴퓨팅 디바이스에서 사용될 수 있다.
이상에서, 실시예를 구성하는 모든 구성 요소들이 하나로 결합되거나 결합되어 동작하는 것으로 설명되었다고 해서, 실시예의 기술적 사상이 반드시 본 개시에 한정되는 것은 아니다. 즉, 본 개시의 목적 범위 안에서라면, 그 모든 구성요소들이 하나 이상으로 선택적으로 결합하여 동작할 수도 있다.
도면에서 동작들이 특정한 순서로 도시되어 있지만, 반드시 동작들이 도시된 특정한 순서로 또는 순차적 순서로 실행되어야 만하거나 또는 모든 도시 된 동작들이 실행되어야 만 원하는 결과를 얻을 수 있는 것으로 이해되어서는 안 된다. 특정 상황에서는, 멀티태스킹 및 병렬 처리가 유리할 수도 있다. 더욱이, 실시예에서 다양한 구성들의 분리는 그러한 분리가 반드시 필요한 것으로 이해되어서는 안 되고, 설명된 프로그램 컴포넌트들 및 시스템들은 일반적으로 단일 소프트웨어 제품으로 함께 통합되거나 다수의 소프트웨어 제품으로 패키지 될 수 있음을 이해하여야 한다.
지금까지 도면들을 참조하여 실시예 및 그 실시예에 따른 효과들을 언급하였다. 실시예의 기술적 사상에 따른 효과들은 이상에서 언급한 효과들로 제한되지 않으며, 언급되지 않은 또 다른 효과들은 아래의 기재로부터 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
실시예가 속하는 기술분야의 통상의 기술자는 실시예가 그 기술적 사상이나 필수적 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있으므로, 이상에서 기술한 실시예는 모든 면에서 예시적인 것이며 한정적인 것이 아닌 것으로서 이해해야만 한다. 실시예의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 등가개념으로부터 도출되는 모든 변경 또는 변형된 형태가 실시예의 범위에 포함되는 것으로 해석되어야 한다.

Claims (16)

  1. 로보틱 프로세스 자동화(Robotic Process Automation, RPA) 워크플로우를 수행하는 RPA 시스템에 있어서,
    프로세스를 구성하는 복수의 워크 아이템들을 저장하기 위한 제1 메모리 영역, 상기 워크 아이템들을 인큐잉 및 디큐잉하기 위한 큐 및 상기 워크 아이템들 각각에 대응하는 메타데이터 아이템을 저장하기 위한 제2 메모리 영역을 포함하는 RPA 워크로드 관리 데이터베이스;
    소정의 RPA 언어 규칙에 따라 생성된 컴퓨터 프로그램 인스트럭션들인 마스터 태스크, 로드 밸런싱 태스크, 메인 태스크 및 서브 태스크를 배포 및 관리하기 위한 RPA 엔진;
    상기 배포된 마스터 태스크에 의해 정의되는 RPA 마스터 봇;
    상기 배포된 로드 밸런싱 태스크에 의해 정의되는 RPA 로드 밸런싱 봇;
    상기 배포된 메인 태스크에 의해 정의되는 RPA 메인 봇; 및
    상기 배포된 서브 태스크에 의해 정의되는 하나 또는 그 이상의 RPA 서브 봇들
    을 포함하는 RPA 시스템.
  2. 제1항에 있어서,
    상기 RPA 마스터 봇, RPA 로드 밸런싱 봇, RPA 메인 봇 및 RPA 서브 봇들 각각은
    상기 배포된 마스터 태스크, 로드 밸런싱 태스크, 메인 태스크 및 서브 태스크 중에서 대응하는 태스크를 저장하기 위한 메모리; 및
    상기 대응하는 태크스를 실행하기 위한 적어도 하나의 프로세서
    를 포함하는 RPA 시스템.
  3. 제2항에 있어서,
    상기 RPA 마스터 봇은
    상기 태스크들 전체 구성을 사전에 미리 설정하고,
    상기 RPA 시스템이 사용자 또는 다른 시스템과 커뮤니케이션을 수행할 수 있는 수단을 설정하고,
    폴더를 정의하고 가비지를 삭제하고,
    상기 배포된 로드 밸런싱 태스크, 메인 태스크 및 서브 태스크를 상기 RPA 로드 밸런싱 봇, RPA 메인 봇 및 RPA 서브 봇들이 처리하는 과정에서 오류가 발생하는 경우에 당해 태스크에 대해 예외 처리를 수행하고 상기 오류와 관련된 스크린 샷을 캡쳐하여 RPA 엔진으로 전송하고,
    상기 워크 아이템들을 처리하기 위하여 상기 RPA 로드 밸런싱 봇을 호출하며,
    상기 프로세스가 정상적으로 완료된 경우에 정상 종료에 필요한 작업을 수행하는
    RPA 시스템.
  4. 제3항에 있어서,
    상기 RPA 로드 밸런싱 봇은
    상기 RPA 마스터 봇의 호출에 의해 동작하고,
    상기 프로세스를 상기 복수의 워크 아이템들로 생성하여 상기 큐에 인큐잉함으로써 상기 RPA 워크로드 관리 데이터베이스에 등록하고,
    상기 등록된 워크 아이템들 각각에 대응하는 상기 메타데이터 아이템들을 생성하여 상기 제2 메모리 영역에 저장하고,
    상기 RPA 엔진으로부터 상기 메인 태스크 및 서브 태스크를 상기 RPA 메인 봇 및 RPA 서브 봇들에게 배포하며,
    상기 인큐잉된 워크 아이템을 디큐잉하고 상기 디큐잉된 워크 아이템을 처리하도록 상기 RPA 메인 봇을 호출하는
    RPA 시스템.
  5. 제4항에 있어서,
    상기 메타 데이터 아이템들은
    상기 등록된 워크 아이템들에 대응하는 수행 식별자 필드들을 각각 포함하는
    RPA 시스템.
  6. 제5항에 있어서,
    상기 RPA 메인 봇은
    상기 RPA 로드 밸런싱 봇의 호출에 의해 동작하고,
    상기 등록 워크 아이템들 각각에 대응하는 상기 수행 식별자 필드의 값들에 따라 상기 디큐잉된 워크 아이템을 스스로 처리하거나 상기 RPA 서브 봇들이 처리하도록 서브 태스크를 호출하는
    RPA 시스템.
  7. 제6항에 있어서,
    상기 RPA 서브 봇들 각각은
    상기 RPA 메인 봇의 호출에 의해 동작하고,
    상기 등록 워크 아이템들 각각에 대응하는 상기 수행 식별자 필드의 값들에 따라 상기 디큐잉된 워크 아이템을 처리하는
    RPA 시스템.
  8. 제7항에 있어서,
    상기 RPA 서브 봇들은
    상기 등록 워크 아이템들 각각에 대응하는 상기 수행 식별자 필드의 값들에 따라 상기 디큐잉된 워크 아이템들을 순차적으로 병렬 처리하는
    RPA 시스템.
  9. 제8항에 있어서,
    상기 RPA 메인 봇은
    상기 디큐잉된 워크 아이템들을 상기 RPA 서브 봇들에게 라운드 로빈 방식으로 할당하고,
    상기 RPA 서브 봇들은
    상기 라운드 로빈 방식으로 할당된 워크 아이템들을 순차적으로 병렬 처리하는
    RPA 시스템.
  10. 제9항에 있어서,
    상기 메타 데이터 아이템들은
    상기 등록된 워크 아이템들에 대응하는 재처리 식별자 필드들을 각각 더 포함하는
    RPA 시스템.
  11. 제10항에 있어서,
    상기 재처리 식별자 필드는 소정의 초기값을 갖는
    RPA 시스템.
  12. 제11항에 있어서,
    상기 RPA 로드 밸런싱 봇은
    상기 RPA 메인 봇 및 RPA 서브 봇들이 상기 디큐잉된 워크 아이템들을 처리하는 과정에서 어느 하나의 워크 아이템에 대하여 오류가 발생한 경우에,
    상기 오류가 발생한 워크 아이템에 대응하는 상기 재처리 식별자 필드의 값을 1만큼 감소시키는 업데이트를 수행하고,
    상기 오류가 발생한 워크 아이템을 상기 큐에 다시금 인큐잉함으로써 재등록하며,
    상기 큐에 재등록된 워크 아이템을 다시금 디큐잉하고 상기 다시금 디큐잉된 워크 아이템을 처리하도록 상기 RPA 메인 봇을 호출하는
    RPA 시스템.
  13. 제12항에 있어서,
    상기 RPA 로드 밸런싱 봇은
    상기 재등록된 워크 아이템의 처리가 성공하거나 상기 재처리 식별자 필드의 값이 0이 될 때까지 상기 재등록된 워크 아이템에 대하여 상기 업데이트, 재등록 및 상기 RPA 메인 봇의 호출을 반복하는
    RPA 시스템.
  14. 제13항에 있어서,
    상기 메타 데이터 아이템들은
    상기 등록된 워크 아이템들에 대응하는 레코드 필드들을 각각 더 포함하는
    RPA 시스템.
  15. 제14항에 있어서,
    상기 RPA 워크로드 관리 데이터베이스는
    0의 값을 가지는 상기 재처리 식별자 필드에 대응하는 적어도 하나의 워크 아이템만이 상기 큐에 인큐잉되어 있는 경우에 상기 인큐잉되어 있는 워크 아이템에 대응하는 레코드 필드에 포함된 값의 수정을 허용하는
    RPA 시스템.
  16. 제15항에 있어서,
    상기 RPA 로드 밸런싱 봇은
    상기 수정 이후에 상기 큐에 인큐잉되어 있는 워크 아이템을 디큐잉하고 상기 디큐잉된 워크 아이템을 처리하도록 상기 RPA 메인 봇을 호출하는
    RPA 시스템.
KR1020220072864A 2022-06-15 2022-06-15 로보틱 프로세스 자동화 시스템 KR20230172244A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020220072864A KR20230172244A (ko) 2022-06-15 2022-06-15 로보틱 프로세스 자동화 시스템

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020220072864A KR20230172244A (ko) 2022-06-15 2022-06-15 로보틱 프로세스 자동화 시스템

Publications (1)

Publication Number Publication Date
KR20230172244A true KR20230172244A (ko) 2023-12-22

Family

ID=89309621

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220072864A KR20230172244A (ko) 2022-06-15 2022-06-15 로보틱 프로세스 자동화 시스템

Country Status (1)

Country Link
KR (1) KR20230172244A (ko)

Similar Documents

Publication Publication Date Title
US11429433B2 (en) Process discovery and automatic robotic scripts generation for distributed computing resources
US11648686B2 (en) Artificial intelligence-based process identification, extraction, and automation for robotic process automation
EP3809319A1 (en) Long running workflows for document processing using robotic process automation
RU2433463C2 (ru) Динамическое перепозиционирование потока работ конечными пользователями
US11738453B2 (en) Integration of heterogeneous models into robotic process automation workflows
JP2021521567A (ja) ファイル共有のための技術
US11977470B2 (en) Monitoring long running workflows for robotic process automation
KR20220075194A (ko) 머신 러닝 모델을 호스팅, 모니터링, 및 리트레이닝하기 위한 로보틱 프로세스 오토메이션 아키텍처 및 프로세스
US20220094600A1 (en) Managed remediation of non-compliant resources
KR20220079833A (ko) 로봇 프로세스 자동화 및 워크플로 미세 최적화를 위한 프로세스 진화
US11556362B2 (en) Robotic process automation system with device user impersonation
KR20220079837A (ko) 로봇 프로세스 자동화를 위한 자동 분석, 우선순위 지정, 및 로봇 생성
KR20220079834A (ko) 로봇 프로세스 자동화를 위한 인공 지능 계층 기반 프로세스 추출
JP2022549974A (ja) ロボティックプロセスオートメーションのための文書処理フレームワーク
WO2022164576A1 (en) Enterprise process graphs for representing rpa data
US20230236851A1 (en) Multi-session automation windows for robotic process automation using same credentials
KR20230172244A (ko) 로보틱 프로세스 자동화 시스템
US11797770B2 (en) Self-improving document classification and splitting for document processing in robotic process automation
CN115687054A (zh) 基于业务分割还原的自适应测试方法以及装置
US20240210903A1 (en) Software Development (DevOps) Pipelines for Robotic Process Automation
US20220091908A1 (en) Filter instantiation for process graphs of rpa workflows
US20230236855A1 (en) Automation windows for robotic process automation using multiple desktops
EP4266172A1 (en) System, apparatus, and method for deploying robotic process automations across multiple operating systems
US20230036186A1 (en) Systems and methods for data integration
US20230102809A1 (en) Preconfigured robots for robotic process automation