생각해보니까 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은 이런식으로 잘 사용해보면 좋을 것 같다.ㅎ

 

 

 

이제까지 outlook만 사용해봐서 pop3 메일 관련한 액티빝티를 써보지 못했다.

근데 pop3는 outlook처럼 어떤 특정한 프로그램이 없어도

포트번호, 서버, 이메일, 패스워드만 있으면 메일 기능을 사용할 수 있었다.

 

 

POP3 액티비티

 

POP3 액티비티 속성

 

이런 방식으로 사용할 수 있었고,

Top 속성을 이용해서 상위 몇개부터 가져올 수 있는지도 설정할 수 있었다.

Options 속성에 나와있는 것들대로 속성을 주면 그만큼 필터링 된 정보를 얻을 수 있다.

 

이 액티비티는 내가 받은 메일 등을 가져올 수 있는 액티비티 이기 때문에, 보내는 것은 할 수 없다.

받은 메일은 List 형식으로 저장이 되는데, Type Argument는 <MailMessage> 이다.

 

연습했던 파일을 첨부하겠다.

 

pop3_practice.xaml
0.01MB

 

 

※ 위 글을 uipath forum 에서 스크랩 해온 게시물 입니다. 저작권은 제작자에게 있습니다. ※ 

 

HttpAgilityPack을 이용한 웹 크롤링 샘플입니다.
UiPath의 기본 액티비티로 작업하는 것보다는 복잡하지만 기본만 알면 비교적 간단하게 효과적으로 데이터를 가져 올 수 있습니다. 참고하세요.
대상 사이트 : 하나은행 환율/외화예금 금리
사용 액티비티 : 웹 패키지 HttpRequest, HtmlAgilityPack
HtmlAgilityPack 사용법

  1. 패키지 설치후 NameSpace에 HtmlAgilityPack 추가
  2. HtmlDocument 변수 생성
  3. HttpRequest를 이용하여 Html 소스 읽어오기
  4. Method Invoke를 이용하여 읽어온 Html 소스를 Document에 Load(LoadHtml 메소드)
  5. HtmlDocument의 DocumentNode의 SelectNodes 함수 이용 원하는 노드 읽어오기(XPath 이용)
  6. 읽어온 Nodes에서 원하는 Node를 추출하여 DataTable에 저장

아래 링크의 파일을 다운받아 테스트 해보세요.

 

https://forum.uipath.com/t/agilitypack/219567/2

 

AgilityPack을 이용한 웹 크롤링

와 이렇게 좋은 정보를~ 감사합니다^^

forum.uipath.com

 

'프로그래밍 > RPA' 카테고리의 다른 글

Project Organization : State Machine  (0) 2020.05.20
Mail Activity : POP3(Get POP3 Mail Messages)  (0) 2020.05.19
IS 와 Equals의 차이점  (2) 2020.04.16
Orchestrator / Queue / SLA  (0) 2020.04.08
Error and Exception handling  (0) 2020.04.08

나는 항상 Equals만 써서 별 생각 없었는데

Mpaper(https://mpaper-blog.tistory.com/)가 IS가 계속 안먹는다고 포럼에 글을 올려보자고 했다.

 

https://forum.uipath.com/t/what-is-the-difference-between-the-two-is-and-equlas/212529

 

What is the difference between the two, "Is" and "Equlas"?

Hi guys! 😄 I have a questions… UiPath has two method “is” and “equals”. But, I don’t know the difference between the two… Example for, var1 = “apple” and there are two codes. condition1 -> var1.equals(“apple”) => Can be run condition2 -> var1 is “apple” =>

forum.uipath.com

 

정리해보자면,

Is

Is 연산자는 두 개체 참조가 동일한 개체를 참조하는지 여부를 확인한다.

그러나 값 비교를 수행하지는 않는다. 비교하는 두 값이 정확히 동일한 개체 인스턴스를 참조하는 경우 True, 그렇지 않으면 False를 수행한다.

Equals

답변해준건 String.Equals 라서 String의 값을 비교할 수 있다고 하는데,

어떤 데이터 타입일지라도 그 값을 가지고서 같은지 비교할 수 있는 것 같다.

즉, 타입과 상관없이 값의 비교를 할 수 있다는 것

 

 

Is 는 참조하는 객체의 메모리 개념이었고

Equals는 값을 비교하는 개념이었다

(결국 is는 참조 객체를 가르키는 주소 값이기 때문에 값 비교가 되지 않는다..)

 


1. Equals에 관련된 .Net 자료

https://docs.microsoft.com/ko-kr/dotnet/api/system.object.equals?view=netframework-4.8

 

Object.Equals 메서드 (System)

 

두 개체 인스턴스가 같은지 확인합니다.Determines whether two object instances are equal.

docs.microsoft.com

2. Is와 관련된 .Net 자료

https://docs.microsoft.com/ko-kr/dotnet/visual-basic/language-reference/operators/is-operator

 

Is 연산자 - Visual Basic

Is 연산자(Visual Basic)Is Operator (Visual Basic) 이 문서의 내용 --> 두 개체 참조 변수를 비교 합니다.Compares two object reference variables. 구문Syntax result = object1 Is object2 요소Parts result 필수입니다.Required. Boolean 값입니다.Any Boolean value. object1 필수입니다.Required. 모든 Object 이름

docs.microsoft.com

 

 

- tenant : Folder의 하위 개념. 큰 조직에서 프로젝트를 사용하게 되면 각 부서나 조직에서 job, process, log, machine, robot등을 속하게 해서 사용하는 것. 자신의 tenant에서만 볼 수 있는 것. 보안적인 측면에서 다른 tenant를 볼 수 없도록 만든 것. 부서간의 오케스트레이터를 효과적으로 관리하기 위한 것.

- SLA : 서비스를 제공하는데 있어서 어느정도 선안에서는 들어와야한다. 이 기준을 두고서 서비스를 제공할 수 있는 수준이 됨. 그래서 고객과 SLA 의 퀄리티 수준에서 합의한다. 하는 그 선을 SLA 라고하는 것. 정해진 시간 안에는 돌아야한다던지, 아무리 늦어도 어떤 시간 안에는 해야한다고 기준을 두고 정의하는 것을 SLA 라고 함.
- UIPath에서 항목에 대한 SLA를 제공하는 것. SLA를 위반하게 되면 오케스트레이터의 Alert에서 확인해 볼 수 있음.

- 오케스트레이터의 큐에서 Detail View를 하면 SLA를 적용할 수 있음.

 

 

 

 

Common Exceptions

Below you can find the most common exceptions that you can encounter in projects developed with UiPath. As a general note, all exceptions are types derived from System.Exception, so using this generic type in a Try Catch, for example, will catch all types of errors.

  • NullReferenceException - This error usually occurs when using a variable with no set value (not initialized).
  • IndexOutOfRangeException - Occurs when the index of an object is out of the limits of the collection. 
  • ArgumentException - Is thrown when a method is invoked and at least one of the passed arguments does not meet the parameter specification of the called method.
  • SelectorNotFoundException - Is thrown when the robot is unable to find the designated selector for an activity in the target app within the TimeOut period.
  • ImageOperationException - Occurs when an image is not found within the TimeOut period.
  • TextNotFoundException - Occurs when the indicated text is not found within the TimeOut period.
  • ApplicationException - describes an error rooted in a technical issue, such as an application that is not responding.

Business Rule Exceptions are separate from all the System Exceptions listed above. These describe errors rooted in the fact that certain data which the automation project depends on is incomplete, missing, outside of set boundaries (like trying to extract more from the ATM than the daily limit) or does not pass other data validation criteria (like an invoice amount containing letters).

The Business Rule Exceptions will not be thrown by using the generic System.Exception in a Try Catch activity. The mechanism of handling this exception has to be separately defined by the developer (based on the rules set by the process owner), or it can be reduced to stopping the execution of the process, by using a simple Throw activity, for example.

 

 

Try Catch Finally

 

 

ContinueOnError Property

 

Continue on Error is a property that specifies if the execution should continue even when the activity throws an error.

Keep in mind that, if the ContinueOnError is set to True on an activity that has a scope (such as Attach Window or Attach Browser), then all the errors that occur in other activities inside that scope are also ignored. 

Having this property set to true is not recommended in all situations, but there are some situations in which it makes sense, such as:

  • while using data scraping - so the activity doesn't throw an error on the last page (when the selector of the 'Next' button is no longer found);
  • when we are not interested in capturing the error, but simply in the execution of the activity.

 

 

 

StudioX에서는 file 을 scope로 읽어올 수 있어서 너무 편했었던거구나 하는 생각이 들었다

 

 

 

Assign values as getFileList = New List(of String)        리스트 초기화

Assign values as getFileList = Directory.GetFiles("경로")      불러올 폴더경로

 

하나의 확장자만 읽어와야하면 다음과 같이 정의하면 된다.

Assign values as getFileList = Directory.GetFiles("경로", "확장자(.docx 등...)")

 

 

PrintFiles.xaml
0.01MB

 

+ Recent posts