다음을 통해 공유


이벤트 실행 파이프라인

 

게시 날짜: 2017년 1월

적용 대상: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

Microsoft Dynamics 365 이벤트 처리 하위 시스템은 메시지 파이프라인 실행 모델을 기반으로 하는 플러그 인을 실행합니다.Microsoft Dynamics 365 웹 응용 프로그램에서의 사용자 동작 또는 플러그 인이나 다른 응용 프로그램의 SDK 메시드 호출 결과 메시지를 조직 웹 서비스로 보냅니다. 메시지에는 비즈니스 엔터티 정보와 핵심 작업 정보가 들어 있습니다. 메시지는 플랫폼 핵심 작업 및 등록된 플러그 인에서 읽거나 수정할 수 있는 이벤트 실행 파이프라인을 통해 전달됩니다.

참고

Microsoft Dynamics 365 플랫폼에서 호스팅되는 웹 서비스가 여러 개 있지만 조직 및 OData 끝점에서 트리거되는 이벤트만 플러그 인을 실행할 수 있습니다.

이 항목의 내용

아키텍처 및 관련 구성 요소

파이프라인 스테이지

메시지 처리

플러그 인 등록

데이터베이스 트랜잭션에 포함

아키텍처 및 관련 구성 요소

다음 그림은 동기 및 비동기 이벤트 처리와 관련된 Microsoft Dynamics 365 플랫폼의 전체 아키텍처를 보여 줍니다.

이벤트 처리 아키텍처

동기 및 비동기 이벤트 처리 다이어그램

이벤트 실행 파이프라인은 이벤트를 동기적 또는 비동기적으로 처리합니다. 플랫폼 핵심 작업 및 동기 실행을 위해 등록된 플러그 인은 즉시 실행됩니다. 이벤트에 등록된 동기 플러그 인은 잘 정의된 순서대로 실행됩니다. 비동기 실행을 위해 등록된 플러그 인은 비동기 큐 에이전트에서 큐에 대기되며 비동기 서비스에서 나중에 실행됩니다.

중요

플러그 인이 동기적으로 실행되든지 비동기적으로 실행되든지 상관 없이 (메시지) 요청 실행은 2분으로 제한됩니다. 플러그 인 논리 실행이 시간 제한을 초과하면 System.TimeoutException이 발생합니다. 플러그 인을 처리하는 데 2분보다 더 많은 시간이 필요할 경우 워크플로 또는 기타 백그라운드 프로세스를 사용하여 원하는 작업을 수행하는 것이 좋습니다. 이 2분 시간 제한은 샌드박스로도 알려진 부분 신뢰에서 실행하도록 등록한 플러그인에만 적용됩니다.추가 정보:플러그 인 격리, 트러스트 및 통계

파이프라인 스테이지

이벤트 파이프라인은 여러 스테이지로 나뉘는데, 그 중 스테이지 4개는 개발된 사용자 지정 또는 타사 플러그 인을 등록하는 데 사용할 수 있습니다. 각 스테이지에서 등록되는 여러 플러그 인은 플러그 인 등록 중 스테이지 내에서 순서를 지정할 수 있습니다(순위 지정).

이벤트

스테이지 이름

스테이지 번호

설명

사전 이벤트

사전 유효성 검사

10

기본 시스템 작업 전에 실행하는 플러그 인에 대한 파이프라인의 스테이지입니다. 이 스테이지에 등록된 플러그 인은 데이터베이스 트랜잭션 외부에서 실행할 수 있습니다.

System_CAPS_security 보안 참고

호출 또는 로그온한 사용자가 원하는 작업을 수행할 수 있는 올바른 권한이 있는지 확인하기 위해 수행되는 보안 확인 전에 사전 유효성 검사 스테이지가 수행됩니다.

사전 이벤트

사전 작업

20

기본 시스템 작업 전에 실행하는 플러그 인에 대한 파이프라인의 스테이지입니다. 이 스테이지에 등록된 플러그 인은 데이터베이스 트랜잭션 내부에서 실행할 수 있습니다.

플랫폼 핵심 작업

MainOperation

30

만들기, 업데이트, 삭제 등 시스템의 트랜잭션 내 기본 작업입니다. 이 스테이지에서는 사용자 지정 플러그 인을 등록할 수 없습니다.내부 전용입니다.

사후 이벤트

사후 작업

40

기본 작업 후 실행하는 플러그 인에 대한 파이프라인의 스테이지입니다. 이 스테이지에 등록된 플러그 인은 데이터베이스 트랜잭션 내부에서 실행할 수 있습니다.

메시지 처리

응용 프로그램 코드 또는 워크플로에서 Microsoft Dynamics 365 웹 서비스 메서드를 호출할 때마다 이벤트를 발생시키는 시스템의 상태 변경이 일어납니다. 웹 서비스 메서드에 매개 변수로 전달되는 정보는 OrganizationRequest에 내부적으로 패키지되고 파이프라인에서 처리됩니다.OrganizationRequest 메시지의 정보는 해당 이벤트에 등록된 첫 번째 플러그 인에 전달되고, 여기에서 해당 이벤트에 등록된 다음 플러그 인에 전달되기 전에 읽거나 수정할 수 있습니다. 플러그 인은 Execute 메서드에 전달되는 컨텍스트 양식으로 메시지 정보를 받습니다. 메시지는 플랫폼 핵심 작업에도 전달됩니다.

플러그 인 등록

핵심 플랫폼 작업 전후에 실행할 플러그 인을 등록할 수 있습니다. 등록된 사전 이벤트 플러그 인은 OrganizationRequest 메시지를 먼저 받고 메시지를 핵심 작업에 전달하기 전에 메시지 정보를 수정할 수 있습니다. 핵심 플랫폼 작업이 완료된 후에는 메시지는 OrganizationResponse로 알려져 있습니다. 응답은 등록된 사후 이벤트 플러그 인에 전달됩니다. 사후 이벤트 플러그 인에는 응답 사본이 등록된 비동기 플러그 인에 전달되기 전에 메시지를 수정할 수 있는 기회가 있습니다. 마지막으로 응답은 원래 웹 서비스 메서드를 호출한 응용 프로그램 또는 워크플로로 반환됩니다.

단일 Microsoft Dynamics 365 서버는 둘 이상의 조직을 호스팅할 수 있으므로 실행 파이프라인은 조직에 따라 다릅니다. 모든 조직을 위한 가상 파이프라인이 있습니다. 파이프라인에 등록된 플러그 인은 단일 조직의 비즈니스 데이터만 처리할 수 있습니다. 여러 조직에서 작동하도록 설계된 플러그 인은 각 조직의 실행 파이프라인에 등록해야 합니다.

데이터베이스 트랜잭션에 포함

플러그 인은 Microsoft Dynamics 365 플랫폼의 데이터베이스 트랜잭션 내에서 실행되거나 실행되지 않을 수 있습니다. 플러그 인이 트랜잭션의 일부인지 여부는 메시지 요청이 파이프라인에서 처리되는 방법을 따라 달라집니다. 플러그 인에 전달되는 IPluginExecutionContext에서 상속된 IsInTransaction 속성을 읽어 플러그 인이 트랜잭션 내에서 실행되는지 확인할 수 있습니다. 플러그 인이 데이터베이스 트랜잭션에서 실행되고 예외를 플랫폼에 다시 전달할 수 있으면 전체 트랜잭션이 롤백됩니다. 스테이지 10이 트랜잭션의 일부인 반면 스테이지 20과 40은 데이터베이스 트랜잭션의 일부입니다.

데이터베이스 트랜잭션 중 실행되어 예외를 플랫폼에 다시 전달하는 등록된 플러그 인은 핵심 작업을 취소합니다. 그 결과 핵심 작업이 롤백됩니다. 또한 아직 실행되지 않은 등록된 사전 또는 사후 이벤트 플러그 인 및 플러그 인에 대해 등록된 동일한 이벤트에서 트리거된 모든 워크플로가 실행되지 않습니다.

참고 항목

이벤트 프레임워크 소개
플러그 인 격리, 트러스트 및 통계
플러그 인 등록 및 배포
Microsoft Dynamics 365의 비동기 서비스

Microsoft Dynamics 365

© 2017 Microsoft. All rights reserved. 저작권 정보