Read Range: A column named '시작문자열(Befrore)' already belongs to this DataTable.

 

읽어오려는 엑셀 파일의 컬럼 값이 똑같을경우 생기는 에러!

다음과 같이 이름이 같은 두개 이상의 컬럼이 존재하기 때문이다.

 

참고로 에러명의 'A'는 컬럼A를 말한게 아니었음.

 

http://Message: The following errors were encountered while processing the workflow tree: 'Main': The private implementation of activity '1: Main' has the following validation error: Value for a required activity argument 'Value' was not supplied. 'Main': The private implementation of activity '1: Main' has the following validation error: Value for a required activity argument 'Value' was not supplied. Exception Type: System.Activities.InvalidWorkflowException RemoteException wrapping System.Activities.InvalidWorkflowException: The following errors were encountered while processing the workflow tree: 'Main': The private implementation of activity '1: Main' has the following validation error: Value for a required activity argument 'Value' was not supplied. 'Main': The private implementation of activity '1: Main' has the following validation error: Value for a required activity argument 'Value' was not supplied.

 

assign 중에

aa = " " 가 있었는데 얘가 문제가 되었다.

 

Error ERROR Validation Error Cannot access a disposed object.
Object name: ‘~~~~~~~~~~~’. Main.xaml

 

해결방안 : Manage Packages 에서 기존에 있는 패키지 업그레이드. 혹은 다운그레이드 했다가 다시 업그레이드. 아니면 지웠다가 다시 설치

 

 

Source: Read Write Datatable (Read Range)

Message: The workbook does not exist Exception

Type: System.ArgumentException

RemoteException wrapping System.ArgumentException: The workbook does not exist at UiPath.Excel.WorkbookFile..ctor(String workbookPath, String password, Boolean createNew) at UiPath.Excel.Activities.WorkbookActivity`1.ConstructWorkbook(String path, String password, Boolean createNew) at UiPath.Excel.Activities.WorkbookActivity`1.BeginExecute(AsyncCodeActivityContext context, AsyncCallback callback, Object state) at System.Activities.AsyncCodeActivity.InternalExecute(ActivityInstance instance, ActivityExecutor executor, BookmarkManager bookmarkManager) at System.Activities.ActivityInstance.Execute(ActivityExecutor executor, BookmarkManager bookmarkManager) at System.Activities.Runtime.ActivityExecutor.ExecuteActivityWorkItem.ExecuteBody(ActivityExecutor executor, BookmarkManager bookmarkManager, Location resultLocation)

 

따이쒸.....

data\output\test.xlsx => 가 문제였던 것...

full Path 를 써줘야한다... => C:\1RPA\testProcess\data\output\test.xlsx

 

RemoteException wrapping UiPath Excel ExcelException: Failed opening the Excel file <엑셀파일경로> Possible reasons: the file is corrupt, the file is already used by another process or you don't have permissions to open the file.   ---> RemoteException wrapping System.Runtime.InteropServices.COMException: 'C:\Users\user\.nuget\packages\exceldatalibrary\1.1.1\lib\net45\data\Output\63811100' 파일을 사용할 수 없습니다. 원인은 다음과 같습니다.
• 해당 파일 이름이나 경로가 없습니다.
• 다른 프로그램에서 파일을 사용하고 있습니다.
• 저장하려고 하는 통합 문서 이름이 현재 열려 있는 통합 문서의 이름과 같습니다.

 

*** 체크리스트

백그라운드로 Excel 프로그램이 실행되어져있는지?

파일명이나 경로에 문제가 있는건 아닌지?

작업하는 엑셀 파일을 실행중인건 아닌지?

* 참고 URL : https://forum.uipath.com/t/featureblog-18-3-library-reusable-components/62746

 

#FeatureBlog - 18.3 - Library (Reusable components)

First, big thanks to @MirceaGrigore who has helped put this in place. Today’s topic: Library (Reusable components). What is it? A Library is a collection of reusable components. A reusable component is a workflow that can be compiled and packaged as an a

forum.uipath.com

 

 

어느정도 UiPath를 하다가보면 필요한 액티비티가 없을때, 패키지를 찾아보곤한다.

그럴때마다 들어가는게 Manage Packages, 패키지 관리 !

 

Manage Packages를 들어가면 제일 먼저 나오는 화면

 

기존의 액티비티를 잘 활용하는 것이 좋고, 정말 필요한 경우가 아니라면 무조건 패키지를 받아 쓰는건 권하지 않는다.

나는 UiPath 정규 패키지 중에서 필요한 것들만 골라서 쓰는 편인데,

가끔 플로우 짜면서 애먹다가 패키지 한 번 다운받아서 쓸 때 속이 편안해진적이 많다 ㅋㅋㅋ

그러면서 나도 이런 패키지를 만들어서 써보고 싶다는 생각도 들었는데,

포럼을 돌아다녀보니 Custom Activity는 Visual Studio를 사용해서 코딩하는게 대부분인 것 같아서 얼른 포기했다.

 

그런데 필드에 나오면서 플로우의 재사용이 안되는게 이렇게 짜증나고 복잡하게 만드는 일인 줄 몰랐고...ㅠ

그러다가 Library를 접하게 되었다.

 

Library를 이용해 간단한 나만의 액티비티를 만들 수 있었다

 

UiPath Studio를 열었을때의 초기화면, Library를 만나볼 수 있다.

 

처음에 Studio를 열면 이런 초기화면이 나오는데, Library 프로젝트를 빌드한다.

 

내가 이제부터 만들 액티비티가 수행할 시나리오는 다음과 같다.

  1. 엑셀 프로그램을 사용하지 않고, 백그라운드로 실행하는 것으로 가정한다.
  2. 엑셀 파일을 켠다
  3. 엑셀 파일에 쓰여진 데이터를 읽는다.
  4. 쓰여진 데이터 다음 줄 부터 새로운 데이터를 다시 쓴다.

그렇게 다음과 같은 플로우를 짰다.

 

NewActivity.xaml
0.01MB

 

이제 이 플로우를 액티비티로 만들어야하는데, 이제 만든 플로우를 Publish 하면 된다.

UiPath Studio 리본에 보면 Publish가 있다.

 

알맞은 액티비티 이름을 설정해준 뒤, 저장할 URL을 설정해준다.

 

 

여기서 Publish를 하면 라이브러리는 누겟 파일로 다음과 같이 만들어진다.

 

 

 

자, 그럼 이제 다음으로 내가 만든 Library를 불러와 액티비티를 사용해보자!

 

 

먼저 라이브러리를 불러올 아무개 Process를 하나 만들어줬다.

다음으로, Manage Packages에 들어가 Settings에 들어가서

방금전 라이브러리 누겟을 저장한 경로 Source에, 패키지 이름을 Name에 지정해 추가해준다.

 

나는 이런 식으로 추가해줬는데,

자세히보면 좌측 메뉴 박스에 내가 추가해준 패키지 소스가 들어있는 것을 확인할 수 있다. (빨간색 네모 박스)

들어가보면 내가 만들어준 라이브러리가 올려져있다.

다른 패키지를 사용하는 방법과 동일하게 Save 하면, 다음과 같은 액티비티가 생성되어있는 것을 확인할 수 있다.

 

 

Properties를 보면 Input의 속성들을 제시해준 것을 볼 수 있다.

이는 처음 플로우를 짤 때, 그 변수 값들을 인수로 사용해줬기 때문이다.

 

이렇게 하면 라이브러리를 이용해 패키징하여 간단한 커스텀 액티비티를 만들 수 있다 ㅎ

 

 

 

UiPath Robot 이름이 계속 바뀌더니 결국은 Assistant가 되었구나..........

오케스트레이터에 업데이트가 있었더니 연동하는것도 여러모로 어려움이 있었다.

하지만 제대로 도움받을 수 있는 곳은 별로 없었다....ㅠ 그래서 적는 포스팅....

 

 

0. 일단 Assistant 를 켜줍니다.

uipath studio를 설치하면 동시에 자동적으로 같이 uipath assistant가 설치됩니다.

우측 사진이 Assistant 화면 입니다

오케스트레이터 셋팅을 해야하는데. 상단의 톱니바퀴 모양을 클릭하면 Oechestrator Settings가 있습니다.

들어가면 다음과 같은 화면을 볼 수 있습니다.

Oechestrator Settings 화면

 

1. Orchestrator와 내 컴퓨터 연동하기

1) 서비스 관리 페이지 접속하기

https://www.uipath.com/ 에서 상단의 Try UiPath Free 를 누르고 로그인(및 회원가입)을 하면 볼 수 있는 화면이다.

초록색 부분 = 오케스트레이터 서비스명

서비스명을 클릭하면 다음과 같은 오케스트레이터 메인 페이지에 들어갈 수 있다.

오케스트레이터 메인 화면. (개인정보는 지웠습니다)

 

2) 머신 생성하기

머신이란 사용할 물리적 PC를 말합니다.

좌측에 스크롤을 맨 아래로 내리면 MANAGEMETN에 Machine이 있다.
오케스트레이터의 Machine 화면. 이곳에서 Machine을 관리할 수 있다.

파란색 +를 눌러 머신을 추가합니다.

그럼 다음과 같은 생성창을 볼 수 있습니다. 기입할 내용은 다음과 같습니다.

Machine 이름은 자유입니다. (Assistant에 있는 Machine Name을 가져다 쓰는게 초심자의 심신건강에 좋습니다.)

 

다음으로, 생성한 Machine의 Key를 가져와 UiPath Assistant에 셋팅해야합니다.

머신키를 복사해서 (초록색 버튼) Assistant의 Machine Key 에 붙여넣습니다.

자, 그럼 Orchestrator URL만 채우면 되겠네요. 간단합니다.

현재 있는 오케스트레이터 페이지의 주소창을 봅시다.

만약 나의 주소창에

https://cloud.uipath.com/h~~~/서비스이름/machines/~~~~~~~~~~~~~~~~

이라면 서비스명/ 까지 복사해서 붙여넣어주면 됩니다.

https://cloud.uipath.com/h~~~/서비스이름/   ← 이런식으로.

 

Connect 를 눌러주면 다음과 같은 상태를 볼 수 있습니다.

 

이 상태에 대해서 자세한 설명이 없어서 힘들었는데 ㅠㅠ

알고보니, 이런 의미였습니다.

Orchestrator에 등록된 Machine과 실제 Machine이 연결되었지만,

로봇은 연결되지 않았다.

 

그럼 다음으로 로봇을 생성해서 연결해보겠습니다.

로봇을 연결하기 위해서는 정확한 머신의 userName을 입력해서 만들어놓기만 하면 됩니다.

 

 

2. 내 컴퓨터에 오케스트레이터에 등록된 Robot 연동하기

1) 환경(Environment) 생성하기

2) 로봇 생성하기

3) 환경에 로봇을 업데이트하기

 

 

 

 

 

생각해보니까 sequenc랑 flow-chart 는 써볼만큼 써본 것 같은데 state machine은 REFramework에서 기본적으로 제공해주는 것들만 사용해봤으니 활용해본 기억이 없었다.. 그래서 공부해보려고함 ㅎㅎ

 

UiPath Academy 에서는 Project Organization 이라는 코스에서 공부할 수 있었다.

 

일단, 먼저 세개의 워크플로우 타입을 비교하려한다~!!

Project Organization
Sequence 너무 많은 조건(예: UI 자동화) 없이 명확한 단계 승계가 있는 경우 일반적으로 시퀀스는 워크플로우를 중첩하는 데 사용되며 높은 수준의 논리는 Flowcharts 또는 State Machine을 통해 처리된다.

이점은 무엇인가?

이해하기 쉽고 이해하기 쉬우며, 위에서 아래로 접근한다.
인터넷에서 항목을 검색하는 것과 같은 간단한 논리에 적합하다.

단점은 무엇인가?
동일한 시퀀스에 너무 많은 조건을 내포하면 프로세스를 읽기 어렵다.
연속 흐름에는 적합하지 않다.
https://docs.uipath.com/studio/docs/sequences
Flow-Chart 여러 조건을 가진 복잡한 흐름이 있는 경우 흐름도는 최소한 시각적으로 이해하고 따르기가 훨씬 쉽다. 연속적으로 실행되거나 몇 가지 조건에서만 종료되는 흐름이 필요한 경우

이점은 무엇인가?

소프트웨어 컴퓨팅의 논리 다이어그램과 유사하므로 이해하기 쉽다.
연속적인 워크플로우에 사용할 수 있다.

단점은 무엇인가?
플로우차트는 프로젝트의 개별 부분(다른 워크플로우 내부에 중첩된)이 아닌 일반 워크플로우(내부 중첩된 시퀀스 포함)로만 사용할 수 있다.
https://docs.uipath.com/studio/docs/flowcharts
State Machine State Machine이 무엇인지 이해합시다. 그것은 한정된 수의 사전 정의된 상태와 이들 상태 사이의 전환으로 구성된 추상적인 기계다. 어느 지점에서나 검증된 외부 입력과 조건에 기초해, 하나의 상태에만 있을 수 있다.
State Machine은 통과하기 위해 제한된 수의 명확하고 안정적인 상태로 사용될 수 있다. 당신의 일상 생활에서 나온 몇몇 예로는 자동판매기, 엘리베이터 또는 신호등이 있다.

이점은 무엇인가?
더욱 복잡한 지속적인 워크플로우에 사용할 수 있음
상태 간의 전환은 쉽게 정의하고 유연성을 제공할 수 있다.
더 복잡하고 단순한 루프 및 If 문으로 포착할 수 없는 프로세스를 수용할 수 있다.
가능한 모든 사례/전송을 State Machine로 다루는 것이 더 쉽다.

단점은 무엇인가?
프로세스를 논리적 "상태"로 분할, 전환 파악 등의 복잡성으로 인한 개발 시간 연장.
참고: State Machine은 과용해서는 안 된다 - 프로젝트의 뼈대만 정의해야 한다.

사실, 대규모 엔터프라이즈 자동화를 구축하기 위해 특별히 설계된 State Machine을 기반으로 하는 템플릿이 있다. 가장 일반적으로 사용되는 것은 Robotic Enterprise Framework이다. 이 과정에서는 나중에 깊이 있게 다룰 두 가지 개별적인 수업이 있다.
https://docs.uipath.com/studio/docs/state-machines

 

** State Machine 관련 Activity

State Machine 과 관련된 액티비티들

간단히 설명하자면, Sequence 안에 여러개의 Squence로 구성하는 것과 같은 맥락으로

State Machine 안에는 다수의 State로 구성한다.

단, State는 각 절차의 상태 결과로 인지하기 때문에 State Machine으로 프로젝트를 만들시 전체적인 뼈대만 정의할 뿐, 과용해서는 안된다. 각 State 내부는 여러개의 Sequence나 Flow-chart로 구성할 수 있다.

 

이런 방식으로 사용할 수 있다 !

 

state machine 이기 때문에 각 절차의 상태 값에 따라 좌우되는 것인데

시작할때는 Start Node로, 끝날때는 Final State로 맺어야한다!

state 액티비티를 사용하면 다음과 같은 화면을 자주 볼 수 있다.

- Entry : 수행할 프로세스

- Exit : 다음 프로세스로 넘어가기전 끝낼때 수행할 프로세스

- Transition(s) : state에 따른 다음 state 이동을 표현.

 

그리고 다음 그림의 T3, T1 이 state가 된다. 즉, 상태값이 된다.

그래서 각각의 상태값인 T3, T1을 눌러주면 그 상태에 세부적인 프로세스 수정을 할 수 있다.

 

하이라이팅 된 곳을 누르면
이런 식으로 각 상태에 대한 세부적인 구성을 추가할 수 있다.

- Trigger : 트리거(trigger)는 한 상태에서 다른 상태로의 전환을 시작하는 이벤트다.트리거는 전환이 시작되기 위해 발생해야 하는 이벤트다.입력 작업이 완료되면 조건(전환이 완료되기 위해 트리거가 발생한 후 참으로 평가해야 하는 제약 조건)이 필요하다.일반적으로 트리거는 어떤 유형의 이벤트가 발생할 때까지 기다리는 활동이다.트리거 값은 null일 수 있다. 트리거가 null인 경우, 상태의 입력 작업이 완료되는 즉시 전환이 평가된다. (forum.uipath.com/t/state-machines-exit-workflow-and-trigger/99703/9 일부 발췌)

- Action : condition 성립시 수행 할 활동들

 

state machine은 이런식으로 잘 사용해보면 좋을 것 같다.ㅎ

 

 

+ Recent posts