RPA는 Github보단 SVN을 많이 쓰는 경우가 많다.

과제 소스를 협업하여 작성하기 보다는 보통 각 개발자 1명이 그 프로세스를 담당하여 처리하기 때문이다.

GIT은 한 소스에 대해 복잡하게 협업하는 경우 각 Branch에서 Push하고 관리자에게 pull reuqest를 하면,

해당 소스의 이상유무를 확인하고 main Branch에 Merge하는 식으로

소스 협업을 유기적으로 관리할 수 있다는 장점이 있지만 그만큼 더 복잡해진다.

그래도 회사에 Github Organization이 있고 Private으로 써도 된다라면 Github를 써보자.

Branch를 하나만 두고 Private으로 하면 SVN이랑 다를 게 없다.

1. Github에 Repository를 만들어 준다.

Github에 로그인 해서 Create a new repository를 눌러 이름을 정하고 만들어주자.

이러면 온라인 저장소는 만들었다.

2. 만들어진 프로젝트에서 Home-Team 메뉴로 가면 GIT INIT 메뉴가 있다.

이 INIT을 누르면 폴더를 선택하라고 뜬다. 프로젝트 폴더를 선택해준다.

Git init했을 때 뜨는 Commit 팝업

3. Commit Message를 적고 Commit And Push를 하면 Repository 주소를 적으라고 나온다.

Git Remote 연결

URL에 git을 만들었을 때 나온 주소(.git으로 끝나는 주소)를 넣고 Add 후 Save하면 에러가 난다.

Uipath Studio 권한이 없어 생긴 에러

GitHub에서 허가되지 않은 App에 Repository 권한을 줄 수 없다는 말이다.

open configuration page를 가서 허용해주자.

App을 Install 할 거냐고 묻는 Configuration page

 

4. Authentication 확인 클릭

이러면 연결이 완료되었다.

 

이제 새로운 파일이 추가되면 +가 뜨고 수정이 되면 해당 파일에 노란 표식이 뜨게 된다.

Studio 우측 하단에 설정된 Branch와 연결된 Repository가 뜬다.

Branch를 추가하고 싶다면 Manage Branches를 켜면 된다.

DRM은 관리 방식이 다양하지만 크게는 2가지 경우가 많다.

1) 문서를 암호화된 확장자로 바꾸어 내부에서만 볼 수 있게 함

2) 문서에 암호화된 문구를 삽입함[저장하는 순간 DRM 걸림]

 

1)의 경우엔 확장자를 Convert 해주어야 하는데 방법이 2가지다.

(1) “C:\Program Files (x86)\Microsoft Office\Office15\excelcnv.exe” -oice “C:\temp\Test.enc” "C:\Temp\Test.xlsx” 형태로 Command를 입력[Start Process를 이용해 앞단은 프로그램 경로에 -oice부터는 파라미터에 입력]

(2) 파일을 Start Process로 열고 파일 - 다른 이름으로 저장 - 경로 및 파일이름 지정 - 저장

 

=> (1)의 방법이 깔끔하지만 보안사항에 따라 안 될 가능성이 있다. 그럴 땐 어쩔 수 없이 (2)로 가야 한다.

 

2)의 경우엔 System-File에서 사용하는 NPOI로 읽는 방식이 차단된다.

Text 파일도 다른 문구가 추가되어 읽힌다. [Read Text File 사용 제약]

따라서 최대한 Excel Scope을 사용하거나 Text의 경우 메모장이 아닌 다른 편집기를 이용해 편집하고 저장해야 한다.

이 경우엔 Convert를 Back단으로 해주면 파일이 깨진다.

 

 

위의 모든 방법으로도 접근이 안 되면

DRM을 푸는 방법 또는 읽는 방법을 따로 문의해 모듈을 만들어 활용하자.

 

Internet Explorer가 곧 지원이 완전 종료되면서

기존에 IE로 개발돼있던 프로세스를 chrome이나 Edge로 바꾸는 작업을 하는 경우가 많다.

이때 uipath에서 내놓은 공식 Tool이 있다.

Conversion Tool이다.

(Conversion Tool은 https://cloud.uipath.com/{테넌트그룹PK}/portal_/resourceCenter 에서 다운로드 가능하다.)

+ Conversion Tool은 show all을 눌러야 보인다.

UiPathBrowserMigrationTool.zip
0.38MB

1. 사용법

사용법은 간단하다 Conversion Tool을 켜면 하기와 같은 화면이 뜬다.

Conversion Tool

프로젝트 폴더를 선택하고 start를 누르면 Destination browser로 변경해 준다.

Replace null browser type은 Browser type없이 기본 브라우저로 열리게 되어 있는 경우도 브라우저를 바꿀 거냐이다.

start를 누르면 .conversion_backup 이라는 백업 폴더가 내부에 생기고 브라우저가 전환된다.

Attach Browser나 Element의 app이 iexplore.exe에서 Chrome.exe로 변경된다.

2. 사용 후기

잡기 쉬운 구조의 웹에서는 상당히 좋은 전환율을 보여줬다.

다만 다음의 한계가 존재한다.

1) IFrame 같은 형태로 된 경우 전환율이 낮은 편

2) 웹 진행 과정에 있는 다른 이름으로 저장창, Alert창 등은 변경되지 않음

3) 브라우저간 내보내주는 셀렉터 정보량이 다른 경우 유효하지 않음

 

 

3. 결론

마이그레이션 툴과는 별도로

IE에선 잘 됐던 Click이나 Set Text가

Chrome에서는 simulate click(type), sendwindowsmsg로 input method를 바꿔야 적용되는 케이스가 있다.

그냥 일단 적용시키고 한번 쭉 돌리다가 막힌 곳 있으면 그거부터 바꿔주자.

공수를 조금은 줄일 수 있다.

RPA로 엑셀 작업을 할 때,

특정 작업이 구현하기 힘든 경우 매크로를 통해 해결하는 경우가 있다.

다만 매크로를 쓰는 것은 다음과 같은 이유로 웬만해선 지양해야 한다고 생각한다.

1. 유지보수 인원도 매크로를 알아야 해서 인수인계가 제한됨

2. 디버깅이 투 트랙으로 진행되어 원인파악이 느려짐

3. 웬만하면 엑셀 함수나 BalaReva Excel, EasyExcel 기능으로 커버됨

 

그럼에도 불구하고 매크로를 써야 한다면 다음과 같은 원칙이 좋다.

1. 간단한 상황일 것

=> 투 트랙 디버깅 코스트 절감

2. CoE가 아닌 현업에서 관리하는 매크로이고 RPA는 그저 실행만 시킬 것

=> 투 트랙 디버깅 리스크 절감

3. 자주 쓰여야 하는 것들을 라이브러리화하여 쓰는 법을 정형화 시킬 것 (주석이 꼼꼼하게 돼있어야 함)

=> 인수인계 및 투 트랙 디버깅 코스트 절감

 

 

과제를 개발하다 보면 병렬처리 혹은 동시 판단해야 할 케이스들이 생긴다.

그 경우 Parallel이나 Pick 중에 뭐를 쓸지 고민하게 된다.

둘의 차이는 인식 시점에서의 수행이다.

 

Parallel은 기본적으로 동시에 계속 진행된다.

따라서 어떤 인식 기점이 동시에 True가 될 수도 있고, 하나만 True가 될 수도 있다.

어찌됐든 Parallel 안에서는 Exit 조건이 달성되기 전까지 동시에 진행하게 된다.[각주:1]

 

Pick은 Trigger 영역에서 어떤 하나의 Branch를 인식해서 수행할 Branch를 선택하는 순간

다른 Branch들은 무시된다.

각 Trigger별 수행이 바로 밑에 정리되기 때문에 적합한 상황인 경우 가독성도 Parallel에 비해 훨씬 좋다.

 

따라서 각각의 활용은 대략 이런 형태이다.

i) Parallel이 더 적합한 경우

- 로그인 후 모달형태로 다른 타입들의 공지사항들이 뜨는데 각각 꺼줘야 하는 경우

- 여러 개를 인식하더라도 우선되는 하나만 꺼주면 모두 꺼져서 우선 순위를 지정하면 효율적인 경우

- 여러 개를 인식하면 문제가 있어서 우선 순위를 지정해야 되는 경우

- 보통은 exist 등을 병렬로 늘어놓고 exit조건을 적절히 배합해 진행[각각의 Boolean을 Or 조건으로 연결해도 괜찮]

- 수행 소스는 exit후 If나 switch를 통해 각각 진행. Boolean이 동시에 만족하는 경우도 있을 수 있으므로 주의.

ii) Pick이 더 적합한 경우

 - 여러 케이스 중 하나만 배타적으로 잡아야 하는 경우

 - exist 등을 각각 Trigger에 넣고 진행

 - 각 트리거에 대한 수행 소스는 Pick Branch를 넣어 짤막하게 구성

 - Exit조건이 따로 없기 때문에 Pick Branch의 Trigger에는 클릭같은 걸 넣을 수도 있음

 

 

보통 Parallel이나 Pick이 잘못 쓰이는 케이스는 각각이 리딩하는 액티비티들이 너무 많아지는 것이다.

Parallel이나 Pick은 너무 길게 끌고가면 소스의 중복이나 불필요한 리소스 사용 등이 발생할 개연성이 매우 커진다.[각주:2]

또 좌우로 넓어지는 액티비티의 특성상 길어지면 가독성이 안 좋아지는 단점이 있다.

따라서 동시인식, 동시수행이 필요한 구간만 설정하여 진행해야 한다.

+ pick은 모든 branch의 조건이 충족되지 않으면 가장 왼쪽(첫번째)에 있는 시퀀스를 실행한다.

  1. 실제로는 왔다갔다 하면서 체크 [본문으로]
  2. Retry Scope도 마찬가지 [본문으로]

Uipath Studio는 기본적으로 Telemetry가 True로 되어있다.

[ Telemetry란? usage and performance data를 수집, 모니터링 하는 기능. 익명의 사용데이터를 보내게 됨.]

버전에 따라 Telemetry를 끄도록 되어있는 경우도 있으나, 최신 버전들은 강제로 끄지 못 하도록 막아두었다.

 

Telemetry는 특히 하드웨어 사양이 좋지 않은 경우, 개발 속도를 상당히 저해할 수 있는 요소다.

사양이 간당간당 하는 경우 Telemetry만 꺼도 스크롤할 때 버벅거리던 것이 버벅거리지 않을 정도가 된다.

스튜디오에서 끌 수 있는 경우는 Settings - General에 가서 꺼주자.

Telmetry를 스튜디오에서 끌 수 있는 케이스

 

강제로 끄지 못하도록 되어있는 경우,

%ProgramFiles%\UiPath\Studio\uipath.config

이걸 관리자 모드로 켜주고 <analyticsSettings> 태그쪽을 다음과 같이 바꿔주자.

  <analyticsSettings>
   <add key="Telemetry.Enabled" value="false" />
  </analyticsSettings>

[기존엔 <analyticsSettings /> 로 되어있을 거다. ]

 

- 관리자 모드로 config파일 켜기 : 메모장을 우클릭해서 관리자 권한으로 실행한 후 열기를 통해 파일 찾아 열거나, notepad++을 통해 edit하고 저장하면 관리자모드로 다시 열어주는 걸 이용

1. 기존에 있던 Trigger

오케스트레이터에 Start Job을 시키기 위한 Trigger는 다양하다.

오케스트레이터에서 기본적으로 제공하는 Time Trigger, Queue Trigger

Studio에서 Activity로 존재하는 Start Job

비슷한 원리로 Swagger API로도 실행이 가능하다.

이외 AR인 경우 File Trigger나 Mail Trigger, Element Trigger 등을 쓸 수 있다.

 

2. 새로운 Trigger

오케스트레이터의 Integration Service라는 메뉴에서 제공하는 연결 앱들이다.

구글 및 MS 앱들을 비롯해 개발자들이 자주 쓰는 Slack이나 제조쪽 CS에서 많이 쓰이는 Zendesk

프로젝트 및 일감 관리를 위한 Jira, CRM 관리 툴로 유명한 SalesForce

미국에 영업본부를 크게 둔 회사에서 자주 보이는, 사내 커뮤니케이션 툴 Twilio

이외 dropbox나 Twitter같은 보편적인 서비스와도 연결하여 Trigger를 생성할 수 있다.

 

가령 구글시트를 연결한다고 해보자.

구글 시트 선택 후 Add Connection을 누르고 Google로 로그인하면, 바로 연결이 완료된다.

트리거를 거는 방식은 생각보다 러프하다.

파일은 선택할 수 없고 Spreadsheet만 선택 가능하다. 

(2022-08-23) 확인 결과 condition filter가 생겼다.

구글 드라이브의 경우. 조건을 걸어서 트리거를 걸 수 있음

https://docs.uipath.com/integrations/docs/uipath-google-sheets-events

 

Google Sheets Events

The Connector supports New Record Created events via Polling for Google Sheets on the following object: Spreadsheet The Connector supports Existing Record Updated events via Polling for Google Sheets on the following object: Spreadsheet The Connector suppo

docs.uipath.com

이벤트는 New Record Created, Existing Record Deleted, Existing Record Updated 3가지다.

위의 docs에서도 설명돼 있듯이 확인은 5분 간격으로 하고 설정을 변경할 수는 없다. [2022. 04. 11. 기준]

 

Google Sheet, Google Drive, Gmail, Microsoft Office 365 정도는 당장 쓸만해 보인다.

Office 365를 쓰는 경우. 365를 쓴다면 메일봇은 필요가 없다

 

 

 

 

3. 리소스 활용

Document ID를 통해 파일을 지정해서 Trigger를 하나의 드라이브로 관리할 수 있으면 좋겠지만

그 정도까지는 아직 힘들어 보인다. [사실 된다고 해도 클라우드의 리소스를 굉장히 많이 잡아먹을 것이다.]

앞선 새로운 이벤트 트리거가 활성화 가능하다면, 각 과제별 Connection을 만들어 Trigger 할 수 있게 된다.

Data filter가 생겨서 이제 쉽게 외부 리소스에서 봇 트리거링이 가능하게 되었다.

특히 파일로 Trigger하는 것들에 대해서 기존 메일체킹하는 봇이 항상 필요했다면

이젠 구글 드라이브나 구글 시트에서 작업함으로써 리소스를 아낄 수 있게 됐다.

사이트 보안이 세서 클라우드 형태에서 Connection이 어렵다 하더라도 앞으로 확장성에 따라

내부에서 레거시 시스템을 바라볼 수 있게끔 구성할 수 있을 것으로 보인다.

 

 

4. Connection Test

- Google Sheet 및 Google Drive : 연결 가능.

** Available Events : New Record(file) Created, Existing Record(file) Deleted, Existing Record(file) Updated

 

- Slack : 연결 가능(BOT TOKEN - No. Redirect URL을 https://cloud.uipath.com/provisioning_/callback 으로 설정)

** Available Event : None(Preview 상태)

 => 2022-08-23 아쉽게도 슬랙은 아직 설정 가능한 event가 없고 user token으로만 connection이 설정됨

 

- JIRA : 연결 가능

** Available Event : New Record Created, Existing Record Updated

1. 패키지 버전에 맞는 Uipath Remote Runtime을 클라이언트(붙을 VM)에 깔아줌

 - 버전에 맞는지는 리소스 센터(https://cloud.uipath.com/portal_/resourceCenter)에서 받을 때 확인 가능

다운로드드 링크(리소스센터 못 들어가는 경우)

https://drive.google.com/file/d/1BXe5eZi94mQLn-jmft8LLUkCtVfYizrv/view?usp=sharing

 

Uipath Remote Control.zip

 

drive.google.com

2. 스튜디오가 깔린 PC에서 원격 프로그램에 따라 플러그인 설치(Microsoft Remote Desktop이나 Citrix 등)

3. Selector 체크

 

이래도 안 된다면 mstsc(RDP)를 관리자권한 빼고 실행해 보길 바람

C:\Windows\System32\cmd.exe /min /c "set __COMPAT_LAYER=RUNASINVOKER && start "" "mstsc"

 

++ Input할 때, 개발 PC와 VM PC를 혼동하는 케이스들만 잘 잡아주면 특별히 안 되는 기능은 없음

+ Recent posts