변수(variable)이란 특정 데이터 타입의 값들을 가지고 있는 그릇이다. RPA에서 변수가 사용되는 이유는 하나의 액티비티에서 다른 액티비티로 데이터를 넘기기 위함이다.
UIPath Studio에서는 '변수 패널'에서 생성 및 변경 할 수 있다.(아래 사진 참고)
아래는 변수 패널에서 설정할 수 있는 정보들이다.
UIPath에서 변수를 선언하는 방법은 네 가지가 있다.
1. 변수 패널에서 직접 설정
2. 디자인 패널에서 Ctrl + K
3. 액티비티 속성에서 Ctrl + K
4. 입력 필드에서 우클릭 후 변수 만들기 선택
Assign
변수를 만들고, 기본값을 워크플로우에서 지정할 수 있다.
데이터 타입은 변수가 가지고 있을 수 있는 데이터를 설명한 것이다. 데이터 타입이 중요한 이유는 프로세스 중 각 변수나 인수에 값을 제대로 할당했는지 확인할 수 있기 떄문이다. UIPath에서 기본적으로 알아야할 데이터 타입은 아래와 같다.
이 중 GenericValue에 대해 조금 더 알아보자.
자동화를 구현하다보면 데이터 타입을 변경해야할 때가 온다. 아래는 데이터 탕비을 변경하는 방법이다.(필요해지면 좀 찾아보자..)
인수(argument)를 이해하기 위해서는 워크플로우(workflow)를 이해할 필요가 있다.
워크플로우는 자동화 프로젝트 중 작은 일부분이고 함수처럼 재사용을 위해 만든다.(사실은 .xaml 파일이긴 하지만) 워크플로우는 변수들 사이를 연결하는 루틴을 만드는데, 루틴은 input, output으로 구성되어있다. UIPath Studio는 몇 가지 방식의 워크플로우를 지원한다. 지원하는 워크플로우 종류는 아래와 같다.
인수(argument)란 무엇일까? 인수는 변수와 매우 비슷하다. 아래는 인수의 특징이다.
[ 변수와 인수의 공통점 ]
- 데이터를 동적으로 저장
- 하나의 인수에 저장된 데이터들은 동일한 타입
- 동일한 메서드와 속성을 가짐
[ 변수와 인수의 차이점 ]
- 인수에는 특별한 '방향성'이 있음
- 입력, 출력, 입•출력
- 이 방향성을 갖는 특성 때문에 자동화 로봇이 이 다음에 어떤 프로세스를 거쳐야하는지 알 수 있음
보통 하나의 자동화 프로젝트는 여러 개의 워크플로우로 구성되어 있기 때문에 이 워크플로우들 간에는 긴밀한 협업이 필요하다. 이런 협업을 보장하는 것이 인수다.(브리티웍스에 변수 형식에 input/output이 있는 것 처럼)
변수에서 한 것 처럼 인수도 '인수 패널'에서 관리할 수 있다. '방향'에서 값을 추출할 방향을 지정할 수 있는데, 특별하게 '속성' 옵션이 있다. 이 옵션은 아직 그 인수를 사용하지 않을 때 설정한다.(주석처리 하는 느낌) 그리고 인수 이름은 방향을 접두사로 사용한다. 아래 예시에서 'Sum'이란 인수는 방향이 '출력'이므로 'out_'을 붙여주었다.
이렇게 인수를 설정 했다면, 메인 워크플로우에 올려놓고 아래와 같이 '인수 가져오기'로 워크플로우 간에 데이터를 주고 받을 수 있다
주의할 점은 인수와 변수를 헷갈리지 말아야 할 것 같다. 하나의 워크플로우에서 인수로 받은 값을 바로 사용할 수 없고, 메인 워크플로우에서 변수를 선언한 후 그 변수에 인수를 받아야 사용할 수 있다. 이게 처음에는 조금 헷갈릴 것 같다
UIPath에서 인수를 선언하는 방법은 세 가지가 있다.
1. 디자인 패널에서 Ctrl + M(⇒입력) / Ctrl + Shift + M(⇒출력)
2. 속성 패널에서 Ctrl + M(⇒입력) / Ctrl + Shift + M(⇒출력)
3. 인수 패널에 직접 입력
아래 표는 UIPath Academy에서 제공하는 변수와 인수의 차이점을 나타낸 표다.
지금까지는 하나의 값을 저장하는 변수나 인수를 봤다. 이제는 여러 개의 값을 받을 수 있는 array에 대해 알아보자. 그 전에 array가 있는 Collection에 대해 먼저 알아보자.
동일한 데이터 타입인 여러 개의 값을 다루려면 변수를 그 만큼 만드는 것보다 하나의 변수로 그 값들을 전부 관리하는 것이 더 효율적일 것이다. 이 때 사용되는 것이 Collection 패키지이다.(python에도 있는 개념이기 때문에 자세한 것은 패스)
collenction을 사용해야 하는 이유는 아래와 같다.
collections 중 Array는 같은 데이터 타입(정수, 문자열 등)의 데이터를 하나로 묶어서 관리할 수 있는 데이터형이다. 순서로 각 요소에 접근할 수 있다. 앞서 이야기한 대로 Array는 길이가 고정이다.
Array를 선언할 때는 아래와 같이 하면 된다.
StrArray = {"John", "Paul", "George", "Ringo"}
StrArray(0) = "Kim"
인덱싱은 소괄호로 접근한다.
간단한 이자율 계산기를 만들어보자. 대신 하나의 워크플로우에 원하는 동작을 다 넣는 것이 아니라 이자를 계산하는 동작은 하나의 워크플로우로 만들어서 메인 워크플로우에 삽입하기
Input Dialog
해당 액티비티로 사용자에게 예금액과 만기 기간을 받는다.
CalculateInterest.xaml
이자 계산을 위한 워크플로우를 새로 만든다. 메인 워크플로우에 삽입하고 인수를 설정한 후, 사용자 입력 데이터와 연결해준다.
이자를 계산하는 워크플로우에서는 그냥 값만 계산해서 할당해주면 된다.
UIPath 사용법이 익숙해진 다음에는 C# 공부를 해야할 것 같다. 지금은 어떤 액티비티가 있는지, 이 액티비티는 어떻게 쓰는지 모르는 것이 너무 많지만, UIPath는 툴이기 때문에 익숙해지는 것은 시간문제이다. 아무리 RPA가 논코딩을 지향한다지만, 확실히 코딩을 할 수 있으면 많이 편할 것 같다. 그러니 UIPath가 익숙해진 후에는 C# 공부를 하자.
실습이 참 중요한 것 같다. 인수에 대해 배울 때 눈으로 쫓으니 왠지 다 이해가 된 것 같았다. 그런데 아는 것과 실제로 내 손으로 구현하는 것은 큰 차이가 있음을 한 번 더 느꼈다. 구현 과제를 직접 하려고 해보니 막막했기 때문이다. 이론도 중요하지만, 직접 내 손으로 다 해보자