본문 바로가기
[ RPA ]

[RPA] Ui Path - RPA 프로젝트 절차 / 객체지향방식 (Invoke workflow)

by 히앤님 2020. 11. 11.
반응형
SMALL

RPA 프로젝트

RPA는 기본적으로 사무자동화를 한다. 사무의 프로세스는 여러 단계로 이루어져 있다.

STEP1. 과제 발굴

여기서 과제란, 재무, 인사, 구매, 경영지원, 수입, R&A 등 it 업무와 약간 거리가 있는 경영업무에 관련한다. 문제가 발생하고 이를 해결하기 위한 과제를 생성한다.

STEP2. 분석/설계

1) 환경테스트

RPA 과제에 적합한지 확인하는 작업이 꼭 필요하다.

시스템 종류 확인 : ERP, 그룹웨어, 브라우저, FTP 등등

시스템과의 호환성 확인 : 엘리먼트 동작여부(예를들어 text 추출 시 text만이 아닌 크게 잡힌다던지)

-> 특히 엘리먼트 동장의 경우 문서보안(DRM)이 걸려있거나, 시스템 접근 권한이 걸려있어 캡쳐 불가 또는 접근 불가가 되는 경우가 있다. 이러한 경우 보안을 풀어달라고 하거나 권한이 허용이 되어야한다.

설치 / RAM(하드웨어) / OS 버전 확인 : 특히 OS의 경우, 윈도우만 가능하며, Window7은 최근 서비스를 종료하였다.

2) 설계 기본 고려사항

- 안정성 : 에러 처리하기(기본적으로 Delay 삽입, Try-catch 등을 이용한 예외처리까지)

- 효율성 : 중복개발이 없게. 로직의 효율성을 올려야 한다.(ctrl + c , v)

- 유지보수성 : 예쁘게, 깔끔하게, 잘 나눠서(★★★), 이름 약어 쓰지 말고 알아볼 수 있게, 주석 잘 나눠서

- 확장성 : 낭비 없이 효율적으로 돌려쓸 수 있음. 다른 프로세스에서 복사, 붙여넣기 할 때 간편히 파일만 옮길 수 있다.

STEP3. 개발

단계별로 프로세스를 개발한다

STEP4. 운영

프로세스의 운영/관리. 오케스트레이터로 로봇과 프로세스를 관리한다.

 

절차지향과 객체지향

C 언어 Java,Python,C#(vb.net)...
절차지향식 언어 객체지향식 언어(OOP: Object Oriented Programing )
우리가 한 것처럼 절차별로(시퀀스별로) 잘 나눠서 흐름대로 설계 프로세스 기능별, 목적별로 사용. 메모리와 관련이 깊다. 프로세스 목적에 따라 파일 단위로(FlowChart별로) 나눠서 설계한다. -> Invoke WorkFlow
해석이 쉽다. 유지보수가 쉽다. 
로그인 기능이 시퀀스별로 있으면 갯수만큼 수정해야 한다. 로그인 기능이 담긴 파일 하나만 수정하면 된다.

예) RAM의 경우, 8GB라고 했을 때, 4GB는 시스템, 2GB는 타 시스템, 고작 Ui Path가 쓸 수 있는 메모리는 1GB + 예비용 1GB 밖에 되지 않는다. 따라서 파일의 개념이 더더욱 필요하다. 객체지향 방식의 경우 낭비가 적고 확장성이 높아 속도도 빨라지고 효율이 좋다.

인수 (사용방법)

인수(Arguement) vs 변수(Variables) : 둘다 데이터를 담고 있으나, 파일 간 공유와 파일 내 공유가 다르다.

in(입력) : 데이터 받을 때 : in_[변수명 규칙]

out(출력) : 데이터 내보낼 때 : out_[변수명 규칙]

inout(입출력) : 왔다 갔다 할 때 : inout_[변수명 규칙]


예제1. 파일로 데이터 주고받기 연습해보기

객체지향방식 Flow -> 새로운 Main.xaml이 여러개가 생긴다는 뜻.

 

1. InputData.xaml / OutputData.xaml 만들기

새로운  시퀀스를 추가한다.

2. Main 에서 변수선언

간단하게 Str_Number 라는 변수를 만들어준다.

3. Main에 InputData.xaml 연결하기

지금까지 액티비티는 드래그 앤 드롭으로 끌고왔었다. xaml도 마찬가지이다. 액티비티와 같이 끌어다가 추가해보자.

Invoke workflow가 생긴다. 


[ Invoke workflow ]

Invoke는 호출한다는 뜻으로, 다른 위치에 저장된 프로세스를 현재 프로세스 위치로 불러온다는 뜻이다.

확장성 개념에 해당되며 복잡한 프로세스를 작은 단위로 나눌 때 사용된다.

실제로 모든 프로젝트는 Invoke workflow 기반으로 이루어진다. (동일 프로세스 호출)

 


4. 인수 생성

현재 InputData로 연결이 되었다. 그리로 이동해보자. 위의 그림에서 [워크플로우 열기]를 누르면 이동된다.

인수 생성 및 Message Box 만들기

간단하게 Message Box를 만들어서 인수를 만들어주자.

인수는 외부로 보낼 수 있는 데이터다. 변수 이름은 위에서 설명했던 대로 in을 붙이고 변수명처럼 뒤에 붙여준다.

우리는 아까 연결해놓은 Main에서 이 인수의 값을 입력받을 것이다.

5. Main에서 인수 가져오기

 

인수 가져오기 클릭

저장 후 Main에서 인수를 받아오자.

값에 변수 입력해주기

아까 값에 우리가 입력받을(in) 할 변수 이름을 써준다.

앞서서 Main에 생성했던 Str_Number 값이 인수 안에 들어가고, 그것을 메시지박스에 출력할 것이다.

6. Output.xaml 동일 적용

출력도 동일한 방식으로 진행해준다.

단, 인수에 값을 담아 그 인수값을 출력해줄 것이기 때문에 선언을 여기에 해준다.

인수 생성 및 값 입력
값 입력
main에 message box를 생성한다.

전체 main 컨트롤러 모습은 이렇다.

7. 실행

실행하면 두개의 메시지박스가 실행된다.

main에서 생성한 메시지 입력 후 출력
출력xaml에서 생성한 인수값을 main에서 출력

 

 

예제2. 객체지향방식으로 로그인하기

사무자동화 과정에서 수많은 사이트와 그 사이트를 로그인하는 상황이 생긴다.

지금까지 절차지향으로 만들었을 때에는 흐름에 따라 브라우저를 열고, 클릭을 해서, ID와 비밀번호를 입력하고 로그인했지만, 객체지향에서는 사이트와 ID, pwd까지 바뀔 수 있는 변수에 불과하다. 

객체지향방식에서는 이러한 변수들의 변화와 기능들을 분리한다. 우리가 계속해서 시퀀스를 생성했던 Main.xaml이 spring 프로젝트의 Controller가 된다고 생각하면 쉽다.


[ Main.xaml과 객체지향 ]

1. 데이터 관리(선언, 초기화) - Main에서 정리한 것을 config.xlsx 파일에 저장한다.(한 곳에 모으기 위함)

2. 프로세스를 기능별, 목적별로 파일 단위로 생성해서 Main.xaml로 리모컨처럼 관리한다.

3. 반복문을 어느 파일 안이 아닌, Main.xaml 안에서 파생xaml들을 반복시킨다.

4. Invoke workflow를 생성할 때에는 시퀀스 안에 생성한다.


1. 파일(절차) 분리하기 : 변수선언 기능 / 로그인 기능

브라우저는 주소만 바꾸면 계속해서 사용할 수 있는 기능이다. 모든 사이트를 열 수 있는 공통 모듈을 만들자.

변수선언에서 바꾸면 사이트 진입은 자동으로 될 수 있도록 분리시킬 것이다.

시퀀스를 나눠서 이어준다.

2. 변수 선언하기 : Assign

Assign으로 담아서 필요 시 이 부분만 수정할 수 있게 하자.

3. 기능별 xaml 만들기 : 브라우저열기, ID 입력하기

변수선언

기능은 쪼개 놓을수록 유지보수가 쉽다. 한 곳에 할 수도 있지만, 열리는 브라우저 주소가 달라질 수 있으므로 다르게 설정하였다.

xaml 생성

4. OpenBrowser.xaml 기능 구현 : 브라우저 접속 프로세스

예제1에서 했던 것 처럼, 우리는 Main이 아닌 여기, 이곳에서 기능(브라우저열기)을 구현해야하고, 그 변수는 Main에 있다. 우리는 그 데이터를 인수에 담기 위해 "입력을 받아야한다".

인수 설정 : 입력

나머지는 원래 했던 것처럼 Open Browser - [ Maximize window - Delay ] 를 해준다.

예제1번에서처럼 인수를 Main과 연결해주어야 한다.

5. Main.xaml - '사이트진입' 시퀀스에 Invoke workflow 설정

OpenBrowser.xaml을 끌고와서 인수를 가져오자.

인수 가져오기

우리가 입력받을 데이터는 Str_URL 이다.

값 입력

6. ACMESiteLogin.xaml 기능 구현 : ID 입력 프로세스

정확히는 email이긴하지만 아무튼 Attach Browser - [ Type into ] 를 이용해서 자동 입력하게 해준다.

동일한 방식으로 인수를 선언해서 ID 값을 "입력을 받아야한다".

로그인 기능 구현

7. Main.xaml - '사이트진입' 시퀀스에 Invoke workflow 설정

ACMESiteLogin.xaml을 끌고와서 인수를 가져오자.

인수 가져오기
받아올 값 입력

7. 실행

잘 구현되었다.

 

반응형
LIST

댓글