560 likes | 1.53k Views
Enterprise Service Bus. <Name> <Title> <Division> <Company>. Microsoft ESB Guidance for Partners. Agenda. What is a Microsoft ESB Reference Architecture Evolution of Architecture Hub/Bus and Beyond Microsoft ESB Guidance Introduction Client Test Tool ESB Architecture On-Ramps
E N D
Enterprise Service Bus <Name> <Title> <Division> <Company> Microsoft ESB Guidance for Partners
Agenda What is a Microsoft ESB Reference Architecture Evolution of Architecture Hub/Bus and Beyond Microsoft ESB Guidance Introduction Client Test Tool ESB Architecture On-Ramps Web Services Core Services Exception Management Management Portal Supporting Technologies Microsoft ESB Guidance Roadmap
Enterprise Service Bus (ESB) means different things to different people. “An enterprise platform that implements standardized interfaces for communication, connectivity, transformation, and security.” –Fiorano Software “The ESB label simply implies that a product is some type of integration middleware product that supports both MOM and Web services protocols.” –Burton Group “A Web-services-capable infrastructure that supports intelligently directed communication and mediated relationships among loosely coupled and decoupled biz components.” -Gartner Group “A standards-based integration backbone, combining messaging, Web services, transformation, and intelligent routing.” –Sonic Software “To put it bluntly: If you have WebSphere MQ and other WebSphere brokers and integration servers, you have an ESB.” –Bob Sutor, IBM
We need to agree on what an Enterprise Service Bus is and what it does. Message Broker Message Transformation Message Validation Message-Oriented Middleware Adaptation Service Orchestration Bavarian Purity Law of 1516
Microsoft’s products and technologies today offer a superset of ESB functionality BizTalk Server Web Service Foundation Visual Studio Peripheral products/technologies Architectural Guidance
Native Native Supported Service Consumer Supported Service Provider SOAP SOAP Standard Service Consumer Standard Service Provider An ESB is one important building block of a Service-Oriented Infrastructure Service-Oriented Infrastructure Enterprise Service Bus Orchestration ESB Core Services Transformation Adaptation Adaptation Routing CI SI Exception Management Management Portal Provisioning Framework Service Registry/Repository Service Management Security Legend: CI: Consumer Interceptor SI: Service Interceptor
Agenda What is a Microsoft ESB Reference Architecture Evolution of Architecture Hub/Bus and Beyond Microsoft ESB Guidance Introduction Client Test Tool ESB Architecture On-Ramps Web Services Core Services Exception Management Management Portal Supporting Technologies Microsoft ESB Guidance Roadmap
Evolution of Architectures Point-to-Point Hub and Spoke Message Bus unmanaged / decentralized managed / centralized managed / decentralized Supports lose coupling of systems Message Broker n lines of connectivity Centralized management Limited scalability Single point of failure Suitable for small environments n² lines of connectivity Common communication infrastructure Common command infrastructure n lines of connectivity Proprietary communication protocols Complex management
Hybrid Hub/Bus Architecture Processing Hosts Receive Hosts Send Hosts Outbound Inbound Network Load Balancer MsgBox 1 Monitoring(MOM) BizTalk ServerAdmin Host BizTalk ServerTracking Host BizTalk Mgmt DB TrackingDB MsgBox 3 MsgBox 2 Cluster Cluster Cluster SAN Data Indexes Logs Data Indexes Logs
Expanding the SOA footprint Business Unit 2 Business Unit 1 Business Unit 3
Agenda What is a Microsoft ESB Reference Architecture Evolution of Architecture Hub/Bus and Beyond Microsoft ESB Guidance Introduction Client Test Tool ESB Architecture On-Ramps Web Services Core Services Exception Management Management Portal Supporting Technologies Microsoft ESB Guidance Roadmap
Microsoft ESB Guidance For BizTalk Server 2006 Architectural Guidance Reusable Components Sample Applications Management Portal
Microsoft ESB Guidance Introduction On/Off ramps Standardized metadata “envelope” Dynamic Service Invocation through Itineraries Loosely-coupled architecture, intermediaries/agents Unified exception management Provisioning and administration
Developer SDK Developer’s Guide to the Microsoft ESB Guidance VM with Microsoft ESB Guidance installed Sample applications Test Client
Agenda What is a Microsoft ESB Reference Architecture Evolution of Architecture Hub/Bus and Beyond Microsoft ESB Guidance Introduction Client Test Tool ESB Architecture On-Ramps Web Services Core Services Exception Management Management Portal Supporting Technologies Microsoft ESB Guidance Roadmap
ESB Client Tool • What is the ESB Client application? • ESB message generator • Test tool for ESB core Web services • Launch tool for samples • What does it do • SOAP client that can set SOAP headers for ESB metadata properties • SOAP client application for ESB Guidance core Web services • Implements ESB Guidance use cases • Why use it • Easy way to explore ESB Guidance components • Data-driven, can be extended to meet custom requirements • Can be used to test new intermediary functions
ESB Client Tool private void SetSoapHeader(object hdrs, PropertyInfo p) { switch (p.Name) { #region Processing case "ProcessingInstruction": p.SetValue(hdrs, this.cmbProcessingInstruction.SelectedItem, null); break; case "Itinerary": if (this.cmbItinerary.SelectedItem != null && this.cmbItinerary.SelectedItem.ToString() != "[None]") p.SetValue(hdrs, this.cmbItinerary.SelectedItem, null); break; #endregion #region Transformation #region Routing } } <?xml version="1.0" encoding="utf-8" ?> <controlStates> <!-- Use Case 1: point-to-point --> <stateGroup name="ucPointToPoint" tabIndex="1"> <description>This use case shows usage of the ESB resolver service to perform runtime determination of an endpoint address based on a UDDI entry. This service could be used in the scenario of a Web service client communicating directly with a Web service (without going through the ESB).</description> <states> <state name="ucPointToPoint"> <controlValue name="ResolverFactRulesPolicy" value="1"/> <controlValue name="ResolverFactSelectAssembly" value="1"/> <controlValue name="ResolverFactSelectType" value="1"/> <controlValue name="ResolverFactSelectMethod" value="1"/> <controlValue name="ResolverFactXPath" value="1"/> <controlValue name="ResolverFactUddi" value="3"/> <controlValue name="rbResolverServiceUddiAddress" value="1"/> </state> </states> </stateGroup> BizTalk Receive Port SOAP Rec’v Loc n Receive Pipeline
Agenda What is a Microsoft ESB Reference Architecture Evolution of Architecture Hub/Bus and Beyond Microsoft ESB Guidance Introduction Client Test Tool ESB Architecture On Ramps Web Services Core Services Exception Management Management Portal Supporting Technologies Microsoft ESB Guidance Roadmap
Generic Send Port SOAP Pipeline Components Generic Send Port WSE Pipeline Components Generic Send Port JMS JMSComponents Generic Send PortOther Pipeline Components Custom Send Port 1..n Pipeline Components Microsoft ESB Guidance Architecture Web Services Core Services Transformation Agent Intermediary Agent / Custom Application Generic Delivery Agent Resolver Web Service Custom Delivery Agent 1 … n Transformation Web Service Off-ramps On-ramps BizTalk Server Orchestration Engine SOAP Receiver Pipeline Components Context Setter BizTalk Server Transformation Engine WSE Receiver Pipeline Components Context Setter BizTalk Server Business Rule Engine JMS Receiver JMSComponents Context Setter BizTalk ServerMessage Box(Microsoft SQL Server) Custom Receiver 1..n Namespace Components Context Setter SharePoint Management Portal Exception Management Exception Handler 1..n Generic Custom Application Provisioning Framework Exception Web Service Processor Exception Management Exception Logger B2B Gateway
Generic Send Port SOAP Pipeline Components Generic Send Port WSE Pipeline Components Generic Send Port JMS JMSComponents Generic Send PortOther Pipeline Components Custom Send Port 1..n Pipeline Components On/Off Ramps Web Services Core Services Transformation Agent Intermediary Agent / Custom Application Generic Delivery Agent Resolver Web Service Custom Delivery Agent 1 … n Transformation Web Service Off-ramps On-ramps BizTalk Server Orchestration Engine SOAP Receiver Pipeline Components Context Setter BizTalk Server Transformation Engine WSE Receiver Pipeline Components Context Setter BizTalk Server Business Rule Engine JMS Receiver JMSComponents Context Setter BizTalk ServerMessage Box(Microsoft SQL Server) Custom Receiver 1..n Namespace Components Context Setter What are they? SharePoint Management Portal Exception Management What do they do? Exception Handler 1..n Generic Custom Application Provisioning Framework Exception Web Service Processor Exception Management Exception Logger Why use them? B2B Gateway
On/Off-Ramps • What is an ESB On/Off ramp • Structured/standardized way to enrich existing metadata • Exposed as SOAP/WSE interface by default • Can support any BizTalk adapter • Perform pre-delivery processing, and delivery • What does it do • Allows publication of messages with runtime metadata logic • Dynamic endpoint resolution • Transformation Invocation • Itinerary processing (ad hoc service invocation) • Uses ESB pipeline components (Context, Resolver, Namespace) • Why use it • Allows runtime resolution of endpoints (where does the message go?) • UDDI, BRE, custom assembly (IResolver interface), XPath • Allows runtime business logic to drive transformations • Alternative to Namespace#Root • Map to execute determined by • UDDI, BRE, custom assembly (IResolver interface), XPath • Allows for runtime service/application composition • Native IBM JMS over WMQ support
<soap:Envelope xmlns:soap=http://schemas.xmlsoap.org/soap/envelope/ xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance xmlns:xsd=http://www.w3.org/2001/XMLSchema > <soap:Header> <EsbSoapHeaders xmlns=http://Microsoft.BizTalk.ESB.Receivers.Receivers_SoapHeaders > <ProcessingInstruction>TRANSFORM</ProcessingInstruction> <Itinerary>TRANSFORM,FULLFILLMENT,ROUTE</Itinerary> <MapRulesPolicy>Microsoft.BizTalk.ESB.Transformation</MapRulesPolicy> <MapType/> <MapUddiLabel/> <MapXPath/> <EndpointAddress/> <EndpointConfigurationString/> <EndpointConfigurationRulesPolicy/> <EndpointConfigurationUddiLabel/> <EndpointConfigurationXPath/> <EndpointDeliveryAgent/> <EndpointRulesPolicy/> <EndpointUddiLabel>ENDPOINT:Test.Out</EndpointUddiLabel> <EndpointXpath/> </EsbSoapHeaders> </soap:Header> <soap:Body> </soap:Body></soap:Envelope> <soap:Envelope xmlns:soap=http://schemas.xmlsoap.org/soap/envelope/ xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance xmlns:xsd=http://www.w3.org/2001/XMLSchema > <soap:Header> <EsbSoapHeaders xmlns=http://Microsoft.BizTalk.ESB.Receivers.Receivers_SoapHeaders > <ProcessingInstruction>TRANSFORM</ProcessingInstruction> <Itinerary>TRANSFORM,FULLFILLMENT,ROUTE</Itinerary> <MapRulesPolicy>Microsoft.BizTalk.ESB.Transformation</MapRulesPolicy> <MapType/> <MapUddiLabel/> <MapXPath/> <EndpointAddress/> <EndpointConfigurationString/> <EndpointConfigurationRulesPolicy/> <EndpointConfigurationUddiLabel/> <EndpointConfigurationXPath/> <EndpointDeliveryAgent/> <EndpointRulesPolicy/> <EndpointUddiLabel>ENDPOINT:Test.Out</EndpointUddiLabel> <EndpointXpath/> </EsbSoapHeaders> </soap:Header> <soap:Body> </soap:Body></soap:Envelope> BizTalk ESB ValidationService ValidationService FulfillmentService FulfillmentService FulfillmentService ValidationService RoutingService Transformation Service Business RulesService RoutingService RoutingService Transformation Service Transformation Service Business RulesService Business RulesService BizTalkMessage Box DB Spool On/Off-Ramps – Itinerary Processing • Transformation • Fulfillment • Routing What do I do?? • UDDI label • Business rules engine • External assembly • XPath statement How do I send a message to ESB? • Choose the order of service invocation • Determine service resolution • Map service invocation and resolution to SOAP headers • Send message to ESB on-ramp • Namespace normalization occurs • Context setter promotes SOAP headers • Publish to BizTalk Messaging Service Promote SOAP Headers to BizTalk Context If no Namespace…then add one BizTalk Receive Port SOAP Rec’v Loc n Receive Pipeline
Microsoft ESB Guidance ESB Itinerary Processing <Name><Title> <Company>
On-Ramps – Namespace Normalization • What is Namespace Normalization • Dynamically adding or removing Namespaces where required by either BizTalk or a subscribing system • What does it do • Properties for runtime construction of a namespace: • ExtactionNodeXpath • NamespaceBase • NamespacePrefix • Separator • XPath • Properties for removal of all namespaces and/or BOM: • Encoding • RemoveBOM • Why use it • Namespaces are required in BizTalk • Namespace#Root Identifies unique message • Many documents do NOT have namespaces • Many Namepace#Root documents are NOT unique • Some systems cannot work with Namespaces
BizTalkMessage Box DB Spool On-Ramps – Namespace Normalization <CanonicalOrder OrderID="OrderID_0" OrderDate="OrderDate_1" Status="Status_2"> <OrderHeader> <CustomerName>CustomerName_0</CustomerName> <CustomerID>CustomerID_0</CustomerID> <ShipToLine1>ShipToLine1_0</ShipToLine1> <ShipToLine2>ShipToLine2_0</ShipToLine2> <BillToLine1>BillToLine1_0</BillToLine1> <BillToLine2>BillToLine2_0</BillToLine2> <OrderTotal>OrderTotal_0</OrderTotal> </OrderHeader> <OrderDetails> <LineItem Qty="Qty_0" PartNum="PartNum_1" Description="Description_2“ UnitPrice="UnitPrice_3" Ext="Ext_4" /> </OrderDetails> <B2BPartnerDetails CreditLimit="CreditLimit_0" AccountBalance="AccountBalance_1" LastOrderedData="LastOrderedData_2" DiscountLevel="DiscountLevel_3" /></CanonicalOrder> <esbTest:CanonicalOrder xmlns:esbTest=http://schemas.microsoft.biztalk.esb.test.com/test/OrderID_0/OrderDate_1 OrderID="OrderID_0" OrderDate="OrderDate_1" Status="Status_2"> <OrderHeader> <CustomerName>CustomerName_0</CustomerName> <CustomerID>CustomerID_0</CustomerID> <ShipToLine1>ShipToLine1_0</ShipToLine1> <ShipToLine2>ShipToLine2_0</ShipToLine2> <BillToLine1>BillToLine1_0</BillToLine1> <BillToLine2>BillToLine2_0</BillToLine2> <OrderTotal>OrderTotal_0</OrderTotal> </OrderHeader> <OrderDetails> <LineItem Qty="Qty_0" PartNum="PartNum_1" Description="Description_2" UnitPrice="UnitPrice_3" Ext="Ext_4" /> </OrderDetails> <B2BPartnerDetails CreditLimit="CreditLimit_0" AccountBalance="AccountBalance_1“ LastOrderedData="LastOrderedData_2" DiscountLevel="DiscountLevel_3" /> </esbTest:CanonicalOrder> If no Namespace…then add one BizTalk Receive Port • Message is published to ESB WITHOUT a Namespace • Namespace normalization pipeline component is executed • Namespace is applied according to predefined pipeline properties • Message is published to BizTalk MessageBox DB with Namespace SOAP Rec’v Loc n Receive Pipeline
Microsoft ESB Guidance ESB Namespace Normalization <Name><Title> <Company>
On-Ramps – JMS/WMQ • What is JMS over WMQ • IBM’s implementation of JMS using WMQ (MQSeries) as an underlying queuing provider • What does it do • BizTalk pipeline component implementation • Preserves IBM JMS (MQRFH2) headers as BizTalk context properties • MQRFH2 structure defined in cmqc.h • Read JMS headers via context properties • Accessible within .NET or orchestration expression shape • Writes IBM JMS (MQRFH2) Headers to outbound messages • Write to JMS headers via context properties • Accessible within .NET or orchestration expression shape • IBM JMS (MQRFH2) headers represented as property schema • Why use it • IBM JMS over WMQ ubiquitous in FinServ • JMS common transport in ESB scenarios • Scale/Perf usually requires queuing technology • IBM JMS over WMQ seems to be the most popular
WMQ WMQ WebSphere Application Server BizTalk Receive Port WMQ Rec’v Loc n Receive Pipeline On-Ramps – JMS/WMQ MQRFH2.NameValueData = <jms><Dst>DynamicRecFromBTS.Dest</Dst><Rto>DynamicRecFromBTS.Reply</Rto><Pri>99999</Pri><Dlv>999</Dlv><Exp>12319999</Exp><Cid></Cid><Gid></Gid><Seq>2147483647</Seq><Tms>01011536</Tms></jms> MQMD.MsgId = 414D51204D6963726F7… MQRFH2.Encoding = 546 MQRFH2.CodedCharSetId = 437 MQMD.Format = MQRFH2 MQRFH2.xsd<Shema> MQRFH2_StrucLength MQRFH2_Version MQRFH2_Encoding MQRFH2_CodedCharSetId MQRFH2_Format MQRFH2_Flags MQRFH2_NameValueCCSID MQRFH2_ParseError MQRFH2_NameValueLength MQRFH2_NameValueData JMSReplyTo = DynamicRecFromBTS.Reply JMSDestination = DynamicRecFromBTS.Dest JMSMessageID = 414D51204D6963726F7… JMS_IBM_Encoding = 546 JMS_IBM_Character_Set = 437 JMS JMS Submit to Topic MQ Channel WMQ Provider for JMS • Message submitted using JMS API • JMS Header set to destination queue • WMQ converts JMS message • JMS headers/properties mapped to MQRFH2 headers • BizTalk WMQ adapter parses MQMD headers • JMS/WMQ BizTalk pipeline parses MQRFH2 headers • BizTalk MQRFH2 property schema • MQRFH2 headers preserved with BizTalk Writes JMS Header/Properties to BizTalk Context
Microsoft ESB Guidance ESB JMS/WMQ <Name><Title> <Company>
Agenda What is a Microsoft ESB Reference Architecture Evolution of Architecture Hub/Bus and Beyond Microsoft ESB Guidance Introduction Client Test Tool ESB Architecture On Ramps Web Services Core Services Exception Management Management Portal Supporting Technologies Microsoft ESB Guidance Roadmap
Generic Send Port SOAP Pipeline Components Generic Send Port WSE Pipeline Components Generic Send Port JMS JMSComponents Generic Send PortOther Pipeline Components Custom Send Port 1..n Pipeline Components Web Services Web Services Core Services Transformation Agent Intermediary Agent / Custom Application Generic Delivery Agent Resolver Web Service Custom Delivery Agent 1 … n Transformation Web Service Off-ramps On-ramps BizTalk Server Orchestration Engine SOAP Receiver Pipeline Components Context Setter BizTalk Server Transformation Engine WSE Receiver Pipeline Components Context Setter BizTalk Server Business Rule Engine JMS Receiver JMSComponents Context Setter BizTalk ServerMessage Box(Microsoft SQL Server) Custom Receiver 1..n Namespace Components Context Setter What are they? SharePoint Management Portal Exception Management What do they do? Exception Handler 1..n Generic Custom Application Provisioning Framework Exception Web Service Processor Exception Management Exception Logger Why use them? B2B Gateway
Web Services • What are the ESB Web Services • Resolver Web service • Reusable component enabling generic resolution methods • Transformation Web Service • High performance execution of BizTalk Maps (XSLT) • What do they do • Resolver accepts Fact Structure and/or BizTalk message • Determines resolution method from Fact Structure • UDDI, XPATH, external assembly (IResolver), BRE • Returns resolved item • Resolver class from Microsoft.BizTalk.ESB.Helpers namespace • Transformation accepts msgString, mapName and returns transformed XML • MapHelper class from Microsoft.BizTalk.ESB.MapHelpers namespace • msgString can be any XML document, mapName must be fully qualified i.e.Microsoft.BizTalk.ESB.Test.CanonicalOrder_To_OrderConfirmation, Microsoft.BizTalk.ESB.Test.Maps, Version=1.0.0.0, Culture=neutral, PublicKeyToken=c2c8b2b87f54180a • Why use them • Resolver Web service • Allows location transparency of services and runtime lookups • Transformation Web service • Uses BizTalk’s transform caching service for high performance • No BizTalk MessageBox
Microsoft ESB Guidance ESB Web Services <Name><Title> <Company>
Agenda What is a Microsoft ESB Reference Architecture Evolution of Architecture Hub/Bus and Beyond Microsoft ESB Guidance Introduction Client Test Tool ESB Architecture On Ramps Web Services Core Services Exception Management Management Portal Supporting Technologies Microsoft ESB Guidance Roadmap
Generic Send Port SOAP Pipeline Components Generic Send Port WSE Pipeline Components Generic Send Port JMS JMSComponents Generic Send PortOther Pipeline Components Custom Send Port 1..n Pipeline Components Core Services Web Services Core Services Transformation Agent Intermediary Agent / Custom Application Generic Delivery Agent Resolver Web Service Custom Delivery Agent 1 … n Transformation Web Service Off-ramps On-ramps BizTalk Server Orchestration Engine SOAP Receiver Pipeline Components Context Setter BizTalk Server Transformation Engine WSE Receiver Pipeline Components Context Setter BizTalk Server Business Rule Engine JMS Receiver JMSComponents Context Setter BizTalk ServerMessage Box(Microsoft SQL Server) Custom Receiver 1..n Namespace Components Context Setter What are they? SharePoint Management Portal Exception Management What do they do? Exception Handler 1..n Generic Custom Application Provisioning Framework Exception Web Service Processor Exception Management Exception Logger Why use them? B2B Gateway
Core Services • What are the ESB Core Services • Transformation Agent • Reusable service for dynamic message transformation • Custom/Intermediary Agent • Example of custom service available for itinerary processing • Generic Delivery Agent • Service enabling dynamic routing for itinerary processing • What do they do • Transformation Agent allows for multiple resolution methods • Uses “Transform” XLANG Keyword • Custom/Intermediary Agents allow for ad-hoc service deployment • Pattern to accommodate runtime service composition • Generic Delivery Agent • Sets port address property using dynamic resolution (location transparency) • All agents support JIT resolution, manage exceptions and advance Itineraries • Why use them • Loosely coupled architecture to support Itinerary Processing • Enables Ad Hoc/Runtime Service Invocation • Manages advancement of Itinerary • Exception Management built in • BAM enabled for SLA
<soap:Envelope xmlns:soap=http://schemas.xmlsoap.org/soap/envelope/ xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance xmlns:xsd=http://www.w3.org/2001/XMLSchema > <soap:Header> <EsbSoapHeaders xmlns=http://Microsoft.BizTalk.ESB.Receivers.Receivers_SoapHeaders > <ProcessingInstruction>TRANSFORM</ProcessingInstruction> <Itinerary>TRANSFORM,FULLFILLMENT,ROUTE</Itinerary> <MapRulesPolicy>Microsoft.BizTalk.ESB.Transformation</MapRulesPolicy> <MapType/> <MapUddiLabel/> <MapXPath/> <EndpointAddress/> <EndpointConfigurationString/> <EndpointConfigurationRulesPolicy/> <EndpointConfigurationUddiLabel/>ENDPOINT:Test.Out.Config <EndpointConfigurationUddiLabel/> <EndpointConfigurationXPath/> <EndpointDeliveryAgent/> <EndpointRulesPolicy/> <EndpointUddiLabel>ENDPOINT:Test.Out</EndpointUddiLabel> <EndpointXpath/> </EsbSoapHeaders> </soap:Header> <soap:Body> </soap:Body></soap:Envelope> <soap:Envelope xmlns:soap=http://schemas.xmlsoap.org/soap/envelope/ xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance xmlns:xsd=http://www.w3.org/2001/XMLSchema > <soap:Header> <EsbSoapHeaders xmlns=http://Microsoft.BizTalk.ESB.Receivers.Receivers_SoapHeaders > <ProcessingInstruction>TRANSFORM</ProcessingInstruction> <Itinerary>TRANSFORM,FULLFILLMENT,ROUTE</Itinerary> <MapRulesPolicy>Microsoft.BizTalk.ESB.Transformation</MapRulesPolicy> <MapType/> <MapUddiLabel/> <MapXPath/> <EndpointAddress/> <EndpointConfigurationString/> <EndpointConfigurationRulesPolicy/> <EndpointConfigurationUddiLabel/>ENDPOINT:Test.Out.Config </EndpointConfigurationUddiLabel> <EndpointConfigurationXPath/> <EndpointDeliveryAgent/> <EndpointRulesPolicy/> <EndpointUddiLabel>ENDPOINT:Test.Out</EndpointUddiLabel> <EndpointXpath/> </EsbSoapHeaders> </soap:Header> <soap:Body> </soap:Body></soap:Envelope> Orchestration Try Catch BizTalk Server 2006 Message Box DB Any Transport Send Port n Spool Send Pipeline Core Services - Agents Filter = (Microsoft.BizTalk.ESB.ProcessingInstruction == “FULLFILLMENT") Filter = (Microsoft.BizTalk.ESB.ProcessingInstruction == “ROUTE") Filter = (Microsoft.BizTalk.ESB.ProcessingInstruction == "TRANSFORM") Itinerary of Services • Transformation • Fulfillment • Routing Itinerary of Services • Transformation • Fulfillment • Routing • Is Microsoft.BizTalk.ESB.MapType in Message Context? • Resolve MapType to System.Type • facts = new Microsoft.BizTalk.ESB.Helpers.ResolverFacts(); • mapName = Resolver.Resolve(facts, InboundMessage); • mapType = System.Type.GetType(mapName); • Apply map using Transform XLANG keyword • transform (OutboundMessage) = mapType(InboundMessage); • Advance Itinerary to route to next Service • itineraryStep =ItineraryHelper.Advance(OutboundMessage(Microsoft.BizTalk.ESB.Itinerary)); • OutboundMessage(Microsoft.BizTalk.ESB.ProcessingInstruction) = itineraryStep.NextStep; • 5. Publish OutboundMessage Message • Are Microsoft.BizTalk.ESB.* Context properties in Message Set? • Resolve Facts to retrieve meta data for Service • facts = new Microsoft.BizTalk.ESB.Helpers.ResolverFacts(); • metaData = Resolver.Resolve(facts, InboundMessage); • Apply Service Logic using meta data • Advance Itinerary to route to next Service • itineraryStep =ItineraryHelper.Advance(OutboundMessage(Microsoft.BizTalk.ESB.Itinerary)); • OutboundMessage(Microsoft.BizTalk.ESB.ProcessingInstruction) = itineraryStep.NextStep; • 5. Publish OutboundMessage Message • Endpoint properties are resolved in Context Setter Pipeline Componenti.e EndPointUddiLabelEndPointConfigurationUddiLabel • Endpoint Config is parsed, PropertyNamespace resolved and written to Message Context • Is MessageToDeliver(Microsoft.BizTalk.ESB.EndpointAddress) Context property Set? • Resolve Facts to retrieve end point address for Servicefacts = new Microsoft.BizTalk.ESB.Helpers.ResolverFacts();endPointAddress = Resolver.Resolve(facts, InboundMessage); • Set Address property on Dynamic Port • Publish Message and Send to Endpoint <Itinerary>TRANSFORM, FULLFILLMENT, ROUTE</Itinerary> • Define Itinerary of Services • Publish Message • First Step of Itinerary identified • Message routed to First Step (Transformation Agent) • Second Step of Itinerary identified • Message routed to Second Step (Fulfillment Agent) • Third Step of Itinerary identified • Message routed to Third Step (Routing Agent)
Microsoft ESB Guidance Core Services <Name><Title> <Company>
Agenda What is a Microsoft ESB Reference Architecture Evolution of Architecture Hub/Bus and Beyond Microsoft ESB Guidance Introduction Client Test Tool ESB Architecture On Ramps Web Services Core Services Exception Management Management Portal Supporting Technologies Microsoft ESB Guidance Roadmap
Generic Send Port SOAP Pipeline Components Generic Send Port WSE Pipeline Components Generic Send Port JMS JMSComponents Generic Send PortOther Pipeline Components Custom Send Port 1..n Pipeline Components Exception Management Web Services Core Services Transformation Agent Intermediary Agent / Custom Application Generic Delivery Agent Resolver Web Service Custom Delivery Agent 1 … n Transformation Web Service Off-ramps On-ramps BizTalk Server Orchestration Engine SOAP Receiver Pipeline Components Context Setter What is it? BizTalk Server Transformation Engine WSE Receiver Pipeline Components Context Setter BizTalk Server Business Rule Engine What does it do? JMS Receiver JMSComponents Context Setter Why use it? BizTalk ServerMessage Box(Microsoft SQL Server) Custom Receiver 1..n Namespace Components Context Setter SharePoint Management Portal Exception Management Exception Handler 1..n Generic Custom Application Provisioning Framework Exception Web Service Processor Exception Management Exception Logger B2B Gateway
Exception Management • What is ESB Exception Management • Unified exception handling framework/API for BizTalk • Provides simplified API to manage orchestration exceptions • ESB portal for exception management • What does it do • Unifies “BizTalk failed message routing” API with ESB exception management • All messaging and orchestration exceptions are managed the same way • Persists message data and message context with ESB fault message • Analogous to “BizTalk failed message routing” mechanism • Exception processor will normalize all exception messages from ESB • Employs BAM Observation model for tracking Exception Trends • Management portal renders ESB fault message (with persisted data and context) and BAM tracking • Why use it • Provides message-oriented exception handling • Architecture enables highly-targeted exception handlers • Simplified API and message/context state management • Provides exception processing, portal rendering and trend analysis • Provides framework for common patterns that allow automated processes to react to and manage application exceptions
Orchestration Try Catch SOAP Transport Exception Rec’v Loc Receive Pipeline Intrerceptor Configuration (per Port) Intrerceptor Configuration (per Port) Interceptor Configuration (per Port) Exception Management - Process Any Transport Any Transport Add State… Send Port n Rec’v Loc n Send Pipeline Receive Pipeline Failed Message Routing Enabled Failed Message Routing Enabled BTS Fault Msg BTS Fault Msg ESB Fault Msg WSS Transport ESB Fault Msg ESB Audit Port Spool Send Pipeline • ESB BAM Exception Tracking ESB Fault Processor SuspendedQueue Filter {BTS.FaultCode Exists} Filter {BTS.FaultCode Exists Or ESB.FaultCode Exists} BAM BAM data BAM ESB Event Data • BizTalk Failed Message Routing Processing • ESB Failed Orchestration Message Routing Processing • ESB Exception Service Processing
Exception Management - API • ApprovedRequest Orchestration Message is Preserved with FaultMsg • All Context Properties of original message are Preserved with FaultMsg • User can add multiple messages • BizTalk Application Name • Orchestration Shape • System.Exception Object • Processing Server • Date Time • Error Description • Error Type • Orchestration Instance ID • Orchestration Name • FailureCategory • FaultCode • FaultDescription • FaultSeverity • Fault Message Schema… • Associated Context Properties… • How to create a Fault Message… • Auto populated by the System… • Populated by the developer… • How to Add a Message… System-Properties.xsd<Shema> Application Description ErrorType FailureCategory FaultCode FaultDescription FaultSeverity Scope ServiceInstanceID ServiceName MachineName DateTime RoutingURL FaultMessage.xsd<Shema> FaultEnvelope Application Description ErrorType FailureCategory FaultCode FaultDescription FaultSeverity Scope ServiceInstanceID ServiceName Orchestration Exception Handler Expression Shape FaultMsg = Microsoft.BizTalk.ESB.Exception.Core.ExceptionMgmt.CreateFaultMessage(); // Set Fault Message Properties FaultMsg.Body.FailureCategory = "MessageBuild"; FaultMsg.Body.FaultCode = 100981; FaultMsg.Body.FaultDescription = "Some unexpected error occurred"; FaultMsg.Body.FaultSeverity = Microsoft.BizTalk.ESB.Exception.Core.FaultSeverity.Severe; // Add each message to the Fault Message Microsoft.BizTalk.ESB.Exception.Core.ExceptionMgmt.AddMessage(FaultMsg,ApprovedRequest); Microsoft.BizTalk.ESB.Exception.Core.ExceptionMgmt.AddMessage(FaultMsg,DeniedRequest);
Messages and Context Retrieved from ESB Fault Message as Collection of XmlDocuments • Original System.Exception Retrieved from ESB Fault Message • Loop through the Collection of Messages • Do Something cool! Filter {ESB.FaultCode Exists Or ESB.Application Exists Or ESB.Description Exists Or ESB.ErrorType Exists Or ESB.FailureCategory Exists Or ESB.FaultCode Exists Or ESB.FaultDescription Exists Or ESB.FaultSeverity Exists Or ESB.Scope Exists Or ESB.ServiceInstanceID Exists Or ESB.ServiceName Exists} //Retrieve the 2 messages from the Fault Message and submit them... RequestMsg = Microsoft.BizTalk.ESB.Exception.Core.ExceptionMgmt.GetMessage(FaultMsg,"ApprovedRequest"); DeniedMsg = Microsoft.BizTalk.ESB.Exception.Core.ExceptionMgmt.GetMessage(FaultMsg,"DeniedRequest"); //Retrieve the System.Exception from the Original Service newExc = Microsoft.BizTalk.ESB.Exception.Core.ExceptionMgmt.GetException(FaultMsg); Orchestration Try Orchestration Loosely Typed Orchestration Orchestration Exception Handler (Catch) Strongly Typed Orchestration Expression Shape Expression Shape Expression Shape Catch Exception Management - Handlers Strongly Typed Handler Loosely Typed Handler Order Process //Retrieve a Collection of ALL messages from the Fault Message and submit them... msgs = Microsoft.BizTalk.ESB.Exception.Core.ExceptionMgmt.GetMessages(FaultMsg); //Retrieve the System.Exception from the Original Service newExc = Microsoft.BizTalk.ESB.Exception.Core.ExceptionMgmt.GetException(FaultMsg); //Loop through the collection of Messages and do something cool…. while (msgs.MoveNext()) { tmpMsg = msgs.Current; send (MessagePost.PostTmpMsg, tmpMsg); } FaultMsg = Microsoft.BizTalk.ESB.Exception.Core.ExceptionMgmt.CreateFaultMessage(); // Set Fault Message Properties FaultMsg.Body.FailureCategory = "MessageBuild"; FaultMsg.Body.FaultCode = 100981; FaultMsg.Body.FaultDescription = "Some unexpected error occurred"; FaultMsg.Body.FaultSeverity = Microsoft.BizTalk.ESB.Exception.Core.FaultSeverity.Severe; // Add each message to the Fault Message Microsoft.BizTalk.ESB.Exception.Core.ExceptionMgmt.AddMessage(FaultMsg,ApprovedRequest); Microsoft.BizTalk.ESB.Exception.Core.ExceptionMgmt.AddMessage(FaultMsg,DeniedRequest); Add State… ESB Fault Msg Spool • Order Process Receives Message • Exception Caught • ESB Fault Message Created • Messages added to ESB Fault Message • ESB Fault Message Published • Strongly Typed Handler Subscribes to ESB Fault Message • Loosely Typed Handler Subscribes to ESB Fault Message • Message and Context Retrieved from ESB Fault Message • Original System.Exception Retrieved from ESB Fault Message • Do Something cool!
Microsoft ESB Guidance Exception Management <Name><Title> <Company>
Agenda What is a Microsoft ESB Reference Architecture Evolution of Architecture Hub/Bus and Beyond Microsoft ESB Guidance Introduction Client Test Tool ESB Architecture On Ramps Web Services Core Services Exception Management Management Portal Supporting Technologies Microsoft ESB Guidance Roadmap
Generic Send Port SOAP Pipeline Components Generic Send Port WSE Pipeline Components Generic Send Port JMS JMSComponents Generic Send PortOther Pipeline Components Custom Send Port 1..n Pipeline Components Management Portal Web Services Core Services Transformation Agent Intermediary Agent / Custom Application Generic Delivery Agent Resolver Web Service Custom Delivery Agent 1 … n Transformation Web Service Off-ramps On-ramps BizTalk Server Orchestration Engine SOAP Receiver Pipeline Components Context Setter BizTalk Server Transformation Engine What is it? WSE Receiver Pipeline Components Context Setter BizTalk Server Business Rule Engine What does it do? JMS Receiver JMSComponents Context Setter BizTalk ServerMessage Box(Microsoft SQL Server) Custom Receiver 1..n Namespace Components Context Setter Why use it? SharePoint Management Portal Exception Management Exception Handler 1..n Generic Custom Application Provisioning Framework Exception Web Service Processor Exception Management Exception Logger B2B Gateway
ESB Management Portal • What is Management Portal • Basic management portal for ESB guidance • What does it do • Rendering portal for exception management framework • Renders ESB fault message (with persisted data and context) • Renders exception trends via BAM tracking • Later… • Host ESB provisioning • ESB SLA metrics and monitoring • Registration and management of ESB services • Allow for repair-and-resubmit • Why use it • Web-based interface for ESB management • One stop for provisioning and management
ESB Management Portal • View Exception Faults on ESB • View Exceptions Trends (BAM) • View ESB Fault Details • View System.Exception • Inspect Messages and Context associated with ESB Fault • Repair-and-resubmit….
Microsoft ESB Guidance ESB Management Portal <Name><Title> <Company>