KR20230043025A - 컴퓨팅 플랫폼의 엔티티 엔진 - Google Patents

컴퓨팅 플랫폼의 엔티티 엔진 Download PDF

Info

Publication number
KR20230043025A
KR20230043025A KR1020217040488A KR20217040488A KR20230043025A KR 20230043025 A KR20230043025 A KR 20230043025A KR 1020217040488 A KR1020217040488 A KR 1020217040488A KR 20217040488 A KR20217040488 A KR 20217040488A KR 20230043025 A KR20230043025 A KR 20230043025A
Authority
KR
South Korea
Prior art keywords
entities
entity
computing device
engine
entity engine
Prior art date
Application number
KR1020217040488A
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 유아이패스, 인크.
Publication of KR20230043025A publication Critical patent/KR20230043025A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • G06F16/288Entity relationship models
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • G06F16/285Clustering or classification
    • 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/0807Network architectures or network communication protocols for network security for authentication of entities using tickets, e.g. Kerberos
    • 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/0853Network architectures or network communication protocols for network security for authentication of entities using an additional device, e.g. smartcard, SIM or a different communication terminal
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Computing Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

메모리 및 프로세서를 포함하는 컴퓨팅 디바이스가 제공된다. 메모리는 엔티티 엔진에 대한 프로세서 실행 가능 명령어들을 저장한다. 프로세서는 메모리에 결합된다. 프로세서는 컴퓨팅 디바이스로 하여금 데이터를 보유하거나 분류하는 엔티티들을 모델링하게 하기 위해 엔티티 엔진을 실행한다. 프로세서는 컴퓨팅 디바이스로 하여금 엔티티들 각각을 식별하는 리스트, 및 리스트와 대응하여 엔티티들 자체를 메모리에 저장하게 하기 위해 엔티티 엔진을 실행한다. 프로세서는 컴퓨팅 디바이스로 하여금, 외부 시스템으로부터의 선택 입력에 응답하여, 리스트에 기초하여 엔티티들에 대한 액세스를 제공하게 하기 위해 엔티티 엔진을 실행한다. 액세스는 리스트를 외부 시스템에 제공하는 것, 엔티티들 중 제1 엔티티를 식별하는 선택 입력을 수신하는 것, 및 제1 엔티티를 메모리로부터 외부 시스템으로 내보내기하는 것을 포함한다.

Description

컴퓨팅 플랫폼의 엔티티 엔진
컴퓨팅 플랫폼 상에서 실행되는 종래의 소프트웨어 제품들은, 컴퓨팅 플랫폼의 디지털 시스템들 내에서의 데이터 상호작용들 및/또는 컴퓨팅 플랫폼 내의 소프트웨어 프로세스들과 같은, 통상적인 액션들을 에뮬레이트하고 통합한다.
그러나, 이러한 디지털 시스템 상호작용들 및 임의의 소프트웨어 프로세스 실행과 관련하여 영속적인 비즈니스 데이터를 저장하고 관리하기 위해, 종래의 소프트웨어 제품들 또는 컴퓨팅 플랫폼 자체 대신에, 컴퓨팅 플랫폼 외부의 서비스들(예를 들면, 제3자 데이터베이스들)이 사용된다. 영속적인 비즈니스 데이터는 초기 사용 이후에도 존속하도록 비휘발성 메모리에 저장되는 정보를 포함한다.
이러한 외부 서비스들은, 외부 서비스들이 컴퓨팅 플랫폼과 어떻게 상호작용하는지(예를 들면, 외부 서비스들은 구성 및 통신 문제를 야기함) 및 외부 서비스들이 데이터 자체를 어떻게 관리하는지(예를 들면, 데이터가 컴퓨팅 플랫폼과 상이하게 저장/구성될 수 있음)와 관련하여, 번거로울 수 있다. 게다가, 외부 서비스들을 통해 영속적인 비즈니스 데이터를 저장하는 것은 컴퓨팅 플랫폼의 종래의 소프트웨어 제품들로부터 데이터 저장 동작들을 탈중앙화시키고, 이는 컴퓨터 플랫폼을 사용할 때 사용자 경험들을 어지럽게 한다.
일 실시예에 따르면, 컴퓨팅 디바이스가 제공된다. 컴퓨팅 디바이스는 메모리 및 프로세서를 포함한다. 메모리는 엔티티 엔진에 대한 프로세서 실행 가능 명령어들을 저장한다. 프로세서는 메모리에 결합된다. 프로세서는 컴퓨팅 디바이스로 하여금 데이터를 보유하거나 분류하는 엔티티들을 모델링하게 하기 위해 엔티티 엔진을 실행한다. 프로세서는 컴퓨팅 디바이스로 하여금 엔티티들 각각을 식별하는 리스트, 및 리스트와 대응하여 엔티티들 자체를 메모리에 저장하게 하기 위해 엔티티 엔진을 실행한다. 프로세서는 컴퓨팅 디바이스로 하여금, 외부 시스템으로부터의 선택 입력에 응답하여, 리스트에 기초하여 엔티티들에 대한 액세스를 제공하게 하기 위해 엔티티 엔진을 실행한다. 액세스는 리스트를 외부 시스템에 제공하는 것, 엔티티들 중 제1 엔티티를 식별하는 선택 입력을 수신하는 것, 및 제1 엔티티를 메모리로부터 외부 시스템으로 내보내기하는 것을 포함한다.
하나 이상의 실시예에 따르면, 위의 컴퓨팅 디바이스 실시예는 방법, 장치, 시스템, 및/또는 컴퓨터 프로그램 제품으로서 구현될 수 있다.
첨부 도면들과 관련하여 예로서 주어진, 이하의 설명으로부터 보다 상세한 이해가 이루어질 수 있으며, 도면들에서 유사한 참조 번호들은 유사한 요소들을 나타낸다.
도 1a는 하나 이상의 실시예에 따른 로봇 프로세스 자동화(robotic process automation, RPA) 개발, 설계, 동작 또는 실행의 예시이다.
도 1b는 하나 이상의 실시예에 따른 RPA 개발, 설계, 동작 또는 실행의 다른 예시이다.
도 1c는 하나 이상의 실시예에 따른 컴퓨팅 시스템 또는 환경의 예시이다.
도 2는 하나 이상의 실시예에 따른 컴퓨팅 시스템 또는 환경에 의해 실행되는 프로세스 흐름을 예시하는 블록 다이어그램이다.
도 3은 하나 이상의 실시예에 따른 컴퓨팅 시스템 또는 환경에 의해 실행되는 프로세스 흐름을 예시하는 블록 다이어그램이다.
도 4는 하나 이상의 실시예에 따른 엔티티 엔진의 동작들을 예시하는 다이어그램이다.
도 5는 하나 이상의 실시예에 따른 사용자 인터페이스의 다이어그램이다.
도 6은 하나 이상의 실시예에 따른 사용자 인터페이스의 다이어그램이다.
본 명세서에는 하나 이상의 실시예에 따른 엔티티 엔진이 개시되어 있다. 엔티티 엔진은 데이터(예를 들면, 영속적인 고객 관련 비즈니스 데이터)를 저장하고 관리하는 엔티티들을 모델링하고 통합하는 영속적인 데이터 저장 서비스를 제공하기 위해 필연적으로 컴퓨팅 시스템 또는 환경(예를 들면, 도 1c의 컴퓨팅 시스템 또는 환경(140))에 의한 프로세스 동작들에 그리고 컴퓨팅 시스템 또는 환경의 프로세싱 하드웨어에 기반을 두고 있는 프로세서 실행 가능 코드 또는 소프트웨어이다. 따라서, 하나 이상의 실시예에 따르면, 엔티티 엔진은 컴퓨팅 시스템 또는 환경의 개발 및 배포 플랫폼들을 위한 특정 구성 및 툴링 로봇 프로세스 자동화 방법을 제공한다. 이 특정 구성 및 툴링 로봇 프로세스 자동화 방법은 개발 및 배포 플랫폼들을 운영하는 것과 관련하여 이러한 엔티티들이 가리키는 엔티티들 및 데이터의 다단계 조작(예를 들면, 엔티티들 및 데이터의 다단계 생성/정의/업데이트/판독/삭제/쿼리 동작들)을 포함한다.
엔티티는 다른 엔티티들에 대해 언급된 관계들을 가지는 분류된 데이터 단위이다. 엔티티 엔진 및 그의 동작들은 각각의 엔티티의 능력을 데이터 및 데이터를 조작하는 식별된 방법들 둘 모두를 보유하는 커스텀 클래스 객체 또는 인스턴스로 확장한다. 엔티티들의 예들은 프로그램 요소들, 절차들, 연산자들, 인터페이스 블록들, 입출력 유닛들, 기호 상수들, 기록 구조들 및 명령문 라벨들을 포함하며, 이들 각각은 사람, 장소, 사물, 개념, 물리적 객체, 및/또는 그에 관한 데이터가 엔티티와 함께 저장되는 이벤트를 식별해 줄 수 있다. 엔티티 엔진은 데이터베이스를 생성하기 위해 그리고 개발 런타임 및/또는 배포 런타임 동안 데이터베이스를 관리 및 활용하기 위해 엔티티들을 사용한다(예를 들면, 각각의 엔티티는 다른 엔티티들과 통신하는 활성 요소임).
이와 관련하여 그리고 동작 중에, 엔티티 엔진은 하나 이상의 엔티티를 모델링한다. 각각의 엔티티는, 그 내의 하나 이상의 속성/필드/열과 관련하여, 데이터와 연관된 변수들을 정의하는 것과 함께, 데이터를 보유하거나 분류한다. 엔티티 엔진은 리스트를 (예를 들면, 컴퓨팅 시스템 또는 환경의 메모리에) 저장한다. 리스트는 하나 이상의 엔티티 각각을 식별해 준다. 엔티티 엔진은 또한 리스트와 대응하여 하나 이상의 엔티티를 (예를 들면, 메모리에) 저장한다. 엔티티 엔진은, (예를 들면, 외부 시스템으로부터의) 선택 입력에 응답하여, 리스트에 기초하여 하나 이상의 엔티티에 대한 액세스를 제공한다. 액세스를 제공하는 예에서, 엔티티 엔진은 리스트를 외부 시스템에 제공하고, 하나 이상의 엔티티 중 제1 엔티티를 식별하는 선택 입력을 수신하며, 제1 엔티티를 메모리로부터 외부 시스템으로 내보낸다. 엔티티 엔진은 또한 본 명세서에 기술된 바와 같이 액세스를 인증하고 허가할 수 있다.
엔티티 엔진 및 그 내의 엔티티들의 기술적 효과들 및 이점들은 사용자들이 개발 및/또는 배포 플랫폼들에서 원활하게 데이터를 생성, 중앙집중화, 액세스 및 사용할 수 있게 하는 영속적인 데이터 저장 서비스를 제공하는 것(예를 들면, 이에 의해 외부 서비스들의 복잡한 문제들 및 결점들을 피하는 것)을 포함한다. 게다가, 중앙집중화 및 원활한 액세스로 인해, 엔티티 엔진 및 엔티티들 자체는 개발자들이 그렇지 않았으면 외부 서비스들에서 이용 가능하지 않은 그들의 데이터를 중심으로 제품들 및 특징들을 구축할 수 있게 한다. 예를 들어, 외부 서비스들은 일반적으로 임의의 저장된 데이터에 액세스하기 위해 명시적 자격증명들을 요구하고 웹 서비스들을 생성하는 것에 대한 제약들을 제공하는 REST(representational state transfer) 쿼리들을 활용한다. 대조적으로, 개발자들이 명시적 자격증명들을 제공하거나 사용할 필요가 없는 제품들 및 특징들을 빌드할 수 있는 반면, 엔티티들 자체는 REST 쿼리들 및 그의 제약들에 대해 작업할 필요 없이 엔티티 엔진에 의한 (예를 들면, 데이터를 페치하고 기입하는 것과 같은) 활동들을 가능하게 하도록, 엔티티 엔진은 설계/런타임 시에 인증 및 허가 동작들을 통합한다.
본 명세서에 기술된 방법들 및 프로세스들에 대해, 기재된 단계들은 임의의 순서로 비순차적으로 수행될 수 있고, 명시적으로 기술되거나 도시되지 않은 하위 단계들이 수행될 수 있다. 추가적으로, "결합된" 또는 "작동 가능하게 결합된"은 객체들이 링크되어 있지만 링크된 객체들 사이에 0 개 이상의 중간 객체가 있을 수 있음을 의미할 수 있다. 또한, 하나 이상의 실시예에서, 개시된 특징들/요소들의 임의의 조합이 사용될 수 있다. "A 또는 B"에 대해 언급하는 것을 사용할 때, 이는 A, B, 또는 A 및 B를 포함할 수 있으며, 이는 유사하게 보다 긴 리스트들로 확장될 수 있다. 표기법 X/Y를 사용할 때, 이는 X 또는 Y를 포함할 수 있다. 대안적으로, 표기법 X/Y를 사용할 때, 이는 X 및 Y를 포함할 수 있다. 표기법 X/Y는 동일한 설명된 논리로 유사하게 보다 긴 리스트들로 확장될 수 있다.
도 1a는 로봇 프로세스 자동화(RPA) 개발, 설계, 동작 또는 실행(100)의 예시이다. 하나 이상의 엔진(예를 들면, 엔티티 엔진), 개발 환경 등을 포함하는 개발 플랫폼인, 스튜디오라고 때때로 지칭되는, 디자이너(designer)(102)는 로봇이 하나 이상의 워크플로를 수행하거나 자동화하기 위한 코드, 명령어들, 커맨드들 등을 생성하도록 구성될 수 있다. 컴퓨팅 시스템이 로봇에 제공할 수 있는 선택(들)으로부터, 로봇은 사용자 또는 조작자에 의해 선택되는 시각 디스플레이의 영역(들)의 대표 데이터를 결정할 수 있다. RPA의 일부로서, 다수의 치수들의 정사각형, 직사각형, 원, 다각형, 자유 형상(freeform) 등과 같은 형상들이 컴퓨터 비전(CV) 동작 또는 머신 러닝(ML) 모델과 관련하여 UI 로봇 개발 및 런타임에 활용될 수 있다.
워크플로에 의해 달성될 수 있는 동작들의 비제한적인 예들은 로그인을 수행하는 것, 양식을 작성하는 것, 정보 기술(IT) 관리 등 중 하나 이상일 수 있다. UI 자동화를 위한 워크플로를 실행하기 위해, 로봇은, 애플리케이션 액세스 또는 애플리케이션 개발에 관계없이, 버튼, 체크박스, 텍스트 필드, 라벨 등과 같은, 특정 화면 요소들을 고유하게 식별할 필요가 있을 수 있다. 애플리케이션 액세스의 예들은 로컬, 가상, 원격, 클라우드, Citrix®, VMWare®, VNC®, Windows® 원격 데스크톱, VDI(virtual desktop infrastructure) 등일 수 있다. 애플리케이션 개발의 예들은 win32, Java, Flash, HTML(hypertext markup language), HTML5, XML(extensible markup language), JavaScript, C#, C++, Silverlight 등일 수 있다.
워크플로는 태스크 시퀀스, 플로차트, 유한 상태 머신(Finite State Machine, FSM), 전역 예외 처리기(global exception handler) 등을 포함할 수 있지만 이에 제한되지 않는다. 태스크 시퀀스는 하나 이상의 애플리케이션 또는 창 간의 선형 태스크들을 처리하기 위한 선형 프로세스일 수 있다. 플로차트가 복잡한 비즈니스 논리를 처리하여, 다수의 분기 논리 연산자들을 통해 보다 다양한 방식으로 의사 결정들의 통합 및 활동들의 연결을 가능하게 하도록 구성될 수 있다. FSM은 대규모 워크플로를 위해 구성될 수 있다. FSM은 조건, 전환, 활동 등에 의해 트리거될 수 있는 그의 실행에서 제한된 수의 상태들을 사용할 수 있다. 전역 예외 처리기는, 프로세스들을 디버깅하는 것 등을 위해, 실행 오류에 직면할 때 워크플로 거동을 결정하도록 구성될 수 있다.
로봇은 기본 운영 체제(OS) 또는 하드웨어에 투명하게 UI를 자동화할 수 있는 애플리케이션, 애플릿, 스크립트 등일 수 있다. 배포 시에, 오케스트레이터(orchestrator)라고 때때로 지칭되는, 컨덕터(conductor)(104)에 의해 하나 이상의 로봇이 관리되거나, 제어되거나 할 수 있다. 컨덕터(104)는 로봇(들) 또는 자동화 실행기(automation executor)(106)에게 메인프레임, 웹, 가상 머신, 원격 머신, 가상 데스크톱, 엔터프라이즈 플랫폼, 데스크톱 앱(들), 브라우저, 또는 이와 유사한 클라이언트, 애플리케이션 또는 프로그램에서 워크플로를 실행하거나 모니터링하도록 지시하거나 명령할 수 있다. 컨덕터(104)는 복수의 로봇들에 컴퓨팅 플랫폼을 자동화하도록 지시하거나 명령하기 위한 중앙 또는 반중앙 지점으로서 역할할 수 있다.
특정 구성들에서, 컨덕터(104)는 프로비저닝하며, 배포하고, 구성하며, 큐잉하고, 모니터링하며, 로깅하고/하거나 상호연결성을 제공하도록 구성될 수 있다. 프로비저닝은 로봇(들) 또는 자동화 실행기(106)와 컨덕터(104) 사이의 연결 또는 통신의 생성 및 유지를 포함할 수 있다. 배포는 실행을 위해 패키지 버전들을 할당된 로봇들에 전달하는 것을 보장하는 것을 포함할 수 있다. 구성은 로봇 환경들 및 프로세스 구성들의 유지 및 전달을 포함할 수 있다. 큐잉은 큐들 및 큐 항목들의 관리를 제공하는 것을 포함할 수 있다. 모니터링은 로봇 식별 데이터를 추적하는 것 및 사용자 권한을 유지하는 것을 포함할 수 있다. 로깅은 데이터베이스(예를 들면, SQL 데이터베이스) 및/또는 다른 저장 메커니즘(예를 들면, 대규모 데이터 세트들을 저장하고 빠르게 쿼리할 수 있게 하는 ElasticSearch®)에 로그들을 저장하고 인덱싱하는 것을 포함할 수 있다. 컨덕터(104)는 제3자 솔루션들 및/또는 애플리케이션들을 위한 중앙 집중식 통신 지점으로서 역할하는 것에 의해 상호연결성을 제공할 수 있다.
로봇(들) 또는 자동화 실행기(106)는 무인(unattended)(108) 또는 유인(attended)(110)으로서 구성될 수 있다. 무인(108) 동작의 경우, 제3자 입력들 또는 제어 없이 자동화가 수행될 수 있다. 유인(110) 동작의 경우, 제3자 컴포넌트로부터 입력, 커맨드들, 명령어들, 안내 등을 수신하는 것에 의해 자동화가 수행될 수 있다. 무인(108) 또는 유인(110) 로봇들은 모바일 컴퓨팅 또는 모바일 디바이스 환경들에서 실행(run) 또는 실행(execute)될 수 있다.
로봇(들) 또는 자동화 실행기(106)는 디자이너(102)에서 빌드된 워크플로들을 실행하는 실행 에이전트들일 수 있다. UI 또는 소프트웨어 자동화를 위한 로봇(들)의 상업적 예는 UiPath Robots™이다. 일부 실시예들에서, 로봇(들) 또는 자동화 실행기(106)는 기본적으로 Microsoft Windows® SCM(Service Control Manager) 관리 서비스(managed service)를 설치할 수 있다. 그 결과, 그러한 로봇들은 로컬 시스템 계정으로 대화형 Windows® 세션들을 열 수 있고, Windows® 서비스의 권한을 가질 수 있다.
일부 실시예들에서, 로봇(들) 또는 자동화 실행기(106)는 사용자 모드에서 설치될 수 있다. 이러한 로봇들은 주어진 로봇을 설치한 사용자와 동일한 권한을 가질 수 있다. 이 특징은 HD(High Density) 로봇들에 대해서도 이용 가능할 수 있으며, 이는, 예컨대, HD 환경에서, 최대 성능으로 각각의 머신을 최대한 활용하는 것을 보장한다.
특정 구성들에서, 로봇(들) 또는 자동화 실행기(106)는, 각각이 특정 자동화 태스크 또는 활동에 전용되는, 여러 컴포넌트들로 분할되거나, 분산되거나 할 수 있다. 로봇 컴포넌트들은 SCM 관리 로봇 서비스들, 사용자 모드 로봇 서비스들, 실행기들, 에이전트들, 커맨드 라인(command line) 등을 포함할 수 있다. SCM 관리 로봇 서비스들은 Windows® 세션들을 관리 또는 모니터링할 수 있고 컨덕터(104)와 실행 호스트들(즉, 로봇(들) 또는 자동화 실행기(106)가 실행되는 컴퓨팅 시스템들) 사이에서 프록시로서 역할할 수 있다. 이러한 서비스들은 로봇(들) 또는 자동화 실행기(106)에 대한 자격증명들을 맡아서 관리할 수 있다.
사용자 모드 로봇 서비스들은 Windows® 세션들을 관리하고 모니터링할 수 있으며 컨덕터(104)와 실행 호스트들 사이에서 프록시로서 역할할 수 있다. 사용자 모드 로봇 서비스들은 로봇들에 대한 자격증명들을 맡아서 관리할 수 있다. SCM 관리 로봇 서비스들이 설치되어 있지 않더라도 Windows® 애플리케이션은 자동으로 론칭(launch)될 수 있다.
실행기는 Windows® 세션 하에서 주어진 작업들을 실행할 수 있다(즉, 워크플로들을 실행할 수 있음). 실행기는 모니터별 DPI(dots per inch) 설정들을 알고 있을 수 있다. 에이전트는 시스템 트레이 창에 이용 가능한 작업들을 디스플레이하는 WPF(Windows® Presentation Foundation) 애플리케이션일 수 있다. 에이전트는 서비스의 클라이언트일 수 있다. 에이전트는 작업들을 시작 또는 중지하고 설정들을 변경하도록 요청할 수 있다. 커맨드 라인은 서비스의 클라이언트일 수 있다. 커맨드 라인은 작업들을 시작하도록 요청할 수 있는 콘솔 애플리케이션이고 작업들의 출력을 기다린다.
로봇(들) 또는 자동화 실행기(106)의 컴포넌트들이 위에 설명된 바와 같이 분할되는 구성들에서는 개발자들을 돕고, 사용자들을 지원하며, 컴퓨팅 시스템들은 각각의 컴포넌트에 의한 실행을 보다 쉽게 실행하고, 식별하며 추적할 수 있다. 실행기 및 서비스에 대해 상이한 방화벽 규칙들을 셋업하는 것과 같이, 특수 거동들은 이러한 방식으로 컴포넌트별로 구성될 수 있다. 일부 실시예들에서, 실행기는 모니터별 DPI 설정들을 알고 있을 수 있다. 그 결과, 워크플로들은, 이들이 생성된 컴퓨팅 시스템의 구성에 관계없이, 임의의 DPI로 실행될 수 있다. 디자이너(102)로부터의 프로젝트들은 브라우저 줌 레벨과도 무관할 수 있다. DPI를 인식하지 못하거나 인식하지 못하는 것으로 의도적으로 표시되는 애플리케이션들의 경우, 일부 실시예들에서, DPI가 디스에이블될 수 있다.
도 1b는 RPA 개발, 설계, 동작 또는 실행(120)의 다른 예시이다. 스튜디오 컴포넌트 또는 모듈(122)은 로봇이 하나 이상의 활동(124)을 수행하기 위한 코드, 명령어들, 커맨드들 등을 생성하도록 구성될 수 있다. 사용자 인터페이스(UI) 자동화(126)는 하나 이상의 드라이버(들) 컴포넌트(128)를 사용하여 클라이언트 상의 로봇에 의해 수행될 수 있다. 로봇은 컴퓨터 비전(CV) 활동들 모듈 또는 엔진(130)을 사용하여 활동들을 수행할 수 있다. 다른 드라이버들(132)은 UI의 요소들을 얻기 위해 로봇에 의한 UI 자동화에 활용될 수 있다. 이들은 OS 드라이버들, 브라우저 드라이버들, 가상 머신 드라이버들, 엔터프라이즈 드라이버들 등을 포함할 수 있다. 특정 구성들에서, CV 활동들 모듈 또는 엔진(130)은 UI 자동화에 사용되는 드라이버일 수 있다.
도 1c는 정보 또는 데이터를 통신하기 위한 버스(142) 또는 다른 통신 메커니즘, 및 프로세싱을 위한 버스(142)에 결합된 하나 이상의 프로세서(들)(144)를 포함할 수 있는 컴퓨팅 시스템 또는 환경(140)의 예시이다. 하나 이상의 프로세서(들)(144)는, CPU(central processing unit), ASIC(application specific integrated circuit), FPGA(field programmable gate array), GPU(graphics processing unit), 제어기, 다중 코어 프로세싱 유닛, 3차원 프로세서, 양자 컴퓨팅 디바이스, 또는 이들의 임의의 조합을 포함한, 임의의 유형의 범용 또는 특수 목적 프로세서일 수 있다. 하나 이상의 프로세서(들)(144)는 또한 다수의 프로세싱 코어들을 가질 수 있고, 코어들 중 적어도 일부는 특정 기능들을 수행하도록 구성될 수 있다. 다중 병렬 프로세싱이 또한 구성될 수 있다. 추가적으로, 적어도 하나 이상의 프로세서(들)(144)는 생물학적 뉴런들을 모방하는 프로세싱 요소들을 포함하는 뉴로모픽 회로(neuromorphic circuit)일 수 있다.
메모리(146)는 프로세서(들)(144)에 의해 실행되거나 프로세싱될 정보, 명령어들, 커맨드들, 또는 데이터를 저장하도록 구성될 수 있다. 메모리(146)는 RAM(random access memory), ROM(read only memory), 플래시 메모리, 솔리드 스테이트 메모리, 캐시, 자기 또는 광학 디스크와 같은 정적 스토리지, 또는 임의의 다른 유형들의 비일시적 컴퓨터 판독 가능 매체 또는 이들의 조합들의 임의의 조합으로 구성될 수 있다. 비일시적 컴퓨터 판독 가능 매체는 프로세서(들)(144)에 의해 액세스될 수 있는 임의의 매체일 수 있고 휘발성 매체, 비휘발성 매체 등을 포함할 수 있다. 매체는 또한 이동식, 비이동식 등일 수 있다.
통신 디바이스(148)는 FDMA(frequency division multiple access), SC-FDMA(single carrier FDMA), TDMA(time division multiple access), CDMA(code division multiple access), OFDM(orthogonal frequency-division multiplexing), OFDMA(orthogonal frequency-division multiple access), GSM(Global System for Mobile) 통신, GPRS(general packet radio service), UMTS(universal mobile telecommunications system), cdma2000, W-CDMA(wideband CDMA), HSDPA(high-speed downlink packet access), HSUPA(high-speed uplink packet access), HSPA(high-speed packet access), LTE(long term evolution), LTE-A(LTE Advanced), 802.11x, Wi-Fi, Zigbee, UWB(Ultra-WideBand), 802.16x, 802.15, HnB(home Node-B), Bluetooth, RFID(radio frequency identification), IrDA(infrared data association), NFC(near-field communications), 5G(fifth generation), NR(new radio), 또는 하나 이상의 안테나를 통한 통신을 위한 임의의 다른 무선 또는 유선 디바이스/트랜시버로서 구성될 수 있다. 안테나는 단일(singular), 어레이(arrayed), 위상(phased), 스위칭(switched), 빔포밍(beamforming), 빔스티어링(beamsteering) 등일 수 있다.
하나 이상의 프로세서(들)(144)는 버스(142)를 통해, 플라스마, LCD(liquid crystal display), LED(light emitting diode), FED(field emission display), OLED(organic light emitting diode), 플렉서블 OLED, 플렉서블 기판 디스플레이, 프로젝션 디스플레이, 4K 디스플레이, HD(high definition) 디스플레이, Retinaⓒ 디스플레이, IPS(in-plane switching) 등 기반 디스플레이와 같은, 디스플레이 디바이스(150)에 더 결합될 수 있다. 디스플레이 디바이스(150)는 입력/출력(I/O)을 위한 본 기술 분야의 통상의 기술자에 의해 이해되는 바와 같은 저항성, 용량성, 표면 탄성파(SAW) 용량성, 적외선, 광학 이미징, 분산 신호 기술, 음향 펄스 인식, 불완전 전반사(frustrated total internal reflection) 등을 사용하는 터치, 3차원(3D) 터치, 다중 입력 터치, 또는 다중 터치 디스플레이로서 구성될 수 있다.
키보드(152) 및, 컴퓨터 마우스, 터치패드 등과 같은, 컨트롤 디바이스(154)는 컴퓨팅 시스템 또는 환경(140)에 대한 입력을 위해 버스(142)에 더 결합될 수 있다. 추가적으로, 입력은 컴퓨팅 시스템 또는 환경(140)에 이와 통신하는 다른 컴퓨팅 시스템을 통해 원격으로 제공될 수 있거나, 또는 컴퓨팅 시스템 또는 환경(140)은 자율적으로 작동할 수 있다.
메모리(146)는 하나 이상의 프로세서(들)(144)에 의해 실행되거나 프로세싱될 때 기능성을 제공하는 소프트웨어 컴포넌트들, 모듈들, 엔진들 등을 저장할 수 있다. 이것은 컴퓨팅 시스템 또는 환경(140)을 위한 OS(156)를 포함할 수 있다. 모듈들은 애플리케이션 특정 프로세스들 또는 그의 파생물들을 수행하기 위한 커스텀 모듈(158)을 더 포함할 수 있다. 컴퓨팅 시스템 또는 환경(140)은 추가적인 기능성을 포함하는 하나 이상의 추가적인 기능 모듈(160)을 포함할 수 있다. 예를 들어, 엔티티 엔진은 특정 구성 및 툴링 로봇 프로세스 자동화 방법을 컴퓨팅 시스템 또는 환경(140)에 제공하기 위해 모듈들(158 및 160) 중 하나 이상에서 구현될 수 있다.
컴퓨팅 시스템 또는 환경(140)은 서버, 임베디드 컴퓨팅 시스템, 개인용 컴퓨터, 콘솔, PDA(personal digital assistant), 셀폰, 태블릿 컴퓨팅 디바이스, 양자 컴퓨팅 디바이스, 클라우드 컴퓨팅 디바이스, 모바일 디바이스, 스마트폰, 고정 모바일 디바이스, 스마트 디스플레이, 웨어러블 컴퓨터 등으로서 역할하도록 적응되거나 구성될 수 있다.
본 명세서에서 주어진 예들에서, 모듈들은 커스텀 VLSI(very Large scale integration) 회로들 또는 게이트 어레이들, 로직 칩들, 트랜지스터들 또는 다른 개별 컴포넌트들과 같은 기성품 반도체들을 포함하는 하드웨어 회로로서 구현될 수 있다. 모듈은 또한 필드 프로그래머블 게이트 어레이들, 프로그래머블 어레이 로직, 프로그래머블 로직 디바이스들, 그래픽 프로세싱 유닛들 등과 같은 프로그래밍 가능 하드웨어 디바이스들로 구현될 수 있다.
모듈은 다양한 유형들의 프로세서들에 의한 실행을 위해 적어도 부분적으로 소프트웨어로 구현될 수 있다. 식별된 실행 가능 코드 유닛은, 예를 들어, 객체, 프로시저, 루틴, 서브루틴 또는 함수로서 구성될 수 있는 컴퓨터 명령어들의 하나 이상의 물리적 또는 논리적 블록을 포함할 수 있다. 식별된 모듈의 실행 파일들은, 논리적으로 함께 결합될 때, 모듈을 구성하도록 상이한 위치들에 병치되거나 저장된다.
실행 가능 코드의 모듈은 단일 명령어, 하나 이상의 데이터 구조, 하나 이상의 데이터 세트, 여러 상이한 코드 세그먼트들에 걸쳐, 여러 프로그램들 간에, 여러 메모리 디바이스들에 걸쳐 등으로 분산되어 있는 복수의 명령어들 등일 수 있다. 동작 또는 기능 데이터는 본 명세서에서 모듈들 내에서 식별되고 예시될 수 있으며, 적합한 형태로 구체화되고 임의의 적합한 유형의 데이터 구조 내에 구성될 수 있다.
본 명세서에서 주어진 예들에서, 컴퓨터 프로그램은 하드웨어, 소프트웨어 또는 하이브리드 구현으로 구성될 수 있다. 컴퓨터 프로그램은 서로 작동 가능하게 통신하고 정보 또는 명령어들을 전달하는 모듈들로 구성될 수 있다.
비록 특징들 및 요소들이 특정 조합들로 위에서 기술되어 있지만, 본 기술 분야의 통상의 기술자는 각각의 특징 또는 요소가 단독으로 또는 다른 특징들 및 요소들과 임의의 조합으로 사용될 수 있음을 이해할 것이다. 추가적으로, 본 명세서에서 기술된 방법들은 컴퓨터 또는 프로세서에 의해 실행하기 위한 컴퓨터 판독 가능 매체에 포함된 컴퓨터 프로그램, 소프트웨어, 또는 펌웨어로 구현될 수 있다. 컴퓨터 판독 가능 매체의 예들은 (유선 또는 무선 연결들을 통해 전송되는) 전자 신호들 및 컴퓨터 판독 가능 저장 매체를 포함한다. 컴퓨터 판독 가능 저장 매체의 예들은 ROM(read only memory), RAM(random access memory), 레지스터(register), 캐시 메모리, 반도체 메모리 디바이스, 내부 하드 디스크 및 이동식 디스크와 같은 자기 매체, 자기 광학 매체, 그리고 CD-ROM 디스크 및 DVD(digital versatile disk)와 같은 광학 매체를 포함하지만, 이에 제한되지 않는다.
이제 도 2를 참조하면, 블록 다이어그램은 하나 이상의 실시예에 따른 컴퓨팅 시스템 또는 환경(예를 들면, 도 1c의 컴퓨팅 시스템 또는 환경(140))에 의해 실행되는 프로세스 흐름(200)을 예시한다. 프로세스 흐름(200)은 개발 또는 배포 플랫폼(예를 들면, 도 1a의 디자이너(104) 및/또는 컨덕터(106))에서 실행하는 엔티티 엔진에 의한 동작들을 위한 방법의 예시적인 구현이다.
일반적으로, 프로세스 흐름(200)은 데이터(예를 들면, 기록들, 문서들 등과 같은, 영속적인 고객 관련 비즈니스 데이터)를 안전하게 저장하고 관리할 수 있는 개발 또는 배포 플랫폼들을 위한 영속적인 데이터 저장 서비스(예를 들면, 비즈니스 사용자에게 친숙한 엔티티들)를 제공한다. 예를 들어, 엔티티 엔진은 개발 플랫폼들의 맥락 내에서 사용자들이 외부 비즈니스 커스텀 클래스 객체들 또는 인스턴스들(예를 들면, 엔티티들)을 정의/수정하고, 이들의 기록들/엔티티들과 연관된 문서들을 저장하는 것과 함께, 해당 엔티티들에 대한 기록들을 저장할 수 있다. 후속하여, 이러한 엔티티들은, 사용자들이 이러한 엔티티들을 사용하고 프로젝트당 필요한 변수들/인수들의 수를 감소시키며 워크플로들에 대한 데이터에 일관된 구조를 제공할 수 있게 하기 위해, 배포 플랫폼들에 통합된다. 따라서, 프로세스 흐름(200)은, 통합된 인증 및 허가와 함께, 엔티티들 및 그 내의 데이터를 생성/정의/업데이트/판독/삭제/쿼리하는 활동들의 세트를 포함한다.
블록(210)에서, 엔티티 엔진은 하나 이상의 엔티티를 모델링한다. 각각의 엔티티는 그 내의 하나 이상의 속성/필드/열과 관련하여 데이터를 보유하거나 분류하도록 구성될 수 있다. 각각의 엔티티는 데이터와 연관된 변수들을 정의하도록 구성될 수 있다. 하나 이상의 엔티티 각각은 엔티티 유형 및/또는 다른 엔티티들에 대한 링크들을 정의하는 구성 가능한 구조(예를 들면, 엔티티 정의라고도 지칭됨)를 포함할 수 있다. 하나 이상의 실시예에 따르면, 엔티티들은 변수들을 정의하고 개발 및/또는 배포 플랫폼들의 네이티브 프로그래밍 모델에서 이용 가능한 풍부한 객체들/클래스들이다. 풍부한 객체들/클래스들로서의 엔티티들의 예들은 ".NET" 객체들, ".NET" 클래스들, Java 클래스들 및 JS 클래스들을 포함하지만 이에 제한되지 않는다. 엔티티들에 의해 보유되거나 식별되는 데이터는 컴퓨터 동작들이 수행되는 임의의 수량들, 문자들, 기호들 및/또는 구조들과 함께, 적어도 양식들, 문서들, 송장들 및/또는 기록들을 포함한다.
블록(220)에서, 엔티티 엔진은 하나 이상의 엔티티 각각을 식별하는 리스트를 저장한다. 일반적으로, 리스트는 하나 이상의 엔티티에 대응하는 하나 이상의 식별자를 포함/저장하는 임의의 데이터 구조를 나타낸다. 리스트는 또한 하나 이상의 엔티티와 관련하여 액세스 가능한 하나 이상의 서비스 인스턴스에 대응하는 하나 이상의 식별자를 포함/저장할 수 있다. 하나 이상의 실시예에 따르면, 리스트 및 하나 이상의 엔티티는 동일한 메모리에 저장될 수 있다(예를 들면, 엔티티 엔진은 또한 리스트와 대응하여 하나 이상의 엔티티를 저장한다). 사용자 또는 프로세스가 엔티티 엔진에 리스트를 요청할 수 있다는 점에 유의한다. 하나 이상의 실시예에 따르면, 리스트는 엔티티 저장소로서 구현될 수 있다. 엔티티 저장소는 사용자들이 열거된 엔티티들을 브라우징, 편집 및 사용할 수 있게 하는 디지털 분배 플랫폼일 수 있다. 엔티티 저장소는 각각의 엔티티의 하나 이상의 버전을 저장하고/항목화하고/가리키고, 버전 날짜들을 식별하며, 버전 이용 가능성을 표시할 수 있다.
블록들(230 및 240)에서, 엔티티 엔진은 하나 이상의 엔티티에 대한 액세스를 인증하고 허가한다. 엔티티 엔진에 의한 인증은, 사용자 또는 프로세스의 아이덴티티(identity)와 같은, 무언가가 진짜이거나, 진정한 것인거나 유효한 것임을 증명하는 동작을 포함한다. 하나 이상의 실시예에 따르면, 엔티티 엔진은 토큰 기반 인증 동작들을 사용하여 하나 이상의 엔티티에 대한 액세스를 인증할 수 있다. 토큰 기반 인증 동작들은 엔티티들에 액세스하려고 시도하는 사용자 또는 프로세스를 인증하기 위해 보안 토큰을 사용하는 것을 포함한다. 엔티티 엔진에 의한 허가는 무언가(예를 들면, 사용자 또는 프로세스)가 무엇에 액세스할 수 있는지를 확인하는 동작을 포함한다.
일 예에서, 사용자는 엔티티를 호출하는 프로세스를 트리거할 수 있다. 이와 관련하여, 사용자는 리스트에 항목화된 하나 이상의 엔티티 중 제1 엔티티를 식별하는 선택 입력을 (보안 토큰과 함께) 제공할 수 있다. 다른 예에서, 선택 입력 및/또는 보안 토큰은 (예를 들면, 자동화 실행기(106) 또는 도 1a의 디자이너(102)에 의해) 자동으로 제공될 수 있다. 사용자 또는 프로세스가 선택 입력을 제출하기 전에 리스트를 요청할 수 있다는 점에 유의한다. 사용자가 외부 시스템을 운영하고 있을 수 있다. 차례로, 리스트가 엔티티 엔진에 의해 외부 시스템에 제공될 수 있다. 엔티티 엔진은 먼저, 예컨대, 보안 토큰을 검증하는 것에 의해, 사용자를 인증한다. 이어서, 엔티티 엔진은, 사용자가 제1 엔티티에 액세스할 권한을 가진다고 결정하는 것에 의해, 사용자를 허가한다. 인증 및 허가 둘 모두가 성공적인 경우, 프로세스 흐름(200)은 블록(250)으로 진행한다.
블록(250)에서, 엔티티 엔진은 하나 이상의 엔티티에 대한 액세스를 제공한다. 이 액세스는 외부 시스템으로부터의 선택 입력에 응답한 것이고 리스트에 기초할 수 있다. 예를 들어, 액세스는 리스트를 외부 시스템에 제공하는 것, 제1 엔티티를 식별하는 선택 입력을 수신하는 것, 및 제1 엔티티를 메모리로부터 외부 시스템으로 내보내기하는 것을 포함할 수 있다.
이제 도 3을 참조하면, 하나 이상의 실시예에 따른 영속적인 데이터 저장 서비스를 제공하는 엔티티 엔진의 컴포넌트들 및 동작들이 기술된다. 상세하게는, 도 3은 엔티티 엔진(301)의 하나 이상의 인스턴스를 포함하는 시스템(300)의 예시이다. 일반적으로, 엔티티 엔진(301)의 동작들은 개발/배포 데이터 서비스; 엔티티 배포 통합; 통합 스키마 및 활동들, 엔티티 가져오기/내보내기; 가져오기된/내보내기된 엔티티 표현; 및 엔티티 디스플레이를 포함할 수 있지만, 이에 제한되지 않는다. 도 3에 도시된 바와 같이, 시스템(300)은 사용자 디바이스(305), 개발 플랫폼(310), 및 배포 플랫폼(315)을 포함하며, 이들 각각은 엔티티 엔진(301)의 인스턴스들(예를 들면, 엔티티 엔진의 제1 인스턴스가 개발 플랫폼(310)에 도시되고 엔티티 엔진의 제2 인스턴스가 배포 플랫폼(315)에 도시되어 있다는 점에 유의함)을 제공하고/하거나 이들과 상호작용하기 위해 (파선 화살표들 A, B, 및 C에 의해 도시된 바와 같이) 통신한다. 엔티티 엔진(301)의 인스턴스들이 개발 플랫폼(310) 및 배포 플랫폼(315)(본 명세서에서 집합적으로 플랫폼이라고 지칭될 수 있음)에 로컬인 것으로 도시되어 있지만, 엔티티 엔진(301)이 또한 사용자 디바이스(305) 또는 시스템(300)의 다른 컴포넌트들과 통신하는 독립형 하드웨어/소프트웨어 조합에 로컬일 수 있다는 점에 유의한다. 이와 관련하여, 엔티티 엔진(301)의 각각의 인스턴스는 동일하거나 그의 외부 버전들일 수 있다. 게다가, 인증 시스템(300)의 각각의 아이템 또는 컴포넌트에 대해 단일 블록이 도시되어 있지만, 해당 단일 블록은 해당 아이템 또는 컴포넌트 중 하나 이상을 나타낸다.
사용자 디바이스(305)는 하나 이상의 사용자 디바이스를 나타내며, 각각은 적어도 프로세서, 메모리, 및 사용자 인터페이스를 갖는 디스플레이를 포함한다. 사용자 디바이스(305)의 예들은 개인용 컴퓨터, PDA, 셀폰, 태블릿 컴퓨팅 디바이스, 모바일 디바이스 및 스마트폰을 포함하지만 이에 제한되지 않는다. 사용자 디바이스(305)는 사용자 디바이스(305)의 디스플레이 상의 하나 이상의 화면(예를 들면, 사용자 인터페이스)을 제공하는 로컬 애플리케이션(320)(예를 들면, 모바일 애플리케이션) 및 하나 이상의 로봇 프로세스(325)를 실행할 수 있다. 로컬 애플리케이션(320)(사용자 인터페이스를 통해 사용자를 통해) 또는 로봇 프로세스(325)는 선택 입력(330)을 생성할 수 있고 보안 토큰(335)과 통신할 수 있다.
개발 플랫폼(310) 및/또는 배포 플랫폼(315)은 하나 이상의 로봇 프로세스(325)를 관여시키는 것 및, 적어도 하나의 엔티티(340) 및 적어도 하나의 리스트(345)를 포함하는, 엔티티 엔진(301)(그의 제1 또는 제2 인스턴스)을 실행하는 것을 위한 하나 이상의 디바이스(예를 들면, 개인용 컴퓨터, 태블릿 컴퓨팅 디바이스, 데스크톱 디바이스 등)를 나타낸다. 리스트(345)는 적어도 하나의 엔티티(340)를 식별해 준다. 적어도 하나의 엔티티(340)는 데이터(348) 및/또는 속성들(349)을 보유하는 것과 관련하여 하나 이상의 필드(347)를 포함할 수 있다. 필드(347)와 연관된 속성(349)은 필드(347)가 보유하는 정보의 유형 또는 필드 유형(예를 들면, 문자열, 불 값(Boolean value) 등)을 정의할 수 있다. 속성은 또한 필드(347) 자체에 저장된 정보일 수 있다. 필드들의 조합은 하나 이상의 열, 행 및/또는 테이블을 생성할 수 있다.
하나 이상의 실시예에 따르면, 개발 플랫폼(310) 및/또는 온라인 플랫폼(315)은 사용자 디바이스(305)(예를 들면, 엔티티 엔진(330)의 하나 이상의 인스턴스)에 네트워크들, 서버들, 스토리지 서비스들, 운영 체제들, 데이터베이스 서비스들, 및 보안 서비스들을 제공하는 하나 이상의 소프트웨어 기반, 인프라스트럭처 기반, 플랫폼 기반 서비스를 나타낸다. 예를 들어, 개발 플랫폼(310)은 그래픽 사용자 인터페이스들 및 구성을 통해 애플리케이션 소프트웨어를 빌드하는 데 사용되는 생성 환경을 제공하는 반면, 배포 플랫폼(315)은 개발 플랫폼(310)에서 빌드된 애플리케이션 소프트웨어가 구현되는 실행 환경을 제공한다. 하나 이상의 실시예에 따르면, 엔티티 엔진(301)은 (그의 위치에 관계없이) 그 내부의 워크플로들(예를 들면, 풍부한 네이티브 프로그래밍 모델 객체들을 통한 RPA/워크플로)과 관련하여 사용자들이 적어도 하나의 엔티티(340)를 사용할 수 있게 하고 일관된 구조를 제공하기 위해 하나 이상의 플랫폼으로 통합될 수 있다.
예시적인 동작에서, 로컬 애플리케이션(320)(사용자 인터페이스를 통해 사용자를 통해) 또는 로봇 프로세스(325)는 엔티티 엔진(301)의 엔티티들(340)을 생성/정의/업데이트/판독/삭제/쿼리할 수 있는 반면, 엔티티 엔진(301)은 하나 이상의 엔티티(340)를 리스트(345)와 대응하게 (예를 들면, 개발 플랫폼(310) 및/또는 온라인 플랫폼(315)의 메모리에) 저장한다. 본 명세서에서 언급된 바와 같이, 엔티티들(340)은 데이터(348) 및 데이터(348)를 조작하는 방법들 둘 모두를 보유하는 커스텀 클래스 객체들 또는 인스턴스들일 수 있다. 게다가, 엔티티 엔진(301)은 리스트(345)를 로컬 애플리케이션(320) 또는 로봇 프로세스(325)에 제공한다. 리스트(345)를 사용하여, 로컬 애플리케이션(320) 또는 로봇 프로세스(325)는 보안 토큰(335)과 함께 선택 입력(330)을 엔티티 엔진(301)의 어느 한 인스턴스에 제출할 수 있다. 차례로, 엔티티 엔진(301)은 하나 이상의 엔티티(340) 중 제1 엔티티를 식별하는 선택 입력(330)을 수신하고 제1 엔티티를 메모리로부터 로컬 애플리케이션(320) 또는 로봇 프로세스(325)로 내보낸다.
이제 도 4를 참조하면, 도 4의 엔티티 엔진(401)의 동작들이 도 5 내지 도 6에 도시된 사용자 인터페이스들을 바탕으로 기술된다. 엔티티 엔진(401)이 데이터(예를 들면, 영속적인 고객 관련 비즈니스 데이터)를 저장하고 관리하는 엔티티들을 모델링하고 통합하는 영속적인 데이터 저장 서비스를 제공하기 위해 필연적으로 컴퓨팅 시스템 또는 환경(예를 들면, 도 1c의 컴퓨팅 시스템 또는 환경(140) 및/또는 도 3의 시스템(300))에 의한 프로세스 동작들에 그리고 컴퓨팅 시스템 또는 환경의 프로세싱 하드웨어에 기반을 두고 있는 프로세서 실행 가능 코드 또는 소프트웨어이다. 따라서, 하나 이상의 실시예에 따르면, 엔티티 엔진(401)은 컴퓨팅 시스템 또는 환경의 개발 및 배포 플랫폼들을 위한 특정 구성 및 툴링 로봇 프로세스 자동화 방법을 제공한다. 이 특정 구성 및 툴링 로봇 프로세스 자동화 방법은 개발 및 배포 플랫폼들을 운영하는 것과 관련하여 이러한 엔티티들이 가리키는 엔티티들 및 데이터의 다단계 조작(예를 들면, 생성/정의/업데이트/판독/삭제/쿼리)을 포함한다. 영속적인 데이터 저장 서비스를 제공하기 위해, 엔티티 엔진(401)은, 엔티티들 및 그 내의 데이터와 관련하여, 서비스 제공 동작들(410)(예를 들면, 개발/배포 데이터 서비스들), 통합 동작들(415)(예를 들면, 엔티티 배포 통합), 활동 동작들(420)(예를 들면, 통합 스키마 및 활동들), 가져오기/내보내기 동작들(425)(예를 들면, 엔티티 가져오기/내보내기), 표현 동작들(430)(예를 들면, 가져오기된/내보내기된 엔티티 표현), 및 디스플레이 동작들(435)(예를 들면, 엔티티 디스플레이)을 구현할 수 있다.
서비스 제공 동작들(410)(예를 들면, 개발/배포 데이터 서비스들)의 구현과 관련하여, 엔티티 엔진(401)은 개발자들이 그렇지 않았으면 종래의 외부 서비스들에서 이용 가능하지 않은 데이터를 중심으로 제품들 및 특징들(예를 들면, RPA, 인공 지능, 장기 실행 워크플로들, 애플리케이션들, 분석들 등)을 빌드할 수 있게 하기 위해 개발 및/또는 배포 플랫폼들에서 원활하게 데이터를 생성, 중앙집중화, 액세스 및 사용한다. 보다 상세하게는, 서비스 제공 동작들(410)은 사용자들이 엔티티들을 정의/수정/확장하고 해당 엔티티들에 대한 기록들/데이터를 저장할 수 있게 하는 것; 개발 및/또는 배포 플랫폼들에 있는 다른 제품들로부터의 엔티티들, 기록들 및 문서들에 원활하게 액세스할 수 있게 하는 것; 엔티티들에 대한 관계들, 규칙들 및 속성들과 같은 풍부한 메타데이터를 지원하고 기록들/엔티티들과 연관된 문서들을 저장할 수 있게 하는 것; 쉽고 안전하게 권한을 구성할 수 있게 하는 것; 및 엔티티들을 '즉시(out of box)' 생성하고 제공할 수 있게 하는 것을 포함한다.
예를 들어, 사용자들이 프로세스, ML 모델 또는 애플리케이션을 빌드하기를 원하고 임의의 제각기 생성된 데이터를 저장할 필요가 있는 경우, 사용자들은 첫 번째로 외부 데이터베이스 또는 기록 시스템(예를 들면, Salesforce, SAP, CRM, Excel 등)을 찾아내고 두 번째로 데이터를 존속시키기 위해 해당 기록을 사용자들의 프로세스/ML 모델/애플리케이션과 통합한다. 개발 및/또는 배포 플랫폼들에서 '즉시' 이용 가능한 영속적인 데이터 저장 서비스가 사용자들이 모든 그들의 사용 사례에 대한 그러한 데이터를 원활하게 모델링, 저장 및 액세스할 수 있게 하도록, 엔티티 엔진(401)은 자체 제품들 및 특징 사용의 일부로서 데이터(예를 들면, 비즈니스 데이터)를 생성, 저장 및/또는 액세스할 필요가 있는 조직들/제작자들/비즈니스 사용자들을 위한 솔루션을 제공한다.
엔티티 엔진(401)의 기술적 효과들 및 이점들은 원활한 통합(예를 들면, 개발 및/또는 배포 플랫폼들 내에서 데이터 서비스를 사용하려는 노력을 최소화하는 것)을 포함한다. 예를 들어, 영속적인 데이터 저장 서비스에 정의된 엔티티들은 개발 및/또는 배포 플랫폼들에서 (본 명세서에 기술된 바와 같은) 풍부한 객체들/클래스들로서 이용 가능할 수 있다. 엔티티 엔진(401)의 기술적 효과들 및 이점들은 함께 처리될 수 있는 프로세스들/ML 모델들/애플리케이션들 및 데이터에 대한 역할 및 권한을 처리할 수 있는 능력을 제공하는 것 및 사례/인시던트(incident) 볼륨들을 추적하는 사전 빌드된 보고들/분석들/프로세스를 제공하는 것을 또한 포함하지만 이에 제한되지 않는다(예를 들면, 기록들의 시스템이 존재하지 않는 경우, 사용자들은 새로운 시스템을 만들거나 그들의 데이터를 저장할 장소를 찾을 필요가 없는 반면, 제품들은 기존의 엔티티들에 의존하고 풍부한 '즉시' 경험들을 제공할 수 있다).
통합 작업들(415)의 구현과 관련하여, 엔티티 엔진(401)은 사용자들이 개발 및/또는 배포 플랫폼들에서 엔티티들을 사용할 수 있게 하여, 이에 의해 프로젝트에서 사용될 필요가 있는 변수들 및 인수들의 수를 감소시키고 또한 워크플로들 전반에 걸쳐 사용되는 데이터에 보다 많은 구조를 제공한다. 더욱이, 엔티티 엔진(401)의 엔티티들은 2 개 이상의 워크플로 사이의 공통 "계약"을, 그들 사이에서 또는 큐들을 통해 트랜잭션될 데이터의 구조를 정의하는 것에 의해, 확립할 수 있다.
예시적인 사용 사례에서, 워크플로들은 모듈식이고 소프트웨어 개발 모범 실례들은 워크플로들이 독립적으로 작동할 수 있는 작은 개별 기능들로 분할될 것을 제안하기 때문에, 해당 워크플로들로 그리고 그들로부터 데이터를 전달할 필요가 있다. 일부 워크플로들은, 개발 및/또는 배포 플랫폼들에서 구현하기 쉽지 않은 복잡한 데이터 구조들에 대해 동작하기 때문에, 보다 긴 인수 리스트를 갖는다. 그 결과, RPA 개발자들은 다수의 문제들을 해결하는 모든 필요한 데이터를 전달하기 위해 다수의 인수들을 사용한다. 즉, 종래의 플랫폼들은 "호출자" 워크플로들과 "피호출자" 워크플로들 간의 계약의 정의들 및 프로세스들을 체이닝할 수 있게 하는 데이터 구조들을 생성하고 사용할 수 있는 능력을 제공하지 않는다. 상세하게는, 워크플로들과 프로세스들 사이에서 전달될 필요가 있는 필수 in/out 인수들 및 변수들의 양은 프로세스들을 빌드하고 유지 관리하는 것을 어렵게 만들며, 종래의 플랫폼들 내에서 복잡한 커스텀 데이터 유형들을 사용하고 가져오기하는 것은 쉬운 일이 아니고 많은 제한들을 가지며; 워크플로들에 걸쳐 복잡한 유형들을 재사용하는 것이 지원되지 않고(이는 다수의 프로젝트들에 걸쳐 동일한 유형들이 필요하더라도, 복잡한 유형들이 모든 프로젝트에 추가될 필요가 있다는 것을 의미함); 기존의 유형들 및 네임스페이스들에 대해 탐색하는 것은 엄청난 절차이며; 워크플로들 내부에서의 복잡한 유형들의 자동 가져오기는 종래의 플랫폼들에서 지원되지 않고; 양식들, 문서들, 분류들 및 온톨로지들을 다루는 활동들에 적용되는 워크플로들 안팎으로 데이터를 전달하는 것의 복잡도가 크며; 일부 필요한 기존의 구조들이 직렬화 가능하지 않고 격리된 워크플로들은 직렬화 가능한 인수들만을 수용한다.
종래의 플랫폼들의 단점들 및 우려들을 고려하여, 엔티티 엔진(401)의 통합 동작들(415)은 전용 엔티티 웹 서비스인 엔티티 엔진(401)을 포함하는 상위 레벨 접근법을 제공한다. 즉, 엔티티 엔진(401)은 개발자들이 각각의 엔티티의 구조를 정의하고 여러 엔티티 유형들을 함께 링크시킬 수 있는 전용 엔티티 웹 서비스로서 구현될 수 있다. 예를 들어, 엔티티 엔진(401)은, 전용 엔티티 웹 서비스로서 구현될 때, 엔티티들의 전체 관리가 (본 명세서에 기술된 바와 같이) 엔티티 정의에서 고려되는 것을 요구할 수 있다. 엔티티 엔진(401)은 엔티티들에 대한 저장 리포지토리(440) 및 개발자들이 액세스할 수 있는 (예를 들면, 엔티티 엔진(401)의) 모든 인스턴스들 및 이들 내에 정의된 엔티티들(예를 들면, 도 3의 엔티티들(340))을 열거하는 수단(예를 들면, 도 3의 리스트(345))을 또한 포함할 수 있다. 엔티티 엔진(401)이 하나 이상의 플랫폼 및/또는 디바이스에 걸쳐 하나 이상의 인스턴스로서 중복, 복제 및/또는 실행될 수 있으며, 이에 의해 해당 하나 이상의 플랫폼 및/또는 디바이스로부터의 일관된 '엔티티' 동작들 및 활동들을 제공할 수 있다는 점에 유의한다. 엔티티 엔진(401)은 임의의 플랫폼에서 해당 정의된 엔티티들을 커스텀 데이터 유형들로서 가져오기하기 위한 수단; 가져오기된 엔티티들의 현재 세트를, 이들을 업데이트하고 사용하기 위한 툴들과 함께, 저장 및 디스플레이하는 수단(예를 들면, 저장 리포지토리(440)); 및 (예를 들면, 전용 엔티티 웹 서비스로서) 엔티티 엔진(401)으로/으로부터 각각의 커스텀 엔티티의 인스턴스들의 검색 및 저장을 처리할 수 있는 활동들의 세트를 또한 포함할 수 있다.
활동 동작들(420)의 구현과 관련하여, 엔티티 엔진(401)은 사용자들/개발자들이 엔티티들의 엔티티 데이터를 생성, 업데이트, 가져오기, 쿼리 및/또는 삭제하기 위해 임의의 플랫폼에서 풍부한 객체들/클래스들(즉, 엔티티들)에 대해 작업할 수 있게 한다. 풍부한 객체들/클래스들(예를 들면, ".NET" 클래스들, Java 클래스들 및 JS 클래스들)로서의 엔티티들의 예들 중 임의의 것이 엔티티 데이터를 생성, 업데이트, 가져오기, 쿼리 및/또는 삭제하는 데 사용될 수 있다는 점에 유의한다. 이제 도 5를 참조하면, 하나 이상의 실시예에 따른 사용자 인터페이스의 다이어그램이 도시되어 있다. 즉, 도 5는 사용자 인터페이스의 하나 이상의 패널(510 및 520)을 예시한다. 패널(510)은 사용자가 엔티티 유형을 선택하고 제시된 필드들에 엔티티 데이터를 제공하는 것에 의해 엔티티 기록을 생성할 수 있는 활동을 예시한다. 패널(520)은 사용자가 엔티티 유형을 선택/입력하고 제시된 필드들에 쿼리 정보를 제공하는 것에 의해 하나 이상의 엔티티 기록을 쿼리할 수 있는 활동들을 예시한다.
예를 들어, 활동들의 세트의 범위와 관련하여, 엔티티 엔진(401)은 단일 기록을 생성, 업데이트 또는 삭제할 수 있고; 단일 기록을 판독할 수 있으며; 쿼리 필터들에 기초하여 단일 엔티티로부터 기록들의 세트를 쿼리/판독할 수 있고; 단일 엔티티 유형의 기록들의 세트를 생성, 업데이트 또는 삭제할 수 있으며; 연관된 기록들의 세트로서 관련 엔티티들을 페치하는 것은 물론 다대다 및/또는 부모-자식 관계들을 지원할 수 있고; 기록들과 연관된/기록들 내의 파일들을 업로드/다운로드하는 것을 지원할 수 있다. 게다가, 엔티티 엔진(401)은 관련 엔티티들, 연관된 기록들의 세트, 다대다 관계들, 및 사용자 인터페이스 내의 부모-자식 관계를 보여줄 수 있다.
하나 이상의 실시예에 따르면, 엔티티 엔진(401)은 그 내의 엔티티들에 대한 액세스 제어를 제공한다. 예를 들어, 엔티티 엔진(401)의 활동들은 엔티티들에 대한 액세스가 테넌트/RPA/사용자의 콘텍스트로 제한되도록 보장하기 위해 활동들 애플리케이션 프로그래밍 가능 인터페이스로부터 생성되는(또는 도 1a의 디자이너(102), 실행기(106) 또는 컨덕터(104)에 의해 제공되는) 보안 토큰들을 사용하여 임의의 현재 연결된 테넌트/RPA/사용자에 대해 초기에 작동할 수 있다. 게다가, 엔티티 엔진(401)은, 현재 연결된 테넌트/RPA/사용자와 동일한 디바이스에 있는 경우, 엔티티 엔진(401) 활동 또는 보안 토큰들의 URL(uniform resource locator)을 별도로 제공할 필요성을 제거할 수 있다. 대안적으로, 엔티티 엔진(401)이 현재 연결된 테넌트/RPA/사용자와 동일한 디바이스에 있지 않은 경우, 엔티티 엔진(401)은 통합된 인증 및 허가를 보장하기 위해 엔티티 엔진(401) 활동 또는 보안 토큰들의 URL을 (자동 발견(auto-discovery) 동작들을 통해) 제공할 수 있다(그렇지 않은 경우 URL이 제거될 수 있음). 현재 연결된 인스턴스에 대해 이용 가능한 엔티티 엔진(401) 엔드포인트가 없는 경우, 엔티티 엔진(401)이 (시나리오에 따라) 오류를 발행할 수 있다는 점에 유의한다.
가져오기/내보내기 동작들(425)의 구현과 관련하여, 엔티티 엔진(401)은 사용자들이 (엔티티 가져오기 마법사를 통해) 임의의 플랫폼에서 또는 임의의 디바이스 상에서 엔티티들을 사용할 수 있게 하여, 이에 의해 프로젝트에서 사용될 필요가 있는 변수들 및 인수들의 수를 감소시키고 또한 워크플로들 전반에 걸쳐 사용되는 데이터에 보다 많은 구조를 제공한다. 엔티티 가져오기 마법사는 임의의 플랫폼에서 사용하기 위한 엔티티들을 자동으로 제공할 수 있다. 예를 들어, RPA 개발자들이 엔티티 엔진(401) 및 각자의 로컬 환경(예를 들면, 로컬 개발 플랫폼)으로 그리고 그로부터 엔티티들 및 데이터를 전환하는 수단을 필요로 하기 때문에, 엔티티 엔진(401)은 임의의 플랫폼의 엔티티들 및 데이터를 "가져오기하는" 것을 정의하는 엔티티 가져오기 마법사를 제공한다. 엔티티 가져오기 마법사를 통해 가져오기된 엔티티들이 본 명세서에 기술된 활동들의 세트에 대한 참조 유형들뿐만 아니라 변수들, 인수들 등에 대한 자동화들에서 사용 가능할 수 있다는 점에 유의한다.
하나 이상의 실시예에 따르면, 엔티티 가져오기 마법사에 의해 지원되는 플랫폼 활동들에 대한 다양한 의존성들이 있기 때문에, 엔티티 엔진(401)은 엔티티 가져오기 마법사로부터 하나 이상의 사전 요구사항을 설정할 수 있다. 하나 이상의 실시예에 따르면, 임의의 가져오기된 엔티티는 그 각자의 데이터 유형들과 함께 이용 가능한 모든 속성들/필드들/열들을 가질 수 있으며, 새로운 엔티티 가져오기 마법사를 통해 가져오기되는 모든 엔티티들은 수신 플랫폼에 대한 단일 베이스로부터 상속될 수 있고, 베이스 유형에 대한 이름(예를 들면, EntityBase)이 제안될 수 있으며, 관계들은 강한 유형(strongly typed)일 수 있다.
예를 들어, 일단 엔티티들이 (도 1a의 디자이너(102), 실행기(106) 또는 컨덕터(104)에 의해) 생성/정의되면, 사용자는 엔티티 가져오기 마법사를 호출하고 (본 명세서에 기술된) 엔티티 저장소에 연결할 수 있다. 일단 엔티티 가져오기 마법사가 엔티티들에 대한 식별자들을 로드하면, 엔티티 가져오기 마법사는 특정 엔티티 자체에 대한 직접 링크를 제시할 수 있다. 사용자는 가져오기되어야 하는 모든 엔티티들을 엔티티 가져오기 마법사로부터 선택할 수 있다(예를 들면, 기본적으로 모두가 선택될 수 있음). 특정 엔티티를 가져오기하기로 선택할 때, 그의 모든 의존성들(예를 들면, 엔티티와 관계가 있는 엔티티들, 의존성들과 관계가 있는 엔티티들 등)도 가져오기된다는 점에 유의한다. 일반적으로, 의존성은 다른 엔티티와 관계가 있는 엔티티이다(즉, 엔티티 A가 유형 B의 필드를 갖는 경우 엔티티 B는 엔티티 A의 의존성임). 의존성들은 엔티티 리스트에서 선택되지 않은 상태로 유지될 수 있다. 일부 경우에, 엔티티가 가져오기를 수행하는 사용자에 의해 명시적으로 선택된 경우 및/또는 엔티티가 선택된 엔티티의 직접적 또는 간접적 의존성인 경우와 같이, 엔티티가 기준을 충족시키는 경우 엔티티가 가져오기될 수 있다.
표현 동작들(430)의 구현과 관련하여, 엔티티 엔진(401)은 사용자 인터페이스 또는 그의 구성 패널 내에서 엔티티 표현들을 렌더링할 수 있다. 이와 관련하여, 엔티티 엔진(401)은 빠르고 쉬운 처리, 사용 및 관리를 위해 사용자 인터페이스의 전용 패널(예를 들면, 구성 패널)에 (엔티티 표현을 통해) 엔티티들을 열거할 수 있다. 예를 들어, 엔티티 엔진(401)은 디자이너(예를 들면, 도 1a의 디자이너(102))의 사용자 인터페이스와 연결하고 디자이너(102)에 의한 사용을 위해 엔티티 표현들을 사용자 인터페이스의 디자이너 패널에 배치할 수 있다. 예로서 RPA 개발자가 엔티티의 이전 버전을 가지고 있는 경우, RPA 개발자는 (리스트에 의해 식별되거나 엔티티 저장소를 통해 제공되는) 모든 엔티티들의 표현들을 보고 이전 버전을 이용 가능한 보다 새로운 버전에 동기화시킬 수 있다.
각각의 엔티티 표현은, 출처, 버전, 서브세트 및 네임스페이스 이름과 같은, 정보를 포함할 수 있다. 출처는 (예를 들면, 메타데이터로서 저장되는) 엔티티들의 세트가 가져오기된 엔티티 엔진(401)의 엔티티 저장소이다. 버전은 (예를 들면, 메타데이터로서 저장되는) 엔티티들의 세트가 가져오기될 때 엔티티 엔진(401)에 의해 제공되는 엔티티 저장소 버전이다. 가져오기된 버전에 존재했던 엔티티들의 전체 세트가 주어지면, 서브세트는 독립적으로(예를 들면, 가져오기된 서브세트에 없는 어떠한 엔티티도 참조하지 않고) 작동할 수 있는 엔티티들의 정확한 서브세트이다. 네임스페이스 이름은 엔티티들의 해당 특정 세트에 대한 사용자가 선택한 이름이다.
디스플레이 동작들(435)의 구현과 관련하여, 엔티티 엔진(401)은 엔티티 엔진(401)으로부터의 엔티티들의 리스트가 발견 가능하고 조작될 수 있는 온라인 엔티티 디스플레이 또는 인터페이스(예를 들면, 웹 기반 사용자 인터페이스)를 제공한다. 이러한 통합의 맥락에서, RPA 개발자들은 엔티티 엔진(401)의 인스턴스들로부터 개발자들에 이용 가능한(예를 들면, 개발자들이 인증하기 위해 사용하는 사용자 이름이 주어지면 개발자들이 액세스할 수 있는) 엔티티들을 발견하는 방법을 필요로 한다.
차례로, 엔티티 엔진(401)은 엔티티 엔진(401)을 표시하는/보여주는 구성 패널(예를 들면, 전용 리소스 패널) 또는 (본 명세서에 기술된 바와 같은) 엔티티 저장소를 제공한다. 이 엔티티 엔진(401)으로부터의 모든 엔티티들은 열거 및 조작(예를 들면, 가져오기되는 것, 디자이너 패널에 드롭되는 것 등)될 수 있다. 엔티티 엔진(401)이 인에이블되지 않은 임의의 현재 연결된 테넌트/RPA/사용자가 그와 연관된 엔티티들을 표시/제공하지 않을 것이라는 점에 유의한다. 이제 도 6을 참조하면, 하나 이상의 실시예에 따른 사용자 인터페이스의 다이어그램이 도시되어 있다. 즉, 도 6은 패널(601)(예를 들면, 본 명세서에 기술된 바와 같은 구성 패널)을 예시한다. 패널(601)의 헤더(611)는 'Entities'가 표시되고 있음을 나타낸다. 각각의 엔티티는 그와 연관된 대응하는 하나 이상의 필드를 갖는 제1 열(620)에 표시된다. 예를 들어, 제1 열(620)의 엔티티들은 CustomerInvoice, Customers, Invoice, Order, Portfolio, Product 및 StockTracker를 포함한다. 게다가, CustomerInvoice와 연관된 필드들은 CreatedBy, CreateTime, Id, UpdatedBy 및 UpdateTime을 포함한다. 일부 엔티티들은 필드들과 함께 표시되고 다른 엔티티들은 그렇지 않지만, 패널(601)의 예시적인 디스플레이가 제한하는 것으로 의도되지 않는다는 점에 유의한다. 제2 열(630)의 속성들은 제1 열(620)에 있는 엔티티들에 대응한다. 예를 들어, 제2 열(630)은, 각각의 엔티티에 대한 기록들의 수(예를 들면, Invoice 엔티티는 3 개의 기록을 가짐) 및 필드 유형(예를 들면, CreatedBy 필드는 문자열 유형 필드인 반면, DigitalAccess는 불 유형 필드임)와 같은, 속성들을 식별해 준다. 하나 이상의 실시예에 따르면, 패널(601)은 또한 콘텍스트 액션들(예를 들면, 모든 포함된 엔티티들이 선택된 상태에서 엔티티 가져오기 마법사를 호출하는 가져오기 액션)을 제공/디스플레이할 수 있고 정의 액션들로 갈 수 있다(예를 들면, 해당 특정 엔티티 저장소에서 엔티티 엔진(401)을 엶).
본 명세서에서의 실시예들을 고려하면, 엔티티 엔진 및 엔티티의 기술적 효과들 및 이점들은 사용자들이 시간 불문(anytime) 주문형 액세스를 위해 개발 및 배포 플랫폼들에 비즈니스 관련 데이터를 저장할 수 있는 영속적인 데이터 저장 서비스를 제공하는 것을 포함한다. 엔티티 엔진 및 엔티티들의 기술적 효과들 및 이점들은 활동들의 세트를 통해 엔티티/데이터 모델을 생성/정의하고 해당 엔티티/데이터 모델을 임의의 플랫폼으로 가져오기하며, 이러한 가져오기된 엔티티/데이터 모델들을 표시하거나 디스플레이하고, 엔티티/데이터 모델과 연관된 데이터를 저장/검색할 수 있는 능력을 더 포함한다. 엔티티 엔진 및 엔티티들의 기술적 효과들 및 이점들은 엔티티 엔진에 보안 액세스 능력을 제공하기 위한 (토큰 기반 아이덴티티들을 사용하는) 인증 및 허가 동작들을 더 포함한다.
도면들에서의 플로차트 및 블록 다이어그램들은 본 발명의 다양한 실시예들에 따른 시스템들, 방법들, 및 컴퓨터 프로그램 제품들의 가능한 구현들의 아키텍처, 기능성, 및 동작을 예시하고 있다. 이와 관련하여, 플로차트 또는 블록 다이어그램들에서의 각각의 블록은 명시된 논리적 기능(들)을 구현하기 위한 하나 이상의 실행 가능 명령어를 포함하는 명령어들의 모듈, 세그먼트, 또는 부분을 표현할 수 있다. 일부 대안적인 구현들에서, 블록들에 표시된 기능들이 도면들에 표시된 순서와 달리 발생할 수 있다. 예를 들어, 연속으로 도시된 2 개의 블록이, 실제로, 실질적으로 동시에 실행될 수 있거나, 또는 블록들이, 때때로, 관여된 기능성에 따라, 역순으로 실행될 수 있다. 블록 다이어그램들 및/또는 플로차트 예시의 각각의 블록, 및 블록 다이어그램들 및/또는 플로차트 예시에서의 블록들의 조합들이 명시된 기능들 또는 동작들을 수행하는 특수 목적 하드웨어 기반 시스템들에 의해 구현될 수 있거나, 또는 특수 목적 하드웨어와 컴퓨터 명령어들의 조합들을 수행할 수 있음에 또한 유의해야 할 것이다.
비록 특징들 및 요소들이 특정 조합들로 위에서 기술되어 있지만, 본 기술 분야의 통상의 기술자는 각각의 특징 또는 요소가 단독으로 또는 다른 특징들 및 요소들과 임의의 조합으로 사용될 수 있음을 이해할 것이다. 추가적으로, 본 명세서에서 기술된 방법들은 컴퓨터 또는 프로세서에 의해 실행하기 위한 컴퓨터 판독 가능 매체에 포함된 컴퓨터 프로그램, 소프트웨어, 또는 펌웨어로 구현될 수 있다. 컴퓨터 판독 가능 매체는, 본 명세서에서 사용되는 바와 같이, 전파(radio wave) 또는 다른 자유 전파(freely propagating) 전자기파, 도파관 또는 다른 전송 매체를 통해 전파되는 전자기파(예를 들면, 광섬유 케이블을 통과하는 광 펄스), 또는 전선(wire)을 통해 전송되는 전기 신호와 같은, 일시적 신호 그 자체인 것으로서 해석되어서는 안된다.
컴퓨터 판독 가능 매체의 예들은 (유선 또는 무선 연결들을 통해 전송되는) 전기 신호 및 컴퓨터 판독 가능 저장 매체를 포함한다. 컴퓨터 판독 가능 저장 매체의 예들은 레지스터, 캐시 메모리, 반도체 메모리 디바이스, 내부 하드 디스크 및 이동식 디스크와 같은 자기 매체, 자기 광학 매체, CD(compact disk) 및 DVD(digital versatile disk)와 같은 광학 매체, 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 소거 가능 프로그래밍 가능 판독 전용 메모리(EPROM 또는 플래시 메모리), 정적 랜덤 액세스 메모리(SRAM) 및 메모리 스틱을 포함하지만 이에 제한되지 않는다. 프로세서는 소프트웨어와 함께 WTRU, UE, 단말, 기지국, RNC, 또는 임의의 호스트 컴퓨터에서 사용하기 위한 무선 주파수 트랜시버를 구현하는 데 사용될 수 있다.
본 명세서에서 사용되는 전문용어는 특정의 실시예들을 기술하기 위한 것에 불과하고 제한하는 것으로 의도되지 않는다. 본 명세서에서 사용되는 바와 같이, 단수 형태들("a", "an" 및 "the)"은, 문맥이 명확하게 달리 나타내지 않는 한, 복수 형태들도 포함하는 것으로 의도된다. 용어들 "포함한다(comprise)" 및/또는 "포함하는(comprising)"은, 본 명세서에서 사용될 때, 언급된 특징들, 정수들, 단계들, 동작들, 요소들, 및/또는 컴포넌트들의 존재를 명시하지만, 하나 이상의 다른 특징, 정수, 단계, 동작, 요소, 컴포넌트, 및/또는 이들의 그룹들의 존재 또는 추가를 배제하지 않는다는 것이 더 이해될 것이다.
본 명세서에서의 다양한 실시예들에 대한 설명은 예시의 목적을 위해 제시되었지만, 총망라적이거나 개시된 실시예들로 제한되는 것으로 의도되지 않는다. 많은 수정들 및 변형들이 기술된 실시예들의 범위 및 사상을 벗어나지 않으면서 본 기술 분야의 통상의 기술자에게 명백할 것이다. 본 명세서에서 사용된 전문용어는 실시예들의 원리들, 실용적인 응용 또는 시장에서 발견되는 기술들에 대한 기술적 개선을 가장 잘 설명하기 위해, 또는 본 기술 분야의 통상의 기술자가 본 명세서에 개시된 실시예들을 이해할 수 있게 하기 위해 선택되었다.

Claims (20)

  1. 컴퓨팅 디바이스로서,
    엔티티 엔진에 대한 프로세서 실행 가능 명령어들을 저장하도록 구성된 메모리; 및
    상기 메모리에 결합된 프로세서
    를 포함하며,
    상기 프로세서는 상기 컴퓨팅 디바이스로 하여금
    상기 엔티티 엔진에 의해, 데이터를 보유하거나 분류하도록 구성된 하나 이상의 엔티티를 모델링하게 하고;
    상기 엔티티 엔진에 의해, 상기 하나 이상의 엔티티 각각을 식별하는 리스트, 및 상기 리스트와 대응하여 상기 하나 이상의 엔티티를 상기 메모리에 저장하게 하며;
    상기 엔티티 엔진에 의해, 외부 시스템으로부터의 선택 입력에 응답하여, 상기 리스트에 기초하여 상기 하나 이상의 엔티티에 대한 액세스를 제공하게 하기 - 상기 액세스는 상기 리스트를 상기 외부 시스템에 제공하는 것, 상기 하나 이상의 엔티티 중 제1 엔티티를 식별하는 상기 선택 입력을 수신하는 것, 및 상기 제1 엔티티를 상기 메모리로부터 상기 외부 시스템으로 내보내기(export)하는 것을 포함함 -
    위해 상기 엔티티 엔진을 실행하도록 구성되는, 컴퓨팅 디바이스.
  2. 제1항에 있어서, 상기 하나 이상의 엔티티는 또한, 하나 이상의 속성, 하나 이상의 필드, 또는 하나 이상의 열과 관련하여 상기 데이터를 보유하거나 분류하도록 구성되는, 컴퓨팅 디바이스.
  3. 제1항에 있어서, 상기 엔티티 엔진은 그 내부의 워크플로들과 관련하여 상기 하나 이상의 엔티티의 사용을 가능하게 하고 구조를 제공하기 위해 하나 이상의 플랫폼 또는 상기 외부 시스템에 통합되는, 컴퓨팅 디바이스.
  4. 제1항에 있어서, 상기 하나 이상의 엔티티는 또한, 상기 데이터와 연관된 변수들을 정의하도록 구성되는, 컴퓨팅 디바이스.
  5. 제1항에 있어서, 상기 프로세서는 상기 컴퓨팅 디바이스로 하여금 상기 하나 이상의 엔티티에 대한 상기 액세스를 인증 및 허가하게 하기 위해 상기 엔티티 엔진을 실행하도록 구성되는, 컴퓨팅 디바이스.
  6. 제5항에 있어서, 상기 엔티티 엔진은 토큰 기반 인증 동작들을 사용하여 상기 하나 이상의 엔티티에 대한 액세스를 인증하는, 컴퓨팅 디바이스.
  7. 제1항에 있어서, 상기 하나 이상의 엔티티 각각은 엔티티 유형을 정의할 수 있는 각각의 엔티티의 구성 가능한 구조를 포함하는, 컴퓨팅 디바이스.
  8. 제1항에 있어서, 상기 하나 이상의 엔티티 각각은 다른 엔티티들에 링크하도록 구성 가능한, 컴퓨팅 디바이스.
  9. 제1항에 있어서, 상기 데이터는 양식들, 문서들, 송장들 또는 기록들을 포함하는, 컴퓨팅 디바이스.
  10. 제1항에 있어서, 상기 리스트는 상기 하나 이상의 엔티티와 관련하여 액세스 가능한 상기 엔티티 엔진의 하나 이상의 인스턴스를 식별하는, 컴퓨팅 디바이스.
  11. 제1항에 있어서, 상기 제1 엔티티는 상기 엔티티 엔진으로부터 내보내기되고 개발 플랫폼 또는 배포 플랫폼으로 가져오기(import)되는, 컴퓨팅 디바이스.
  12. 제1항에 있어서, 상기 엔티티 엔진은 상기 하나 이상의 엔티티를 상기 외부 시스템에 디스플레이하도록 구성된 엔티티 가져오기 마법사를 포함하는, 컴퓨팅 디바이스.
  13. 제1항에 있어서, 상기 하나 이상의 엔티티는 풍부한 객체들을 포함하는, 컴퓨팅 디바이스.
  14. 방법으로서,
    엔티티 엔진에 대한 프로세서 실행 가능 명령어들을 저장하도록 구성된 메모리; 및
    상기 메모리에 결합된 프로세서를 포함하며,
    상기 프로세서는 상기 컴퓨팅 디바이스로 하여금
    상기 엔티티 엔진에 의해, 데이터를 보유하거나 분류하도록 구성된 하나 이상의 엔티티를 모델링하게 하고;
    상기 엔티티 엔진에 의해, 상기 하나 이상의 엔티티 각각을 식별하는 리스트, 및 상기 리스트와 대응하여 상기 하나 이상의 엔티티를 상기 메모리에 저장하게 하며;
    상기 엔티티 엔진에 의해, 외부 시스템으로부터의 선택 입력에 응답하여, 상기 리스트에 기초하여 상기 하나 이상의 엔티티에 대한 액세스를 제공하게 하기 - 상기 액세스는 상기 리스트를 상기 외부 시스템에 제공하는 것, 상기 하나 이상의 엔티티 중 제1 엔티티를 식별하는 상기 선택 입력을 수신하는 것, 및 상기 제1 엔티티를 상기 메모리로부터 상기 외부 시스템으로 내보내기하는 것을 포함함 -
    위해 상기 엔티티 엔진을 실행하도록 구성되는, 방법.
  15. 제14항에 있어서, 상기 하나 이상의 엔티티는 또한, 하나 이상의 속성, 하나 이상의 필드, 또는 하나 이상의 열과 관련하여 상기 데이터를 보유하거나 분류하도록 구성되는, 방법.
  16. 제14항에 있어서, 상기 엔티티 엔진은 그 내부의 워크플로들과 관련하여 상기 하나 이상의 엔티티의 사용을 가능하게 하고 구조를 제공하기 위해 하나 이상의 플랫폼 또는 상기 외부 시스템에 통합되는, 방법.
  17. 제14항에 있어서, 상기 하나 이상의 엔티티는 또한, 상기 데이터와 연관된 변수들을 정의하도록 구성되는, 방법.
  18. 제14항에 있어서, 상기 프로세서는 상기 컴퓨팅 디바이스로 하여금 상기 하나 이상의 엔티티에 대한 상기 액세스를 인증 및 허가하게 하기 위해 상기 엔티티 엔진을 실행하도록 구성되는, 방법.
  19. 제18항에 있어서, 상기 엔티티 엔진은 토큰 기반 인증 동작들을 사용하여 상기 하나 이상의 엔티티에 대한 액세스를 인증하는, 방법.
  20. 제14항에 있어서, 상기 하나 이상의 엔티티 각각은 엔티티 유형을 정의할 수 있는 각각의 엔티티의 구성 가능한 구조를 포함하는, 방법.
KR1020217040488A 2020-08-06 2021-07-30 컴퓨팅 플랫폼의 엔티티 엔진 KR20230043025A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/986,767 2020-08-06
US16/986,767 US11461374B2 (en) 2020-08-06 2020-08-06 Entity engine of a computing platform
PCT/US2021/043925 WO2022031539A1 (en) 2020-08-06 2021-07-30 Entity engine of a computing platform

Publications (1)

Publication Number Publication Date
KR20230043025A true KR20230043025A (ko) 2023-03-30

Family

ID=80113801

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217040488A KR20230043025A (ko) 2020-08-06 2021-07-30 컴퓨팅 플랫폼의 엔티티 엔진

Country Status (6)

Country Link
US (3) US11461374B2 (ko)
EP (1) EP3991062A4 (ko)
JP (1) JP2023536768A (ko)
KR (1) KR20230043025A (ko)
CN (1) CN114303133A (ko)
WO (1) WO2022031539A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220011734A1 (en) * 2020-07-09 2022-01-13 UiPath, Inc. Robot access control and governance for robotic process automation
US11733668B2 (en) 2020-07-09 2023-08-22 UiPath, Inc. Robot access control and governance for robotic process automation

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6708166B1 (en) 1999-05-11 2004-03-16 Norbert Technologies, Llc Method and apparatus for storing data as objects, constructing customized data retrieval and data processing requests, and performing householding queries
US6738077B1 (en) 2000-07-18 2004-05-18 Apple Computer, Inc. Dynamic generation and automated distribution of user interface from database model
US20040078434A1 (en) 2002-10-17 2004-04-22 Lockheed Martin Corporation Method, system and program product for automated document export control
AU2008101325A4 (en) 2007-05-08 2014-01-30 Sourcecode Technology Holding, Inc. Methods and apparatus for exposing workflow process definitions as business objects
US7934249B2 (en) 2007-08-27 2011-04-26 Oracle International Corporation Sensitivity-enabled access control model
US8554719B2 (en) 2007-10-18 2013-10-08 Palantir Technologies, Inc. Resolving database entity information
EP2461613A1 (en) 2010-12-06 2012-06-06 Gemalto SA Methods and system for handling UICC data
US10162491B2 (en) 2011-08-12 2018-12-25 Otoy Inc. Drag and drop of objects between applications
US8954441B1 (en) 2014-01-02 2015-02-10 Linkedin Corporation Graph-based system and method of information storage and retrieval
US9754117B2 (en) * 2014-02-24 2017-09-05 Northcross Group Security management system
US11347868B2 (en) * 2018-04-17 2022-05-31 Domo, Inc Systems and methods for securely managing data in distributed systems
WO2020086722A1 (en) * 2018-10-23 2020-04-30 Yext, Inc. Knowledge search system
US11620407B2 (en) * 2019-10-17 2023-04-04 International Business Machines Corporation Real-time, context based detection and classification of data
US11822913B2 (en) * 2019-12-20 2023-11-21 UiPath, Inc. Dynamic artificial intelligence / machine learning model update, or retrain and update, in digital processes at runtime

Also Published As

Publication number Publication date
US20230289371A1 (en) 2023-09-14
US11693891B2 (en) 2023-07-04
US20220043842A1 (en) 2022-02-10
US20230026725A1 (en) 2023-01-26
US11461374B2 (en) 2022-10-04
EP3991062A1 (en) 2022-05-04
CN114303133A (zh) 2022-04-08
WO2022031539A1 (en) 2022-02-10
EP3991062A4 (en) 2023-08-09
JP2023536768A (ja) 2023-08-30

Similar Documents

Publication Publication Date Title
US11693891B2 (en) Entity engine of a computing platform
CN116057504A (zh) 机器人流程自动化的用户界面(ui)描述符、ui对象库、ui对象储存库和ui对象浏览器
KR20210156192A (ko) 로봇 프로세스 자동화를 위한 애플리케이션 통합
US11334828B2 (en) Automated data mapping wizard for robotic process automation (RPA) or enterprise systems
KR20220007495A (ko) 제2 세션에서 실행중인 로봇 프로세스 자동화 로봇을 통한 제1 세션에서 실행중인 프로세스의 자동화
US20230373087A1 (en) Localized configurations of distributed-packaged robotic processes
KR20220007496A (ko) 제1 세션에서 실행되고 있는 프로세스의 제2 세션에서 실행되고 있는 로봇 프로세스 자동화 로봇을 통한 자동화
US11507059B1 (en) System and computer-implemented method for seamless consumption of automations
US11513499B2 (en) Web based viewing of robotic process automation (RPA) packages and workflows
US11618160B2 (en) Integrating robotic process automations into operating and software systems
US20220075603A1 (en) Dynamic robot tray by robotic processes
US20230108145A1 (en) Cloud migration
US20220176552A1 (en) Guided operation by robotic processes
CN116262350A (zh) 用于机器人过程自动化的多目标库、项目和活动
KR20230024823A (ko) 애플리케이션 개발 플랫폼의 콘텍스트 인식 실행취소-재실행 서비스
KR20240071419A (ko) 클라우드 마이그레이션