LowCode (Mendix) Advanced/Master Modeling Microflows

Debugger

Caryou 2024. 10. 24. 11:16

학습 목표

이 모듈을 마치면 다음을 수행할 수 있습니다.

  • 마이크로플로우를 디버깅해야 할 시기를 결정하세요
  • 디버거 활성화 및 제어
  • 중단점 및 값 조건 설정
  • 마이크로흐름의 변수를 조사해보세요

디버거

Mendix Studio Pro에는 빌드하는 앱에 기술적 오류가 있는지 확인하는 내장된 일관성 검사기가 있습니다. 이러한 기술적 오류는 Errors 창에서 볼 수 있으며 앱을 실행하기 전에 해결해야 합니다.

 

이 기능은 실행 중 기술적 오류의 양을 극적으로 줄여주지만 Modeler는 앱에 기능적 오류가 있는지 자동으로 확인할 수 없습니다. 앱이 예상대로 작동하는지 확인하기 위해 Mendix 플랫폼은 디버거 도구를 제공합니다.

 

디버깅 기능은 Studio Pro에 완벽하게 내장되어 있어 개발 중에 시각적 디버깅을 할 수 있습니다. 디버거를 사용하면 앱 실행을 일시 중지하고 변수의 상태와 마이크로플로가 어떻게 작용하는지 검사할 수 있습니다. 또한 디버거를 사용하면 Mendix Cloud 또는 다른 원격 서버에서 실행되는 애플리케이션을 원격으로 디버깅할 수 있습니다.

[ 그림 1 ]

디버거 사용

마이크로플로를 수동으로 조사하고 스택 추적을 읽어서 런타임 오류의 근본 원인을 찾을 수 없는 경우 디버거를 사용해야 합니다 . 마이크로플로의 결과가 예상과 다를 때도 사용해야 합니다.

Most Common Scenarios

Application Runtime Errors

[ 그림 2 ]

예를 들어, 웹 서비스를 호출할 때 웹 서비스 출력을 처리하는 동안 오류가 발생합니다 . 어떤 경우에는 오류의 원인을 찾기 어려울 수 있습니다. 출력(1)의 데이터 오류로 인한 것인가요? 따라서 웹 서비스에서 수정을 적용해야 합니까? 아니면 출력(2) 처리 중에 발생한 오류인가요?

 

이러한 시나리오에서는 반환된 데이터 집합을 조사하고, 특히 마이크로플로를 중단하는 요소를 조사하여 동작을 추적하는 것이 도움이 됩니다. 따라서 마이크로플로 가 해당 하위 마이크로플로를 실행하기 전에 일시 중지되도록 Call Web Service 활동에 중단점을 추가해야 합니다. 그런 다음 각 단계의 결과를 조사하는 동안 나머지 활동을 단계별로 실행할 수 있습니다.

 

예상치 못한 동작

마이크로플로우의 결과가 예상과 다를 경우, 그 결과의 근본 원인을 찾는 것이 어려울 수 있습니다.

 

예를 들어, 아래 마이크로플로우의 예상 결과는 OrderDate + 3일 의 배송 날짜입니다 . 그러나 반환된 배송 날짜는 OrderDate + 2일 입니다. 이러한 경우 이것이 입력(1)의 결과인 데이터 오류인지, 4PM 전 주문 결정(2) 의 결정 오류인지 , 두 번째 결정 중 하나(3)의 오류인지 또는 오류가 변수 변경 활동 중 하나(4)로 인해 발생했는지 판단하기 어려울 수 있습니다.

[ 그림 3 ]

마이크로플로우를 디버깅하면 마이크로플로우 시작 시 데이터, 결정 결과, 그리고 마이크로플로우를 따라가는 경로를 조사할 수 있습니다.
발생할 수 있는 또 다른 관련 시나리오는 반환된 데이터 세트가 예상 데이터 세트와 일치하지 않는 경우입니다. 이러한 경우 이것이 마이크로플로우의 제약 조건 문제, 사용된 변수 또는 추가 제약 조건을 추가하는 보안 규칙으로 인해 발생하는지 확인해야 합니다.
디버깅을 활성화하는 방법과 이를 사용하는 방법에 대한 자세한 내용은 마이크로플로우 디버깅 방법 및 런타임 오류의 근본 원인 찾기 방법 참조하세요 .

 

조건부 디버거

때로는 특정 조건이 충족될 때만 마이크로플로가 일시 중지되도록 중단점을 구성해야 합니다. 이는 마이크로플로 표현식을 사용하여 구성된 중단점 조건으로 달성할 수 있습니다.

 

객체 값 조건

일괄 프로세스를 디버깅하고 특정 값에서만 중단하려는 경우 중단점 조건을 설정하는 것이 매우 유용할 수 있습니다. 이 조건을 사용하면 단계별로 실행해야 하는 반복 횟수를 줄일 수 있습니다.

 

사용자 값 조건

$CurrentUser 변수 에 따라 조건을 설정할 수도 있습니다 . 이 조건을 사용하면 마이크로플로가 마이크로플로를 사용할 때만 일시 중지됩니다. 프로덕션에서 실행 중인 애플리케이션을 디버깅하는 경우 이 중단점 조건을 사용하는 것이 좋습니다. 이렇게 하면 자신 외의 다른 사용자에게 애플리케이션이 일시 중지되는 것을 방지할 수 있습니다.

[ 그림 4 ]

 

조건부 디버깅을 활성화하는 방법에 대한 자세한 내용은 런타임 오류의 근본 원인 찾기 의 "중단점 조건" 섹션을 참조하세요.

 

원격 디버깅

Mendix 플랫폼의 가장 강력한 자산 중 하나는 원격으로 디버깅할 수 있는 기능입니다. Modeler의 디버깅 기능을 Mendix Cloud 또는 다른 원격 서버에서 실행되는 애플리케이션 인스턴스에 연결할 수 있습니다.

 

원격 서버를 디버깅해야 하는 시나리오는 많습니다. 예를 들어, 앱을 로컬에서 실행하는 경우 사용된 통합을 사용할 수 없을 수 있습니다. 또한 테스트/수락 환경에서 테스트할 때 통합은 프로덕션 환경에서와 다른 응답을 갖는 경우가 많습니다. 마지막으로 로컬에서 문제를 재현할 수 없는 경우가 있습니다.

 

원격 디버깅을 사용하면 올바른 컨텍스트에서 필요한 데이터 세트로 마이크로플로를 디버깅하여 솔루션을 찾을 수 있습니다. 서버에서 제공하는 자격 증명을 사용하여 Studio Pro Debugger 창 내에서 디버거를 원격 서버에 연결할 수 있습니다.

 

원격 디버깅을 활성화하는 방법과 이를 사용하는 방법에 대한 자세한 내용은 원격으로 마이크로플로 디버그 참조하세요 .

 

디버거 동작 조사

SUB_SetOrderDeliveryDate 마이크로플로를 열고 중단점을 추가합니다.

[ 그림 5 ]

Order_Overview 페이지 의 주문 세부 정보에 DebugDeliveryDate 스니펫 을 추가합니다.

[ 그림 6 ]

데이터를 선택 하고 버튼 클릭하세요.

 

마이크로플로가 일시 정지되면 모델러로 돌아가서 디버거 창 에서 Step into 를 클릭합니다. 이제 변수 창 을 살펴보세요 . DeliveryDate 변수 의 값이 OrderDate 와 같은 날짜인 것을 알 수 있습니다 . DeliveryDate의 초기 값이 OrderDate와 같기 때문입니다.

[ 그림 7 ]

 

 

종료 이벤트에 도달할 때까지 Step into를 클릭합니다 . 종료 이벤트 자체에 Step into하지 않도록 주의하세요! DeliveryDate 변수의 값이 이전 활동에서 변경된 사항으로 인해 OrderDate 보다 하루 후인 것을 볼 수 있습니다.

[ 그림 8 ]

Change Variable  활동 의 값을 $Order/Date로 변경합니다.

 

다시 버튼을 눌러 디버그 실행

 

End 이벤트에 도달할 때까지 Step into를 클릭합니다 . Change Variable 활동이 OrderDate를 복사했기 때문에 DeliveryDate 변수의 값이 여전히 OrderDate 와 동일함 을 알 수 있습니다 .

 

중단점 성공적으로 배치하기

마이크로플로우에서 중단점의 이상적인 위치는 어디인가요? 물론, 이는 컨텍스트에 따라 달라집니다. 그런데, 몇 가지 지침은 다음과 같습니다.

  • 디버깅하려는 기능이 위치한 마이크로플로에 대해 가장 잘 추측해 보세요. 이를 정확히 파악하려면 모델과 애플리케이션 콘솔에 기록된 로깅 또는 예외에 대한 지식을 활용하세요.
  • 격리하려는 부정적인 행동을 유발하는 활동에 대한 이론이 있는 경우 이 마이크로흐름 활동에 중단점을 배치합니다(이 활동 바로 전에 실행이 중단됩니다).
  • 범인인 마이크로플로우 활동에 대해 전혀 모른다면 마이크로플로우의 시작 부분에 중단점을 두세요. 중단점에 도달한 후 변수의 상태를 검사하고 논리를 더 "단계적으로" 진행하여 문제를 격리할 수 있습니다.
  • 루프에서 부정적인 동작이 트리거된다고 생각되면 해당 루프에 중단점을 배치하는 데 주의하세요. 이렇게 하는 경우 수동으로 건너뛰어야 하는 루프 반복 횟수를 제한하는 중단점 조건을 적용하는 것이 좋습니다.
  • 중단 조건을 추가하지 않는 한 루프에 중단점을 추가하지 마십시오. 그렇지 않으면 마이크로플로우의 각 반복이 해당 중단을 다시 시작합니다.
  • 로컬이나 테스트/수락 환경에서 문제를 재현할 수 없는 경우가 아니면 프로덕션에서 디버깅하지 마십시오. 프로덕션 데이터에 무결성 문제가 있거나 통합이 관련된 경우 필요할 수 있습니다. 이러한 경우 현재 사용자를 사용하여 중단 조건을 설정하여 세션에서만 중단되도록 합니다.
  • 문제를 해결한 후 중단점을 제거하세요.

출처 : https://academy.mendix.com/link/paths/6/Master-Modeling-Microflows

'LowCode (Mendix) Advanced > Master Modeling Microflows' 카테고리의 다른 글

Sub-Microflows  (1) 2024.10.24
Work with ListsLearning Objectives  (2) 2024.10.23
Microflow Expressions  (1) 2024.10.23