프레임워크(Framework)
일반적으로 Framework는 개발자가 프로세스를 설계할 때 도움이 되도록 만든 템플릿을 말한다
REFramework (Robotic Enterprise Framework)
상태머신(State Machine)을 기반으로 하는 프로젝트 템플릿
이 템플릿에는 애플리케이션 초기화, 안정적인 예외 처리, 트랜잭션 처리 및 종료를 위해 미리 만들어진 여러 상태 컨테이너가 포함되어 있다
1. REFramework의 핵심 구성 요소
REFramework은 State Machine(상태 기계) 기반으로 동작하며, 4가지 주요 상태(State)로 구성됩니다
📌 REFramework의 기본 Workflow
1️⃣ Initialization (초기화 단계)
- 프로세스를 실행하는데 필요한 사항들을 준비하는 과정
- 설정 파일(Config) 에서 데이터 수집
- 애플리케이션 & 시스템 초기화
- Queue에서 데이터 로드 (옵션)
2️⃣ Get Transaction Data (트랜잭션 데이터 가져오기)
- 데이터를 개별적으로 배분
- 처리할 새로운 데이터(Transaction Item) 가져오기
- 처리할 데이터가 없으면 종료
3️⃣ Process Transaction (트랜잭션 처리)
- 다음 트랜잭션 데이터를 가져옴
트랜잭션 아이템은 기본적으로 Queue Item이지만 다른 여태의 컬렉션도 쓸 수 있어서 필요에 따라 쉽게 변경 가능
다음에 처리할 데이터가 없는 경우 프로세스를 종료시키기 위한 조건을 설정해야 함
- Get Transaction Data State에서 가져온 데이터를 가지고처리
- 데이터를 활용하여 작업 실행
- 데이터를 처리하고 결과 저장
- 오류 발생 시 예외 처리
4️⃣ End Process (프로세스 종료)
- 프로세스를 종료시키는 과정. 프로세스 처리를 위해 오픈한 애플리케이션이 있으면 종료시켜야 함
- 모든 데이터 처리 완료 후 정리 작업 수행
- 결과파일 저장
- 이메일 발송
- 응용프로그램 종료
📌 이 단계들은 예외 처리가 포함되어 있어 오류 발생 시 재시도 가능


2. 업무 프로세스의 유형
✅ 반복처리(Iterative)
- 데이터 처리를 반복적으로 실행하고 각 실행 마다 다른 데이터 사용
- 메일함에서 이메일을 읽어 데이터를 추출하는 프로세스의 경우 여러개의 이메일을 한꺼번에 추출하여 동일한 과정을 반복처리
- 반복문을 통해 쉽게 구현 가능
- 반복 처리도중 문제가 생기면 이후 남은 반복 작업에 영향을 줌

✅ 트랜잭션 기반 처리(Transactional)
- 각 작업을 다른 데이터로 실행한다는 점에서 Iterative와 비슷하지만 각 작업이 서로 영향을 주지 않고 독립적으로 실행됨, 따라서 어떤 작업에 문제가 생겨도 다른 작업은 정상적으로 실행됨
- 이러한 반복 작업 과정을 트랜잭션이라고 함
- 각 작업은 데이터를 공유하지 않음

✅ REFramework의 TransactionItem 기본 데이터 유형과 트랜잭션 처리 방식
현재 REFramework는 TransactionItem의 기본 데이터 유형이 QueueItem으로 되어 있습니다.
따라서 다른 데이터 유형을 TransactionItem으로 사용하려면 변경해 주어야 합니다. (예: DataRow)
Init에서 DataTable을 생성하면 dt_TransactionData로 만들어집니다.
컴퓨터는 입력이 있어야 출력을 할 수 있으므로 무엇을 어디에 입력할지가 중요합니다.
트랜잭션은 반복 처리를 위한 개념이므로 반복할 데이터가 있는지 판단해야 합니다.
선형 처리(반복) vs 트랜잭션 기반 처리 비교
| 선형/반복처리 |
트랜잭션 기반 처리 |
Process Transaction으로 1번 이동하기만 하면 됨
→ Get Transaction Data에서 수정 (빈값 넣어주기: new QueueItem)
|
QueueItem |
Orchestrator에서 데이터를 가져옴
REFramework 수정 없이 그대로 사용 가능
|
|
DataRow |
1. Initialization에서 DataTable 생성
2. 데이터 유형 수정 (QueueItem → DataRow)
3. Get Transaction Data에서 수정 (TransactionNumber에 따라)
|

3. 상태머신(State Machine)

✅ 상태머신(State Machine)의 구성요소
상태(State)
- 정의 : 워크플로우의 특정 단계를 나타내며 각 상태는 고유한 특성과 동작을 하게 된다
- 구성요소
- Entry : 상태에 진입할 때 수행되는 작업을 정의한다. 초기화 작업이나 변수 설정 등의 이루어질 수 있다
- 각 Entry는 Try Catch가 감싸고 있는데 이것은 예외처리를 체계적으로 하기 위한 방법이다
- Exit : 상태에서 나갈 때 수행할 작업을 정의한다
전환(Transaction)
- 정의 : 한 상태에서 다른 상태로 이동하는 것을 나타낸다
- 구성요소
- 트리거(Trigger) : 전환을 유발하는 사건 또는 조건
- 조건(Condition) : 전환이 발생하기 위한 조건을 정의한다. Boolean 값으로 표현되며, 특정 변수의 값, 시간 조건 등을 기반으로 설정된다
- 액션(Action) : 전환이 발생할 때 수행되는 작업을 정의한다
✅ 상태머신(State Machine)의 장점
- 복잡한 프로세스 시각화 : 상태머신 다이어그램을 통해 프로세스의 흐름을 직관적으로 파악할 수 있다
- 유지보수 용이 : 모듈화된 상태와 전환을 통해 특정 부분을 수정하거나 추가하기 쉽다
- 오류 처리 용이 : 각 상태에서 발생할 수 있는 오류를 미리 정의하고 처리할 수 있다
- 재사용성 : 상태 머신을 구성 요소로 분해하여 다른 프로세스에 재사용할 수 있다
REFramework에서 Try Catch를 사용하는 이유
- 안정적인 프로세스 실행 : 각 State의 Entry에서 발생할 수 있는 오류를 Try Catch로 처리하여, 예기치 않은 상황에서도 프로세스를 중단하지 않고 적절히 대처한다
- 중앙 집중식 예외 처리 : Try Catch를 사용하면 System Exception 이나 Business Exception을 쉽게 감지하고, REFramework의 기본 흐름(예: 재시도, 로깅, 알림 등)으로 연결된다. 이로 인해 State간의 예외처리 로직을 일관성있게 유지할 수 있다
- State 별로 독립적인 오류 처리 : 각 State는 개별적으로 실행되기 때문에, 특정 State에서 발생하는 오류가 전체 프로세스에 영향을 주지 않도록 분리된 Try Catch를 사용한다
✅ REFramework에서 각 State의 역할과 Try Catch
Initialization
- 환경 초기화, Config파일 로드, 시스템 로그인 등을 처리
- Entry안의 try Catch는 시스템이나 설정 파일 오류를 처리
Get Transaction Data
- 다음 트랜잭션을 가져오는 작업
- 데이터가 없거나 가져오기 실패 시 오류 처리
Process Transaction
- 실제 작업(데이터 처리나 자동화 실행)을 수행
- Business Exception과 System Exception을 구분하여 적절히 처리
End Process
- 프로세스를 종료하고 정리하는 작업
- 리소스 해제나 로그아웃 같은 작업 중 발생할 수 있는 오류를 Catch로 관리
Config파일에서 MaxRetryNumber와 MaxConsecutiveSystemException의 차이점
| 구분 | MaxRetryNumber | MaxConsecutiveSystemException |
|---|
| 정의 | 시스템 예외가 발생할 수 있는 총 횟수 | 동일한 시스템 예외가 연속적으로 발생할 수 있는 최대 횟수 |
| 오케스트레이터 큐 사용 시 | 0으로 설정(즉, 큐를 사용하지 않는 경우에만 이 값을 설정) | 오케스트레이터 큐 사용 여부와 상관 없음 |
| 목적 | 전체 재시도 횟수 제한 | 로봇이 무한루프에 빠지거나 시스템 수준의 문제로 인해 반복적으로 실패하는 트랜잭션을 재시도하는 데 너무 많은 시간을 소비하는 것을 방지 |
Config파일
- Configuarion : 컴퓨터에서 환경설정을 의미함
- UiPath의 설정 정보로는 웹 애플리케이션에 접근하기 위한 URL,오케스트레이터의 Queue이름, 로그인 아이디, 폴더나 파일의 경로, 운영자의 이메일 주소 등이 있음
- REFramework에서는 이러한 설정 정보를 Config파일(Config.xlsx)로부터 읽어온다
- 이렇게 읽어온 정보는 각 State Machine 간에 공유되는 Dictionary에 저장하여 사용한다
- 이것은 설정 정보가 변경되는 경우 워크플로우를 직접 수정하지 않고 설정파일에서 쉽게 변경해 줌으로써 유지, 관리가 쉽다