3b단계: WCF-WebHttp 어댑터를 사용하여 Salesforce에서 기회 세부 정보 검색
이 섹션에서는 오케스트레이션을 향상시켜 수신 기회 알림을 처리하고 알림에서 기회 이름을 추출하고 해당 이름을 사용하여 Salesforce로 송신할 요청 쿼리를 만듭니다. 이렇게 하면 기회와 연관된 제품에 대한 구체적인 정보가 검색됩니다. Salesforce의 쿼리 응답은 BizTalk Server 다시 수신됩니다. 이를 위해 다음과 같은 단계를 수행합니다.
Salesforce로 쿼리 메시지를 송신하는 스키마 및 메시지 변수를 만듭니다.
기회 알림의 값을 사용하여 기회와 연관된 제품 세부 정보를 검색할 쿼리를 만드는 맵을 만듭니다.
Salesforce 쿼리 응답을 수신하는 스키마를 만듭니다.
요청 및 응답 스키마의 메시지 변수를 만듭니다.
Salesforce로 쿼리 메시지를 송신하는 스키마 및 메시지 변수 만들기
기회 알림을 통해 제공되는 정보를 사용하여 Salesforce에서 제품 세부 정보를 검색하려면 Salesforce로 쿼리를 송신해야 합니다. 쿼리는 XML 메시지로 Salesforce에 송신됩니다. 따라서 다음 프로시저에서는 요청 메시지 스키마를 만듭니다. 후속 프로시저에서는 이 스키마가 포함된 기회 알림 스키마를 매핑하여 기회에 대한 제품 세부 정보를 검색하는 쿼리를 생성합니다.
쿼리 요청을 송신하는 스키마를 만들려면
BizTalk Server 프로젝트에 새 스키마를 추가합니다. 이 EventHandler의 이름을
QueryRequest.xsd
로 지정합니다.루트 노드의 이름을 로 바꿉니다
QueryRequest
. QueryRequest 레코드 아래에 자식 필드 요소를 추가하고 이름을 로 지정합니다Query
.오케스트레이션 내에서 사용할 수 있도록 스키마에서 Query 요소를 승격합니다. 이후 단계에서는 이 승격된 요소를 사용하여 쿼리 문자열을 지정합니다.
Query 요소를 마우스 오른쪽 단추로 클릭하고 승격을 가리킨 다음 빠른 승격을 클릭합니다. 따라서 Query 요소를 사용하여 PropertySchema.xsd 스키마를 만듭니다. PropertySchema의 네임스페이스를 확인합니다. BizTalk Server 관리 콘솔에서 물리적 포트를 구성하는 동안 이후 단계에서 이 항목이 필요합니다.
모든 변경 내용을 저장합니다.
쿼리 스키마에 기회 알림 스키마 매핑
기회와 연관된 제품 세부 정보를 검색하려면 다음과 유사한 쿼리를 Salesforce로 송신해야 합니다.
SELECT Amount, Id, Name,(SELECT Quantity, ListPrice, PricebookEntry.UnitPrice, PricebookEntry.Name FROM OpportunityLineItems) FROM Opportunity Where Name = '<opportunity_name>'
쿼리 메시지 스키마는 이전 프로시저에서 이미 만들었습니다. 이 프로시저에서는 기회 알림 스키마를 쿼리 요청 스키마에 매핑하고 펑토이드를 사용하여 이 쿼리를 생성합니다. 이 쿼리는 QueryRequest.xsd 스키마의 Query 요소에 값으로 전달됩니다.
기회 알림을 매핑하려면
BizTalk Server 프로젝트에 맵을 추가합니다. 맵
Notification_QueryRequest.btm
이름을 로 지정합니다.원본 스키마를 NotificationService_soap_sforce_com_2005_09_outbound.xsd로 설정합니다. 대상 스키마를 QueryRequest.xsd로 설정합니다.
매핑 화면에 String Concatenate 펑토이드를 추가합니다. 문자열 연결 펑토이드 구성 대화 상자를 열고 입력 값을 다음과 같이 지정합니다.
입력 값 Input[0] SELECT Amount, Id, Name,(SELECT Quantity, ListPrice, PricebookEntry.UnitPrice, PricebookEntry.Name FROM OpportunityLineItems) FROM Opportunity Where Name = ' 입력[1] 소스 스키마의 이름 요소 값을 두 번째 입력으로 사용하는 펑토이드에 이름 요소를 연결합니다. 입력[2] ' 참고: 마지막 입력 값의 경우 닫는 작은따옴표(')만 지정합니다. 다음 스크린샷은 문자열 연결 펑토이드에 대한 구성을 보여 줍니다.
구성
세 입력 매개 변수가 연결되면 Salesforce로 송신되는 필수 쿼리를 구성합니다.
다음 스크린 샷에 표시된 것처럼 대상 스키마의 Query 요소에 String Concatenate 펑토이드를 연결합니다.
합니다.
맵에 대한 변경 내용을 저장합니다.
쿼리 응답 메시지를 수신하는 스키마 만들기
이 섹션에서는 Salesforce에서 쿼리 응답 메시지를 수신하는 스키마를 만듭니다. 이 섹션에서는 수동으로 쿼리 응답 스키마를 만듭니다.
쿼리 응답을 수신하는 스키마를 만들려면
BizTalk Server 프로젝트에 새 스키마를 추가하고 이름을 로 지정합니다
QueryResult.xsd
.Salesforce QueryResult 개체는 Salesforce에서 받은 쿼리 응답을 보여 줍니다. 따라서 다음을 보여 주는 스키마를 빌드합니다.
<?xml version="1.0" encoding="utf-16" ?> - <xs:schema xmlns="http://BtsSalesforceIntegration.QueryResult" xmlns:b="http://schemas.microsoft.com/BizTalk/2003" targetNamespace="http://BtsSalesforceIntegration.QueryResult" xmlns:xs="http://www.w3.org/2001/XMLSchema"> - <xs:element name="QueryResult"> - <xs:complexType> - <xs:sequence> <xs:element name="done" type="xs:string" /> - <xs:sequence> - <xs:element name="records"> - <xs:complexType> - <xs:sequence> <xs:element name="Id" type="xs:string" /> <xs:element name="Amount" type="xs:string" /> <xs:element name="Name" type="xs:string" /> - <xs:sequence> - <xs:element name="OpportunityLineItems"> - <xs:complexType> - <xs:sequence> <xs:element name="done" type="xs:string" /> - <xs:sequence minOccurs="1" maxOccurs="unbounded"> - <xs:element name="records"> - <xs:complexType> - <xs:sequence> <xs:element name="Quantity" type="xs:string" /> <xs:element name="ListPrice" type="xs:string" /> - <xs:element name="PricebookEntry"> - <xs:complexType> - <xs:sequence> <xs:element name="UnitPrice" type="xs:string" /> <xs:element name="Name" type="xs:string" /> </xs:sequence> <xs:attribute name="type" type="xs:string" /> <xs:attribute name="url" type="xs:string" /> </xs:complexType> </xs:element> </xs:sequence> <xs:attribute name="type" type="xs:string" /> <xs:attribute name="url" type="xs:string" /> </xs:complexType> </xs:element> </xs:sequence> <xs:element name="totalSize" type="xs:string" /> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:sequence> <xs:attribute name="type" type="xs:string" /> <xs:attribute name="url" type="xs:string" /> </xs:complexType> </xs:element> </xs:sequence> <xs:element name="totalSize" type="xs:string" /> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>
스키마 구조는 다음과 같습니다.
변경 내용을 스키마에 저장합니다.
QueryRequest 및 QueryResult 스키마의 메시지 변수 만들기
QueryRequest 및 QueryResult 스키마를 만든 후에는 오케스트레이션에서 두 개의 메시지 유형을 나타내는 두 개의 메시지 변수를 만들어야 합니다.
메시지 변수를 만들려면 다음을 수행하십시오.
NotificationService.odx 오케스트레이션을 열고 오케스트레이션 보기에서 두 개의 새 메시지를 추가합니다. 메시지 이름을 및
QueryResultMsg
로QueryRequestMsg
설정합니다.QueryRequestMsg의 메시지 유형을 BtsSalesforceIntegration.QueryRequest로 설정합니다.
QueryResultMsg의 메시지 유형을 BtsSalesforceIntegration.QueryResult로 설정합니다.
변경 내용을 오케스트레이션에 저장합니다.
Salesforce로 메시지를 송신하고 응답을 수신하도록 오케스트레이션 업데이트
3a단계: BizTalk Server Salesforce 기회 알림 받기 항목에서 Salesforce에서 기회 알림을 받고 승인을 보내는 오케스트레이션을 빌드했습니다. 이 단계에서는 Salesforce로 쿼리 요청을 송신하여 기회와 연관된 제품 세부 정보를 가져오고 응답을 수신하도록 이 오케스트레이션을 빌드합니다. 이 단계에서 사용할 스키마(QueryRequest.xsd 및 QueryResult.xsd)와 메시지 변수(QueryRequestMsg 및 QueryResultMsg)는 이미 만들었습니다.
Salesforce로 쿼리 요청을 송신하고 응답을 수신하려면
SendNotificationAck 셰이프 다음에 생성 메시지 셰이프를 추가합니다. 셰이프의 이름을 로
ConstructQuery
설정하고 Messages Constructed 속성을 QueryRequestMsg로 설정합니다.ConstructQuery 셰이프 내에 변환 셰이프를 추가합니다. Transform 셰이프를 두 번 클릭하여 변환 구성 대화 상자를 엽니다. 대화 상자에서 기존 지도 옵션을 선택한 다음 드롭다운에서 BtsSalesforceIntegration.Notification_QueryRequest 선택합니다. 원본을 NotificaitonMessage, 대상을 QueryRequestMsg로 설정하고 확인을 클릭합니다.
ConstructQuery 셰이프 내에서 변환 셰이프 다음에 메시지 할당 셰이프를 추가합니다. Message Assignment 셰이프를 두 번 클릭하여 다음 식을 추가합니다.
QueryRequestMsg(BtsSalesforceIntegration.PropertySchema.Query) = QueryRequestMsg.Query;
이렇게 하면 QueryRequestMsg 스키마의 Query 요소 값을 속성 스키마의 승격된 요소 Query에 전달합니다. WCF-WebHttp 포트를 구성할 때 이 요소를 사용하여 쿼리 값을 요청 메시지에 동적으로 전달합니다.
ConstructQuery 셰이프 다음에 보내기 셰이프를 추가합니다. 셰이프
SendQueryRequest
이름을 지정하고 메시지 형식을 QueryRequestMsg로 설정합니다.보내기 셰이프 다음에 수신 셰이프를 추가하고 이름을 로 지정합니다
ReceiveQueryResult
. 셰이프의 메시지 유형을 QueryResultMsg로 설정합니다.Salesforce로 쿼리 요청을 송신하고 응답으로 쿼리 결과를 수신하는 포트를 추가합니다. 포트 구성 마법사에서 다음 옵션을 선택합니다.
포트 이름을 로 지정합니다
SalesforceRESTInterface
.새 포트 유형을 만드는 옵션을 선택합니다.
통신 패턴을Request-Response로 설정합니다.
요청을 보내고 응답을 받을통신의 포트 방향을 로 설정하고 포트 바인딩을 나중에 지정으로 설정합니다.
포트의 요청 작업을 보내기 셰이프(SendQueryRequest)에 연결하고 포트의 응답 작업을 수신 셰이프(ReceiveQueryResult)에 연결합니다. 다음 스크린 샷은 Salesforce로 쿼리 요청을 송신하고 응답을 수신하는 프로세스를 나타내는 오케스트레이션의 일부를 보여 줍니다.
이 항목에서는 오케스트레이션을 업데이트하여 Salesforce로 쿼리 요청을 송신하고 Salesforce에 만들어진 기회에 대한 세부 정보(예: 제품 , 수량 등)를 수신합니다. 후속 항목에서는 이 솔루션을 업데이트하여 Salesforce 응답을 온-프레미스 SQL Server 데이터베이스에 입력합니다.