본문 바로가기

IT/RPA

[RPA][🌟] #10 UiPath 변수(Variable) 와 인수(Argument) 총정리

# 변수와 인수의 개념

# camel 표기법, pascal 표기법, Hungarian 표기법

# invoke workflow file

 

 

<목차>

** 이 글을 읽는 당신에게

 

 

 

 

 

 

 

 

 

** 이 글을 읽는 당신에게

 

 

 

 

입문자가 UiPath를 다루며

 

한차례 고비를 겪는 곳이 바로 '변수와 인수의 차이'라고 생각한다.

 

 

 

 

 

필자 또한

 

특히 인수의 방향을 이해하는 것에서 많은 혼란을 겪었다.

 

 

이 글이 인수에 대해 혼란을 겪고 있는 입문자들에게 도움이 되길 바라며,

 

 

 

 

 

 

가장 직관적인 방법으로

 

변수와 인수의 개념과 그 작동 과정에 대해 정리해보고자 한다.

 

 

 

 

 

 

 

 

1. 변수

 

1) 변수의 선언

 

* 변수를 선언하고 초기값을 할당해 주는, 즉 변수의 초기화 과정은 익히 알다시피 Assign 액티비티를 이용한다.

 

 

 

Assign 액티비티

 

 

 

 

 

 

2) 변수의 재할당

 

 

 

* 변수는 일종의 '이름표' 이자 값을 저장하는 '상자'와 같은데,

 

 

 

프로세스를 개발하는 과정에서 발생되는 수많은 데이터 중에서

변수를 이용하여 특정 값을 가리키도록 한다.

 

 

 

변수의 기능

 

 

 

 

 

 

따라서 얼마든지 변수가 가리키는(또는 담는) 값은 수정이 가능하다.

 

이를 '재할당'이라고 한다.

 

 

 

 

변수의 재할당

 

 

 

 

 

* 변수는 범위(Scope) 가 존재하는데, 이 범위는 변수가 사용될 수 있는 범위를 나타내는 것이다.

 

* 변수는 그 범위에 따라 지역변수전역변수로 이루어지며, 함수에서의 그것과 개념이 동일하다. 개발 과제에 따라 적절히 범위를 지정하여 변수를 사용한다.

 

* 단, 프로세스 파일(.xaml) 안에서만 사용할 수 있으며 다른 프로세스 파일로 변수를 보내어 사용할 수는 없다. 

-> 이때 필요한 개념이 바로 인수(Argument)와 Invoke WorkFlow File이다!

 

 

 

 

 

 

 

2. 인수(Argument)

 

* 인수는 프로세스와 프로세스(.xaml) 파일 간 데이터를 전달한다.

 

* 인수에는 총 세 가지 방향이 존재한다. in(입력), out(출력), in/out(입/출력)

 

 

 

 

 

 

* 부모 워크플로우(STEP 2) 과 자식 워크플로우(Invoked process)라 가정하자. (이하 '부모'와 '자식')

 

 

1) in 입력

 

in

 

 

 

* 부모는 자식에게 data를 전달. 자식은 자신의 process를 진행, data를 가공한 결과인 processed data를 가지고 있다.

 

=> 자식은 부모에게 processed data를 전달하지 않으므로 부모에서는 processed data를 이용할 수 없다.

 

 

 

 

 

 

이를 정리하면 다음과 같다.

 

 

 

 

 

 

 

 

* 부모는 변수 Str_Name의 데이터를 'in_Str_Name'이라는 이름의 인수에 담아 자식 워크플로우로 보낸다.

 

-> 자식은 인수(in_Str_Name)의 데이터로 작업을 수행한다.

 

-> 부모는 자식이 데이터를 보내주지 않았으므로 인수 in_Str_Name(즉, processed data) 을 사용할 수 없다. 

 

 

 

 

 

 

 

2) out 출력

 

out

 

 

* 자식은 자신의 작업을 수행, processed data를 생성한다.

-> 자식은 부모에게 이 데이터(processed data)를 전달한다. 따라서 부모는  processed data를 이용할 수 있게 된다.

 

 

 

 

 

 

 

이를 정리하면 다음과 같다.

 

 

 

 

 

 

자식 workflow 내 인수 방향 확인

 

 

=> 자식은 자신의 작업을 수행, 그 결과를 out_Age 라는 인수에 담아 부모로 전달한다.

 

 

 

 

 

 

 

* 부모는 받은 인수(out_Age)를 자신의 범위에 정의된 변수(Get_Age)에 할당하여 활용할 수 있다.

 

 

 

 

 

 

 

 

 

 

 

3) in/out 입/출력

 

 

in/out

 

 

 

* in/out 은 부모가 데이터를 전달, 자식이 처리한 결과를 받는 것이다.

 

 

* 부모는 자식이 처리한결과(Processed data)를 변수에 받아 사용할 수 있다

   => 이는 마치 'invoked process'라는 함수 상자를 이용하는 것과 같다.

 

 

 

 

 

 

 

다음과 같은 프로세스로 이를 검증해볼 수 있다.

 

 

 

 

in/out 인수 검증

 

 

 

인수 확인

 

 

 

* 부모는 Int_Num 변수의 값을 io_Int_Num이라는 인수에 담아 자식으로 보낸다.

 

 

 

 

 

 

 

자식이 수행하는 작업

 

 

* 자식은 자신의 작업(받은 인수의 값 10 에서 4를 빼서 재할당)을 수행,  수행된 결과(Processed data = 10 - 4 = 6) 을 다시 부모에게( = Int_Num 변수에)  보낸다.

 

-> Write Line으로 Int_Num의 변화를 확인할 수 있다.

 

 

 

 

출력 패널 확인

 

 

 

 

 

 

 

 

3. Naming Rule

 

  1) 3가지 표기법

 

 * 변수나 함수 등의 식별자를 작성할 때 사용되는 네이밍 규칙에는 다음과 같은 표기법들이 있다.

 

  1. 파스칼 표기법 (Pascal Case):
    • 각 단어의 첫 글자를 대문자로 시작하며, 나머지는 모두 소문자로 작성한다.
    • 예: MyVariableName, CalculateTotalAmount
  2. 헝가리안 표기법 (Hungarian Notation):
    • 변수나 함수 이름 앞에 해당 변수의 데이터 타입을 나타내는 접두어를 붙이는 규칙.
    • 예컨대, 정수형 변수는 "Int"로 시작하고, 문자열 변수는 "Str"로 시작할 수 있다
    • 예: IntCount, StrName
  3. 카멜 표기법 (Camel Case):
    • 첫 단어를 제외한 나머지 단어의 첫 글자를 대문자로 시작하며, 나머지는 모두 소문자로 작성
    • 예: myVariableName, calculateTotalAmount

... ...

 

 

 

  2) 변수와 인수의 표기법

 

이중 변수와 인수는 헝가리안 표기법을 따른다.

 

* 변수 표기법 [데이터타입][이름]

StrName, IntAge, DicConfig, ArySheets, DblGrade

 

* 인수표기법 : 방향_[데이터타입][이름]

in_StrName, io_IntAge...

 

(단, 본 글의 과정에서는 시각적 편의를 위해 Str_Name 과 같은 표기 형식으로 진행하였다.)

 

 

 

 

 

 

 

 

 

4. 총정리