KR20210043484A - 로봇 브라우저 임베딩 - Google Patents

로봇 브라우저 임베딩 Download PDF

Info

Publication number
KR20210043484A
KR20210043484A KR1020207028123A KR20207028123A KR20210043484A KR 20210043484 A KR20210043484 A KR 20210043484A KR 1020207028123 A KR1020207028123 A KR 1020207028123A KR 20207028123 A KR20207028123 A KR 20207028123A KR 20210043484 A KR20210043484 A KR 20210043484A
Authority
KR
South Korea
Prior art keywords
robot
application
computing system
port
conductor
Prior art date
Application number
KR1020207028123A
Other languages
English (en)
Other versions
KR102253980B1 (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 유아이패스, 인크.
Publication of KR20210043484A publication Critical patent/KR20210043484A/ko
Application granted granted Critical
Publication of KR102253980B1 publication Critical patent/KR102253980B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/34Graphical or visual programming
    • 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/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/042Programme control other than numerical control, i.e. in sequence controllers or logic controllers using digital processors
    • G05B19/0421Multiprocessor system
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1628Programme controls characterised by the control loop
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/44Program or device authentication
    • 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
    • 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/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • 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/0631Resource planning, allocation, distributing or scheduling for enterprises or organisations
    • G06Q10/06312Adjustment or analysis of established resource schedule, e.g. resource or task levelling, or dynamic rescheduling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/083Network architectures or network communication protocols for network security for authentication of entities using passwords
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • H04L67/16
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/51Discovery or management thereof, e.g. service location protocol [SLP] or web services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Business, Economics & Management (AREA)
  • Human Resources & Organizations (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Economics (AREA)
  • Strategic Management (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Automation & Control Theory (AREA)
  • Marketing (AREA)
  • Computing Systems (AREA)
  • Educational Administration (AREA)
  • Mechanical Engineering (AREA)
  • Game Theory and Decision Science (AREA)
  • Robotics (AREA)
  • Development Economics (AREA)
  • Operations Research (AREA)
  • Quality & Reliability (AREA)
  • Tourism & Hospitality (AREA)
  • General Business, Economics & Management (AREA)
  • Stored Programmes (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

로봇 프로세스 자동화(RPA)를 위한 하나 이상의 애플리케이션으로부터 하나 이상의 로봇이 호출될 수도 있다. 애플리케이션으로부터 로봇을 호출하기 위한 프로세스는, 컴퓨팅 시스템으로부터 애플리케이션을 론칭하여 애플리케이션 내에 임베딩된 로봇 링크를 호출하는 것을 포함할 수도 있다. 프로세스는 또한, 포트, 포트 세부 사항, 및 토큰을 식별하기 위해 애플리케이션으로부터 포트 디스커버리 프로세스를 개시하는 것을 포함할 수도 있다. 프로세스는, 애플리케이션에 의해 랜덤화된 코드를 생성하는 것 및 애플리케이션으로부터 로봇을 호출하기 위해 컴퓨팅 시스템의 유저에게 승인을 요청하는 동의 애플리케이션을 호출하는 것을 더 포함할 수도 있다. 프로세스는 또한, 랜덤화된 코드를 로컬 리스너 모듈에 등록하고 유저 정보 및 토큰을 글로벌 리스너 모듈로 전달하는 것을 포함할 수도 있다. 프로세스는, 글로벌 리스너 모듈로부터 토큰 및 포트 신분 증명서를 수신하여, 애플리케이션이 로봇을 사용해 그 자신을 인증시키는 것, 및 로봇과 통신하는 것을 허용하고, 그에 의해, 로봇 호출 프로세스를 완료하는 것을 더 포함할 수도 있다.

Description

로봇 브라우저 임베딩
[관련 출원에 대한 교차 참조]
본 출원은, 2019년 10월 11일자로 출원된 인도 특허 출원 번호 제201911041286호에 대한 35 U.S.C. §119 하에서의 우선권을 주장하는, 2019년 12월 6일자로 출원된 미국 특허 정식 출원 번호 제16/706,581호의 이익을 주장한다. 이들 앞서 출원된 출원의 주제는 참조에 의해 그 전체가 본원에 통합된다.
[기술분야]
본 발명은 일반적으로 로봇 프로세스 자동화(robotic process automation; RPA)에 관한 것으로, 더 구체적으로는, RPA를 위한 하나 이상의 애플리케이션으로부터 로봇 프로세스를 호출(invoking)하는 것에 관한 것이다.
로컬 머신 상에서 실행되는 로봇은 일반적으로 로봇 트레이 또는 컨덕터(conductor) 애플리케이션 프로그래밍 인터페이스(application programming interface; API)에 의해 호출된다. 어느 경우든, 유저는 로봇 트레이 또는 컨덕터 API를 통해 로봇을 호출한다. 그러나, 유저가 하나 이상의 상이한 애플리케이션 상에서 작업하고 있을 때, 유저는 로봇(들)을 물리적으로 호출할 수 없다.
따라서, 로봇 트레이 또는 컨덕터 API에 도달하지 않고도 하나 이상의 로봇을 호출하는 것이 유리할 수도 있다.
본 발명의 소정의 실시형태는 현재의 RPA 기술에 의해 아직 완전히 식별, 인식, 또는 해결되지 않은 본 기술 분야에서의 문제점 및 요구에 대한 솔루션을 제공할 수도 있다. 예를 들면, 본 발명의 몇몇 실시형태는 하나 이상의 애플리케이션으로부터 하나 이상의 로봇 프로세스를 호출하는 것에 관한 것이다.
한 실시형태에서, 컴퓨터 구현 방법은 컴퓨팅 시스템으로부터 애플리케이션을 론칭(launching)하여 애플리케이션 내에 임베딩된 로봇 링크를 호출하는 것을 포함한다. 방법은 또한, 포트, 포트 세부 사항, 및 토큰을 식별하기 위해 애플리케이션으로부터 포트 디스커버리 프로세스(port discovery process)를 개시하는 것을 포함할 수도 있다. 방법은 애플리케이션에 의해 랜덤화된 코드(randomized code)를 생성하는 것 및 애플리케이션으로부터 로봇을 호출하기 위해 컴퓨팅 시스템의 유저에게 승인을 요청하는 동의 애플리케이션(consent application)을 호출하는 것뿐만 아니라, 랜덤화된 코드를 로컬 리스너 모듈(local listener module)에 등록하는 것 및 유저 정보 및 토큰을 글로벌 리스너 모듈(global listener module)로 전달하는 것을 더 포함할 수도 있다. 방법은 또한, 글로벌 리스너 모듈로부터 토큰 및 포트 신분 증명서(port identification)를 수신하는 것을 포함하여, 애플리케이션이 로봇을 사용해 그 자신을 인증시키는 것, 및 로봇과 통신하는 것을 허용하고, 그에 의해, 로봇 상호 작용 프로세스를 용이하게 할 수도 있다.
다른 실시형태에서, 컴퓨터 프로그램은 비일시적 컴퓨터 판독 가능 매체 상에서 구체화된다. 컴퓨터 프로그램은, 적어도 하나의 프로세서로 하여금, 컴퓨팅 시스템으로부터 애플리케이션을 론칭하게 하여 애플리케이션 내에 임베딩된 로봇 링크를 호출하도록 구성된다. 컴퓨터 프로그램은 또한, 적어도 하나의 프로세서로 하여금, 포트, 포트 세부 사항, 및 토큰을 식별하기 위해 애플리케이션으로부터 포트 디스커버리 프로세스를 개시하게 하도록 구성된다. 컴퓨터 프로그램은 또한, 적어도 하나의 프로세서로 하여금, 애플리케이션에 의해 랜덤화된 코드를 생성하게 하고 애플리케이션으로부터 로봇을 호출하기 위해 컴퓨팅 시스템의 유저에게 승인을 요청하는 동의 애플리케이션을 호출하게 하도록 구성된다. 추가적으로, 컴퓨터 프로그램은 또한, 적어도 하나의 프로세서로 하여금, 랜덤화된 코드를 로컬 리스너 모듈에 등록하게 하고 유저 정보 및 토큰을 글로벌 리스너 모듈로 전달하게 하도록, 그리고 글로벌 리스너 모듈로부터 토큰 및 포트 신분 증명서를 수신하게 하도록 구성되어, 애플리케이션이 로봇을 사용해 그 자신을 인증시키는 것, 및 로봇과 통신하는 것을 허용하고, 그에 의해, 로봇 상호 작용 프로세스를 용이하게 한다.
또 다른 실시형태에서, 시스템은 컴퓨터 프로그램 명령어를 저장하는 메모리, 및 컴퓨터 프로그램 명령어를 실행하도록 구성되는 적어도 하나의 프로세서를 포함한다. 명령어는, 적어도 하나의 프로세서로 하여금, 컴퓨팅 시스템으로부터 애플리케이션을 론칭하게 하여 애플리케이션 내에 임베딩된 로봇 링크를 호출하도록 구성된다. 명령어는 또한, 적어도 하나의 프로세서로 하여금, 포트, 포트 세부 사항, 및 토큰을 식별하기 위한 포트 디스커버리 프로세스를 애플리케이션으로부터 개시하게 하도록, 그리고 애플리케이션에 의해 랜덤화된 코드를 생성하고 애플리케이션으로부터 로봇을 호출하기 위해 컴퓨팅 시스템의 유저에게 승인을 요청하는 동의 애플리케이션을 호출하게 하도록 구성된다. 명령어는 또한, 적어도 하나의 프로세서로 하여금, 랜덤화된 코드를 로컬 리스너 모듈에 등록하여 유저 정보 및 토큰을 글로벌 리스너 모듈로 전달하게 하도록, 그리고 글로벌 리스너 모듈로부터 토큰 및 포트 신분 증명서를 수신하게 하도록 구성되어, 애플리케이션이 로봇을 사용해 그 자신을 인증시키는 것, 및 로봇과 통신하는 것을 허용하고, 그에 의해, 로봇 상호 작용 프로세스를 용이한다.
본 발명의 소정의 실시형태의 이점이 쉽게 이해되도록, 첨부된 도면에서 예시되는 특정한 실시형태에 대한 참조에 의해 상기에서 간략하게 설명되는 본 발명의 보다 구체적인 설명이 제공될 것이다. 이들 도면이 본 발명의 통상적인 실시형태만을 묘사하며 따라서 그 범위를 제한하는 것으로 간주되지 않는다는 것이 이해되어야 하지만, 본 발명은 첨부하는 도면의 사용을 통해 추가적으로 특이하게 그리고 상세하게 기술되고 설명될 것인데, 첨부하는 도면에서:
도 1은, 본 발명의 한 실시형태에 따른, RPA 시스템을 예시하는 아키텍쳐 다이어그램이다.
도 2는, 본 발명의 한 실시형태에 따른, 배치된 RPA 시스템을 예시하는 아키텍쳐 다이어그램이다.
도 3은, 본 발명의 한 실시형태에 따른, 디자이너(designer), 활동, 및 드라이버 사이의 관계를 예시하는 아키텍쳐 다이어그램이다.
도 4는, 본 발명의 한 실시형태에 따른, RPA 시스템을 예시하는 아키텍쳐 다이어그램이다.
도 5는, 본 발명의 한 실시형태에 따른, 애플리케이션으로부터 로봇을 호출하도록 구성되는 컴퓨팅 시스템을 예시하는 아키텍쳐 다이어그램이다.
도 6은, 본 발명의 한 실시형태에 따른, 하나 이상의 세션과 로봇 트레이 사이에서 통신하기 위한 데스크탑 구성을 예시하는 블록도이다.
도 7은, 본 발명의 한 실시형태에 따른, 포트 디스커버리 프로세스를 예시하는 흐름도이다.
도 8은, 본 발명의 한 실시형태에 따른, 인증 프로세스를 예시하는 흐름도이다.
도 9는, 본 발명의 한 실시형태에 따른, 로봇 서비스 상호 작용 프로세스를 예시하는 흐름도이다.
도 10은, 본 발명의 한 실시형태에 따른, 로봇 상호 작용 프로세스를 촉진하기 위한 프로세스를 예시하는 흐름도이다.
몇몇 실시형태는 로봇 프로세스 자동화(RPA)를 위한 하나 이상의 애플리케이션으로부터 하나 이상의 로봇을 호출하는 것에 관한 것이다. 애플리케이션은, 브라우저 상에서 임베딩될 수 있는 또는 하이퍼텍스트 마크업 언어(Hypertext Markup Language; HTML) 및 자바스크립트(JavaScript; JS) 코드를 실행할 수 있는 머신 상의 임의의 애플리케이션으로서 정의될 수도 있다. 다시 말하면, 애플리케이션은 "웹 기반의 애플리케이션"으로 제한되지 않으며, 로봇을 호출하기 위해 사용될 수 있는 임의의 애플리케이션일 수도 있다. 설명의 목적을 위해, 용어 "애플리케이션"이 사용될 것이다. 소정의 실시형태에서, 로봇을 호출하기 위해 사용될 수도 있는 애플리케이션은, 신뢰되지 않는 도메인으로부터 유래할 수도 있다. 몇몇 실시형태에서, 로봇 링크는 하나 이상의 애플리케이션에 임베딩되어, 하나 이상의 로봇이 호출되는 것을 허용한다. 한 실시형태에서, 컴퓨팅 시스템의 유저는 애플리케이션 내에 임베딩된 로봇 링크를 호출하기 위한 애플리케이션을 론칭한다. 애플리케이션으로부터, 포트, 포트 세부 사항, 및 토큰을 식별하기 위해 포트 디스커버리 프로세스가 개시될 수도 있다. 그 다음, 애플리케이션은 랜덤화된 코드를 생성할 수도 있고 애플리케이션으로부터 로봇을 호출하기 위해 컴퓨팅 시스템의 유저에게 승인을 요청하는 동의 애플리케이션을 호출할 수도 있다. 랜덤화된 코드는 로컬 리스너 모듈에 등록될 수도 있고, 유저 정보 및 토큰은 글로벌 리스너 모듈로 포워딩될 수도 있다. 토큰 및 포트 신분 증명서는 글로벌 리스너 모듈로부터 수신될 수도 있어서, 애플리케이션이 로봇을 사용해 그 자신을 인증시키는 것 및 로봇과 통신하는 것을 허용할 수도 있다.
도 1은, 본 발명의 한 실시형태에 따른, RPA 시스템(100)을 예시하는 아키텍쳐 다이어그램이다. RPA 시스템(100)은 개발자가 워크플로우를 설계 및 구현하는 것을 허용하는 디자이너(110)를 포함한다. 디자이너(110)는 애플리케이션 통합뿐만 아니라, 써드파티 애플리케이션, 관리 정보 기술(Information Technology; IT) 태스크, 및 비즈니스 IT 프로세스를 자동화하기 위한 솔루션을 제공할 수도 있다. 디자이너(110)는 비즈니스 프로세스의 그래픽 표현인 자동화 프로젝트(automation project)의 개발을 용이하게 할 수도 있다. 간단히 말하면, 디자이너(110)는 워크플로우 및 로봇의 개발 및 배치를 용이하게 한다.
자동화 프로젝트는 개발자에게 실행 순서의 제어 및, 본원에서 "활동(activity)"으로 정의되는, 워크플로우에서 개발되는 커스텀 세트의 단계 사이의 관계를 제공하는 것에 의해 규칙 기반의 프로세스의 자동화를 가능하게 한다. 디자이너(110)의 실시형태의 하나의 상업적인 예는 UiPath Studio™(유아이패스 스튜디오)이다. 각각의 활동은, 버튼 클릭, 파일 판독, 로그 패널에 대한 기록, 등등과 같은 액션을 포함할 수도 있다. 몇몇 실시형태에서, 워크플로우는 네스트화되거나 또는 임베딩될 수도 있다.
몇몇 타입의 워크플로우는 시퀀스, 플로우차트, 유한 상태 머신(Finite State Machine; FSM), 및/또는 전역적 예외 핸들러를 포함할 수도 있지만 그러나 이들로 제한되지는 않는다. 시퀀스는 선형 프로세스에 특히 적합할 수도 있어서, 워크플로우를 흩뜨리지 않으면서 하나의 활동으로부터 다른 활동으로의 흐름을 가능하게 할 수도 있다. 플로우차트는 더욱 복잡한 비즈니스 로직에 특히 적합할 수도 있어서, 다수의 분기 로직 연산자를 통해 의사 결정의 통합 및 활동의 연결을 더욱 다양한 방식으로 가능하게 할 수도 있다. FSM은 대규모 워크플로우에 특히 적합할 수도 있다. FSM은, 조건(즉, 이행(transition)) 또는 활동에 의해 트리거되는 유한한 수의 상태를 그들의 실행에서 사용할 수도 있다. 전역적 예외 핸들러는, 실행 에러를 조우하는 경우 워크플로우 거동을 결정하는 데 그리고 프로세스를 디버깅하는 데 특히 적합할 수도 있다.
일단 워크플로우가 디자이너(110)에서 개발되면, 비즈니스 프로세스의 실행은 컨덕터(120)에 의해 편성되는데(orchestrate), 컨덕터(120)는, 디자이너(110)에서 개발되는 워크플로우를 실행하는 하나 이상의 로봇(130)을 편성한다. 컨덕터(120)의 실시형태의 하나의 상업적인 예는 UiPath Orchestrator™(유아이패쓰 오케스터레이터)이다. 컨덕터(120)는 한 환경에서의 리소스의 생성, 모니터링 및 배치의 관리를 용이하게 한다. 컨덕터(120)는 또한 써드파티 솔루션 및 애플리케이션과의 통합 지점으로서 역할을 할 수도 있다.
컨덕터(120)는 일단의(a fleet of) 로봇(130)을 관리할 수도 있어서, 중앙 집중식 지점으로부터 로봇(130)을 연결하고 실행할 수도 있다. 관리될 수도 있는 로봇(130)의 타입은, 유인 로봇(attended robot; 132), 무인 로봇(unattended robot; 134), 개발 로봇(무인 로봇(134)과 유사하지만, 그러나 개발 및 테스트 목적을 위해 사용됨), 및 비생산 로봇(nonproduction robot)(유인 로봇(132)과 유사하지만, 그러나 개발 및 테스트 목적을 위해 사용됨)을 포함하지만, 그러나 이들로 제한되지는 않는다. 유인 로봇(132)은 유저 이벤트에 의해 트리거되고 동일한 컴퓨팅 시스템 상에서 사람 옆에서 동작한다. 유인 로봇(132)은 중앙 집중식 프로세스 배치 및 로깅 매체(logging medium)를 위해 컨덕터(120)와 함께 사용될 수도 있다. 유인 로봇(132)은 인간 유저가 다양한 태스크를 수행하는 것을 도울 수도 있고, 유저 이벤트에 의해 트리거될 수도 있다. 몇몇 실시형태에서, 프로세스는 이러한 타입의 로봇 상에서 컨덕터(120)로부터 시작될 수 없고 및/또는 그들은 잠금 화면(locked screen) 하에서 실행될 수 없다. 소정의 실시형태에서, 유인 로봇(132)은 오직 로봇 트레이로부터 또는 커맨드 프롬프트로부터 시작될 수 있다. 몇몇 실시형태에서, 유인 로봇(132)은 인간의 감독 하에서 실행되어야 한다.
무인 로봇(134)은 가상 환경에서 무인으로(unattended) 실행되며 많은 프로세스를 자동화할 수 있다. 무인 로봇(134)은 원격 실행, 모니터링, 스케줄링, 및 작업 큐에 대한 지원의 제공을 담당할 수도 있다. 모든 로봇 타입에 대한 디버깅은 몇몇 실시형태에서 디자이너(110)에서 실행될 수도 있다. 유인 및 무인 로봇 둘 모두는, 메인 프레임, 웹 애플리케이션, VM, 엔터프라이즈 애플리케이션(예를 들면, SAP®, SalesForce®(세일즈포스), Oracle®(오라클), 등등에 의해 생성되는 애플리케이션), 및 컴퓨팅 시스템 애플리케이션(예를 들면, 데스크탑 및 랩탑 애플리케이션, 모바일 디바이스 애플리케이션, 웨어러블 컴퓨터 애플리케이션, 등등)을 포함하는, 그러나 이들로 제한되지는 않는 다양한 시스템 및 애플리케이션을 자동화할 수도 있다.
컨덕터(120)는, 프로비저닝(provisioning), 배치, 구성, 큐잉, 모니터링, 로깅, 및/또는 상호 연결성의 제공을 포함하는, 그러나 이들로 제한되지는 않는 다양한 성능을 가질 수도 있다. 프로비저닝은 로봇(130)과 컨덕터(120)(예를 들면, 웹 애플리케이션) 사이의 연결의 생성 및 유지 보수를 포함할 수도 있다. 배치는 실행을 위한 할당된 로봇(130)에 패키지 버전의 정확한 전달을 보장하는 것을 포함할 수도 있다. 구성은 로봇 환경 및 프로세스 구성의 유지 보수 및 전달을 포함할 수도 있다. 큐잉은 큐 및 큐 아이템의 관리를 제공하는 것을 포함할 수도 있다. 모니터링은 로봇 식별 데이터를 계속 추적하는 것 및 유저 퍼미션을 유지하는 것을 포함할 수도 있다. 로깅은 데이터베이스(예를 들면, SQL 데이터베이스) 및/또는 다른 스토리지 메커니즘(예를 들면, 대규모 데이터세트를 저장하고 빠르게 조회하는 능력을 제공하는 ElasticSearch®(엘라스틱서치))에 로그를 저장하고 인덱싱하는 것을 포함할 수도 있다. 컨덕터(120)는 써드파티 솔루션 및/또는 애플리케이션에 대한 통신의 중앙 집중식 포인트로서 작용하는 것에 의해 상호 연결성을 제공할 수도 있다.
로봇(130)은 디자이너(110)에 내장되는 워크플로우를 실행하는 실행 에이전트이다. 로봇(들)(130)의 몇몇 실시형태의 하나의 상업적인 예는 UiPath Robots™(유아이패쓰 로봇)이다. 몇몇 실시형태에서, 로봇(130)은, 디폴트로, Microsoft Windows®(마이크로소프트 윈도우즈) 서비스 제어 관리자(Service Control Manager; SCM) 관리 서비스를 설치한다. 결과적으로, 그러한 로봇(130)은 로컬 시스템 계정 하에서 상호 작용식 Windows®(윈도우즈) 세션을 열 수 있고, Windows® 서비스의 권한을 가질 수 있다.
몇몇 실시형태에서, 로봇(130)은 유저 모드에서 설치될 수 있다. 그러한 로봇(130)의 경우, 이것은, 그들이 주어진 로봇(130)이 설치되었던 유저와 동일한 권리를 갖는다는 것을 의미한다. 이 피쳐는 고밀도(High Density; HD) 로봇에 대해서도 또한 이용 가능할 수도 있는데, 이 피쳐는 각각의 머신의 최대 전원에서 각각의 머신의 완전한 활용을 보장한다. 몇몇 실시형태에서, 임의의 타입의 로봇(130)은 HD 환경에서 구성될 수도 있다.
몇몇 실시형태에서 로봇(130)은 여러 가지 컴포넌트로 분할되는데, 각각은 특정한 자동화 태스크에 전용된다. 몇몇 실시형태에서 로봇 컴포넌트는, SCM 관리 로봇 서비스, 유저 모드 로봇 서비스, 실행기(executor), 에이전트, 및 커맨드 라인을 포함하지만 그러나 이들로 제한되지는 않는다. SCM 관리 로봇 서비스는 Windows® 세션을 관리 및 모니터링하고 컨덕터(120)와 실행 호스트(즉, 로봇(130)이 실행되는 컴퓨팅 시스템) 사이의 프록시로서 역할을 한다. 이들 서비스는 로봇(130)에 대한 자격 증명(credential)을 사용하여 신뢰되고 그 자격 증명을 관리한다. 콘솔 애플리케이션은 로컬 시스템 하에서 SCM에 의해 론칭된다.
몇몇 실시형태에서 유저 모드 로봇 서비스는 Windows® 세션을 관리 및 모니터링하고 컨덕터(120)와 실행 호스트 사이의 프록시로서 역할을 한다. 유저 모드 로봇 서비스는 로봇(130)에 대한 자격 증명을 사용하여 신뢰될 수도 있고 그 자격 증명을 관리할 수도 있다. SCM 관리 로봇 서비스가 설치되지 않은 경우 Windows® 애플리케이션이 자동적으로 론칭될 수도 있다.
실행기는 Windows® 세션 하에서 주어진 작업을 실행할 수도 있다(즉, 그들은 워크플로우를 실행할 수도 있다). 실행기는 모니터마다의 인치당 도트(dots per inch; DPI) 설정을 알고 있을 수도 있다. 에이전트는 시스템 트레이 윈도우(system tray window)에서 이용 가능한 작업을 디스플레이하는 Windows® 프리젠테이션 파운데이션(Windows® Presentation Foundation; WPF) 애플리케이션일 수도 있다. 에이전트는 서비스의 클라이언트일 수도 있다. 에이전트는 작업을 시작 또는 중지할 것을 그리고 설정을 변경할 것을 요청할 수도 있다. 커맨드 라인은 서비스의 클라이언트이다. 커맨드 라인은, 작업을 시작할 것을 요청할 수 있고 그들의 출력을 대기하는 콘솔 애플리케이션이다.
상기에서 설명되는 바와 같이 로봇(130)의 컴포넌트를 분할하는 것은, 개발자가 유저를 지원하는 것, 및 컴퓨팅 시스템이 각각의 컴포넌트가 실행하고 있는 것을 더욱 쉽게 실행하고, 식별하고 추적하는 것을 돕는다. 실행기 및 서비스에 대해 상이한 방화벽 규칙을 셋업하는 것과 같은 방식으로, 컴포넌트마다 특수한 거동이 구성될 수도 있다. 실행기는 몇몇 실시형태에서 모니터마다의 DPI 설정을 항상 인식할 수도 있다. 결과적으로, 워크플로우는, 그들이 생성되었던 컴퓨팅 시스템의 구성에 관계없이, 임의의 DPI에서 실행될 수도 있다. 디자이너(110)로부터의 프로젝트는 또한, 몇몇 실시형태에서, 브라우저 줌 레벨과 무관할 수도 있다. DPI를 알지 못하는 또는 알지 못하는 것으로 의도적으로 마킹되는 애플리케이션의 경우, 몇몇 실시형태에서, DPI는 디스에이블될 수도 있다.
도 2는, 본 발명의 한 실시형태에 따른, 배치된 RPA 시스템(200)을 예시하는 아키텍쳐 다이어그램이다. 몇몇 실시형태에서, RPA 시스템(200)은 도 1의 RPA 시스템(100)일 수도 있거나 또는 그 일부일 수도 있다. 클라이언트 측, 서버 측, 또는 둘 모두는 본 발명의 범위를 벗어나지 않으면서 임의의 소망되는 수의 컴퓨팅 시스템을 포함할 수도 있다는 것을 유의해야 한다. 클라이언트 측에서, 로봇 애플리케이션(210)은 실행기(212), 에이전트(214), 및 디자이너(216)를 포함한다. 그러나, 몇몇 실시형태에서, 디자이너(216)는 컴퓨팅 시스템(210) 상에서 실행되고 있지 않을 수도 있다. 실행기(212)는 프로세스를 실행하고 있다. 도 2에서 도시되는 바와 같이, 여러 비즈니스 프로젝트가 동시에 실행될 수도 있다. 에이전트(214)(예를 들면, Windows® 서비스)는 이 실시형태에서 모든 실행기(212)에 대한 단일의 접촉 포인트이다. 이 실시형태의 모든 메시지는 컨덕터(230)에 로깅되는데, 컨덕터(230)는 데이터베이스 서버(240), 인덱서 서버(indexer server)(250) 또는 둘 모두를 통해 그들을 추가로 프로세싱한다. 도 1과 관련하여 상기에서 논의되는 바와 같이, 실행기(212)는 로봇 컴포넌트일 수도 있다.
소정의 실시형태에서, 디자이너(216)는 프로세스 상에서 입력 및 출력을 셋업하기 위해 사용된다. 이들 입력 및 출력은 에이전트(214)를 통해 실행기(212)에 의해 핸들링될 수도 있다. 게다가, 입력 및 출력은 초기화 동안 워크플로우와 통신하고 실행 동안 또는 실행의 완료 이후에 결과를 수신하기 위한 메커니즘을 형성한다.
몇몇 실시형태에서, 로봇은 머신 이름과 유저명 사이의 관련화(association)를 나타낸다. 로봇은 동시에 다수의 실행기를 관리할 수도 있다. 동시에 실행되는 다수의 상호 작용식 세션을 지원하는 컴퓨팅 시스템(예를 들면, Windows® Server(윈도우즈 서버) 2012) 상에서, 다수의 로봇이 동시에 실행될 수도 있는데, 각각은 고유의 유저명을 사용하여 별개의 Windows® 세션 내에 있다. 이것은 상기에서 HD 로봇으로 지칭된다.
에이전트(214)는 또한, 로봇의 상태를 전송하는 것(예를 들면, 로봇이 여전히 기능하고 있다는 것을 나타내는 "하트비트(heartbeat)" 메시지를 주기적으로 전송함) 및 실행될 패키지의 필요한 버전을 다운로드하는 것을 담당한다. 에이전트(214)와 컨덕터(230) 사이의 통신은 몇몇 실시형태에서 에이전트(214)에 의해 항상 개시된다. 통지 시나리오에서, 에이전트(214)는, 커맨드를 로봇으로 전송하기 위해(예를 들면, 시작, 정지, 등등) 컨덕터(230)에 의해 나중에 사용되는 WebSocket(웹소켓) 채널을 개방할 수도 있다.
서버 측 상에서, 프리젠테이션 계층(웹 애플리케이션(232), 개방 데이터 프로토콜(Open Data Protocol; OData) 대표 상태 전송(Representative State Transfer; REST) 애플리케이션 프로그래밍 인터페이스(Application Programming Interface; API) 엔드포인트(234), 및 통지 및 모니터링(236)), 서비스 계층(API 구현/비즈니스 로직(238)), 및 퍼시스턴스 계층(persistence layer)(데이터베이스 서버(240) 및 인덱서 서버(250))이 포함된다. 컨덕터(230)는 웹 애플리케이션(232), OData REST API 엔드포인트(234), 통지 및 모니터링(236), 및 API 구현/비즈니스 로직(238)을 포함한다. 몇몇 실시형태에서, 유저가 컨덕터(230)의 인터페이스에서 (예를 들면, 브라우저(220)를 통해) 수행하는 대부분의 액션은 다양한 API를 호출하는 것에 의해 수행된다. 그러한 액션은, 본 발명의 범위를 벗어나지 않으면서, 로봇 상에서 작업을 시작하는 것, 큐에서 데이터를 추가/제거하는 것, 무인으로 실행할 작업을 스케줄링하는 것, 등등을 포함할 수도 있지만, 그러나, 이들로 제한되지는 않는다. 웹 애플리케이션(232)은 서버 플랫폼의 시각적 계층(visual layer)이다. 이 실시형태에서, 웹 애플리케이션(232)은 HTML 및 JS를 사용한다. 그러나, 본 발명의 범위를 벗어나지 않으면서, 임의의 소망되는 마크업 언어, 스크립트 언어, 또는 임의의 다른 포맷이 사용될 수도 있다. 유저는, 컨덕터(230)를 제어하기 위한 다양한 액션을 수행하기 위해, 이 실시형태에서 브라우저(220)를 통해 웹 애플리케이션(232)으로부터의 웹페이지와 상호 작용한다. 예를 들면, 유저는 로봇 그룹을 생성할 수도 있고, 로봇에 패키지를 할당할 수도 있고, 로봇마다 및/또는 프로세스마다 로그를 분석할 수도 있고, 로봇을 시작 및 중지할 수도 있고, 등등을 할 수도 있다.
웹 애플리케이션(232) 외에, 컨덕터(230)는 또한, OData REST API 엔드포인트(234)를 노출시키는 서비스 계층을 포함한다. 그러나, 본 발명의 범위를 벗어나지 않으면서 다른 엔드포인트가 포함될 수도 있다. REST API는 웹 애플리케이션(232) 및 에이전트(214) 둘 모두에 의해 소비된다. 에이전트(214)는 이 실시형태에서 클라이언트 컴퓨터 상의 하나 이상의 로봇의 감독자(supervisor)이다.
이 실시형태에서의 REST API는 구성, 로깅, 모니터링 및 큐잉 기능성을 포괄한다. 구성 엔드포인트는, 몇몇 실시형태에서, 애플리케이션 유저, 퍼미션, 로봇, 자산, 릴리스, 및 환경을 정의하고 구성하기 위해 사용될 수도 있다. 로깅 REST 엔드포인트는, 예를 들면, 에러, 로봇에 의해 전송되는 명시적 메시지, 및 다른 환경 고유의 정보와 같은 상이한 정보를 로깅하기(log) 위해 사용될 수도 있다. 배치 REST 엔드포인트는, 작업 시작 커맨드가 컨덕터(230)에서 사용되는 경우 실행되어야 하는 패키지 버전을 조회하기 위해 로봇에 의해 사용될 수도 있다. 큐잉 REST 엔드포인트는, 큐 및 큐 아이템 관리, 예컨대 데이터를 큐에 추가하는 것, 큐로부터 트랜잭션을 획득하는 것, 트랜잭션의 상태를 설정하는 것, 등등을 담당할 수도 있다.
모니터링 REST 엔드포인트는 웹 애플리케이션(232) 및 에이전트(214)를 모니터링한다. 통지 및 모니터링 API(236)는, 에이전트(214)를 등록하기 위해, 구성 설정을 에이전트(214)에 전달하기 위해, 그리고 서버 및 에이전트(214)로부터의 통지를 전송/수신하기 위해 사용되는 REST 엔드포인트일 수도 있다. 통지 및 모니터링 API(236)는 또한, 몇몇 실시형태에서, 웹소켓 통신을 사용할 수도 있다.
퍼시스턴스 계층은 이 실시형태에서 한 쌍의 서버 - 데이터베이스 서버(240)(예를 들면, SQL 서버) 및 인덱서 서버(250) - 를 포함한다. 이 실시형태에서의 데이터베이스 서버(240)는 로봇, 로봇 그룹, 관련된 프로세스, 유저, 역할, 스케줄, 등등의 구성을 저장한다. 이 정보는 몇몇 실시형태에서 웹 애플리케이션(232)을 통해 관리된다. 데이터베이스 서버(240)는 큐 및 큐 아이템을 관리할 수도 있다. 몇몇 실시형태에서, 데이터베이스 서버(240)는 (인덱서 서버(250)에 추가하여 또는 그것을 대신하여) 로봇에 의해 로깅되는 메시지를 저장할 수도 있다.
몇몇 실시형태에서 옵션 사항인(optional) 인덱서 서버(250)는 로봇에 의해 로깅되는 정보를 저장 및 인덱싱한다. 소정의 실시형태에서, 인덱서 서버(250)는 구성 설정을 통해 디스에이블될 수도 있다. 몇몇 실시형태에서, 인덱서 서버(250)는 오픈 소스 프로젝트 풀텍스트 검색 엔진(open source project full-text search engine)인 ElasticSearch®를 사용한다. (예를 들면, 메시지 로깅(log message) 또는 라인 기록(write line)과 같은 활동을 사용하여) 로봇에 의해 로깅되는 메시지는 로깅 REST 엔드포인트(들)를 통해 인덱서 서버(250)로 전송될 수도 있는데, 여기서 그들은 미래의 활용을 위해 인덱싱된다.
도 3은, 본 발명의 한 실시형태에 따른, 디자이너(310), 활동(320, 330), 및 드라이버(340) 사이의 관계(300)를 예시하는 아키텍쳐 다이어그램이다. 상기에 따르면, 개발자는 디자이너(310)를 사용하여 로봇에 의해 실행되는 워크플로우를 개발한다. 워크플로우는 유저 정의 활동(320) 및 UI 자동화 활동(330)을 포함할 수도 있다. 몇몇 컴퓨터 비전(computer vision; CV) 활동은, 클릭, 타이핑(type), 텍스트 가져오기(get text), 호버링(hover), 엘리먼트 존재, 리프레시 범위, 하이라이트, 등등을 포함할 수도 있지만, 그러나 이들로 제한되지는 않는다. 몇몇 실시형태에서의 클릭은, 예를 들면, CV, 광학 문자 인식(optical character recognition; OCR), 퍼지 텍스트 매칭, 및 멀티 앵커(multi-anchor)를 사용하여 엘리먼트를 식별하고, 그것을 클릭한다. 타이핑은 상기의 것을 사용하여 엘리먼트를 식별할 수도 있고 그 엘리먼트에서 타이핑한다. 텍스트 가져오기는 특정한 텍스트의 위치를 식별하고 OCR을 사용하여 그것을 스캔할 수도 있다. 호버링은 엘리먼트를 식별하고 그 위에서 호버링할 수도 있다. 엘리먼트 존재는 상기에서 설명되는 기술을 사용하여 화면 상에 엘리먼트가 존재하는지의 여부를 체크할 수도 있다. 몇몇 실시형태에서, 디자이너(310)에서 구현될 수 있는 수 백 또는 심지어 수 천 개의 활동이 있을 수도 있다. 그러나, 본 발명의 범위를 벗어나지 않으면서 임의의 수 및/또는 타입의 활동이 이용 가능할 수도 있다.
UI 자동화 활동(330)은, 하위 레벨 코드로 기록되는 특수한 하위 레벨 활동(예를 들면, CV 활동)의 서브세트이며 화면과의 상호 작용을 용이하게 한다. UI 자동화 활동(330)은, 로봇이 소망되는 소프트웨어와 상호 작용하는 것을 허용하는 드라이버(340)를 통해 이들 상호 작용을 용이하게 한다. 예를 들면, 드라이버(340)는 OS 드라이버(342), 브라우저 드라이버(344), VM 드라이버(346), 엔터프라이즈 애플리케이션 드라이버(348), 등등을 포함할 수도 있다.
드라이버(340)는 후크를 찾는, 키를 모니터링하는, 등등을 하는 낮은 레벨에서 OS와 상호 작용할 수도 있다. 그들은 Chrome®(크롬), IE®, Citrix®(시트릭스), SAP®, 등등과의 통합을 용이하게 할 수도 있다. 예를 들면, "click(클릭)" 활동은 드라이버(340)를 통해 이들 상이한 애플리케이션에서 동일한 역할을 수행한다.
도 4는, 본 발명의 한 실시형태에 따른, RPA 시스템(400)을 예시하는 아키텍쳐 다이어그램이다. 몇몇 실시형태에서, RPA 시스템(400)은 도 1 및/또는 도 2의 RPA 시스템(100 및/또는 200)일 수도 있거나 또는 그들을 포함할 수도 있다. RPA 시스템(400)은 로봇을 실행하는 다수의 클라이언트 컴퓨팅 시스템(410)을 포함한다. 컴퓨팅 시스템(410)은 컨덕터 컴퓨팅 시스템(420)과 그 상에서 실행되는 웹 애플리케이션을 통해 통신할 수 있다. 컨덕터 컴퓨팅 시스템(420)은, 결국에는, 데이터베이스 서버(430) 및 옵션 사항인 인덱서 서버(440)와 통신할 수 있다.
도 2 및 도 3과 관련하여, 웹 애플리케이션이 이들 실시형태에서 사용되는 동안, 본 발명의 범위를 벗어나지 않으면서 임의의 적절한 클라이언트/서버 소프트웨어가 사용될 수도 있다는 것을 유의해야 한다. 예를 들면, 컨덕터는 클라이언트 컴퓨팅 시스템 상의 웹 기반이 아닌 클라이언트 소프트웨어 애플리케이션과 통신하는 서버 측 애플리케이션을 실행할 수도 있다.
도 5는, 본 발명의 한 실시형태에 따른, 하나 이상의 애플리케이션으로부터 로봇을 호출하도록 구성되는 컴퓨팅 시스템(500)을 예시하는 아키텍쳐 다이어그램이다. 몇몇 실시형태에서, 컴퓨팅 시스템(500)은 본원에서 묘사되는 및/또는 설명되는 컴퓨팅 시스템 중 하나 이상일 수도 있다. 컴퓨팅 시스템(500)은 정보를 전달하기 위한 버스(505) 또는 다른 통신 메커니즘, 및 정보를 프로세싱하기 위한 버스(505)에 커플링되는 프로세서(들)(510)를 포함한다. 프로세서(들)(510)는 중앙 프로세싱 유닛(Central Processing Unit; CPU), 주문형 집적 회로(Application Specific Integrated Circuit; ASIC), 필드 프로그래머블 게이트 어레이(Field Programmable Gate Array; FPGA), 그래픽 프로세싱 유닛(Graphics Processing Unit; GPU), 이들의 다수의 인스턴스, 및/또는 이들의 임의의 조합을 비롯한, 임의의 타입의 범용 또는 특수 목적의 프로세서일 수도 있다. 프로세서(들)(510)는 또한 다수의 프로세싱 코어를 가질 수도 있고, 코어 중 적어도 일부는 특수 기능을 수행하도록 구성될 수도 있다. 몇몇 실시형태에서, 다중 병렬 프로세싱이 사용될 수도 있다. 소정의 실시형태에서, 프로세서(들)(510) 중 적어도 하나는 생물학적 뉴런을 모방하는 프로세싱 엘리먼트를 포함하는 뉴로모픽 회로(neuromorphic circuit)일 수도 있다. 몇몇 실시형태에서, 뉴로모픽 회로는 폰 노이만(Von Neumann) 컴퓨팅 아키텍쳐의 통상적인 컴포넌트를 요구하지 않을 수도 있다.
컴퓨팅 시스템(500)은 프로세서(들)(510)에 의해 실행될 정보 및 명령어를 저장하기 위한 메모리(515)를 더 포함한다. 메모리(515)는 랜덤 액세스 메모리(Random Access Memory; RAM), 리드 온리 메모리(Read Only Memory; ROM), 플래시 메모리, 캐시, 자기 또는 광학 디스크와 같은 정적 스토리지, 또는 임의의 다른 타입의 비일시적 컴퓨터 판독 가능 매체 또는 이들의 조합의 임의의 조합으로 구성될 수 있다. 비일시적 컴퓨터 판독 가능 매체는 프로세서(들)(510)에 의해 액세스될 수 있는 임의의 이용 가능한 매체일 수도 있고, 휘발성 매체, 불휘발성 매체, 또는 둘 모두를 포함할 수도 있다. 매체는 또한 착탈식일 수도 있거나, 비착탈식일 수도 있거나, 또는 둘 모두일 수도 있다.
추가적으로, 컴퓨팅 시스템(500)은, 무선 및/또는 유선 연결을 통해 통신 네트워크에 대한 액세스를 제공하기 위해, 트랜스시버와 같은 통신 디바이스(520)를 포함한다. 몇몇 실시형태에서, 통신 디바이스(520)는, 주파수 분할 다중 액세스(Frequency Division Multiple Access; FDMA), 싱글 캐리어 FDMA(Single Carrier FDM; SC-FDMA), 시분할 다중 액세스(Time Division Multiple Access; TDMA), 코드 분할 다중 액세스(Code Division Multiple Access; CDMA), 직교 주파수 분할 멀티플렉싱(Orthogonal Frequency Division Multiplexing; OFDM), 직교 주파수 분할 다중 액세스(Orthogonal Frequency Division Multiple Access; OFDMA), 이동 통신용 글로벌 시스템(Global System for Mobile communications; GSM), 일반 패킷 무선 서비스(General Packet Radio Service; GPRS), 범용 이동 통신 시스템(Universal Mobile Telecommunications System; UMTS), cdma2000, 광대역 CDMA(Wideband CDMA; W-CDMA), 고속 다운링크 패킷 액세스(High-Speed Downlink Packet Access; HSDPA), 고속 업링크 패킷 액세스(High-Speed Uplink Packet Access; HSUPA), 고속 패킷 액세스(High-Speed Packet Access; HSPA), 롱 텀 에볼루션(Long Term Evolution; LTE), LTE 어드밴스드(LTE Advanced; LTE-A), 802.11x, Wi-Fi(와이파이), Zigbee(지그비), 초광대역(Ultra-WideBand; UWB), 802.16x, 802.15, 홈 Node-B(Home Node-B; HnB), Bluetooth(블루투스), 무선 주파수 식별(Radio Frequency Identification; RFID), 적외선 데이터 연합(Infrared Data Association; IrDA), 근접장 통신(Near-Field Communications; NFC), 5 세대(5G), 뉴 라디오(New Radio; NR), 이들의 임의의 조합, 및/또는 본 발명의 범위를 벗어나지 않는 임의의 다른 현재 존재하는 또는 미래에 구현될 통신 표준 및/또는 프로토콜을 사용하도록 구성될 수도 있다. 몇몇 실시형태에서, 통신 디바이스(520)는 본 발명의 범위를 벗어나지 않으면서 단일식(singular), 배열식(arrayed), 위상식(phased), 스위치식(switched), 빔포밍(beamforming), 빔조향(beamsteering), 이들의 조합 및 또는 임의의 다른 안테나 구성인 하나 이상의 안테나를 포함할 수도 있다.
프로세서(들)(510)는, 버스(505)를 통해, 플라즈마 디스플레이, 액정 디스플레이(Liquid Crystal Display; LCD), 발광 다이오드(Light Emitting Diode; LED) 디스플레이, 전계 방출 디스플레이(Field Emission Display; FED), 유기 발광 다이오드(Organic Light Emitting Diode; OLED) 디스플레이, 플렉시블 OLED 디스플레이, 플렉시블 기판 디스플레이, 프로젝션 디스플레이, 4K 디스플레이, 고선명 디스플레이, Retina®(레티나) 디스플레이, 인 플레인 스위칭(In-Plane Switching; IPS) 디스플레이, 또는 정보를 유저에게 디스플레이하기 위한 임의의 다른 적절한 디스플레이와 같은 디스플레이(525)에 추가로 커플링된다. 디스플레이 (525)는, 저항성, 용량성, 표면 탄성파(surface-acoustic wave; SAW) 용량성, 적외선, 광학 이미징, 분산 신호 기술, 음향 펄스 인식, 불완전 내부 전반사(frustrated total internal reflection), 등등을 사용하여 터치(햅틱) 디스플레이, 삼차원(three dimensional; 3D) 터치 디스플레이, 멀티 입력 터치 디스플레이, 멀티 터치 디스플레이, 등등으로서 구성될 수도 있다. 임의의 적절한 디스플레이 디바이스 및 햅틱 I/O가 본 발명의 범위를 벗어나지 않으면서 사용될 수도 있다.
키보드(530) 및 커서 제어 디바이스(535), 예컨대 컴퓨터 마우스, 터치패드, 등등은 유저가 컴퓨팅 시스템과 인터페이싱하는 것을 가능하게 하기 위해 버스(505)에 추가로 커플링된다. 그러나, 소정의 실시형태에서, 물리적 키보드 및 마우스가 존재하지 않을 수도 있고, 유저는 디스플레이(525) 및/또는 터치패드(도시되지 않음)를 통해서만 디바이스와 상호 작용할 수도 있다. 입력 디바이스의 임의의 타입 및 조합이 설계 선택의 문제로서 사용될 수도 있다. 소정의 실시형태에서, 어떠한 물리적 입력 디바이스 및/또는 디스플레이도 존재하지 않는다. 예를 들면, 유저는 컴퓨팅 시스템(500)과 통신하는 다른 컴퓨팅 시스템을 통해 컴퓨팅 시스템(500)과 원격으로 상호 작용할 수도 있거나, 또는 컴퓨팅 시스템(500)은 자율적으로 동작할 수도 있다.
메모리(515)는 프로세서(들)(510)에 의해 실행될 때 기능성을 제공하는 소프트웨어 모듈을 저장한다. 모듈은 컴퓨팅 시스템(500)을 위한 오퍼레이팅 시스템(540)을 포함한다. 모듈은 본원에서 설명되는 프로세스 또는 그 파생물의 모두 또는 일부를 수행하도록 구성되는 로봇 호출 모듈(545)을 더 포함한다. 컴퓨팅 시스템(500)은, 추가적인 기능성을 포함하는 하나 이상의 추가적인 기능 모듈(550)을 포함할 수도 있다.
기술 분야의 숙련된 자는, "시스템"이, 본 발명의 범위를 벗어나지 않으면서, 서버, 임베딩된 컴퓨팅 시스템, 퍼스널 컴퓨터, 콘솔, 개인 휴대형 정보 단말(personal digital assistant; PDA), 셀 폰, 태블릿 컴퓨팅 디바이스, 양자 컴퓨팅 시스템, 또는 임의의 다른 적절한 컴퓨팅 디바이스, 또는 디바이스의 조합으로서 구현될 수도 있다는 것을 인식할 것이다. "시스템"에 의해 수행되는 것으로 상기에서 설명된 기능을 제시하는 것은, 어떠한 방식으로든 본 발명의 범위를 제한하도록 의도되는 것이 아니라, 본 발명의 많은 실시형태의 하나의 예를 제공하도록 의도된다. 실제로, 본원에서 개시되는 방법, 시스템, 및 장치는, 클라우드 컴퓨팅 시스템을 비롯하여, 컴퓨팅 기술과 일치하는 국소화되고 분산된 형태로 구현될 수도 있다.
본 명세서에서 설명되는 시스템 피쳐 중 일부는, 그들의 구현 독립성을 특히 강조하기 위해, 모듈로서 제시되었다는 것을 유의해야 한다. 예를 들면, 모듈은 맞춤형(custom) 대규모 집적(very large scale integration; VLSI) 회로 또는 게이트 어레이, 로직 칩과 같은 기성의(off-the-shelf) 반도체, 트랜지스터, 또는 다른 별개의 컴포넌트를 포함하는 하드웨어 회로로서 구현될 수도 있다. 모듈은 또한, 필드 프로그래머블 게이트 어레이, 프로그래머블 어레이 로직, 프로그래머블 로직 디바이스, 그래픽 프로세싱 유닛, 또는 등등과 같은 프로그래머블 하드웨어 디바이스에서 구현될 수도 있다.
모듈은 또한 다양한 타입의 프로세서에 의한 실행을 위해 소프트웨어로 적어도 부분적으로 구현될 수도 있다. 실행 가능 코드의 식별된 단위는, 예를 들면, 오브젝트, 프로시져, 또는 기능(function)으로서 편제될 수도 있는, 예를 들면, 컴퓨터 명령어의 하나 이상의 물리적 또는 논리적 블록을 포함할 수도 있다. 그럼에도 불구하고, 식별된 모듈의 실행 파일은 물리적으로 함께 위치될 필요는 없지만, 그러나 논리적으로 함께 결합될 때, 모듈을 포함하며 모듈에 대한 지정된 목적을 달성하는 상이한 위치에 저장되는 별개의 명령어를 포함할 수도 있다. 게다가, 모듈은, 예를 들면, 하드 디스크 드라이브, 플래시 디바이스, RAM, 테이프, 및/또는 본 발명의 범위를 벗어나지 않으면서 데이터를 저장하기 위해 사용되는 임의의 다른 그러한 비일시적 컴퓨터 판독 가능 매체일 수도 있는 컴퓨터 판독 가능 매체 상에 저장될 수도 있다.
실제로, 실행 가능 코드의 모듈은 단일의 명령어, 또는 다수의 명령어일 수 있으며, 심지어 몇몇 상이한 코드 세그먼트에 걸쳐, 상이한 프로그램 사이에서, 그리고 몇몇 메모리 디바이스에 걸쳐 분산될 수도 있다. 유사하게, 동작 데이터는 본원에서 모듈 내에서 식별되고 예시될 수도 있으며, 임의의 적절한 형태로 구체화되고 임의의 적절한 타입의 데이터 구조 내에서 편제될 수도 있다. 동작 데이터는 단일의 데이터 세트로서 수집될 수도 있거나, 또는 상이한 저장 디바이스에 걸치는 것을 비롯하여 상이한 위치에 걸쳐 분산될 수도 있으며, 적어도 부분적으로는, 단지, 시스템 또는 네트워크 상의 전자 신호로서 존재할 수도 있다.
도 6은, 본 발명의 한 실시형태에 따른, 하나 이상의 유저 세션(602)과 로봇 트레이 사이에서 통신하기 위한 컴퓨팅 시스템의 데스크탑 구성(600)을 예시하는 블록도이다. 비록 단일의 유저 세션(602)이 이 예에서 언급될 것이지만, 데스크탑 구성(600) 상에서 실행되고 있는 다수의 세션이 있을 수도 있다.
몇몇 실시형태에서, 유저 세션(602)은 웹 브라우저(604) 상에서 실행되는 애플리케이션을 포함한다. 애플리케이션은 (예를 들면, 자바스크립트(JS) 표준 개발 키트(standard development kit; SDK)를 통해) 로봇 링크(606)와 함께 임베딩된다. 로봇 링크(606)는, 유저에게, 로봇 트레이에 도달하지 않고도 애플리케이션으로부터 로봇을 호출하는 능력을 제공한다. 소정의 실시형태에서, 로봇 링크(606)는 JS 기반의 SDK이고 애플리케이션과 프로토콜 핸들러(608), 하이퍼텍스트 전송 프로토콜(HTTP) 리스너(610), 및 HTTP 포트 디스커버리 서비스(612) 사이의 포트 디스커버리, 인증, 상호 작용 및 통신 플로우를 단순화하는 것을 담당한다. 애플리케이션이 로봇 링크(606)를 사용하지 않기로 결정하는 실시형태에서, 애플리케이션은 프로토콜 핸들러(608), HTTP 리스너(610), 및 HTTP 포트 디스커버리 서비스(612)와 직접적으로 상호 작용할 수도 있다.
로봇을 호출하기 위해, 유저는, 로봇이 액세스되는 애플리케이션을 론칭하여, 애플리케이션 내에 임베딩된 로봇 링크(606)로 하여금 로봇을 호출하게 한다. 커스텀 프로토콜 핸들러 애플리케이션 또는 동의 애플리케이션으로서 또한 지칭되는 프로토콜 핸들러(608)는 유저가 유저 세션(602)을 인증하는 것을 허용할 수도 있다. 몇몇 실시형태에서, 컴퓨팅 시스템(600)은, 머신 상의 임의의 곳으로부터 호출되는 경우 특정한 애플리케이션을 론칭할 수 있는 커스텀 프로토콜 핸들러(커스텀 URI 스킴으로 또한 알려짐)가 머신 상에 등록되는 것을 허용한다. 예를 들면, http://는 브라우저를 론칭하거나 또는 mailto://는 전자 메일 클라이언트를 론칭한다. 프로토콜 핸들러(608)는, 몇몇 실시형태에서, 설치시, 커스텀 프로토콜 핸들러를 등록할 수도 있다. 이 프로토콜은 그것을 호출하기 위해 사용될 수도 있다.
글로벌 리스너 모듈로 또한 지칭되는 HTTP 포트 디스커버리 서비스(612)는 포트의 동적 할당을 제공하기 위해 "세션 0" 에서 포트 디스커버리를 수행한다. 이들 실시형태는 HTTP 프로토콜에 제한되지 않으며, 다른 통신 채널 또는 프로토콜이 사용될 수도 있다는 것이 인식되어야 한다. 몇몇 실시형태에서, HTTP 포트 디스커버리 서비스(612)는 컴퓨터 시스템(600) 상의 잘 알려진 포트 상에서 동작한다. 이 잘 알려진 포트는 로봇 링크(606)에게 알려져 있으며 로봇 HTTP 리스너(610)의 인증 토큰 및 포트 디스커버리를 검색하기 위해 사용된다. 이들 실시형태는 HTTP 리스너에 제한되지 않으며, HTTP 이외의 다른 프로토콜이 사용될 수도 있다는 것이 인식되어야 한다. HTTP 포트 디스커버리 서비스(612)는 컴퓨팅 시스템(600)이 부팅될 때 또는 유저가 컴퓨팅 시스템(600)에 로그인할 때 자동적으로 시작되도록 설정될 수도 있다. 이러한 방식에서, HTTP 포트 디스커버리 서비스(612)는 항상 이용 가능하다.
추가적으로, 몇몇 실시형태에서, 프로토콜 핸들러(608)는 또한, HTTP 포트 디스커버리 서비스(612)가 이미 실행되고 있지 않은 경우, HTTP 포트 디스커버리 서비스(612)를 시작할 수도 있다. 그들 실시형태에서, 프로토콜 핸들러(608)는 HTTP 포트 디스커버리를 시작하기 위해 상승된 퍼미션(또는 관리자 권한)을 가질 수도 있다. 다수의 유저 세션이 컴퓨팅 시스템(600) 상에서 실행되고 있기 때문에, HTTP 포트 디스커버리 서비스(612)는, 모든 유저 세션으로부터의 로봇 HTTP 리스너(610), 프로토콜 핸들러(608) 및 로봇 링크(606)가 HTTP 포트 디스커버리 서비스(612)에 액세스할 수 있다는 것을 보장하기 위해, 머신 세션(또는 윈도우 내의 세션 0)에서 시작될 수도 있다.
몇몇 실시형태에서, HTTP 포트 디스커버리 서비스(612)는 유저 세션(602)에서 직접적으로 실행될 수도 있다. 그들 실시형태에서, HTTP 포트 디스커버리 서비스(612) 및 로봇 HTTP 리스너(610)는 단일의 서비스에서 결합된다. 또한, 이들 실시형태에서, 로봇 링크(606)가 HTTP 리스너(610)의 잘 알려진 포트를 알고 있기 때문에, HTTP 포트 디스커버리 서비스(612)는 필요하지 않을 수도 있다.
다시 유저 세션(602)을 참조하면, 로봇 HTTP 리스너(또는 로컬 리스너 모듈)(610)는, 로봇 링크(606)를 통한 애플리케이션과 로봇 트레이 사이의 통신을 용이하게 한다. 로봇 HTTP 리스너(610)는, 프로세스를 실행하고 로봇(210)의 실행기(212)로부터 데이터를 전송/수신하기 위해, 웹 브라우저(604)가 로봇 서비스(614)와 상호 작용하는 것을 담당한다. 로봇 HTTP 리스너(610)는 로봇 링크(606)에 의해 사용되는 HTTP API를 제공할 수도 있다. 컴퓨팅 시스템(600)이 그 상에서 실행되는 다수의 유저 세션을 가지기 때문에, 그리고 동일한 컴퓨팅 시스템(600) 상에서 상이한 유저 사이의 보안을 제공하기 위해, 로봇 HTTP 리스너(610)는 유저 세션(602) 내에서 실행되고 특정한 유저를 대신하여 로봇 서비스(614)와 통신한다. 로봇 HTTP 리스너(610)는, 유저 세션(602)이 시작될 때 또는 프로토콜 핸들러(608)에 의해 시작될 때, 로봇 서비스(614)와의 통신을 자동적으로 시작할 수도 있다. 컴퓨터 상의 단일의 HTTP 포트가 Windows® 상의 단일의 로봇 HTTP 리스너(610)에 의해서만 사용될 수 있기 때문에, 로봇 HTTP 리스너(610) 서비스는, 다수의 유저 세션이 동일한 머신 상에서 활성일 때 충돌을 방지하기 위해, 매번 랜덤 포트 상에서 시작된다. 시작할 때마다, 로봇 HTTP 리스너(610)는 자신의 선택된 포트 및 유저 세션 - 이 유저 세션 하에서 그것은 HTTP 포트 디스커버리 서비스(612)와 함께 실행 중임 - 을 등록한다. 이것은, HTTP 포트 디스커버리 서비스(612)가, 포트 디스커버리 프로세스 이후에 통신할 포트 번호를 로봇 링크(606)에게 제공하는 것을 허용한다.
HTTP 포트 디스커버리 서비스(612) 및 로봇 HTTP 리스너(610) 둘 모두는, 다른 외부 머신이 이들 서비스와 통신하는 것을 방지하기 위해 로컬 호스트 또는 127.0.0.1 상에서 청취하도록 구성될 수도 있다는 것이 인식되어야 한다. 이들 보증은 오퍼레이팅 시스템에 의해 제공된다.
로봇 서비스는 도 2로부터의 에이전트(214)이며 상기에서 설명되는 바와 같이 실행기(212)를 관리하는 것을 담당한다.
소정의 실시형태는 포트 디스커버리 프로세스, 인증 프로세스, 및 로봇 서비스 상호 작용을 포함할 수도 있다. 소정의 실시형태에서, 포트 디스커버리 및 인증 프로세스 둘 모두는 단일의 플로우로 결합될 수 있지만 행할 필요는 없다는 것이 인식되어야 한다. 다른 실시형태에서, 이들 프로세스 둘 모두는 개별적으로 실행될 수 있다.
HTTP 리스너(610), 프로토콜 핸들러(608), HTTP 포트 디스커버리 서비스(612) 및 로봇 서비스(614) 사이의 통신은, 오퍼레이팅 시스템에 의해 제공되는 보안이 인증된 애플리케이션 대 애플리케이션 및/또는 인증된 서비스 대 서비스 채널을 사용한다는 것이 또한 인식되어야 한다(예를 들면, NTLM 인증).
포트 디스커버리 프로세스
도 7은, 본 발명의 한 실시형태에 따른, 포트 디스커버리 프로세스(700)를 예시하는 흐름도이다. 로봇 HTTP 리스너(610)가 미사용중인 임의의 랜덤 포트 상에서 시작하도록 구성되기 때문에, 로봇 링크(606)는, 로봇 링크(606)가 포트와 통신할 수 있기 이전에, 로봇 HTTP 리스너(610)의 포트를 발견하기 위해 포트 디스커버리 프로세스(700)를 개시한다.
한 실시형태에서, 프로세스(700)는, 애플리케이션이 로봇 링크(606)로부터의 API를 사용할 때 그리고 로봇 링크(606)가 포트를 알지 못할 때 포트 디스커버리 프로세스를 개시하는 702에서 시작한다. 704에서, 로봇 링크(606)는 토큰(T1)을 전달하는 동안, 프로토콜 핸들러(608)를 호출하기 위해 커스텀 프로토콜 핸들러를 사용한다. 이것은, 프로토콜 핸들러(608)가 현재의 유저에 대해 호출되고 그리고 그 머신 상의 임의의 다른 유저 세션에 대해서는 호출되지 않는 것을 보장한다.
706에서, 프로토콜 핸들러(608)는 토큰(T1)을 HTTP 포트 디스커버리 서비스(612)로 전달한다. 프로토콜 핸들러(608)는 또한, 자신이 어떤 유저 세션(예를 들면, 세션 0) 하에서 실행되고 있었는지에 대한 정보를 전달한다. 프로토콜 핸들러(608)는 또한, 로봇 HTTP 리스너 서비스(610) 및 HTTP 포트 디스커버리 서비스(612)가 실행되고 있지 않을 때 로봇 HTTP 리스너 서비스(610) 및 HTTP 포트 디스커버리 서비스(612)를 활성화할 수도 있다.
708에서, 로봇 링크(606)는 또한 HTTP 포트 디스커버리 서비스(612)와 통신하여, 토큰(T1)을 제공하고 HTTP 포트 디스커버리 서비스(612)에게 그것이 통신해야 하는 로봇 HTTP 리스너(610)의 포트를 제공할 것을 요청한다.
710에서, HTTP 포트 디스커버리 서비스(612)는 토큰(T1)이 어떤 유저에게 속하는지를 식별하는 프로토콜 핸들러(608)로부터 수신되는 정보를 재검토하고, 그 다음, 그 특정한 유저에 대한 로봇 HTTP 리스너(610)의 포트를 식별하기 위해 등록된 포트의 목록을 사용한다. 712에서, HTTP 포트 디스커버리 서비스(612)는, 자신이 통신해야 하는 로봇 HTTP 리스너(610)의 포트를 사용해 로봇 링크(606)에 다시 응답하고, 그에 의해, 포트 디스커버리 프로세스를 완료한다.
인증
도 8은, 본 발명의 한 실시형태에 따른, 인증 프로세스(800)를 예시하는 흐름도이다. 로봇 HTTP 리스너(610)가 컴퓨팅 시스템(600) 상의 HTTP 포트 상에서 실행될 때, 컴퓨팅 시스템(600) 상에서 실행되는 임의의 소프트웨어는, 심지어 다른 유저를 대신하여, HTTP 포트에 액세스할 수도 있다. 이것은 보안 위험을 초래할 수도 있다, 즉, 컴퓨팅 시스템(600) 상에서 실행되는 다른 유저 또는 소프트웨어가 유저를 대신하여 로봇 프로세스를 호출할 수 있다. 이러한 위험을 완화하기 위해, 로봇 HTTP 리스너(610)에 대한 모든 호출은 호출이 수락되기 이전에 인증되고 승인된다. 이것은, 로봇 링크(606)가 로봇 HTTP 리스너(610)와 통신할 수 있기 이전에, 로봇 링크(606)가 로봇 HTTP 리스너(610)에 대한 인증 토큰을 검색하는 것을 강제한다.
몇몇 실시형태에서, 프로세스(800)는, 애플리케이션이 로봇 링크(606)로부터의 임의의 API를 사용할 때, 그리고 로봇 링크(606)가 포트를 알지 못할 때, 포트 디스커버리 프로세스를 개시하는 802에서 시작한다. 804에서, 포트 디스커버리 프로세스가 완료된 이후, 로봇 링크(606)는 로봇 HTTP 리스너(610)에 대한 호출을 발행한다. 로봇 HTTP 리스너(610)가 어떠한 토큰 또는 유효한 토큰도 수신하지 않으면, 로봇 HTTP 리스너(610)는 로봇 링크(606)로부터의 호출을 거부한다.
호출이 거부되면, 로봇 링크(606)는 제2 시간 동안 로봇 HTTP 리스너(610)를 호출하기 이전에 유효한 토큰을 사용하여 인증되고 승인될 필요가 있다. 이 때문에, 806에서, 로봇 링크(606)는 토큰(T1)을 전달하는 동안 프로토콜 핸들러(608)를 호출하기 위해 커스텀 프로토콜 핸들러를 사용한다. 이것은, 프로토콜 핸들러(608)가 현재의 유저에 대해 호출되고 그리고 동일한 컴퓨팅 시스템(600) 상의 다른 유저 세션 상의 다른 유저에 대해서는 호출되지 않는 것을 보장한다. 일부 옵션 사항의(optional) 실시형태에서, 808에서, 로봇 링크(606)는 또한 토큰(T1)을 사용하여 요청을 승인할 것을 유저에게 통지하는 프롬프트를 애플리케이션 상에서 도시한다.
810에서, 일단 호출되면, 프로토콜 핸들러(608)는 유저가 로봇 링크(606)로부터의 요청을 승인하도록 유저 인터페이스(user interface; UI) 팝업을 나타낸다. 소정의 실시형태에서, 토큰(T1)은 또한, 유저가 요청의 유효성을 확인하는 것, 즉, 요청이 특정한 로봇 링크(606) 또는 애플리케이션으로부터 유래하였고, 그 요청이 컴퓨팅 시스템(600) 상의 다른 애플리케이션 또는 유저로부터 유래하고 있는 것이 아니다는 것을 검증하는 것을 돕기 위해 나타내어질 수도 있다.
812에서, 일단 유저가 요청을 승인하면, 프로토콜 핸들러(608)는 토큰(T1)을 HTTP 포트 디스커버리 서비스(612)로 전달하고, 또한, 자신이 어떤 유저 세션 하에서 실행되고 있었는지에 대한 정보를 전달한다. 프로토콜 핸들러(608)는 또한, 로봇 HTTP 리스너(610) 및 HTTP 포트 디스커버리 서비스(612)가 이 시점에서 실행 중이 아닌 경우, 그들을 시작할 수도 있다.
814에서, 로봇 링크(606)는 또한 HTTP 포트 디스커버리 서비스(612)와 통신하여, HTTP 포트 디스커버리 서비스(612)에게 토큰(T1)을 제공하고 로봇 HTTP 리스너(610)와의 통신을 위해 인증 토큰(T2)을 제공할 것을 HTTP 포트 디스커버리 서비스(612)에게 요청한다. 816에서, HTTP 포트 디스커버리 서비스(612)는, 토큰(T1)이 어떤 유저에게 속하는지를 식별하기 위해, 프로토콜 핸들러(608)로부터 수신되는 정보를 재검토한다. HTTP 포트 디스커버리 서비스(612)는 또한, 그 특정한 유저에 대한 로봇 HTTP 리스너(610)를 식별하기 위해 등록된 서비스의 목록을 사용한다. 818에서, HTTP 포트 디스커버리 서비스(612)는 새로운 토큰(T2)를 생성하고 토큰(T2)를 인증을 위한 유효한 토큰으로서 로봇 HTTP 리스너(610)로 전달한다. 토큰(T2)은, 인증 플로우를 돕기 위해, 그것이 등록되는 도메인, 그것의 생성 시간, 그것의 만료 시간, 등등과 같은 추가적인 정보를 포함할 수도 있다. 820에서, HTTP 포트 디스커버리 서비스(612)는, 자신이 요청하고 있었던 로봇 HTTP 리스너(610)에 대한 인증 토큰(T2)을 가지고 로봇 링크(606)에게 다시 응답한다. 822에서, 로봇 링크(606)는, 이제, 로봇 HTTP 리스너(610)와 통신하기 위해 인증 토큰(T2)을 사용할 수 있고, 그에 의해, 인증 프로세스를 완료할 수 있다.
소정의 실시형태에서, 인증 토큰(T2)이 HTTP 포트 디스커버리 서비스(612)에 의해 생성되는 대신, 인증 토큰(T2)은 또한 프로토콜 핸들러(608)에 의해 생성될 수도 있고 HTTP 포트 디스커버리 서비스(612) 및 로봇 HTTP 리스너(610) 둘 모두와 통신할 수도 있다.
로봇 서비스 상호 작용
소정의 실시형태는 로봇 서비스(614)에 의해 제공되는 다양한 성능을 로봇 HTTP 리스너(610)에게 제공한다. 예를 들면, 로봇 HTTP 리스너(610)는 실행기(212) 또는 로봇(210)의 상태를 질의(query)할 수도 있고, 컨덕터(230)에 연결되고 및/또는 그로부터 연결 해제될 수도 있고, 로봇(210) 상에서 이용 가능한 프로세스를 나열할 수도 있고, 로봇(210) 상의 프로세스를 시작, 정지, 일시 중지, 종료, 등등을 할 수도 있고, 로봇(210) 상에서 실행되는 또는 실행 중인 프로세스의 상태를 질의할 수도 있고, 및/또는 프로세스를 시작하는 동안, 프로세스를 이미 실행하고 있는 동안, 또는 프로세스가 실행을 완료하는 경우 데이터를 전송 및/또는 수신할 수도 있다. 특히, 몇몇 실시형태는 애플리케이션이 RPA를 호출하여 로컬 머신으로부터 데이터를 페치 및/또는 전송하는 것을 가능하게 수도 있다.
도 9는, 본 발명의 한 실시형태에 따른, 로봇 서비스 상호 작용 프로세스(900)를 예시하는 흐름도이다. 몇몇 실시형태에서, 애플리케이션은 로봇 서비스(614)와 상호 작용하기 위해 로봇 링크(606)를 사용한다. 이들 실시형태에서, 애플리케이션은 로봇 링크(606)에 의해 제공되는 지원된 API/함수/동작 중 임의의 것을 호출할 수도 있다.
몇몇 실시형태에서, 프로세스(900)는, 애플리케이션이 지원된 API/함수/동작 중 임의의 것을 호출할 때 포트 디스커버리 및 인증이 완료되는 것을 로봇 링크(606)가 보장하는 902에서 시작된다. 904에서, 로봇 링크(606)는 HTTP를 통해 로봇 HTTP 리스너(610) 상의 특정한 API를 호출한다. 로봇 HTTP 리스너(610)는, 906에서, 로봇 링크(606)에 의해 요청되는 동작을 수행하기 위해 로봇 서비스(614)와 통신한다. 908에서, 로봇 서비스(614)는 실행기(212), 로봇(210), 컨덕터(230) 또는 요청된 동작을 이행하기 위해 필요한 바와 같은 임의의 다른 애플리케이션과 통신한다. 910에서, 로봇 서비스(614)는 요청된 동작의 결과를 로봇 HTTP 리스너(610)에게 다시 반환하고, 912에서, 로봇 HTTP 리스너(610)는 결과를 로봇 링크(606)에게 다시 반환한다. 914에서, 로봇 링크(606)는 데이터를 애플리케이션에게 다시 반환한다.
도 10은, 본 발명의 한 실시형태에 따른, 로봇 상호 작용 프로세스를 용이하게 하기 위한 프로세스(1000)를 예시하는 흐름도이다. 이 실시형태에서, 프로세스(1000)는, 애플리케이션 내에 임베딩된 로봇 링크를 호출하기 위해 컴퓨팅 시스템으로부터 애플리케이션을 론칭하는 1002에서 시작하고, 1004에서, 포트, 포트 세부 사항, 및 토큰을 식별하기 위해 애플리케이션으로부터 포트 디스커버리 프로세스를 개시한다. 1006에서, 프로세스(1000)는, 애플리케이션에 의해 랜덤화된 코드를 생성하는 것 및 애플리케이션으로부터 로봇을 호출하기 위해 컴퓨팅 시스템의 유저에게 승인을 요청하는 동의 애플리케이션을 호출하는 것으로 계속된다. 1008에서, 프로세스(1000)는 또한, 랜덤화된 코드를 로컬 리스너 모듈에 등록하는 것 및 유저 정보 및 토큰을 글로벌 리스너 모듈로 전달하는 것을 수행하고, 1010에서, 프로세스(1000)는, 글로벌 리스너 모듈로부터 토큰 및 포트 신분 증명서를 수신하는 것을 수행하여, 애플리케이션이 로봇을 사용해 그 자신을 인증시키는 것, 및 로봇과 통신하는 것을 허용하고, 그에 의해, 로봇 상호 작용 프로세스를 용이한다.
임베딩된 로봇 링크를 갖는 애플리케이션은 로컬 애플리케이션 개발 플랫폼에서 구축될 수도 있고 유인 및 무인 로봇 둘 모두와 연결될 수도 있다는 것이 인식되어야 한다. 소정의 실시형태에서, 애플리케이션은, 컴퓨팅 시스템의 데스크탑 상에서 실행되고 웹 브라우저의 일부가 아닌 ".exe" 파일로서 사용될 수도 있다. 몇몇 추가적인 실시형태에서, 애플리케이션이 다른 애플리케이션과 동시에 통신할 수 있도록, 애플리케이션은 화면에 도킹될 수도 있다.
도 7 내지 도 10에서 수행되는 프로세스 단계는, 본 발명의 실시형태에 따라, 프로세서(들)가 도 7 내지 도 10에서 설명되는 프로세스(들)의 적어도 일부를 수행하기 위한 명령어를 인코딩하는 컴퓨터 프로그램에 의해 수행될 수도 있다. 컴퓨터 프로그램은 비일시적 컴퓨터 판독 가능 매체 상에 포함될 수도 있다. 컴퓨터 판독 가능 매체는, 하드 디스크 드라이브, 플래시 디바이스, RAM, 테이프, 및/또는 데이터를 저장하기 위해 사용되는 임의의 다른 그러한 매체 또는 매체의 조합일 수도 있지만, 그러나 이들로 제한되지는 않는다. 컴퓨터 프로그램은, 또한 컴퓨터 판독 가능 매체 상에 저장될 수도 있는, 도 7 내지 도 10에 설명되는 프로세스 단계의 모두 또는 일부를 구현하기 위해 컴퓨팅 시스템의 프로세서(들)(예를 들면, 도 5의 컴퓨팅 시스템(500)의 프로세서(들)(510))를 제어하기 위한 인코딩된 명령어를 포함할 수도 있다.
컴퓨터 프로그램은 하드웨어, 소프트웨어, 또는 하이브리드 구현예에서 구현될 수 있다. 컴퓨터 프로그램은, 서로 동작 가능하게 통신하는, 정보 또는 명령어를 디스플레이에 전달하도록 설계되는 모듈로 구성될 수 있다. 컴퓨터 프로그램은 범용 컴퓨터, ASIC, 또는 임의의 다른 적절한 디바이스 상에서 동작하도록 구성될 수 있다.
본원의 도면에서 일반적으로 설명되고 예시되는 바와 같이, 본 발명의 다양한 실시형태의 컴포넌트는 아주 다양하고 상이한 구성으로 배열 및 설계될 수도 있다는 것이 쉽게 이해될 것이다. 따라서, 첨부된 도면에서 표현되는 바와 같이, 본 발명의 실시형태의 상세한 설명은 청구되는 바와 같은 본 발명의 범위를 제한하도록 의도되는 것이 아니라, 단지 본 발명의 선택된 실시형태를 대표하는 것에 불과하다.
본 명세서 전반에 걸쳐 설명되는 본 발명의 피쳐, 구조체, 또는 특성은 하나 이상의 실시형태에서 임의의 적절한 방식으로 결합될 수도 있다. 예를 들면, 본 명세서 전체에 걸친 "소정의 실시형태", "몇몇 실시형태" 또는 유사한 언어에 대한 언급은, 실시형태와 관련하여 설명되는 특정한 피쳐, 구조체 또는, 특성이 본 발명의 적어도 하나의 실시형태에서 포함된다는 것을 의미한다. 따라서, 본 명세서 전체에 걸친 어구 "소정의 실시형태에서", "몇몇 실시형태에서", "다른 실시형태에서" 또는 유사한 언어의 출현은, 반드시 모두 동일한 그룹의 실시형태를 가리키는 것은 아니며, 설명되는 피쳐, 구조체, 또는 특성은 하나 이상의 실시형태에서 임의의 적절한 방식으로 결합될 수도 있다.
본 명세서 전반에 걸친 피쳐, 이점 또는 유사한 언어에 대한 언급은, 본 발명을 사용하여 실현될 수도 있는 피쳐 및 이점 모두가 본 발명의 임의의 단일의 실시형태에 있어야 한다는 또는 있다는 것을 암시하지는 않는다. 오히려, 피쳐 및 이점을 언급하는 언어는, 실시형태와 관련하여 설명되는 특정한 피쳐, 이점, 또는 특성이 본 발명의 적어도 하나의 실시형태에 포함된다는 것을 의미하는 것으로 이해된다. 따라서, 본 명세서 전체에 걸친 피쳐 및 이점의 논의, 및 유사한 언어는 동일한 실시형태를 지칭할 수도 있지만, 그러나 반드시 그런 것은 아니다.
더구나, 본 발명의 설명되는 피쳐, 이점, 및 특성은 하나 이상의 실시형태에서 임의의 적절한 방식으로 결합될 수도 있다. 관련 기술 분야에서 숙련된 자는, 본 발명이 특정한 실시형태의 특정한 피쳐 또는 이점 중 하나 이상이 없어도 실시될 수 있다는 것을 인식할 것이다. 다른 경우에, 소정의 실시형태에서 본 발명의 모든 실시형태에서 존재하지 않을 수도 있는 추가적인 피쳐 및 이점이 인식될 수도 있다.
기술 분야에서 통상의 스킬을 가진 자는, 상기에서 논의되는 바와 같은 본 발명이 상이한 순서의 단계로, 및/또는 개시되는 것들과는 상이한 구성의 하드웨어 엘리먼트로 실시될 수도 있다는 것을 쉽게 이해할 것이다. 따라서, 비록 본 발명이 이들 바람직한 실시형태에 기초하여 설명되었지만, 본 발명의 취지 및 범위 내에 남아 있으면서, 소정의 수정예, 변형예, 및 대안적인 구성예가 명백할 것이다는 것이 기술 분야의 숙련된 자에게 명백할 것이다. 따라서, 본 발명의 경계 및 범위를 결정하기 위해, 첨부된 청구범위에 대한 참조가 이루어져야 한다.

Claims (21)

  1. 컴퓨터 구현 방법으로서,
    컴퓨팅 시스템으로부터 애플리케이션을 론칭(launching)하여, 상기 애플리케이션 내에 임베딩된 로봇 링크를 호출(invoking)하는 단계;
    포트, 포트 세부 사항, 및 토큰을 식별하기 위해 상기 애플리케이션으로부터 포트 디스커버리 프로세스(port discovery process)를 개시하는 단계;
    상기 애플리케이션에 의해, 랜덤화된 코드(randomized code)를 생성하고, 상기 애플리케이션으로부터 로봇을 호출하기 위해 상기 컴퓨팅 시스템의 유저에게 승인을 요청하는 동의 애플리케이션(consent application)을 호출하는 단계;
    상기 랜덤화된 코드를 로컬 리스너 모듈(local listener module)에 등록하고 유저 정보 및 상기 토큰을 글로벌 리스너 모듈(global listener module)로 전달하는 단계; 및
    상기 글로벌 리스너 모듈로부터 상기 토큰 및 포트 신분 증명서(port identification)를 수신하여, 상기 애플리케이션이 상기 로봇을 사용해 그 자신을 인증시키는 것, 및 상기 로봇과 통신하는 것을 허용하고, 그에 의해, 로봇 상호 작용 프로세스를 용이하게 하는 단계
    를 포함하는, 컴퓨터 구현 방법.
  2. 제1항에 있어서, 상기 로봇 링크를 호출하기 위해 사용되는 상기 애플리케이션은, 신뢰되지 않는 도메인으로부터 유래하는, 컴퓨터 구현 방법.
  3. 제1항에 있어서, 상기 로봇 상호 작용 프로세스를 용이하게 하는 단계는,
    상기 로봇 링크에 의해, 통신 매체를 통해 로봇 리스너 모듈 상의 특정한 애플리케이션 프로그래밍 인터페이스(application programming interface; API)를 호출하는 단계
    를 포함하는, 컴퓨터 구현 방법.
  4. 제3항에 있어서, 상기 로봇 리스너 모듈은, 상기 로봇의 상태 또는 실행기를 질의(query)하도록, 컨덕터(conductor)에 연결되거나, 상기 컨덕터로부터 연결 해제되거나, 상기 컨덕터에 연결되고 상기 컨덕터로부터 연결 해제되도록, 상기 로봇 상에서 이용 가능한 프로세스를 나열하도록, 상기 로봇 상의 프로세스를 시작, 정지, 일시 중지, 및/또는 종료하도록, 상기 로봇 상에서 실행되는 또는 실행 중인 프로세스의 상태를 질의하도록, 그리고/또는 프로세스를 시작하는 동안, 상기 프로세스를 이미 실행하고 있는 동안, 또는 상기 프로세스가 실행을 완료하는 경우 데이터를 전송 및/또는 수신하도록 구성되는, 컴퓨터 구현 방법.
  5. 제3항에 있어서, 상기 로봇 상호 작용 프로세스를 용이하게 하는 단계는,
    상기 로봇 링크에 의해 요청된 동작을 수행하기 위해, 상기 로봇 리스너 모듈에 의해, 로봇 서비스와 통신하는 단계
    를 더 포함하는, 컴퓨터 구현 방법.
  6. 제5항에 있어서, 상기 로봇 상호 작용 프로세스를 용이하게 하는 단계는,
    상기 요청된 동작을 이행하기 위해, 상기 로봇 서비스에 의해, 실행기, 로봇, 및/또는 컨덕터와 통신하는 단계
    를 더 포함하는, 컴퓨터 구현 방법.
  7. 제6항에 있어서, 상기 로봇 상호 작용 프로세스를 용이하게 하는 단계는,
    상기 로봇 서비스로부터 상기 애플리케이션으로 상기 로봇 리스너 및 상기 로봇 링크를 통해 상기 요청된 동작의 결과를 반환하는 단계
    를 더 포함하는, 컴퓨터 구현 방법.
  8. 비일시적 컴퓨터 판독 가능 매체 상에 수록된 컴퓨터 프로그램으로서,
    상기 컴퓨터 프로그램은, 적어도 하나의 프로세서로 하여금:
    컴퓨팅 시스템으로부터 애플리케이션을 론칭하여, 상기 애플리케이션 내에 임베딩된 로봇 링크를 호출하게 하도록;
    포트, 포트 세부 사항, 및 토큰을 식별하기 위해 상기 애플리케이션으로부터 포트 디스커버리 프로세스를 개시하게 하도록;
    상기 애플리케이션에 의해, 랜덤화된 코드를 생성하고, 상기 애플리케이션으로부터 로봇을 호출하기 위해 상기 컴퓨팅 시스템의 유저에게 승인을 요청하는 동의 애플리케이션을 호출하게 하도록;
    상기 랜덤화된 코드를 로컬 리스너 모듈에 등록하고 유저 정보 및 상기 토큰을 글로벌 리스너 모듈로 전달하게 하도록; 그리고
    상기 글로벌 리스너 모듈로부터 상기 토큰 및 포트 신분 증명서를 수신하여, 상기 애플리케이션이 상기 로봇을 사용해 그 자신을 인증시키는 것, 및 상기 로봇과 통신하는 것을 허용하고, 그에 의해, 로봇 상호 작용 프로세스를 용이하게 하도록
    구성되는, 비일시적 컴퓨터 판독 가능 매체 상에 수록된 컴퓨터 프로그램.
  9. 제8항에 있어서, 상기 로봇 링크를 호출하기 위해 사용되는 상기 애플리케이션은, 신뢰되지 않는 도메인으로부터 유래하는, 비일시적 컴퓨터 판독 가능 매체 상에 수록된 컴퓨터 프로그램.
  10. 제8항에 있어서, 상기 컴퓨터 프로그램은 또한, 적어도 하나의 프로세서로 하여금:
    상기 로봇 링크에 의해, 통신 매체를 통해 로봇 리스너 모듈 상의 특정한 애플리케이션 프로그래밍 인터페이스(API)를 호출하게 하도록
    구성되는, 비일시적 컴퓨터 판독 가능 매체 상에 수록된 컴퓨터 프로그램.
  11. 제10항에 있어서, 상기 로봇 리스너 모듈은, 상기 로봇의 상태 또는 실행기를 질의하도록, 컨덕터에 연결되거나, 상기 컨덕터로부터 연결 해제되거나, 상기 컨덕터에 연결되고 상기 컨덕터로부터 연결 해제되도록, 상기 로봇 상에서 이용 가능한 프로세스를 나열하도록, 상기 로봇 상의 프로세스를 시작, 정지, 일시 중지, 및/또는 종료하도록, 상기 로봇 상에서 실행되는 또는 실행 중인 프로세스의 상태를 질의하도록, 그리고/또는 프로세스를 시작하는 동안, 상기 프로세스를 이미 실행하고 있는 동안, 또는 상기 프로세스가 실행을 완료하는 경우 데이터를 전송 및/또는 수신하도록 구성되는, 비일시적 컴퓨터 판독 가능 매체 상에 수록된 컴퓨터 프로그램.
  12. 제11항에 있어서, 상기 컴퓨터 프로그램은 또한, 적어도 하나의 프로세서로 하여금:
    상기 로봇 링크에 의해 요청된 동작을 수행하기 위해, 상기 로봇 리스너 모듈에 의해, 로봇 서비스와 통신하게 하도록
    구성되는, 비일시적 컴퓨터 판독 가능 매체 상에 수록된 컴퓨터 프로그램.
  13. 제12항에 있어서, 상기 컴퓨터 프로그램은 또한, 적어도 하나의 프로세서로 하여금:
    상기 요청된 동작을 이행하기 위해, 상기 로봇 서비스에 의해, 실행기, 로봇, 및/또는 컨덕터와 통신하게 하도록
    구성되는, 비일시적 컴퓨터 판독 가능 매체 상에 수록된 컴퓨터 프로그램.
  14. 제13항에 있어서, 상기 컴퓨터 프로그램은 또한, 적어도 하나의 프로세서로 하여금:
    상기 로봇 서비스로부터 상기 애플리케이션으로 상기 로봇 리스너 및 상기 로봇 링크를 통해 상기 요청된 동작의 결과를 반환하게 하도록
    구성되는, 비일시적 컴퓨터 판독 가능 매체 상에 수록된 컴퓨터 프로그램.
  15. 컴퓨팅 시스템으로서,
    머신 판독 가능 컴퓨터 프로그램 명령어를 저장한 메모리; 및
    상기 컴퓨터 프로그램 명령어를 실행하도록 구성되는 적어도 하나의 프로세서
    를 포함하며, 상기 명령어는, 상기 적어도 하나의 프로세서로 하여금:
    상기 컴퓨팅 시스템으로부터 애플리케이션을 론칭하여, 상기 애플리케이션 내에 임베딩된 로봇 링크를 호출하게 하도록;
    포트, 포트 세부 사항, 및 토큰을 식별하기 위해 상기 애플리케이션으로부터 포트 디스커버리 프로세스를 개시하게 하도록;
    상기 애플리케이션에 의해, 랜덤화된 코드를 생성하고, 상기 애플리케이션으로부터 로봇을 호출하기 위해 상기 컴퓨팅 시스템의 유저에게 승인을 요청하는 동의 애플리케이션을 호출하게 하도록;
    상기 랜덤화된 코드를 로컬 리스너 모듈에 등록하고 유저 정보 및 상기 토큰을 글로벌 리스너 모듈로 전달하게 하도록; 그리고
    상기 글로벌 리스너 모듈로부터 상기 토큰 및 포트 신분 증명서를 수신하여, 상기 애플리케이션이 상기 로봇을 사용해 그 자신을 인증시키는 것, 및 상기 로봇과 통신하는 것을 허용하고, 그에 의해, 로봇 상호 작용 프로세스를 용이하게 하도록
    구성되는, 컴퓨팅 시스템.
  16. 제15항에 있어서, 상기 로봇 링크를 호출하기 위해 사용되는 상기 애플리케이션은, 신뢰되지 않는 도메인으로부터 유래하는, 컴퓨팅 시스템.
  17. 제15항에 있어서, 상기 명령어는 또한, 상기 적어도 하나의 프로세서로 하여금:
    상기 로봇 링크에 의해, 통신 매체를 통해 로봇 리스너 모듈 상의 특정한 애플리케이션 프로그래밍 인터페이스(API)를 호출하게 하도록
    구성되는, 컴퓨팅 시스템.
  18. 제17항에 있어서, 상기 로봇 리스너 모듈은, 상기 로봇의 상태 또는 실행기를 질의하도록, 컨덕터에 연결되거나, 상기 컨덕터로부터 연결 해제되거나, 상기 컨덕터에 연결되고 상기 컨덕터로부터 연결 해제되도록, 상기 로봇 상에서 이용 가능한 프로세스를 나열하도록, 상기 로봇 상의 프로세스를 시작, 정지, 일시 중지, 및/또는 종료하도록, 상기 로봇 상에서 실행되는 또는 실행 중인 프로세스의 상태를 질의하도록, 그리고/또는 프로세스를 시작하는 동안, 상기 프로세스를 이미 실행하고 있는 동안, 또는 상기 프로세스가 실행을 완료하는 경우 데이터를 전송 및/또는 수신하도록 구성되는, 컴퓨팅 시스템.
  19. 제18항에 있어서, 상기 명령어는 또한, 상기 적어도 하나의 프로세서로 하여금:
    상기 로봇 링크에 의해 요청된 동작을 수행하기 위해, 상기 로봇 리스너 모듈에 의해, 로봇 서비스와 통신하게 하도록
    구성되는, 컴퓨팅 시스템.
  20. 제19항에 있어서, 상기 명령어는 또한, 상기 적어도 하나의 프로세서로 하여금:
    상기 요청된 동작을 이행하기 위해, 상기 로봇 서비스에 의해, 실행기, 로봇, 및/또는 컨덕터와 통신하게 하도록
    구성되는, 컴퓨팅 시스템.
  21. 제20항에 있어서, 상기 명령어는 또한, 상기 적어도 하나의 프로세서로 하여금:
    상기 로봇 서비스로부터 상기 애플리케이션으로 상기 로봇 리스너 및 상기 로봇 링크를 통해 상기 요청된 동작의 결과를 반환하게 하도록
    구성되는, 컴퓨팅 시스템.
KR1020207028123A 2019-10-11 2020-08-31 로봇 브라우저 임베딩 KR102253980B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
IN201911041286 2019-10-11
IN201911041286 2019-10-11
US16/706,581 2019-12-06
US16/706,581 US11016789B2 (en) 2019-10-11 2019-12-06 Robot browser embedding
PCT/US2020/048695 WO2021071605A1 (en) 2019-10-11 2020-08-31 Robot browser embedding

Publications (2)

Publication Number Publication Date
KR20210043484A true KR20210043484A (ko) 2021-04-21
KR102253980B1 KR102253980B1 (ko) 2021-05-20

Family

ID=75383028

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207028123A KR102253980B1 (ko) 2019-10-11 2020-08-31 로봇 브라우저 임베딩

Country Status (5)

Country Link
US (2) US11016789B2 (ko)
JP (1) JP7106048B2 (ko)
KR (1) KR102253980B1 (ko)
CN (1) CN113168311A (ko)
WO (1) WO2021071605A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102339028B1 (ko) * 2021-06-17 2021-12-15 농업협동조합중앙회 로봇 프로세스 자동화 장치 및 그 동작 방법

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11363090B2 (en) * 2019-11-25 2022-06-14 Citrix Systems, Inc. Integrating web applications with local client applications in multi-user client environment
US11647015B2 (en) * 2020-07-30 2023-05-09 UiPath, Inc. Factor authentication for robotic processes
US20220391178A1 (en) * 2021-06-07 2022-12-08 UiPath, Inc. Web-based robotic process automation designer systems and automations for virtual machines, sessions, and containers
US20230353640A1 (en) * 2022-04-27 2023-11-02 Viam Inc. Device control system and method

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2889709A2 (en) * 2013-12-31 2015-07-01 Rockwell Automation Technologies, Inc. Industrial Automation Device with Editor and Graphical Object Mobile Visualization
US20170052824A1 (en) * 2015-08-19 2017-02-23 Tata Consultancy Services Limited Method and system for process automation in computing
US20190057203A1 (en) * 2017-08-16 2019-02-21 Bank Of America Corporation Robotic process automation using controller execution model
EP3543837A1 (en) * 2018-03-19 2019-09-25 Accenture Global Solutions Limited Inadvertent input mitigation in robotic process automation

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5627128A (en) 1979-08-10 1981-03-16 Canon Inc Copying apparatus
US5956483A (en) * 1996-06-28 1999-09-21 Microsoft Corporation System and method for making function calls from a web browser to a local application
US6947989B2 (en) * 2001-01-29 2005-09-20 International Business Machines Corporation System and method for provisioning resources to users based on policies, roles, organizational information, and attributes
US20030018703A1 (en) * 2001-01-31 2003-01-23 Christian Huitema Smart appliance network system and communication protocol
US8347313B2 (en) * 2003-05-21 2013-01-01 Resilient Networks, Inc. Method and apparatus for automating organization of processes
NO324315B1 (no) * 2005-10-03 2007-09-24 Encap As Metode og system for sikker brukerautentisering ved personlig dataterminal
US20070179842A1 (en) * 2006-01-27 2007-08-02 Chaing Chen Method and system to deliver a pixel or block based non-intrusive Internet web advertisement mall service via interactive games using one-time numeric codes
US7590680B2 (en) 2006-06-29 2009-09-15 Microsoft Corporation Extensible robotic framework and robot modeling
US8285652B2 (en) * 2008-05-08 2012-10-09 Microsoft Corporation Virtual robot integration with search
US20140122291A1 (en) 2012-10-31 2014-05-01 Microsoft Corporation Bargaining Through a User-Specific Item List
US9391966B2 (en) * 2013-03-08 2016-07-12 Control4 Corporation Devices for providing secure remote access
EP3185124A1 (en) 2015-12-22 2017-06-28 Tata Consultancy Services Limited System and method for monitoring, deploying, and tracking autonomous software robots
US11107090B2 (en) * 2016-06-06 2021-08-31 Epiance Software Pvt. Ltd. System and method for automated content generation
US10802453B2 (en) * 2017-06-02 2020-10-13 Bank Of America Corporation Robotics process automation macro bot
US10437984B2 (en) * 2017-10-26 2019-10-08 Bank Of America Corporation Authentication protocol elevation triggering system
US20190141125A1 (en) * 2017-11-03 2019-05-09 Bank Of America Corporation Cross application access provisioning system
US10810322B2 (en) 2017-12-05 2020-10-20 Microsoft Technology Licensing, Llc Sharing user information with and between bots
US10764290B2 (en) * 2018-08-23 2020-09-01 Accenture Global Solutions Limited Governed access to RPA bots
JP6532626B1 (ja) 2019-04-02 2019-06-19 BizteX株式会社 社内ネットワーク上の社内サーバに対する操作を伴う業務プロセスを自動化するための装置、方法及びそのためのプログラム

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2889709A2 (en) * 2013-12-31 2015-07-01 Rockwell Automation Technologies, Inc. Industrial Automation Device with Editor and Graphical Object Mobile Visualization
US20170052824A1 (en) * 2015-08-19 2017-02-23 Tata Consultancy Services Limited Method and system for process automation in computing
US20190057203A1 (en) * 2017-08-16 2019-02-21 Bank Of America Corporation Robotic process automation using controller execution model
EP3543837A1 (en) * 2018-03-19 2019-09-25 Accenture Global Solutions Limited Inadvertent input mitigation in robotic process automation

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102339028B1 (ko) * 2021-06-17 2021-12-15 농업협동조합중앙회 로봇 프로세스 자동화 장치 및 그 동작 방법

Also Published As

Publication number Publication date
KR102253980B1 (ko) 2021-05-20
US20210263754A1 (en) 2021-08-26
CN113168311A (zh) 2021-07-23
US11016789B2 (en) 2021-05-25
JP7106048B2 (ja) 2022-07-26
US20210109767A1 (en) 2021-04-15
JP2022511164A (ja) 2022-01-31
WO2021071605A1 (en) 2021-04-15

Similar Documents

Publication Publication Date Title
KR102227687B1 (ko) 로봇 프로세스 자동화를 위한 자동화 윈도우
KR102253980B1 (ko) 로봇 브라우저 임베딩
US11738453B2 (en) Integration of heterogeneous models into robotic process automation workflows
US10963231B1 (en) Using artificial intelligence to select and chain models for robotic process automation
US11745344B2 (en) Resuming robotic process automation workflows based on external triggers
CN115243838A (zh) 针对机器人流程自动化(rpa)机器人的会话间自动化
US20210112130A1 (en) Mobile push notification for robotic process automation (rpa)
US20230373087A1 (en) Localized configurations of distributed-packaged robotic processes
EP3806419A1 (en) Robot browser embedding
US11507059B1 (en) System and computer-implemented method for seamless consumption of automations
US20230122954A1 (en) Standardized authentication mechanism integrating diverse software platforms
US20220038445A1 (en) Factor authentication for robotic processes
US11453131B2 (en) Method and apparatus for remote native automation decoupling
EP3800595A1 (en) Resuming robotic process automation workflows based on external triggers
KR20220143983A (ko) 자체 머신 가져오기(byom)
US20230102169A1 (en) System and computer-implemented method for controlling a robot of a virtual machine
US11650871B2 (en) System and computer-implemented method for verification of execution of an activity
JP2023093354A (ja) ロボットをスケジューリングするためのクラウドトリガ

Legal Events

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