Verwenden von Pipelines aus der dienstorientierten Lösung
Die Inlineversion der Kundendienstorchestrierung (CustomerService) ruft das Zahlungsverfolgungssystem direkt auf. Zum Vorbereiten der gesendeten Nachricht und Verarbeiten der empfangenen Nachricht ruft die Orchestrierung die Pipelines im Code auf. Dies ermöglicht die Wiederverwendung der Pipelines aus den anderen Szenarioversionen. Außerdem wird die Entkopplung der Orchestrierung von den Pipelinephasen beibehalten.
Aufrufen der Pipelines
Um die Pipelines im Code verwenden zu können, müssen Sie eine Nachrichtenauflistung erstellen, die zu verarbeitende Nachricht der Auflistung hinzufügen, eine leere Nachricht zum Empfangen der Ergebnisnachricht erstellen und die Pipeline aufrufen.
Der folgende Code aus der CustomerService-Orchestrierung befindet sich in der Form ConstructRequestMessageAfterSendPipeline :
// Create the collection of messages to be sent to the send pipeline...
sendPipelineInputMessages =
new Microsoft.XLANGs.Pipeline.SendPipelineInputMessages();
sendPipelineInputMessages.Add(LastPaymentRequest);
// Create an empty message for the output from the pipeline...
LastPaymentRequestAfterSendPipeline = null;
// Execute the send pipeline and get the message output from
// the send pipeline.
Microsoft.XLANGs.Pipeline.XLANGPipelineManager.
ExecuteSendPipeline(
typeof(
Microsoft.Samples.BizTalk.
WoodgroveBank.PaymentTrackerPipelines.
PaymentTrackerSendPipeline
),
sendPipelineInputMessages,
LastPaymentRequestAfterSendPipeline
);
Die GetLastPaymentResponse-Form akzeptiert die Nachricht aus dem obigen Code, sendet sie an das Zahlungsverfolgungssystem und verarbeitet die zurückgegebene Nachricht über die Empfangspipeline:
// Execute the inline method to send the message to the
// Payment Tracking System and get the response.
// The response message received should be passed through the
// receive pipeline.
LastPaymentResponseBeforeReceivePipeline =
Microsoft.Samples.BizTalk.
WoodgroveBank.
PaymentTrackerCall.
PaymentTrackerCaller.
GetPaymeTrackerResponse
(
LastPaymentRequestAfterSendPipeline
);
// Execute the receive pipeline using the helper class so that we don't
// need to declare the non-serializable types involved.
// Set the documentspec name so the xml disassembler in the
// pipeline can resolve the schemas for the received message
// without ambiguity.
LastPaymentResponseBeforeReceivePipeline(XMLNORM.DocumentSpecName) =
"Microsoft.Samples.BizTalk.WoodgroveBank.Schemas.LastPaymentResponse, Microsoft.Samples.BizTalk.WoodgroveBank.Schemas, Version=1.0.0.0, Culture=neutral, PublicKeyToken=5f57a322d27bc5fb";
// Create an empty response message and fill it in with the
// real response from the Payment Tracking System
LastPaymentResponse = null;
Microsoft.Samples.BizTalk.WoodgroveBank.Utilities.
ReceivePipelineHelper.CallReceivePipeLine (
typeof(
Microsoft.Samples.BizTalk.WoodgroveBank.
PaymentTrackerPipelines.PaymentTrackerReceivePipeline
),
LastPaymentResponseBeforeReceivePipeline,
LastPaymentResponse
);