반응형
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
반응형
SMALL

기능별

# 기능 시퀀스
#팝업메시지 #알림창 Message box
#변수 선언(설정) 속성-value에서 Shift + K / Assign
#출력창에 출력 Write Line //숫자 or 불린형은 ToString 붙여야함
#로그인 자동화 Attach Browser - [ Type Into - 창선택 - id입력 ] -> [ Get Password : 속성>변수선언, 암호입력 ] -> [ Type Into - 변수입력 ] -> [ Click - 버튼 ]
#브라우저 열기 (Assign 변수선언) - Open Browser - [ Maximize Window - Delay ]
#카테고리 클릭 Attach Browser - [ Click ] - Delay
#선택박스 고르기 Click(선택박스) - Select item - 원하는 것 선택
#텍스트 입력 Type Into - [ 변수선언  value 값 입력 ] - Click
//속성에서 커서클릭 + 칸비우기 True 설정
#텍스트 가져오기
#하나의 데이터 가져오기
Get Text //속성에서 변수에 담는 것이 좋음
#데이터 스크래핑(1페이지) 리본메뉴 - 데이터 스크래핑 - 테이블 컬럼클릭 - 전체 선택 //변수에 담기
#엑셀로 저장 시퀀스생성 - excel application Scope - 경로 설정 - [ Write range (저장 범위 설정)]
#브라우저 이동 Navigate To //주소입력
#탭닫기 Close Tab
//한 attach browser 안에서 이동과 닫기를 같이할 수 없다.
#형변환 CDBL(변수명) //text로 받은 변수를 숫자로 변경
#파일 원하는 위치에 저장 파일 이름에 전체 경로\파일이름 으로 쓰기
#배열에 값 넣기 1) 크기선언 안하고 바로 넣기 :
Assign 변수명 = {"A","B","C"}
2) 크기 선언 하고 따로 넣기 :
Assign 변수명 = new String(100){}
값 넣기 :
변수명(0) = "값"
#반복문 For Each - [ 변수명 item에 담고 - 본문 내용 반복 ]
#기능 메소드
#특정 파일명 검색
#특정 문자가 있는지 검색
#특정 제목에 특정 키워드가 있는지 검색
.Contains("검색단어")
#시작점에 특정문자가 있는지 검색하고 싶을 때 .StartsWith("검색단어")
#끝에 부분 문자 검색 //확장자명 일치 여부 판단시 사용 .EndsWith("검색단어")
#변수 중 일부 글자 대체 //데이터 가공시 사용 .Replace("기존","바꿀거")
#글자 일부 추출(인덱스번호 시작, 끝) .Substring(시작인덱스) / .Substring(시작인덱스,문자길이)
#양쪽 공백 제거 //데이터의 정합성 판단 .Trim //엑셀에서 .ToString.Trim 많이 사용
#특정 문자를 기준으로 나누기
//나눈후 배열에 담긴다
//데이터를 빨리 찾기 위해 사용
데이터명.Split("나눌기준".ToCharArray)
(참고) Split 기준 문자 정리(괄호 : 자바표현) 1)Space(\s) :.Split(" ".ToCharArray)
2)Enter(\n) :.Split(Environment.NewLine.ToCharArray)
3)한글자씩 :.Split("".ToCharArray)
#특정 문자를 전부 대문자/소문자로 변경 데이터명.ToUpper()
데이터명.ToLower()

Object Reference not~~~  / 개체참조가 설정되지 않았습니다~

이러한 에러들은 "변수 빼먹었다"는 소리이다.

반응형
LIST
반응형
SMALL

RPA

로봇, 프로세스, 자동화. 즉, 소프트웨어 소스를 반복한다. 

기본적으로 RPA 자체가 그래픽 사용자 인터페이스(graphical user interface, GUI)로 되어있기 때문에, 사용자가 편리하게 아이콘 등을 이용할 수 있다. RPA를 가장 활발하게 적용하고 있는 분야는  BPO(Business Process Outsourcing) 시장인데,기업 운영상 업무나 비지니스 절차를 전문 기업에게 위탁, 급여 계산 등의 총무 업무 뿐만 아니라 정보기술 아웃소싱도 이루어지고 있다. 

설계, 특히 로직을 설계하는 부분이 제일 중요하다.

설계는 1. 예쁘게 2. 깔끔하게 3. 잘 나눠서 짜야한다. 보통 RPA는 코드보단 UI부분을 많이 짠다. 현장에서는 운영과 유지보수가 중요하다. 내가 짠 코드를 팀원과 공유하고 유지보수가 이루어져야하기 때문에, 중요시 된다.

인프라는 총 3 종류.

Studio : 개발

Robot : studio에서 배포한 것을 수행

Ochestrator : 관리 및 메뉴얼

오케스트라는 서버단, 스튜디오와 로봇은 로컬단에 있다. 우리는 스튜디오에서 개발을 한다.

프로세스 설계를 기본 5~7개는 해야 한다. 익숙하게 해야 잘한다.

Ui Path

단순 반복 업무 프로세스의 자동화를 위한 RPA의 소프트웨어 중 하나.

Flow chart tree 구성으로 다른 Solution에 비해 사용하기 쉽고 범용적이란 것이 특징이다.

소프트웨어이기 때문에 설치가 되어있어야 사용이 가능하며, 리눅스에서는 사용이 불가능하다.(Window에서만 가능)

.NET Framework 기반이다. 코드 타이핑을 통한 개발이 아닌, 마우스 드래그 앤 드롭으로 개발한다.


교재는 2019년이기 때문에 약간 바뀐 부분이 있다.

책 말고 그대로 따라할 것!

 

1. www.uipath.com 접속

 

가입해서 계정을 만든다.

연결을 위해 몇가지 확인사항이 있다.

2. 세팅

1) Tenant - Settings - Security - 체크박스 켜져있는지 확인

체크 되어있는지 확인

 

2) Users - 내 계정 edit - 2단계 Attended Robot에서 켜져있는지 확인

켜져있는지 확인

 

 

3. 클라우드에서 소프트웨어 다운로드 하기

꼭 stable 버전으로 설치하기

4. 로그인

설치도 인터넷이 가능한 환경에서만 가능하다. 로그인 방법은 URL로 하거나 머신키를 쓰는 두가지 방법이 있다.

studio pro 설치. 우리가 가지고 있는 라이센스 키가 pro다.

우측 하단에 로봇이 연결이 되어있어야 가능하다.

로봇 이름 설정하기

로봇을 끊어버리고 싶으면 사람 아이콘 - preferences - sign out하면 된다.

 

Ui path를 바탕화면에 끌어놓자.

설정 가서 설정 추가

1) 한국어 설정

2) 어둡게 바꾸기


대부분 문제를 푸는 식으로 교재 중심 수업을 할 예정.

1. 프로세스 생성

프로세스 이름을 설정한다. 설명란에 채우지 않으면 로그에 빈 프로세스라는 말이 기록되기 때문에 제목과 맞춰줌. 기업에서 사용하는 기본 언어는 VB이다.

 

2. Main.xaml 

처음 들어오면 해야하는 것이 Main.xaml 를 키는 것. 그 후 액티비티 -> flowchart


액티비티 : 자동화를 구성하는 작업단위. "프로그램을 연다", "버튼을 누른다", "글자를 입력한다"와 같이 사용자 의 입력을 모방하는 작업은 물론 판별(IF), 반복(For) 등 프로그래밍적인 로직 또한 액티비티로 구성되어 있다. 대부분 액티비티만으로 자동화 개발이 가능하다.

시퀀스 액티비티 : 각 작업 단계를 의미하는 "액티비티(Activity)"를 한 묶음으로 묶어주는 기본 액티비티. 해당 액티비티 자체는 아무작업도 수행하지 않지만, 해당 액티비티 안에 담긴 자식 액티비티는 담겨진 순서에 따라 위에서부터 아래로 수행된다. 특정위치에 2개 이상의 작업 액티비티를 담을 경우 자동으로 생성되기도 한다. FlowChart에 비해 짧고, 시각적으로 관리가 용이하다. 일자형 프로젝트

FlowChart : Main.xaml의 가장 상단에 구조를 표시하기 위해 사용한다. 따라서 FlowChart 안에 시퀀스를 두는 방식으로 많이 사용한다. 화살표 프로젝트


1)액티비티에서 + 버튼을 누르면 우리가 사용할 수 있는 기능이 나온다.

 단, 더블클릭이 아닌 드래그 앤 드롭으로 사용하자. 더블클릭은 하단에 들어간다.

꼭 엑티비티 + 표시에 가져다놔야 한다.

2) 우리는 변수 선언을 중앙 하단에서 선언한다.

전역변수만 선언한다. 지역변수는 잘 쓰지 않는다.

3) 우측 하단 속성에 액티비티에 관한 속성이 나온다.

RPA는 기본적으로 박스를 잘 채우면 된다. 직관적이고 로드맵을 그리는게 1차, 거기 안에 내용을 채우고 로직을 짜는게 2차이다.

4) 단축키

ctrl + c,v 가능 / delete 가능 등등... 기본적 오피스에서 쓰는 단축키가 가능하다. 실행 ctrl + F5

5) 주의할 점

- RPA 는 항상 텍스트에 ""(따옴표) 사용해야한다.

- 숫자는 그냥 사용

- 꼭 설명에 이름과 주석을 달아주는 것이 좋다.

순서도

순서도 기호를 사용해서 flowchart를 사용한다.

이미지 출처 : https://kitchu.tistory.com/13

 

6) 변수 사용 규칙

UiPath는 Microsoft사의 vb.net(->C#) 언어 문법을 준수한다.

- 첫글자는 대문자, 구분되는 단어의 첫글자는 대문자

7) 변수 유형(약어 / 변수초기화)

- String(문자열) - Str / ""

- int32(정수) - Int / 0  /초기화 필수

- double(실수) - Dbl / 0 /초기화 필수

- Object(객체) - Obj / ???

- Boolean(T/F) - Bln / True of False

- DataTable(DB모양) - DT / new Datatable()  /초기화 필수

- Array of [T](배열, T는 변수타입) - Arr, Ary / {} /배열은 항상 크기선언이 필요하다. (new String(100){~}

- List of [T](컬렉션) - List / new List(of [T]) /초기화 필수(안하면 실행x)

- Dictionary of [T][T](컬렉션 : 키-값 묶인거) - Dic / new Dictionary(of [T],[T])  /초기화 필수(안하면 실행x)

- GenericValue(모든타입) - Generic / ???

- (규칙) 변수탕입명(약어) _(언더바) 이름(풀네임) : Str_Name / Int_Count / Ary_Fruit // (여러개) Str_FruitName

- 데이터가 없을 경우 : Nothing(파란색으로 나온다)

8) 액티비티(개발도구 정리)

- Seqenece : 틀(일자형)

- FlowChart : 틀(전체 구조)

- Assign : 변수 값을 할당할 때 사용.

- Write Line : 로그 (값) 찍을 때

9) 변수 단축키

1) 초성을 치면 변수가 자동으로 보인다.

2) 초성을 치고 Ctrl+Space를 누르면 변수가 자동으로 보인다.

3) 빈칸에 Ctrl+K를 누르면 변수가 생성된다.

10) 환경세팅

RPA는 여러가지 환경에 영향을 받는다. 에러 방지를 위해 미리 기준을 두자. 1. 해상도 : 1920 X 1080으로 맞추자. 2. 창크기는 항상 최대화로 놓자.(최소화로 작업하지 않는다.) 3. 창배율 : 100% 또는 125%으로 통일.

연습

Shift + F2 하면 주석을 쓸 수 있다. 시퀀스에 주석처리 한 후 변수를 선언하자.

하단 변수에 만들자. 보통 기본값은 유지보수를 위해 비워놓는다.

변수 이름도 잘 보자. Double의 경우 기본적으로 안떠있으니 찾아서 System 아래에 있는 Double을 클릭한다.

변수 선언 안에 Assign을 추가한다. 각 Assign에 변수 이름 주석해서 표시해주자.

Assign : 변수에 값을 할당할 때 사용

변수 선언 완료

Write Line : 로그에 남는 값들을 찍을 때 사용한다. 무조건 String 형태로만 출력이 가능하다. 

따라서 String을 제외한 나머지 자료형들은 ToStirng을 붙여서 형태를 변화시켜준다.

Array는 뒤에 인덱스번호를 써서 그 단어를 출력하는 것.

배열은 ToString 을 쓰지 않는다. 그럼 type이 나옴.

길이가 궁금하면 .Length.ToString / .Count.ToString

-> 배열에 length나 count 하면 int형이니까 로그에 출력하기 위해 toString을 붙인 것.

 

실행하면 출력창에 변수들이 로그에 잘 나온다.

단, 출력창에 오류 등을 표시하는 창을 없애거나 건드리지 말 것!

문자열 동시 출력을 하고 싶으면 +로 연결한다.

 

설치 및 변수 끝.

반응형
LIST
반응형
SMALL

+ Recent posts

반응형
LIST