Skip to content
LambogeniusDocs

BizTalk Orchestration Viewer

The diagram

How shapes are placed and connected, and how to zoom and rearrange them.

VS Code extensionlambogenius.biztalk-orchestration-viewerFree · MIT license

What the diagram shows

Each recognised shape is a box with its type at the top, its name, and up to two references (or the XML element name) below.

  • Order: shapes run from top to bottom in the order they appear in the file.
  • Arrows join each shape to the next one in the flow.
  • Curved lines without arrows join a container to the shapes inside it.
  • Branches: the children of a Decide or Listen shape are spread side by side.
  • Containers: the children of a Scope, Loop, Construct or Exception shape are indented to the right.
  • Colours follow the shape type, the same as the dots in the shape list.

The title above the diagram is the root element's Name (or its target namespace, or the file name), with the namespace below it.

Zoom and arrange

ControlWhat it does
Zoom out / Zoom inChange the zoom in 10% steps, from 55% to 145%. The current zoom is shown between the buttons.
Drag a shapeMove it on the diagram. It snaps to a grid and its lines follow.
Auto arrangePut every shape back where the viewer placed it.

Moved shapes are not saved. Opening another file, or a change to the open file, resets the layout.

Files the viewer can read

In an .odx, the viewer reads only the designer XML between #if __DESIGNER_DATA and #endif. The XLANG/s code after it is ignored:

#if __DESIGNER_DATA
#error Do not define __DESIGNER_DATA.
<?xml version="1.0" encoding="utf-8"?>
<om:MetaModel xmlns:om="http://schemas.microsoft.com/BizTalk/2003/DesignerData">
  <om:Element Type="Module">
    <om:Property Name="Name" Value="Orders" />
    <om:Element Type="Receive">
      <om:Property Name="Name" Value="Receive order" />
      <om:Property Name="PortName" Value="ReceiveOrderPort" />
      <om:Property Name="MessageName" Value="OrderIn" />
    </om:Element>
    ...
  </om:Element>
</om:MetaModel>
#endif // __DESIGNER_DATA
module Orders
{
    ...   // XLANG/s code: not read by the viewer
}

Plain XML with shape-like element names works too:

<Orchestration Name="ProcessOrder">
  <Receive Name="Receive order" Port="OrdersIn" Message="OrderMsg" />
  <Scope Name="Handle order">
    <Transform Name="Order to invoice" MapName="Billing.Maps.OrderToInvoice" />
    <Send Name="Send invoice" Port="InvoicesOut" Message="InvoiceMsg" Operation="Submit" />
  </Scope>
</Orchestration>