UiPath Form을 이용하여 custom form을 만들면 사용자로부터 다양한 데이터를 입력받을 수도 있고, 여러가지 메세지와 정보를 원하는 모양과 배치로 출력할 수도 있습니다.
이번 포스팅에서는 Form을 이용하여 사용자에게 선택할 수 있는 목록을 제시하고 사용자가 그 중 하나를 선택하도록 하는 것을 함께 구현해보려고 합니다.
Form을 사용하려면 UiPath.Form.Activities 패키지를 설치해야 합니다. JSON 데이터를 다루기 위하여 UiPath.WebAPI.Activities 패키지도 함께 설치하겠습니다.
Form을 이용하여 사용자에게 제시할 목록은 서버 목록이고 아래와 같이 comma로 구분되어 ServerList.csv 파일에 담겨 있다고 가정하겠습니다. 사용자가 이 중 하나를 선택하면 그 서버로 ssh 연결을 생성하는 것까지 구현해보겠습니다. putty가 "C:\Program Files\PuTTY\putty.exe"에 설치되어 있다고 가정합니다.
no,username,host,port
1,kim,seoul.mydomain.com,22
2,lee,suwon.mydomain.com,33
3,hong,busan.yourdomain.com,44
먼저 Read CSV 액티비티를 이용하여 서버 목록을 데이터테이블에 로드합니다.
그런 다음, 아래와 같이 Dictionary 타입의 컬렉션에 "no"를 키로 하여 한 줄씩 넣어줍니다.
이제 Create Form 액티비티를 이용하여 폼을 만들고 Dictionary에 담아둔 서버 목록을 전달해 줄 차레입니다.
Form Designer를 열고 Drop-down List 콤포넌트를 폼에 추가하고,
이 콤포넌트의 Field Key 이름을 "server"로 설정해줍니다.
그런 다음, Create Form 액티비티의 FormFieldsCollection 프로퍼티에 아래와 같이 argument를 바인딩 해줍니다. serverlist는 위에서 정의한 Dictionary입니다.
GenerateInputFields 프로퍼티에서는 체크를 지워주어야 하고, Output 섹션의 Dismissed와 FormFieldsOutputData 프로퍼티에 변수를 할당해줍니다.
사용자가 Submit 버튼을 누르지 않고 Form을 닫으면 isDismissed가 True로 설정되고, 사용자가 Submit 단추를 눌러서 선택을 완료하면 False로 설정됩니다.
formOutput은 Json string이고 사용자가 선택한 아이템이 아래와 같이 반환됩니다.
{"server":1,"submit":true}
"server"는 Dictionary의 키 값을 담고 있습니다.
이 string을 Deserialize JSON 액티비티를 이용하여 JObject 타입으로 바꾸어줍니다. TypeArgument를 아래와 같이 설정해야 합니다.
우리가 Dictionary의 키로 설정한 "no"의 순서번호는 1부터 시작합니다. 그런데 데이터테이블의 행 순서번호는 0부터 시작하므로 아래와 같이 index를 구할 수 있습니다.
이 index로 데이터테이블을 참조하여 ssh 커맨드라인을 아래와 같이 생성할 수 있습니다.
워크플로우를 실행하면 폼의 초기 화면은 아래와 같습니다.
드롭다운을 내리면 서버 목록이 보이고, Type to search에서 검색도 가능합니다.
전체 워크플로우는 아래와 같습니다.
FormExample.zip (4.0 KB)