200211 UIPath study
- Level 3 Robotic Enterprise Framwork
** Building productive Robot requires
- 적절한 예외 처리
- 복구 기능
- 효과적인 로킹 및 리포트 기능
- 유지 관리 용이성
- 확장성
- 재활용 가능성
- 개발 편의성
** REFramework (전반적인 흐름)
- plug and play 방식 : 일련의 파일, 일부는 변경, 매개변수화 / 일부는 변경없이 그대로 사용 함
- Main.xsml : Orchestrator에서 프로젝트를 배포하고 시작하면 실행되는 파일
- StateMachine 도식을 사용하여 4가지 단계를 가진다.
: Init, Get Transaction Data, Process Transaction, End Process
1) Init State : 로봇이 구성을 읽고 어플리케이션을 초기화 하는 과정
2) Get Transaction Data : Init State가 성공 시 반환하는 과정
(1) 로봇을 통해 새 트랜젝션이 처리 ▶ Process Transaction 과정으로 넘어감
(2) 모든 트랜젝션이 이미 수행 ▶ 더 이상 데이터가 남아 있지 않을 경우 프로세스 종료
3) Process Transaction : 3가지의 결과가 도출됨
(1) Success : loop를 수행하고 다음 트렌젝션 데이터를 가져옴
(2) Business rule exception : 몇 가지 특정 수행 과정이 있어야함. 그 후에는 다시 Get Transaction Data 단계로 돌아감
(3) System Error Transaction : 사용자가 필요한 조취를 취해 오류를 복구해야함. 이에 따라 모든 어플리케이션이 종료되고 Init 단계로 돌아가 어플리케이션이 재시작함
4) End Process : Init State에서 시스템 오류가 발생할 경우 반환하는 과정,
** Init State
- 로봇이 Setting을 읽고 필요한 모든 어플리케이션을 시작함.
- 전반적인 예외 처리 구현, 따라서 모든 액티비티에 try-catch 액티비티가 있음
- 로봇은 초기화를 시도하며, 초기화가 실패할 경우 프로세스가 종료됨
- 예외가 발생했는지 확인하기 위해 예외 객체로 SystemError를 설정 = "Nothing"
- 다음으로 Config 파일을 읽은 후 모든 어플리케이션을 시작함
- SystemError 값에 따라 Get Transaction Data 혹은 End Process 로 이동함
- SystemError 값이 "Nothing"이면, Get Transaction Data 를 진행함
- 시스템 예외가 발생할 경우 초기화가 실패했다는 Fetal 오류 메세지가 표시되고 로봇이 End Process로 진행함.
(1) Reading Config File
- condition = "Config is Nothing"
- Config : Dictionary/key:String/value:Object
(2) Setting sheet
- 해당 비지니스 프로세스와 관련된 모든 구성을 저장할 수 있음.
- 큐이름, URL, 파일경로, 자격증명이름, 기타 모든 프로세스와 관련된 정보
- Excel column : Name(string, Dictionary's key) / Value( / Dictionary's value) / Description(setting 설명)
(3) Constants sheet
- 유용한 기술적 설정이 저장됨. 프로젝트 세부 사항을 조정하고, 성능을 개선하며, 쉽게 환경을 전환할 수 있음. (개발환경▶테스트환경▶운영환경)
- 재시도 횟수, 제한 시간, 지연 시간, 이미지 정확도 설정, 정적 로그 메세지 등
- 프로젝트에서 제한 시간, 지연 시간을 하드코딩 하는 대신에 Config 객체를 사용하면 값을 전역적으로 쉽게 조정할 수 있음.
- MaxRetryNumber : 어플리케이션 예외나 시스템 오류로 인한 실패로 트랜잭션을 재시도하는데 사용함. Config 파일의 기본 값은 0, 재시도 횟수는 Orchestrator에서 설정됨.
(4) KillAllProcess
- 로봇이 정리되고 적절히 제어되는 환경에서 시작되도록 시작 부분에서 수행됨.
(5) 모든 어플리케이션을 실행함
- 프로세스에서 사용되는 어플리케이션에 따라 xaml 파일을 매개변수화 해야 함.
** Get Transaction Data
- 프로세스의 트랜잭션을 완료하는데 필요한 데이터를 가져오는 매커니즘
- 트랜잭션 : 프로세스에서 반복되는 부분
- TransactionNumber : 트랜잭션을 실행할 때마다 번호가 매겨지는데 이 값이 저장됨. (기본값:1)
- TransactionItem : OueueItem형식, 하지만 필요에 따라서 변경할 수 있다
(1) Orchestrator에서 Stop 신호를 보냈는지 확인함
(2) 보낸 경우 End Process 단계로 이동해 로봇을 정상적으로 중지함
(3) Stop 명령을 받지 않은 경우, GetTransactionData 파일을 호출함.
(in:TransactionNumber, ConfigDictionary / out:TransactionItem)
** End Process
- 모든 어플리케이션을 닫으려고 시도하고, 실패하면 KillAllProcesses를 호출하는 방식