UIPath Academy : 004. Variables and Arguments in Studio

jwKim·2023년 9월 14일
0

🤖 UIPath

목록 보기
5/16

1. Variables, arguments, and data types

1-1. Variables

변수(variable)이란 특정 데이터 타입의 값들을 가지고 있는 그릇이다. RPA에서 변수가 사용되는 이유는 하나의 액티비티에서 다른 액티비티로 데이터를 넘기기 위함이다.

UIPath Studio에서는 '변수 패널'에서 생성 및 변경 할 수 있다.(아래 사진 참고)

아래는 변수 패널에서 설정할 수 있는 정보들이다.

  • 네이밍
    • PascalCase 방식으로 명명할 것 ex) MyName, KeybordWarrior 등
    • 개발은 혼자서만 하는 것이 아니므로 소통에 적합하게끔 변수가 하는 일을 잘 나타낼 수 있게 명명할 것
    • 변수 이름은 유일해야 한다는 제약조건은 없지만, 유일하게 명명할 것
  • 데이터 타입
    • UIPath에서는 변수가 선언될 때 데이터 타입도 함께 선언됨
    • '변수 패널' > 변수 > 변수 형식 드랍다운에서 데이터 타입을 쉽게 설정 가능('Browse for Types'를 선택하면 더 훨씬 더 많은 데이터 타입 검색 가능)
  • 범위(Scope)
    • 파이썬에서 전역변수, 지역변수를 선언하듯 UIPath에서도 변수에 접근할 수 있는 범위 설정 가능
    • 편의를 위해 모든 변수를 전역변수로 만들면 효율성도 떨어지고 의사소통에 어려움이 될 수 있음
    • UIPath에서는 변수의 scope이 해당 변수가 정의된 워크플로우를 넘어갈 수 없음(그런데 대부분의 프로젝트는 하나 이상의 워크플로우로 만들어짐) 따라서 워크플로우 사이에 값을 전달하는 수단이 필요한데, 이를 인수(argument)라고 함
  • 초기값
    • 변수가 갖는 기본값을 설정



UIPath에서 변수를 선언하는 방법은 네 가지가 있다.
1. 변수 패널에서 직접 설정
2. 디자인 패널에서 Ctrl + K
3. 액티비티 속성에서 Ctrl + K
4. 입력 필드에서 우클릭 후 변수 만들기 선택

Assign

변수를 만들고, 기본값을 워크플로우에서 지정할 수 있다.

1-2. Data Types

데이터 타입은 변수가 가지고 있을 수 있는 데이터를 설명한 것이다. 데이터 타입이 중요한 이유는 프로세스 중 각 변수나 인수에 값을 제대로 할당했는지 확인할 수 있기 떄문이다. UIPath에서 기본적으로 알아야할 데이터 타입은 아래와 같다.

  • String
    • System.String
    • 추후에 조금 더 자세하기 다룰 것임
  • Numeric
    • int32 : System.int32
    • Long : System.int64
    • Double : System.Double
  • Boolean
    • System.Boolean
  • Collection : 조금 더 다양한 데이터 타입이 들어있는 큰 범주
    • Array
      • ArrayOf<T> 또는 System.DataType[]
      • 같은 데이터 타입인 여러 값을 지정할 수 있음 길이는 변수 선언 시 지정할 수 있음(= 크기 고정)
    • List
      • System.Collections.Generic.List<T>
      • Array처럼 데이터 타입이 같은 값을 여러 개 담을 수 있음 다만 크기는 가변적임
    • Dictionary
      • System.Collections.Generic.Dictionary<TKey, TValue>
      • key value 쌍으로 저장
  • DataTable
    • 행과 열이 있는 데이터를 담을 수 있는 데이터 타입(python의 Pandas DataFrame)
  • Date and Time
    • DateTime : System.DateTime / 시간을 나타낼 때 사용 날짜 계산, 오늘 날짜 반환 등의 작업 가능
    • TimeSpan : System.TimeSpan / 두 시점 사이에 얼마나 시간이 흘렀는지(=time duration) 파악(프로세스에서 액티비티 사이에서 수행 시간 측정 가능)
  • GenericValue
    • UIPath.Core.GenericValue
    • UIPath에서만 제공하는 변수 & 숫자, 날짜, 배열 등등 어떤 데이터든 담을 수 있는 데이터 타입
    • 데이터 타입이 명확히 정해지지 않은 경우에 임시로 사용하는 데이터 타입임

이 중 GenericValue에 대해 조금 더 알아보자.

  • 데이터 타입을 명확하게 하기 위해서 몇 가지 테스트를 해야하는 경우가 있는데 이럴 때 실행을 위해 사용하는 데이터 타입임
  • GenericValue를 연산할 때에는 첫 번째 변수에 영향을 받는다. 예를 들어 "String + GenericValue"이면 문자열을 연결하고, "integer + GenericValue"이면 덧셈 연산을 함



자동화를 구현하다보면 데이터 타입을 변경해야할 때가 온다. 아래는 데이터 탕비을 변경하는 방법이다.(필요해지면 좀 찾아보자..)

  • Convert.ToString Method
  • Convert.ToInt32
  • Double.ToString Method
  • Double.Parse Method
  • Boolean.ToString Method
  • Convert.ToBoolean Method
  • Convert DateTime to String

1-3. Invoke Workflow File and Arguments

인수(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에서 제공하는 변수와 인수의 차이점을 나타낸 표다.

1-4. Arrays

지금까지는 하나의 값을 저장하는 변수나 인수를 봤다. 이제는 여러 개의 값을 받을 수 있는 array에 대해 알아보자. 그 전에 array가 있는 Collection에 대해 먼저 알아보자.

동일한 데이터 타입인 여러 개의 값을 다루려면 변수를 그 만큼 만드는 것보다 하나의 변수로 그 값들을 전부 관리하는 것이 더 효율적일 것이다. 이 때 사용되는 것이 Collection 패키지이다.(python에도 있는 개념이기 때문에 자세한 것은 패스)

collenction을 사용해야 하는 이유는 아래와 같다.

  • 워크플로우 실행 중 각각의 요소들이 동적으로 변화할 수 있다는 점
  • 길이가 변동이라는 점(단 Collection에 있는 모든 데이터 타입이 그렇지는 않음)

collections 중 Array는 같은 데이터 타입(정수, 문자열 등)의 데이터를 하나로 묶어서 관리할 수 있는 데이터형이다. 순서로 각 요소에 접근할 수 있다. 앞서 이야기한 대로 Array는 길이가 고정이다.

Array를 선언할 때는 아래와 같이 하면 된다.

StrArray = {"John", "Paul", "George", "Ringo"}
StrArray(0) = "Kim"

인덱싱은 소괄호로 접근한다.



2. 변수, 인수 실습

2-1. 과제 설명

간단한 이자율 계산기를 만들어보자. 대신 하나의 워크플로우에 원하는 동작을 다 넣는 것이 아니라 이자를 계산하는 동작은 하나의 워크플로우로 만들어서 메인 워크플로우에 삽입하기

  • 메인에서 사용자에게 예금액과 만기 기간을 받음
  • 이자 계산 워크플로우에서 이자 계산
    • 이자 = 예금액 이자율 기간 / 100
    • 이자율은 1.75로 고정
  • 이자를 계산한 후 만기 예상액 반환

2-2. 구현

Input Dialog
해당 액티비티로 사용자에게 예금액과 만기 기간을 받는다.

CalculateInterest.xaml
이자 계산을 위한 워크플로우를 새로 만든다. 메인 워크플로우에 삽입하고 인수를 설정한 후, 사용자 입력 데이터와 연결해준다.

이자를 계산하는 워크플로우에서는 그냥 값만 계산해서 할당해주면 된다.



3. 느낀점

3-1. C# 공부

UIPath 사용법이 익숙해진 다음에는 C# 공부를 해야할 것 같다. 지금은 어떤 액티비티가 있는지, 이 액티비티는 어떻게 쓰는지 모르는 것이 너무 많지만, UIPath는 툴이기 때문에 익숙해지는 것은 시간문제이다. 아무리 RPA가 논코딩을 지향한다지만, 확실히 코딩을 할 수 있으면 많이 편할 것 같다. 그러니 UIPath가 익숙해진 후에는 C# 공부를 하자.

3-2. 실습의 중요성

실습이 참 중요한 것 같다. 인수에 대해 배울 때 눈으로 쫓으니 왠지 다 이해가 된 것 같았다. 그런데 아는 것과 실제로 내 손으로 구현하는 것은 큰 차이가 있음을 한 번 더 느꼈다. 구현 과제를 직접 하려고 해보니 막막했기 때문이다. 이론도 중요하지만, 직접 내 손으로 다 해보자

0개의 댓글