따라서 Mendix 마이크로플로우 엔진: 어떻게 작동하나요? | Siemens | Mendix

메인 컨텐츠로 가기

따라서 Mendix 마이크로플로우 엔진: 어떻게 작동하나요?

  • Mendix

  • 2013 년 10 월 7 일
  • 11분 읽기

이 블로그 게시물에서는 마이크로플로 엔진이 복잡한 논리를 실행하는 작업을 어떻게 수행하는지 설명하고자 합니다. Mendix 응용 프로그램. 먼저, 마이크로플로우가 무엇이고 어떻게 응용 프로그램을 모델링하는 데 도움이 되는지 간략하게 소개한 다음, 마이크로플로우의 기반 기술을 설명하겠습니다.

소개

. Mendix 플랫폼을 사용하여 애플리케이션 모델을 생성합니다. Mendix 비즈니스 모델러. 코드를 생성하지 않고 서버 런타임에서 애플리케이션을 시작할 때 이 모델을 해석합니다. 이 접근 방식은 다음과 같은 여러 가지 장점을 가지고 있습니다. 시각적으로 디버깅원격 환경에서도 가능합니다.

이 글을 이해하려면 마이크로플로우를 만들어 본 적이 있다면 많은 도움이 될 것입니다. 하지만 마이크로플로우가 무엇인지도 설명해 드리겠습니다. 이미 마이크로플로우 사용법을 알고 있다면 바로 다음 페이지로 넘어가셔도 됩니다. 행위.

우리 문서를 인용하자면, "마이크로플로를 사용하면 애플리케이션의 논리를 표현할 수 있습니다." "이것은 전통적으로 텍스트 프로그램 코드로 표현되는 것을 시각적으로 표현하는 방식입니다."즉, 마이크로플로를 사용하면 코드를 작성하지 않고도 애플리케이션의 프로세스에 복잡한 비즈니스 로직을 쉽게 추가할 수 있습니다. Mendix 이는 기업과 IT 간의 협업에 관한 것이며, 마이크로플로우는 비즈니스적 사고를 가진 사람들에게 애플리케이션이 어떻게 설계되었는지에 대한 통찰력을 제공하여 많은 도움이 됩니다.

마이크로플로우는 상위 수준의 활동을 정의합니다. 아주 기본적인 예는 다음과 같습니다.

 

스크린 샷

(자바) 코드로 표현하면 다음과 같습니다. 'else' 문은 엄밀히 말하면 필수적인 것은 아니지만, 마이크로플로우에서 표현되는 방식과 더 유사합니다.

코드 스크린샷

보다 구체적인 예는 다음과 같습니다.

스크린 샷

마이크로플로우 사용 방법에 대한 자세한 내용은 다음 링크를 참조하세요. https://world.mendix.com/display/refguide4/Microflows.

하지만 이 모든 게 어떻게 작동하는 걸까요? 자, 이제 본격적으로 시작해 볼까요?

행위

마이크로플로우는 다음과 같은 유형입니다. 동작. 서버의 동작은 실행될 수 있다는 기본 속성을 가진 인터페이스에 의해 정의됩니다. 이는 다음에서 수행됩니다. 액션 매니저; 이 클래스는 다양한 방식으로 액션을 실행하는 것을 담당합니다. 동기적으로 또는 비동기적으로 실행하거나 나중에 실행하도록 예약할 수 있으며 모든 스레딩 복잡성을 처리합니다.

서버에는 다양한 유형의 작업이 정의되어 있습니다. 일부는 만료된 세션을 제거하는 작업과 같이 내부적으로 사용하기 위한 것입니다. 다른 작업은 개발자가 사용하거나 구현할 수도 있습니다. Mendix. 예는 객체 삭제 or xpath 쿼리 작업. 자신의 Java 작업을 만든 적이 있다면 그것이 확장된다는 것을 알았을 것입니다. UserAction 그리고 그것은 방법을 구현해야 합니다 executeAction.

이제 마이크로플로가 실행 가능한 동작이라는 것을 알았지만, 이 클래스의 인스턴스를 어떻게 얻을 수 있을까요?

마이크로흐름 구조 구축

서버가 시작되면 먼저 애플리케이션 모델이 포함된 파일을 읽습니다. 이 모델은 마이크로플로우를 포함한 프로젝트의 모든 문서를 포함합니다. 서버는 이러한 마이크로플로우 문서의 구조를 구축하는데, 이 구조는 기존 모델 정보보다 실제 마이크로플로우를 인스턴스화하는 데 더 쉽고 빠릅니다. 몇 가지 예를 들자면, 이러한 구조를 구축한 후 다른 마이크로플로우를 호출하는 마이크로플로우는 모델의 식별자가 아닌 해당 마이크로플로우의 구조를 직접 가리키게 되며, 중첩 루프의 내용은 별도의 마이크로플로우 구조로 렌더링됩니다.

이것이 완료되면, 우리는 많은 마이크로흐름 구조를 가지게 됩니다. 이것은 모델러에서 그려진 마이크로흐름을 나타내며 시작 이벤트, 종료 이벤트, 중단 이벤트 또는 마지막으로 마이크로흐름 객체를 포함합니다. 활동.

스크린 샷

이러한 미세흐름 객체는 서로 다음과 같이 연결됩니다. 흐름: 마이크로플로우를 그릴 때 여러 블록을 연결하는 선입니다. 마이크로플로우 객체는 들어오는 흐름과 나가는 흐름을 가질 수 있습니다.

마이크로플로우에 익숙하고 지금 "이봐, 하지만 루프나 게이트웨이는 어떨까?"라고 생각한다면, 이것 역시 액티비티로 렌더링됩니다. 그 주제에서, 우리가 최근에 소개한 오류 이벤트는 특별한 유형의 종료 이벤트로 간주될 수 있습니다.

앞서 언급했듯이 중첩 루프의 내용도 마이크로플로우 구조로 렌더링됩니다. 루프의 각 반복마다 다른 마이크로플로우가 인스턴스화됩니다. 인스턴스화라고요? 살펴보죠…

마이크로플로우 인스턴스화 및 실행

특정 마이크로플로우가 실행되기 전에 우리가 이전에 구축한 구조를 사용하여 매우 빠르게 인스턴스화됩니다. 마이크로플로우의 특정 인스턴스의 경우 실제 값과 같은 것이 필요합니다. 입력 변수 그리고 문맥 마이크로플로우의 컨텍스트에는 이 마이크로플로우를 실행하는 사용자를 포함한 다양한 정보가 포함됩니다.

전체적인 상황은 다음과 같습니다.

스크린 샷

인스턴스가 생성되면 작업 관리자가 마이크로플로를 실행합니다. 결국 마이크로플로는 활동...

마이크로플로우 활동

내가 이전에 말했듯이, 일부(또는 실제로 대부분) 마이크로흐름 객체는 방과 후 액티비티마이크로플로우 활동의 몇 가지 예로는 객체 변경, 양식 열기 지침 제공, 템플릿을 기반으로 문서 생성 또는 XML 가져오기 등이 있습니다.

활동은 다음을 정의합니다. execute 메서드. 마이크로플로우 인스턴스가 이 메서드에 전달되므로 변수를 조회하는 등의 작업을 수행할 수 있습니다. 범위 이 미세흐름의.

다음은 마이크로플로우 활동의 예시입니다. XML 내보내기 기능을 보여줍니다. 코딩 경험이 있는 분이라면 이 활동이 무엇을 하는지 쉽게 이해하실 수 있을 겁니다.

코드 스크린샷

마이크로플로우의 범위에서 컨텍스트와 마이크로플로우 변수를 검색하고, XML 매핑의 식별자를 가져오고, 매개변수 객체를 가져온 다음 문자열을 내보내고 이 값을 반환할지, 아니면 파일에 쓸지 결정합니다. 실제로 작업을 수행하는 메서드의 내부 작동 방식은 다루지 않겠지만, 아이디어는 이해하실 겁니다.

이후 Mendix 5, 우리는 사용하고 있습니다 OSGi 모듈 시스템으로. 이제 다양한 구성 요소가 마이크로플로우 엔진에 활동을 연결할 수 있습니다. 예를 들어, '문서 생성기' 구성 요소는 '문서 생성' 활동을 삽입하고 '웹 UI' 구성 요소는 '메시지 표시'와 같은 활동을 삽입합니다.

게이트웨이 특별한 종류의 활동이며 모델링할 때 다른 방식으로 그려집니다. 게이트웨이는 마이크로흐름의 흐름이 분리되는 지점을 나타냅니다. 게이트웨이는 독점 분할 또는 상속 분할. 배타적 분할의 기본 옵션은 표현식을 구문 분석하는 것입니다. 이 표현식을 기반으로 마이크로플로는 나중에 분할할 수 있습니다. 가장 간단한 경우는 부울 표현식(참 또는 거짓)이지만 열거형 값에 따라 분할할 수도 있습니다. 그러면 어떻게 작동할까요? 글쎄요, 마이크로플로 표현식을 살펴봐야겠습니다.

마이크로플로우 표현

In Mendix 우리는 우리만의 표현 언어를 정의했습니다. 정의는 다음에서 찾을 수 있습니다. 위키 백과: 프로그래밍 언어에서 표현식은 명시적인 값, 상수, 변수, 연산자, 함수의 조합으로, 특정 프로그래밍 언어의 우선순위 및 연관 규칙에 따라 해석되며, 계산 후 다른 값을 생성(상태 환경에서 반환)합니다. 수학 표현식과 마찬가지로 이 과정을 평가라고 합니다. 값은 숫자, 문자열, 논리값 등 다양한 유형이 될 수 있습니다.

우리는 표현 언어의 문법을 다음과 같이 작성했습니다. 앤트러 또한 파서를 생성하는 데에도 사용하고 있습니다. 추상 구문 트리. 그들의 웹사이트를 인용하자면, "ANTLR(ANother Tool for Language Recognition)은 구조화된 텍스트나 바이너리 파일을 읽고, 처리하고, 실행하고, 번역하기 위한 강력한 파서 생성기입니다."

당사의 미세흐름 표현의 가능성에 대해 읽어보실 수 있습니다. 자세한 내용은 공식 문서에서 확인하세요..

표현식은 여러 위치에서 사용할 수 있습니다. 예를 들어, Change Object 활동 내의 속성에 값을 할당하거나, 변수를 반환할 때의 end 이벤트에서 또는 앞서 언급했듯이 배타적 분할 내에서 사용할 수 있습니다. 예를 들어 보겠습니다. 사용자가 영화의 다양한 속성을 검색할 수 있는 영화 데이터베이스가 있는 애플리케이션이 있다고 가정해 보겠습니다.

스크린 샷

이 게이트웨이의 표현식은 '영화/길이 > 180′입니다. '참' 값을 따르는 마이크로플로 경로에서 이 특정 영화는 긴 것으로 간주할 수 있습니다.

그러면 이런 표현은 어떻게 평가될까요?

게이트웨이 액션이 트리거되면 표현식을 평가하는 명령을 내립니다. 이는 매우 간단한 이진 표현식으로, 이진 표현식 클래스에 진입하여 사용된 연산자(이 경우 '보다 큼' 기호)를 찾습니다. 이 연산자를 찾으면 산술 또는 비교 표현식 메서드로 진입합니다. 표현식의 좌변과 우변의 타입을 확인하고 값이 null이 아닌지 확인한 후, 관련 연산자의 코드를 입력하고 비교를 수행합니다. 최종 코드는 다음과 같습니다. value = longExpr1 > longExpr2.

그 다음에 일어나는 일은 값이 게이트웨이 액션으로 다시 전달되어 마이크로플로우의 다음 경로를 결정하는 것입니다. 이 특정 영화는 길다고 표시될 수 있으며 비오는 저녁에 집에 머물고자 하는 사용자는 완벽한 일을 찾을 수 있을 것입니다.

맺음말

이것으로 마이크로플로우 엔진의 기본 작동 방식을 대략적으로 설명했습니다. 마이크로플로우를 사용하면 웹 서비스 호출 방법, 모든 관련 보안 제약 조건을 적용하여 데이터베이스에서 SQL 쿼리 실행 방법, 클라이언트에서 폼 열기 방법 등에 대해 걱정할 필요가 없습니다. 마이크로플로우 엔진은 이러한 기능을 애플리케이션에 추가할 수 있는 간단한 액티비티 형태로 제공합니다.

이 정보가 도움이 되었기를 바랍니다.

언어를 선택하세요