본문 바로가기
[ RPA ]

[RPA] Ui Path - 딕셔너리(Dictionary) 정보보안

by 히앤님 2020. 11. 13.
반응형
SMALL

Config 파일

프로젝트를 할 때, 모든 설정파일을 담은 Config 파일이라는 것이 있다. 프로세스와 관련된 모든 구성 정보(ex. URL, 파일 경로, 자격증명, 프로세스 큐 이름 등)을 정리하고 운영을 하는 부서에서는 이 Excel 파일만 비지니스에 맞게 수정한다.

RPA는 사무 자동화 시스템이다. 운영팀이 RPA의 알고리즘에 들어가 따로따로 수정하거나, it 팀이 고생할 필요는 없다. 우리는 Config 파일을 자동화 시켜놓고 운영의 변화에 즉각 대응하도록 만들어보자. 그러려면 Dictionary 유형을 살펴볼 필요가 있다.

Dictionary

Key - Value로 데이터를 나눠서 사전처럼 색인과 단어를 찾는 식의 사용을 할 수 있다.

키워드(Key)는 고유값으로 중복키가 없다.

 

[예제1] Dictionary 연습

1. 변수선언

Dic_name을 선언해주고 변수 유형을 Dictionary로 한다.

딕셔너리 변수유형 불러오기

보통 변수의 형식을 설정할 때, key값은 구분을 위해 숫자를 쓰지 않는다. value값은 나중에 형식을 지정하기 위해 object로 넣어놓자.

2. 딕셔너리 초기화

딕셔너리는 항상 초기화를 해줘야한다.

 

3. key-value 값 할당

특이하다. key값을 String으로 설정했기 때문에 key값을 String으로 써주자.

key값을 뒤에 String으로 넣어주고, 뒤에 Value 값을 써주자. "" 해서 키값 넣고 오른쪽에 value 값을 넣는다.

값 할당

4. 실행

write Line으로 출력

실행하면 잘 나온다.


[예제2] Config.xlsx 파일 Dictionary로 읽어오기

예를들어, 회계에 관련된 자료를 자동화시킨다고 해보자. 우리는 특정 이름에 있는 value 값을 실행하면 나오게 하고 싶다.

위치는 config의 TypeC의 Account 탭의 데이터를 읽어올 것이다.

여기서 key값은 Name 칼럼이고, value값은 Value 칼럼이다. 이걸 짝지어서 가져올 것이다.

1. 엑셀 읽기

Excel Application Scope로 엑셀을 읽는다. Read Range로 읽은 시트의 이름과 범위 설정.

엑셀 읽기

Read Range에서 데이터테이블을 설정해주자.

ctrl + k 해서 바로 변수 선언 후 넣어준다.

Read Range 속성 설정

2. DT 반복문 시행

For Each Row를 이용해서 반복문 실행한다. 변수가 여러개이기 때문에 새로 만들어준 변수 DT_Account에 엑셀 한줄씩 넣어줄 것이다.

반복문 설정

3. Config 설정 / 값 찾기

config를 초기화해준다. Config는 우리가 받아올 딕셔너리를 담은 변수이다. 예제 1에서 했던 것처럼 딕셔너리는 항상 초기화 과정을 거쳐야 한다.

For Each RowAssign에 위에서 초기화한 Config 딕셔너리를 key와 value 값을 설정해서 DT_Account에 저장한다.

단, 위에서 말했던 대로 Key값은 숫자로 하지 않는다. 따라서 String 형식이므로 "" 안에 쓴다.

row의 컬럼을 config로 감싼다.


[ 반복문 ]

For Each Row / row.item("칼럼명") -> DataTable

For Each / row("컬럼명") -> Dictionary

딕셔너리에서는 item을 넣지 않는다.

키값으로 해서 데이터를 넣는 것뿐이기 때문.

▼ item?

더보기

row는 각 열에 대해 적용하는 것을 알려주고, item은 그 열을 지목해주는 역할.

파이썬의 반복문을 생각했을 때

for 변수 in 리스트(또는 튜플, 문자열):

수행할 문장1

수행할 문장2

이런식으로 생겼을 때, row에서 선택한 칸 하나를 item이라고 이름을 임의로 붙인것이다.



4. 출력

Config("Email_Account").ToStringConfig("System1_Account").ToString 로 각각 키값을 써서 value값을 출력창에 찍어보자.

출력해보자
value 값이 잘 출력되었다.

 

[예제2-1] Get Workbook Sheets 사용

객체지향 방식으로 Invoke도 함께  써보자.

0. ReadConfigFile.xaml 파일을 만들어서 여기서 진행한다.

위에서는 단순히 Account 탭에 있는 "value" 값만 추출했다.

이것만 가져왔다

하지만 원래는 컬럼이 여러개다. 단순히 key-value값으로만 두기에는 데이터를 추출하는데 한정적이다.

여기서 새로운 액티비티를 이용하게 되면 쉽게 테이블로 가져올 수 있다.

1. 변수 선언과 config 초기화

변수선언 / config 초기화

config는 관리 파일이다. 따로 Dic 과 같은 자료형을 붙이지 않고 그 이름대로 선언해준다.(관용적)

이제 앞에와 동일한 방식으로 Excel을 불러와보자. 

2. 엑셀 불러오기

위에서 지정한 변수 ConfigPath로 위치를 지정해준다.

실행창에 어떤 것을 넣어야할까? 그 위치에 있는 엑셀을 불러온다.

모든 시트의 이름 목록을 검색한다.

Get Workbook Sheets 는 시트의 이름을 전부 불러온다. 가장 큰 카테고리를 가져오는 것. 사진으로 보면 이부분이다.

이 목록들을 가져온다

엑셀에는 각 시트마다 테이블이 존재한다. 우리는 이 시트의 이름을 써서 엑셀 전체를 가지고 왔다.

각 시트의 컬럼과 key-value를 구분하기 위해서는 우리는 반복문을 사용해 줄 것이다.

단, 위에서는 이미 DT로 받아왔기 때문에 For Each Row를 사용했지만 현재 받아온 시트의 이름들은 LIst 형식이다.

이걸 일단 분리해주고 읽는 For each 반복문을 사용한 후, 그 안에 위에와 같이 DT를 분리하는 For Each Row 반복문을 사용할 것이다.

 

Get Workbook Sheets 속성에서 뽑아온 시트의 이름들, 그 List의 이름을 선언해주고 속성에 써주자.

변수선언
Get Workbook Sheets 속성에 추가

3. For Each 문으로 시트 분리 / Read Range

위에서 선언한 시트이름들의 List를 List_sheet1 으로 선언했다.

이 리스트를 sheet라는 변수에 담아주자. Read Range로 각 시트의 이름을 반복적으로 넣어서 값들을 DT로 읽어내자.

 

시트 이름별 테이블 DT로 읽어내기

위와 동일하다. DT_Config라는 각 시트별 테이블을 담을 변수를 선언해주자.

read range 속성에 변수 선언

 

4. For Each Row 로 DataTable 읽어내기

테이블을 담은 DT_Config라는 변수를 각 row별로 반복문을 돌린다.

반복문 안에 if문을 통해 "만약 "Name" 데이터가 비어있다면, 값을 넣지 않는 것"으로 하자. Key 값이 비어있다면 딕셔너리의 역할을 할 수 없기 때문이다.

True(=비어있지 않은 값들)을 골라냈으면 Assign으로 값을 찾아주자.

For each row 쓰기

5. 출력

우리는 ReadConfigFile.xaml 에서 작업했다. 실행은 Main에서 할 것이다.

그렇다면 현재 출력한 값들을 Main으로 보내야 한다.

out 변수를 만들어주자.

out으로 가는 변수를 선언해서 config 딕셔너리를 담는다.

Main.xaml 에서 xaml을 끌어와서 연결해준다. 인수를 가져고오 값을 변수선언해준다.

config 변수선언, 인수 가져오기


[예제3] 자격 증명에 등록된 계정으로 로그인 프로세스(객체지향) 만들기

기능 구현을 해보자. 예제 2에서 value 값을 출력한 것은 간단하게 실험해본 것에 불과하다.

서버를 쓰면 그 서버에 계정정보까지 저장해놓고 쓸 수 있다. 하지만 비싸다. 따라서 서버가 없는 기업들은 Window에서 기본 제공해주는 window 자격 증명 관리자를 사용해서 계정 보호한다.

window 자격증명 관리자 들어가기
일반자격 추가 (=계정추가)
계정 등록

이렇게 계정을 등록하면 계정은 보호받고 밖으로 노출되지 않는다.

RPA 개발자도 변수를 끌어다 쓸 뿐, 실제 ID값과 password 값을 알 수 없기 때문에 권한의 분리가 가능하다.

 

0. 계정 등록 : 위의 과정대로 id와 비밀번호 권한 등록

1. 구조 짜기

로그인 프로세스는 앞선 연습으로 쉽게 할 수 있다. 간단하게 OpenBrowser.xamlACMESiteLogin.xaml 기능으로 나누어서 진행해보자. 위에 예제 2-1과 연결된다. 내보낸 config 변수를 그대로 가져다 쓸 것이다.

2. OpenBrowser.xaml

앞에서 가져왔던 config에 있는 주소를 사용해보자. 우리가 열고자 하는 주소는 config 테이블에 있다.

저 주소를 key값으로 불러서 가져와보자.

Config를 불러서 key값으로 주소를 가져온다.

경로를 연결해주자.

3. ACMESiteLogin.xaml

로그인 기능을 구현해주자. 기본 브라우저 Chrome으로 설정한다. 단, 비밀번호는 Secure Text로 하자.

변수의 경우, ID 라는 이름과 password 라는 이름의 변수를 임의로 선언해준다.

ID password 라는 변수에 window 자격 증명 관리자에 저장한 값들을 꺼내오자.

 

4. GetWindowCredential.xaml

 ID  password 라는 변수에 window 자격 증명 관리자에 저장한 값들을 저장하자.

Get secure credential : 패키지 관리에서 설치할 수 있는 액티비티로 정보보안에 필요하다.

변수 선언

변수 선언 후 속성에서 값들을 내보내주자.

 

5. 출력

로그인 맨 위에 단에 붙여넣어주고 실행하면!

 

자동으로 로그인된다.

반응형
LIST

댓글