Execute 메서드와 함께 메시지(요청 및 응답 클래스) 사용
게시 날짜: 2017년 1월
적용 대상: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online
IOrganizationService에서 메서드를 사용하여 일반적인 작업을 수행할 수 있습니다. 일반적인 메시지 외에 IOrganizationService.Execute 메서드를 사용하여 메서드로 노출되지 않는 메시지를 실행할 수 있습니다.Execute 메서드는 메시지 요청 클래스를 매개 변수로 사용하고 메시지 응답 클래스를 반환합니다. 요청 메시지 클래스 이름은 "Request"로 끝나고 응답 메시지 클래스 이름은 "Response"로 끝납니다.Execute 메서드에서 지원되는 모든 메시지에 대한 자세한 내용은 조직 서비스의 xRM 메시지, 조직 서비스의 Dynamics 365 메시지를 참조하십시오.IDiscoveryService 및 IDeploymentService 웹 서비스는 유사한 실행 요청 및 응답 패턴을 사용합니다.
OrganizationRequest는 모든 메시지 요청에 대한 기본 클래스입니다. 이 기본 클래스를 사용하여 요청에 대해 메시지 이름과 매개 변수 컬렉션을 지정하여 메시지를 실행할 수 있습니다. 하지만 AssociateRequest와 같은 파생 클래스를 사용하면 요청 클래스에 대한 속성을 사용할 때 매개 변수 컬렉션이 채워집니다.
Execute 메서드는 요청에 대해 OrganizationResponse 클래스의 파생 클래스인 해당 응답 클래스를 반환합니다. 요청 클래스를 사용하면 파생 클래스에 결과 매개 변수 컬렉션에 각 값의 속성이 포함됩니다. 모든 메시지에는 응답이 있지만 대부분의 메시지에는 응답에 대한 속성은 없습니다. .
메시지는 메타데이터에 미리 정의되고 SDK 메시지 엔터티에 레코드로 저장됩니다. 각 메시지에 대해 서버에 연결되어 있는 동안 또는 Microsoft Office Outlook용 Microsoft Dynamics 365(오프라인 액세스 가능)에서 작동하는지 여부를 결정할 수 있습니다. 이 정보는 SdkMessage.Availability 특성에서 찾을 수 있습니다. 자세한 내용은 플러그 인 등록 엔터티을 참조하십시오.
이 항목의 내용
메시지의 선택적 매개 변수 전달
단일 데이터베이스 트랜잭션에서 메시지를 실행합니다.
백그라운드(비동기)에서 메시지 실행
메시지의 선택적 매개 변수 전달
값을 Parameters 속성에 추가하여 선택적 매개 변수를 메시지 요청에 전달할 수 있습니다. 일부 매개 변수는 요청 클래스에서 노출된 속성이 아닙니다. 이러한 매개 변수를 설정하려면 Request 클래스의 Parameters 컬렉션에 설정되어 있어야 합니다.
다음 표에는 이러한 매개 변수가 나와 있습니다.
Parameter |
설명 |
메시지 |
---|---|---|
SolutionUniqueName |
작업이 적용되는 솔루션의 고유 이름을 지정하는 String입니다. 자세한 내용은 솔루션 구성 요소에 대해 종속성 추적을 참조하십시오. |
AddPrivilegesRoleRequest |
CalculateMatchCodeSynchronously |
이 매개 변수는 더 이상 지정하지 않아도 됩니다. 중복 항목을 검색하는 데 사용되는 일치 코드는 이 매개 변수에 전달된 값에 관계 없이 동기적으로 계산됩니다. 자세한 내용은 중복 검색 실행을 참조하십시오. |
|
SuppressDuplicateDetection |
Boolean은 만들기 또는 업데이트 작업에서 중복 검색을 비활성화하는 데 사용됩니다. 자세한 내용은 중복 검색 실행을 참조하십시오. |
다음 샘플에서는 선택적 매개 변수를 전달하는 방법을 보여 줍니다.
Account target = new Account();
target.Name = "Fabrikam";
CreateRequest req = new CreateRequest();
req.Target = target;
req["SuppressDuplicateDetection"] = true;
req["CalculateMatchCodeSynchronously"] = true;
req["SolutionUniqueName"] = "MySolutionName";
CreateResponse response = (CreateResponse)_service.Execute(req);
단일 데이터베이스 트랜잭션에서 메시지를 실행합니다.
모든 데이터 변경이 성공하거나 아무것도 수행하지 않도록 시스템에 여러 레코드의 변경을 조정하는 것은 비즈니스 응용 프로그램의 일반적인 요구 사항입니다. 데이터베이스 관점에서 이는 한 작업이 실패하는 경우 모든 데이터 변경 사항을 롤백하는 기능을 사용하여 단일 트랜잭션에서 여러 작업을 실행하는 것으로 알려져 있습니다.
ExecuteTransactionRequest 메시지 요청을 사용하여 단일 데이터베이스 트랜잭션에서 둘 이상의 조직 서비스 요청을 실행할 수 있습니다. 이 메시지를 사용하려면 Requests 컬렉션을 트랜잭션에서 실행할 둘 이상의 조직 요청으로 채웁니다.Responses 컬렉션에서 실행된 각 메시지 요청에 대해 하나씩 응답의 컬렉션을 반환하려는 경우 ReturnResponses를 true로 설정합니다.Requests 컬렉션의 메시지 요청은 컬렉션에 나타나는 순서로 실행됩니다. 여기서 색인 0의 요소가 먼저 실행됩니다. 이와 동일한 순서가 Responses 컬렉션에도 유지됩니다.
요청 중 하나가 실패하고 트랜잭션이 롤백되는 경우 트랜잭션을 실행 취소하는 동안 모든 데이터 변경이 완료되었습니다. 또한 오류를 초래한 요청 메시지의 요청 컬렉션에 대한 색인을 식별하는 ExecuteTransactionFault가 반환됩니다.
ExecuteMultipleRequest는 하나 이상의 ExecuteTransactionRequest 인스턴스를 포함할 수 있습니다.ExecuteTransactionRequest 인스턴스는 ExecuteMultipleRequest 또는 ExecuteTransactionRequest를 포함하지 않을 수 있습니다.ExecuteMultipleRequest에 대한 자세한 내용은 ExecuteMultiple을 사용하여 대량 데이터 로드 성능 향상을 참조하십시오.
이를 설명하는 코드 샘플은 ExecuteTransactionRequestSample: Execute multiple requests in transaction을 참조하십시오.
백그라운드(비동기)에서 메시지 실행
메시지 요청을 즉시 실행하는 것 외에도 Execute를 호출하고 메시지 요청을 전달하는 것 같이 백그라운드(비동기)에서 메시지 요청을 선택할 수도 있습니다. 이 경우 서버 로드량이 적을 때까지 메시지 실행을 연기하여 시스템 성능이 향상됩니다. 상호 작용을 하는 사용자는 대상 메시지가 실행될 때까지 기다릴 필요가 없습니다. 실행하는 데 몇 분 이상 걸리는 메시지를 처리할 때 이 방법은 특히 유용합니다.
참고
현재 ImportSolutionRequest 메시지만 ExecuteAsync 메시지와 사용할 수 있습니다.
ExecuteAsyncRequest 메시지를 사용하여 메시지를 비동기적으로 실행합니다. 요청을 구성하고 요청 인스턴스를 Execute에 증거로 전달합니다 .ExecuteAsyncResponse 비동기 작업의 ID를 반환합니다. 현재 상태를 찾도록 ID를 사용하여 작업을 (필요에 따라) 쿼리할 수 있습니다.
ExecuteMultipleRequest 메시지를 사용하여 여러 메시지를 한 번에 실행할 수도 있습니다. 이렇게 하려면 하나 이상의 ExecuteAsync 메시지 요청을 ExecuteMultiple 메시지 요청에 추가합니다. 전체 시스템 성능을 향상시키는 제한으로 인해 각 조직에 대해 비동기적으로 실행되는 메시지 하나만 한 번에 실행할 수 있습니다.ExecuteAsync 메시지 요청에서 ExecuteMultiple 메시지 요청을 실행할 수 있습니다.ExecuteMultiple 메시지 요청에 대한 자세한 내용은 ExecuteMultiple을 사용하여 대량 데이터 로드 성능 향상을 참조하십시오.
참고 항목
Execute
OrganizationRequest
OrganizationResponse
ExecuteAsyncMaxConnectionsPerServer
ExecuteAsyncPerOrgMaxConnectionsPerServer
조직 서비스를 사용하여 데이터 또는 메타데이터 읽고 씁니다.
ExecuteMultiple을 사용하여 대량 데이터 로드 성능 향상
ExecuteCrmOrganizationRequest 메서드와 함께 메시지(요청 및 응답 클래스) 사용
검색 서비스의 메시지
조직 서비스의 xRM 메시지
조직 서비스의 Dynamics 365 메시지
ExecuteAsync message privileges
Microsoft Dynamics 365
© 2017 Microsoft. All rights reserved. 저작권 정보