biztalk mapping patterns & an introduction to wabs maps

30
brought to you by BizTalk Mapping Patterns & an Introduction to WABS Maps SANDRO PEREIRA sessions. discussions. networking and more BIZTALK SUMMIT 2014, LONDON MARCH 03-04

Upload: biztalk360

Post on 06-May-2015

755 views

Category:

Technology


1 download

DESCRIPTION

BizTalk Mapping Patterns & an Introduction to WABS Maps, Maps or Transformations are one of the most common components in the integration processes. They act as essential translators in the decoupling between the different systems to connect. In the last couple of month I have been writing a free eBook about “BizTalk Mapping Patterns and Best Practices” that will soon be released, and this will be a good opportunity for you to see what you can expect. In this session I will try to address and explain some common mapper problems, specifying best practices and some of the best ways to address common problems by choosing the right approach. For me there is no perfect solution to solve a particular mapping problem, and most of the times we can find several ways to solve it depending on the experience and knowledge that we have or technologies and tools that we like to use, but all of them have advantages and disadvantages. Not always the best solution is the best approach to address the problem, you must understanding the problem and the requirements, researching the available options and taking actions to achieve your goals sometimes base on: •What’s the best approach to have performance? Is my message so big that I really need to worry about performance? Do I really need High performance? •Can I easily maintain this map? It is easy to read and understand? What the estimated effort for debug, finding and fix problems? •What the expertise levels required to create and maintain this map approach? What much time do I need to develop? Finally I will try to make an introduction to the Windows Azure BizTalk Service maps, at the first glance the map editor seems to be the same that we used in BizTalk, but although the concept be the same this is a very different editor. And hopefully you will enhance your skills when using BizTalk Server and WABS Mapper editor BizTalk Summit 2014, London March 03-04 Brought to you by BizTalk360

TRANSCRIPT

Page 1: BizTalk Mapping Patterns & An Introduction to WABS Maps

brought to you by

BizTalk Mapping Patterns & an Introduction to WABS MapsSANDRO

PEREIRA

sessions. discussions. networking and

more

BIZTALK SUMMIT 2014, LONDON

MARCH 03-04

Page 2: BizTalk Mapping Patterns & An Introduction to WABS Maps

Senior Software Developer at DevScope Microsoft Integration MVP since 2011

Writer of numerous articles for Portuguese eMagazine “Programar” Author “Sandro Pereira BizTalk Blog”

http://sandroaspbiztalkblog.wordpress.com Member of “BizTalkAdminsblogging.com” and “BizTalk Brasil”

community Member NetPonto community MSDN BizTalk Forums Moderator TechNet Wiki author (Wiki Ninja) TechNet Gallery, Code Gallery and CodePlex contributor Public speaker Technical Reviewer PACKT Publishing

BizTalk Server 2010 Cookbook (April 2012)

Sandro Pereira

Page 3: BizTalk Mapping Patterns & An Introduction to WABS Maps

Agenda

BizTalk Mapper PatternsCommon mapper problems and solutions

Introduction to Windows Azure BizTalk Services MapsMain differences between BizTalk Mapper Design and

the WABS Transform Designer Best Practices (if we have time)

Page 4: BizTalk Mapping Patterns & An Introduction to WABS Maps

BizTalk Mapping Patterns

Integration

~200 pages

Soon… 4 Technical Reviewers

12 Mapper Patterns

Free eBook

Author

Page 5: BizTalk Mapping Patterns & An Introduction to WABS Maps

BizTalk Mapper PatternsCommon mapper problems and solutions

Page 6: BizTalk Mapping Patterns & An Introduction to WABS Maps

BizTalk Mapper PatternsDIRECT TRANSLATION PATTERNHow can we transform the incoming message if the target message have a different semantic representation?

DATA TRANSLATION PATTERNHow can we transform the incoming message if the target message have a different data formats?

CONTENT ENRICHER PATTERNHow can we transform the incoming message if the message originator does not have all the required data items available expected by the target message?

Page 7: BizTalk Mapping Patterns & An Introduction to WABS Maps

BizTalk Mapper PatternsAGGREGATOR PATTERNHow do we combine the results of individual, but related messages, so that they can be processed as a whole to generate the target message?

CONTENT FILTER PATTERN (Data Cleaning Pattern)How can we transform the incoming message if the target message requires less information that the originator message?

SPLITTER PATTERNHow can we process an incoming message into a series of outgoing messages so that they can be sent to multiple recipient and processed in different ways?

Page 8: BizTalk Mapping Patterns & An Introduction to WABS Maps

BizTalk Mapper PatternsGROUPING PATTERNHow can we transform the incoming message if the target message requires that the body of the message must be delivered grouped in a certain way?

SORTING PATTERNHow can we transform the incoming message if the target message requires that the body of the message must be delivered in a certain order?

CONDITIONAL PATTERNHow can we transform the incoming message if the target message requires that the data items available in message originator can be passed according on a set of conditions?

Page 9: BizTalk Mapping Patterns & An Introduction to WABS Maps

BizTalk Mapper PatternsLOOPING PATTERNHow can we transform the incoming message if the target and/or originator message have a complex and recursive structures? How can we apply a set of common procedures to be apply many times?

CANONICAL DATA MODEL PATTERNHow do you process messages that are semantically equivalent, but arrive in a different format? And How can you minimize dependencies when integrating applications that use different data formats?

NAME-VALUE TRANSFORMATION PATTERNHow can we transform the incoming message if the target message requires a name–value pair (NVP) structure? Or if the target message requires a hierarchical schema but the originator message have a NVP structure?

Page 10: BizTalk Mapping Patterns & An Introduction to WABS Maps

Functoids

Demos

BizTalk Mapper Patterns specifying best practices and some of the best ways to address some of your needs within the context of message transformation.

InspectCustom

XSLT

Page 11: BizTalk Mapping Patterns & An Introduction to WABS Maps

Introduction to Windows Azure BizTalk Services MapsMain differences between BizTalk Mapper Design and the WABS Transform Designer

Page 12: BizTalk Mapping Patterns & An Introduction to WABS Maps

BizTalk Mapper Design vs Transform Designer

BizTalk Mapper Design• Functoids (Advanced, Conversion,

Cumulative, Database, Date and Time, Logical, Mathematical, Scientific, String)

• The transformation are created using XSLT

Transform Designer• Operations (String Operations, Loop

Operations, List Operations, Cumulative Operations, Date / Time Operations, Miscellaneous Operations, Expressions)

• The transformation are created using Extensible Application Markup Language (XAML)

Page 13: BizTalk Mapping Patterns & An Introduction to WABS Maps

Operations available in maps at design time

BizTalk Mapper Design• All functionalities at design time

• Debugging, Testing and validate

Transform Designer• Limited operations

• Only support testing (and validation while testing)

Page 14: BizTalk Mapping Patterns & An Introduction to WABS Maps

Extensibility

BizTalk Mapper Design• Importing Custom XSLT external code

• Importing External .NET assembly

Transform Designer• Importing Custom XSLT external code

Note:

• Custom Inline XSLT is not supported.

• You can only use CSharp Scripting inside WABS maps.

Page 15: BizTalk Mapping Patterns & An Introduction to WABS Maps

Operations

Demos

WABS Maps an introduction to the new Map Editor. How to migrate BizTalk Maps to WABS Maps and how to apply some of the Mapper Patterns in this new editor.

TestingMigrate

Page 16: BizTalk Mapping Patterns & An Introduction to WABS Maps

Best PracticesWhat best practices we must implement to improve developing performance

Page 17: BizTalk Mapping Patterns & An Introduction to WABS Maps

Challenges with large data transformationsDifficult to use with large schemas.

Hard to maintain complex maps

Hard to track relationships

No search capabilities

No cut/copy/paste or undo

Page 18: BizTalk Mapping Patterns & An Introduction to WABS Maps

Page 4Page 3Page 2

Best Practices 1: Using Map Grid Pages

Grid Pages

Grid Preview

• Create unlimiteddifferent pages

• Isolate different partsof a map

• Work with different parts ofa map separately

• Must create connectedfunctoids on the same layer

• Find and work with a portion of a large map

Use pages to reduce complexity of a map

Page 1

ItemID

Qty

UnitPrice

Record

PO

Status

Order

PO Number

Date

Item No

Quantity

Order Status

Destination Schema

Date Total Price

(..)

X

Source Schema

Page 19: BizTalk Mapping Patterns & An Introduction to WABS Maps

Best Practices 1: Using Map Grid Pages Pros:

• Readability and Maintainability: For new and even for expert developers, or

even when working with developers from other teams, using multiple grid pages

will make the map easier to read and maintain if necessary make changes

• Level of effort: by being easier to read and maintain you will reduce the

development time.

• Documentation: Using this technique will also help you to make a better map

documentation, and sometimes this could be enough to self-documenting the map

Page 20: BizTalk Mapping Patterns & An Introduction to WABS Maps

Best Practices 2: Using labels

Page 21: BizTalk Mapping Patterns & An Introduction to WABS Maps

Best Practices 2: Using labels

Pros:

• Readability and Maintainability: For new and even for expert developers, or

even when working with developers from other teams, using multiple link labels will

make the map easier and faster to read and maintain if necessary to make any

changes.

• Level of effort: again, by being easier to read and maintain you will reduce the

development time.

• Documentation: Using this technique will also help you to make a better map

documentation

Page 22: BizTalk Mapping Patterns & An Introduction to WABS Maps

Testing should be a continuous process as you build your map, not

only at the end of development, but when necessary or when an

important mapping block is complete

Best Practices 3: Testing should be a continuous process

Page 23: BizTalk Mapping Patterns & An Introduction to WABS Maps

Scripting Functoid

• Allows you to execute custom code

• Can execute custom script: C# .NET / VB.NET / JScript.NET / XSLT / XSLT Call Template

• But we need to rewrite over and over again!

Reasons to develop custom or use built-in functoids:

• They are reusable

• More easy to read (visually on the map grid)

• Careful: All functoids must have a unique ID in order for the runtime to distinguish

them.

• The ID is an integer and all IDs below 10000 are reserved for Microsoft use.

Best Practices 4: Built-in and Custom Functoids vs Scripting Functoid

Page 24: BizTalk Mapping Patterns & An Introduction to WABS Maps

Best Practices 4: Built-in and Custom Functoids vs Scripting Functoid

How we can decide what to use:

• Can this transformation be reused several times in this map or can be reused in

several maps?

• Will this transformation cost me several hours of work?

• Will this transformation be easier to read and maintain?

• Is this approach which that will bring me more profits?

Page 25: BizTalk Mapping Patterns & An Introduction to WABS Maps

Best Practices 4: Built-in and Custom Functoids vs Scripting Functoid

Basic guidelines to decide what to use:

• First guideline: I prefer to use the built-in functoids whenever possible unless is

not possible to accomplished or the functoid chain becomes too complex to unravel

easily.

• Second guideline: I turn to custom scripting functoids, XSLT or C#, only when I

cannot solve my problem with the built-in functoids or is too complex to accomplish

using built-in functoids.

• Third guideline: If is a repeated transformation rule that you can use in several

maps you then you should use or create a custom functoid to solve this problem.

Page 26: BizTalk Mapping Patterns & An Introduction to WABS Maps

Pros:

• Direct XSLT is more powerful, fewer limitations

than the BizTalk Mapper

• Improved performance

• XSLT file can be developed separately and hosted

in a BizTalk map

Cons:

• Not quite as intuitive

• Functoids are more easy to read (visually on the map

grid)

• Requires “geeky” coding skills

• Loss of visual map representation

Best Practices 5: External Custom XSLT vs BizTalk Mapper

Page 27: BizTalk Mapping Patterns & An Introduction to WABS Maps

Inspecting the XSLT generated by the compiler provides insight into

how the map functions works

Also provides another debugging option

In Solution Explorer, right-click *.btm file and select “Validate Map”

Link to generated XSLT shown in Output window

Best Practices 6: Reviewing the XSLT

Page 28: BizTalk Mapping Patterns & An Introduction to WABS Maps

New Mapper in BizTalk Server 2010

Better UI for complex or large transformations• Reduce background “noise” using

highlight propagation

• Auto-scrolling and sibling coalescing help locate nodes

Enhanced functionality• Support for search

• Improved productivity with cut/copy/paste/move/ undo

• Predictive match

• Improved support for documenting map and readability

Page 29: BizTalk Mapping Patterns & An Introduction to WABS Maps

BizTalk Server 2013 Improvements

Performance enhancements

The Mapper uses the XSLCompiledTransform class. Previous BizTalk

Server versions used the XslTransform class, which is obsolete. The

XSLCompiledTransform class provides performance enhancements, including:

Once the Load method completes successfully, the Transform method can

be called simultaneously from multiple threads.

The new XSLT processor compiles the XSLT style sheet to a common

intermediate format. Once the style sheet is compiled, it can be cached

and reused.

Page 30: BizTalk Mapping Patterns & An Introduction to WABS Maps

[email protected]/in/sandropereira@sandro_asp sandroaspbiztalkblog.wordpress.com

Questions?

www.devscope.net