오늘은 UiPath의 작업 결과물인 Process, 그리고 외부 프로그램 중 제가 작업이 가능한 C#, WPF로 개발된 프로그램 간의 상호작용을 통한 프로세스의 구현 가능 여부를 확인하고, 작업 과정을 Dashboard로 보여줄 수 있는지를 간단히 만들어 본 Prototype에 대해서 정리를 해 봅니다.

 

 

우선 간단하게 정리한 요구사항 및 기술의 한계와 현황으로 프로토타입을 구현한 방향을 정리해봅니다.

 

 

먼저 요구사항 정의입니다.

 

 

1. 반복적으로 입력을 받아서 해당 입력값을 가지고 Process를 진행한다. 

    (단, 반복적인 그 작업은 추후에 UiPath의 Process로 구현한다.)

2. 입력을 중단하면 추가입력 없이 해당 작업을 마지막으로 프로세스가 종료된다.

3. 작업 현황을 현황판(Dashboard)에 보여준다.

 

이 요구사항은 간단히 아이디어를 듣고 제가 조금은 구체적이고 명확하되, 너무 많지 않도록 정의한 것입니다.

 

 

 

위의 사항과 더불어 Prototype 및 실제 프로세스가 구현이 된다고 했을 때에도 현실적인 기술 상황 및 개발 환경에 대한 간단한 정리를 해 둡니다.

 

 

기술현황 및 한계

 

1. DB의 사용은 어려울 것

    (DB가 어렵다는 것보다는 동작하는 환경이 DB가 없이 동작할 수 있도록 해야 한다는 것입니다.)

 

2. 가능한 실시간으로 Dashboard에 현황을 보여주는 것

 

 

위의 두 가지 사항을 정리한 후 해당 프로그램과 프로세스의 모습 및 시스템 구성도를 간단하게 그려보았습니다.

우선 두 개의 프로세스(프로그램도 실행하면...)에서 하나의 파일에 동시에 접근이 불가능하기 때문에 DB를 쓰지 않고 그것을 해결하는 방법이 뭐가 있을까? 고민을 하다가 방법을 찾은 것이 하나가 파일 시스템을 이용하는 것이었습니다.

 

다른 분의 좋은 아이디어는 클립보드가 있었는데 뭔가 제가 작업을 그렇게 해 본 적이 없어서인지 클립보드에 어떻게 관리를 해야 할지 감이 정확하게 오지는 않아서 일단은 파일 시스템을 이용했습니다.

 

위의 시스템 구성도에 주요 항목 및 동작들을 간단히 설명합니다.

 

 

 

1. WPF 프로그램 

1) Dashboard(MainWindows.xaml)

 

작업이 진행되는 현황 및 작업 대기 목록이 표시될 것이며, 현재 방식으로는 작업 대상이 등록되면 해당 개체를 표현하는 방법을 버튼으로, 구분하는 값은 버튼의 Text(Contents 속성 값)를 해당 개체를 구분할 수 있는  ip로 표시하였습니다.

작업 대상이 등록되면 회색 버튼으로, 해당 개체에 대한 작업이 UiPath Process에서 완료되면 녹색으로 변경하는 작업을 합니다.

 

2) InputWindows - 입력창

 

개체의 정보를 바탕으로 개체에 대한 작업 대상을 추가하며, 해당 정보를 파일로 생성합니다.

해당 창에는 2개의 버튼이 있으며, Add버튼을 누를 경우에는 입력창의 Ui에 있는 모든 Text를 초기화하여 추가 입력을 받을 수 있도록 작업하였습니다.

그리고 Done라는 두 번째 버튼을 누를 경우에는 더 이상 입력을 받지 않으며, 해당 작업을 끝내도 된다는 정보를 UiPath Process가 확인할 수 있도록 파일에 기록합니다.

 

(간단한 부가 작업으로, 입력받는 정보중 IPv4 주소가 있는데 해당 값이 올바른 양식인지를 입력 중에 검사하여 표시하도록 소스를 구성하였습니다. 표시 및 유효성 검사로 유효하지 않은 ip인 경우에는 개체로 추가되지 않습니다.)

 

 

2. UiPath Process - "Tiquitaca"

 

우선 이 Tiquitaca(이하 티키타카)라는 프로세스는 간단히 WPF프로그램과 서로 작업 진행경과 및 결과를 DB 없이 주고받을 수 있는지를 확인하여 크게 실제 업무가 동작하는 부분만 제외하고 가능성을 확인하기 위해 만든 프로세스입니다.

작업 대상이 있는지 반복적으로 확인한 후 작업을 진행하는 로직으로 되어있으며, 작업 대상이 이미 작업된 경우에는 해당 작업을 진행하지 않도록 되어있습니다.

그리고 마지막으로는 입력완료(추가입력 없음) 정보를 확인하여, 입력이 모두 완료된 경우에는 입력된 정보들에 대한 작업 Process가 끝날 경우 전체 프로세스가 끝나도록 구성하였습니다.

 

 

 

3. Windows File Systems (파일 시스템)

 

우선 파일 시스템이라는 용어가 생소할 수 있지만 Windows를 사용한다면 매일 접하는 그런 시스템입니다.

 

간단하게 정의는 위키백과로!

https://ko.wikipedia.org/wiki/%ED%8C%8C%EC%9D%BC_%EC%8B%9C%EC%8A%A4%ED%85%9C

 

파일 시스템 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 둘러보기로 가기 검색하러 가기 파일 시스템(file system, 문화어: 파일체계)은 컴퓨터에서 파일이나 자료를 쉽게 발견 및 접근할 수 있도록 보관 또는 조직하는 ��

ko.wikipedia.org

 

파일 시스템은 DB와 다른 시스템으로 DB의 장점들을 극명하게 보여줄 때 대조하는 시스템으로 주로 언급됩니다.

 

우선 이 작업을 하면서 확실하게 알아햐 하는 차이는 Data의 동시 접근이 되지 않는다는 것입니다.

즉, 이런 리스트는 Excel에서 작업을 하도록 하면 정말 편하고 깔끔하게 관리할 수 있습니다.

하지만 문제는, WPF Program이 2번째 Data를 추가하는 작업을 파일에 진행 중일 때, 1번째  Data에 대한 작업 완료 정보를 UiPath Process가 파일에 쓸 수 없다는 것입니다.

 

그래서 약간의 꼼수(?) 일 수 있지만 파일 시스템을 이용하되, 파일에서 읽고 쓰는 정보는 동시에 접근할 일이 없는 정보들로 하고, 목록은 파일 시스템 자체를 이용하기로 한 것입니다. 즉, 파일을 하나의 개체처럼 취급하여, 폴더(디렉터리) 정보를 확인하여 목록을 확인하여 처리하도록 한 것입니다.

 

(이것보다 DB를 쓰지 않고 상호 충돌 없이 구현할 수 있는 좋은 Tip이 있다면 알려주세요~!!)

 

 

 


 

 

 

시연 영상이 보이지 않는 환경이 있어서 일단 Gif 이미지도 추가로 첨부하였습니다.

 


 

 

 

 

간단한 작업의 흐름은 아래와 같습니다.

 

1. 입력창에 필요 정보를 입력한다. (Text 파일 생성)

2. 입력된 정보를 감지하여 Dashboard가 개체를 표시한다. 

3. UiPath 프로세스가 입력 정보를 감지하여 작업을 시작한다. (작업 상황을 가정하여 자동 종료 Message Box 표시)

4. UiPath 프로세스가 작업 완료 정보를 입력한다 (Text 파일 복사)

5. 작업 완료 정보를 Dashboard가 감지하여 표시한다

 

물론, 각각의 프로세스가 별도로 동작을 하며 두 프로세스에서 서로 반복적으로 수행하며 정보를 확인하여 작업을 합니다. 따라서 입력창에 정보를 입력하는 시간과 현재 Prototype에서의 작업 과정으로 보여주는 시간이 비슷하지만, 실제로는 해당 작업이 훨씬 더 길다면 입력받은 1 개체를 대상으로 하는 작업이 끝나기 전에 작업 대상이 2개 이상 더 저장되어 회색 개체들이 보드에 먼저 표시될 수도 있습니다.

 

또한 입력을 사용자에게 받지 않고 엑셀에서 읽어오게 작업을 한 후 보드에는 모두 표시가 되고 작업 완료에 따라 차례로 해당 정보가 반영이 될 수도 있습니다.

 

해당 작업은 간단히 다른 프로그램에서 작업한 내용과 UiPath Process의 연동이 가능한지를 간단하게 확인하기 위한 작업이었으며, 미약하고 허접(? - 파일 시스템 대신 DB만 쓸 수 있어도....ㅠㅠ)하지만 그래도 결과는 예쁘진 않지만 확실하게 가능성은 보여줄 수 있는 프로토타입이라고 생각합니다.

 

이상으로 작업을 마치며, 구체적으로 기록한 부분도 있고 한 줄로 끝나버린 부분도 있을 텐데, 자세한 설명이 필요한 부분이 있다면 댓글로 남겨주세요~.

+ Recent posts