Gemini에게 물어봤습니다.
wooaoe : uipath 모던 액티비티랑 classic 액티비티랑 섞어서 써도 수행에는 문제 없지?
Gemini :
UiPath에서 Modern 액티비티와 Classic 액티비티를 섞어서 사용하는 것이 기술적으로 불가능하지는 않습니다.
하지만 다음과 같은 주의사항이 있으며, 특히 특정 영역에서는 혼합 사용을 권장하지 않습니다.
- 호환성 문제 (가장 중요 - 특히 Excel 및 UI 자동화):
- Modern 액티비티와 Classic 액티비티는 내부적으로 객체를 다루는 방식이나 애플리케이션과의 상호작용 방식이 다릅니다.
- Excel 자동화: Classic Excel 액티비티는 주로 Excel Application Scope를 사용하고 Range 등을 문자열로 다룹니다. Modern Excel 액티비티는 Use Excel File 스코프를 사용하며 IReadRangeRef 같은 특정 객체 타입을 사용합니다.
이 두 스코프를 한 워크플로우의 같은 부분에서 동시에 사용하거나, 한 스코프에서 얻은 객체를 다른 스코프의 액티비티에 전달하려고 하면 타입 불일치 오류(Option Strict On disallows... 메시지 등)가 발생하거나 예상치 못한 동작을 할 수 있습니다. - UI 자동화: Modern UI 자동화 액티비티는 Use Application/Browser 스코프 내에서 UiElement 객체를 반환하는 경우가 많습니다. Classic UI 자동화 액티비티는 다른 방식의 UI 요소를 참조할 수 있어 호환성 문제가 발생할 수 있습니다.
- 워크플로우의 가독성 및 유지보수:
- Modern 액티비티와 Classic 액티비티가 뒤섞여 있으면 워크플로우의 논리를 파악하기 어렵고, 나중에 수정하거나 디버깅할 때 혼란을 줄 수 있습니다.
- 새로운 기능 및 성능:
- Modern 액티비티는 일반적으로 최신 기술과 개선된 성능, 새로운 기능을 제공합니다.
가능하다면 Modern 액티비티를 사용하는 것이 장기적으로 유리합니다.
- Modern 액티비티는 일반적으로 최신 기술과 개선된 성능, 새로운 기능을 제공합니다.
결론적으로:
- 단순히 파일 복사(Classic Copy File) 후 Modern Excel 액티비티를 사용하는 등 서로 다른 작업 영역의 액티비티를 분리하여 사용하는 것은 대개 문제없습니다.
- 하지만 동일한 애플리케이션(특히 Excel)을 대상으로 하는 작업에서는 Modern 액티비티와 Classic 액티비티를 한 워크플로우 안에서 섞어 쓰는 것을 피하는 것이 좋습니다.
Excel 작업의 경우 Use Excel File 스코프 안에서 모든 Modern Excel 액티비티만 사용하거나,
필요하다면 Workbook 액티비티를 함께 사용하는 식으로 통일하는 것이 오류 발생 가능성을 크게 줄이고 유지보수를 용이하게 합니다.
따라서 수행 자체는 될 수도 있지만, 예상치 못한 오류나 유지보수의 어려움을 피하기 위해 웬만하면 하나의 스타일(Modern)로 통일하거나, 부득이하게 섞어야 한다면 기능별로 명확히 분리하여 사용하는 것을 강력히 권장합니다.
사용자께서 겪으신 IReadRangeRef 타입 문제는 대표적인 Modern/Classic Excel 액티비티 간의 호환성 충돌 사례입니다.
wooaoe : 내 워크플로우에서 excel 액티비티 자체는 modern 액티비티를 사용 했고, 시트명을 가져오기 위해 classic 액티비티인 Get workbook sheets 를 사용했어. 수행 했더니 문제는 없더라고. 이렇게 modern과 classic을 섞어쓰려면 workbook 액티비티로 사용하라는거지?
Gemini :
네, 맞습니다. 혼동이 있으셨을 수 있는데, 제가 말씀드린 "섞어 쓰지 않는 것이 좋다"는 것은 주로
Modern Excel 액티비티 (Use Excel File 스코프 내) 와 Classic Excel Application 액티비티 (Excel Application Scope 스코프 내) 를 한 작업 흐름에서 혼합하여 사용하는 경우를 의미했습니다.
이 둘은 Excel 애플리케이션 인스턴스를 다루는 방식과 사용하는 객체 타입이 달라서 충돌을 일으킬 가능성이 높기 때문입니다.
반면에 Workbook 액티비티 (예: Get Workbook Sheets, Read Range Workbook, Write Range Workbook)는 Classic 범주에 포함되어 표시될 수 있지만, Excel 애플리케이션 자체를 제어하거나 복잡한 COM 상호작용을 하는 대신 파일 시스템 수준에서 .xlsx 파일을 직접 읽고 쓰는 방식으로 동작합니다.
따라서, 사용자께서 하신 것처럼 Modern Excel 액티비티와 Workbook 액티비티를 함께 사용하는 것은 대부분의 경우 문제가 없으며 실제로도 많이 사용되는 패턴입니다.
- Modern Excel 액티비티 (Use Excel File, Read Range 등):
Excel 애플리케이션을 보다 안정적이고 유연하게 제어하며, IReadRangeRef와 같은 구조화된 참조를 사용합니다. - Workbook 액티비티 (Get Workbook Sheets, Read Range Workbook 등):
Excel 파일을 직접 읽고 쓰며, 시트 이름 목록(List<String>)이나 DataTable과 같은 표준 .NET 타입을 반환합니다.
시트 이름을 모를 때 Get Workbook Sheets (Workbook 액티비티)를 사용하여 시트 이름 목록을 가져오고,
그중 첫 번째 이름을 Modern Read Range 액티비티의 Excel.Sheet(시트이름) 구문에 사용하는 방식은 Modern Excel 워크플로우에서 시트 이름을 동적으로 처리하는 올바르고 권장되는 방법 중 하나입니다.
결론적으로, Modern Excel 액티비티와 Workbook 액티비티의 조합은 괜찮습니다.
충돌을 주의해야 할 주된 경우는 Modern Excel 액티비티와 Classic Excel Application 액티비티의 혼용입니다.
'📲 정보공유 > RPA' 카테고리의 다른 글
[RPA] UiPath String 타입을 SecureString 형식으로 치환하는 방법 (How to Convert String to SecureString) (0) | 2025.04.17 |
---|---|
[RPA] UiPath Dictionary 선언 및 사용 방법 (0) | 2021.01.27 |
[RPA] UiPath DataTable 생성 및 전체 Row 값 출력하는 방법 (0) | 2021.01.21 |
[RPA] String 타입의 날짜 형식을 DateTime 형식으로 변환하는 방법 (0) | 2021.01.20 |
[UiPath] Set focus와 Set to Clipboard 액티비티 사용하기 (0) | 2020.08.28 |