<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" version="2.0">
  <channel>
    <title>Clemens Vasters - Talks|TechEd Europe|Architecture</title>
    <link>http://vasters.com/clemensv/</link>
    <description>Cloud Development and Alien Abductions</description>
    <language>en-us</language>
    <copyright>Clemens Vasters</copyright>
    <lastBuildDate>Fri, 25 Jun 2004 11:49:33 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 1.9.7067.0</generator>
    <managingEditor>cvasters@guhhome.com</managingEditor>
    <webMaster>cvasters@guhhome.com</webMaster>
    <item>
      <trackback:ping>http://vasters.com/clemensv/Trackback.aspx?guid=9ba96fdb-8acb-4ce7-a095-f0d5825bb27d</trackback:ping>
      <pingback:server>http://vasters.com/clemensv/pingback.aspx</pingback:server>
      <pingback:target>http://vasters.com/clemensv/PermaLink,guid,9ba96fdb-8acb-4ce7-a095-f0d5825bb27d.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://vasters.com/clemensv/CommentView,guid,9ba96fdb-8acb-4ce7-a095-f0d5825bb27d.aspx</wfw:comment>
      <wfw:commentRss>http://vasters.com/clemensv/SyndicationService.asmx/GetEntryCommentsRss?guid=9ba96fdb-8acb-4ce7-a095-f0d5825bb27d</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <div class="Section1">
          <p>
After providing some background on what <a href="http://staff.newtelligence.net/clemensv/PermaLink.aspx?guid=82350b56-cff0-445d-b917-34cc49c37adf">nodes
and networks</a> are and how they work, I’ll get to how they are configured.
Warning: This post is pretty dense in terms of content ;-)
</p>
          <p>
Each FABRIQ network is defined in a single configuration document with the root element
“fabriq”.
</p>
          <table class="MsoTableGrid" style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; WIDTH: 100%; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse" cellspacing="0" cellpadding="0" width="100%" border="1">
            <tbody>
              <tr>
                <td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 7.5pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 7.5pt; PADDING-BOTTOM: 7.5pt; BORDER-LEFT: windowtext 1pt solid; WIDTH: 100%; PADDING-TOP: 7.5pt; BORDER-BOTTOM: windowtext 1pt solid" valign="top" width="100%">
                  <p class="MsoNormal">
                    <span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Lucida Console'">&lt;</span>
                    <span style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Lucida Console'">fabriq</span>
                    <span style="FONT-SIZE: 10pt; COLOR: fuchsia; FONT-FAMILY: 'Lucida Console'">
                    </span>
                    <span style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Lucida Console'">configuration</span>
                    <span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Lucida Console'">="twoSimpleNodes"</span>
                    <span style="FONT-SIZE: 10pt; COLOR: fuchsia; FONT-FAMILY: 'Lucida Console'">
                    </span>
                    <span style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Lucida Console'">version</span>
                    <span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Lucida Console'">="2.15"</span>
                    <span style="FONT-SIZE: 10pt; COLOR: fuchsia; FONT-FAMILY: 'Lucida Console'">
                    </span>
                    <span style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Lucida Console'">xmlns</span>
                    <span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Lucida Console'">="urn:fabriq-europe-microsoft-com:2004-06:fabriq-configuration"&gt;<br />
  …<br />
&lt;/</span>
                    <span style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Lucida Console'">fabriq</span>
                    <span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Lucida Console'">&gt;</span>
                  </p>
                </td>
              </tr>
            </tbody>
          </table>
          <p>
Each configuration document must have a unique name (at least unique amongst the configurations
you want to use) and must have a version number. The version number has the notation <i>major</i>.<i>minor</i> and
must be incremented whenever you want to submit an updated configuration to a FABRIQ
engine. Changed configurations with the same version number are rejected by the engine.
</p>
          <p>
The first (optional) element within a configuration document is the <i>import</i> element. <i>Import</i> is
a very powerful facility to create and reuse libraries of <a href="http://staff.newtelligence.net/clemensv/PermaLink.aspx?guid=1a502fa5-83db-4c43-bb33-b79bb2133713">handler-types,
pipeline-types</a>, and node-type definitions (that I’ll explain further down
in this document). 
</p>
          <table class="MsoTableGrid" style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; WIDTH: 100%; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse" cellspacing="0" cellpadding="0" width="100%" border="1">
            <tbody>
              <tr>
                <td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 7.5pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 7.5pt; PADDING-BOTTOM: 7.5pt; BORDER-LEFT: windowtext 1pt solid; WIDTH: 100%; PADDING-TOP: 7.5pt; BORDER-BOTTOM: windowtext 1pt solid" valign="top" width="100%">
                  <p class="MsoNormal">
                    <span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Lucida Console'">&lt;</span>
                    <span style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Lucida Console'">fabriq</span>
                    <span style="FONT-SIZE: 10pt; COLOR: fuchsia; FONT-FAMILY: 'Lucida Console'"> …</span>
                    <span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Lucida Console'"> &gt;<br />
   &lt;</span>
                    <span style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Lucida Console'">import</span>
                    <span style="FONT-SIZE: 10pt; COLOR: fuchsia; FONT-FAMILY: 'Lucida Console'">
                    </span>
                    <span style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Lucida Console'">location</span>
                    <span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Lucida Console'">="baseConfig.xml"</span>
                    <span style="FONT-SIZE: 10pt; COLOR: fuchsia; FONT-FAMILY: 'Lucida Console'">
                    </span>
                    <span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Lucida Console'">/&gt;<br />
   &lt;</span>
                    <span style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Lucida Console'">import</span>
                    <span style="FONT-SIZE: 10pt; COLOR: fuchsia; FONT-FAMILY: 'Lucida Console'">
                    </span>
                    <span style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Lucida Console'">location</span>
                    <span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Lucida Console'">="http://myserver/defs/myfabriqdefs.xml"</span>
                    <span style="FONT-SIZE: 10pt; COLOR: fuchsia; FONT-FAMILY: 'Lucida Console'">
                    </span>
                    <span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Lucida Console'">/&gt;<br />
  …<br />
&lt;/</span>
                    <span style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Lucida Console'">fabriq</span>
                    <span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Lucida Console'">&gt;</span>
                  </p>
                </td>
              </tr>
            </tbody>
          </table>
          <p>
Imported definitions become a part of the importing configuration document (the imported
document’s configuration name is not a namespace mechanism) and therefore names
of pipeline-types, handler-types and node-types should be unique across all configuration
files. All names of such items are freeform text and it may make sense to choose a
“urn:xxx” naming scheme to name for them (I don’t do that in my
simple examples here) 
</p>
          <p>
Following the import clause, might be a sequence of handlerType and pipelineType definitions
that are already explained <a href="http://staff.newtelligence.net/clemensv/PermaLink.aspx?guid=1a502fa5-83db-4c43-bb33-b79bb2133713">here</a>. 
</p>
          <p>
The imported and locally declared pipelineTypes can then be applied to nodeTypes.
</p>
          <table class="MsoTableGrid" style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; WIDTH: 100%; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse" cellspacing="0" cellpadding="0" width="100%" border="1">
            <tbody>
              <tr>
                <td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 7.5pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 7.5pt; PADDING-BOTTOM: 7.5pt; BORDER-LEFT: windowtext 1pt solid; WIDTH: 100%; PADDING-TOP: 7.5pt; BORDER-BOTTOM: windowtext 1pt solid" valign="top" width="100%">
                  <p>
                    <span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Lucida Console'">  &lt;</span>
                    <span style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Lucida Console'">nodeType</span>
                    <span style="FONT-SIZE: 10pt; COLOR: fuchsia; FONT-FAMILY: 'Lucida Console'">
                    </span>
                    <span style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Lucida Console'">name</span>
                    <span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Lucida Console'">="FirstNodeType"</span>
                    <span style="FONT-SIZE: 10pt; COLOR: fuchsia; FONT-FAMILY: 'Lucida Console'">
                    </span>
                    <span style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Lucida Console'">xmlns</span>
                    <span style="FONT-SIZE: 10pt; COLOR: fuchsia; FONT-FAMILY: 'Lucida Console'">:</span>
                    <span style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Lucida Console'">mymsg</span>
                    <span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Lucida Console'">="urn:myMessages"&gt;<br /></span>
                    <span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'">(1) <span style="COLOR: blue">&lt;</span><span style="COLOR: maroon">policy</span><span style="COLOR: fuchsia"></span><span style="COLOR: maroon">xmlns</span><span style="COLOR: fuchsia">:</span><span style="COLOR: red">wsu</span><span style="COLOR: blue">="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"<br /></span><span style="COLOR: fuchsia">        </span><span style="COLOR: maroon">xmlns</span><span style="COLOR: fuchsia">:</span><span style="COLOR: red">wssp</span><span style="COLOR: blue">="http://schemas.xmlsoap.org/ws/2002/12/secext"</span><span style="COLOR: fuchsia"></span><span style="COLOR: maroon">xmlns</span><span style="COLOR: fuchsia">:</span><span style="COLOR: red">wsp</span><span style="COLOR: blue">="http://schemas.xmlsoap.org/ws/2002/12/policy"<br /></span><span style="COLOR: fuchsia">        </span><span style="COLOR: maroon">xmlns</span><span style="COLOR: fuchsia">:</span><span style="COLOR: red">wse</span><span style="COLOR: blue">="http://schemas.microsoft.com/wse/2003/06/Policy"&gt;<br /></span>      <span style="COLOR: blue">&lt;</span><span style="COLOR: maroon">wsp:Policy</span><span style="COLOR: fuchsia"></span><span style="COLOR: maroon">wsu</span><span style="COLOR: fuchsia">:</span><span style="COLOR: red">Id</span><span style="COLOR: blue">="Kerb-Sign-Encrypt"&gt;<br /></span>        <span style="COLOR: blue">&lt;</span><span style="COLOR: maroon">wssp:MessageAge</span><span style="COLOR: fuchsia"></span><span style="COLOR: maroon">wsp</span><span style="COLOR: fuchsia">:</span><span style="COLOR: red">Usage</span><span style="COLOR: blue">="wsp:Required"</span><span style="COLOR: fuchsia"></span><span style="COLOR: red">Age</span><span style="COLOR: blue">="3660"</span><span style="COLOR: fuchsia"></span><span style="COLOR: blue">/&gt;<br /></span>        <span style="COLOR: blue">&lt;</span><span style="COLOR: maroon">wsp:MessagePredicate</span><span style="COLOR: fuchsia"></span><span style="COLOR: maroon">wsp</span><span style="COLOR: fuchsia">:</span><span style="COLOR: red">Usage</span><span style="COLOR: blue">="wsp:Required"</span><span style="COLOR: fuchsia"></span><span style="COLOR: red">Dialect</span><span style="COLOR: blue">="http://schemas.xmlsoap.org/2002/12/wsse#part"<br /></span><span style="COLOR: fuchsia">          </span><span style="COLOR: maroon">xmlns</span><span style="COLOR: fuchsia">:</span><span style="COLOR: red">wsa</span><span style="COLOR: blue">="http://schemas.xmlsoap.org/ws/2004/03/addressing"</span><span style="COLOR: fuchsia"></span><span style="COLOR: maroon">xmlns</span><span style="COLOR: fuchsia">:</span><span style="COLOR: red">wse</span><span style="COLOR: blue">="http://schemas.microsoft.com/wse/2003/06/Policy"&gt;<br /></span>          wsp:Body() wsp:Header(wsa:To)
wsp:Header(wsa:Action) wsp:Header(wsa:MessageID) wse:Timestamp()<br />
        <span style="COLOR: blue">&lt;/</span><span style="COLOR: maroon">wsp:MessagePredicate</span><span style="COLOR: blue">&gt;<br /></span>      <span style="COLOR: blue">&lt;/</span><span style="COLOR: maroon">wsp:Policy</span><span style="COLOR: blue">&gt;<br /></span>    <span style="COLOR: blue">&lt;/</span><span style="COLOR: maroon">policy</span><span style="COLOR: blue">&gt;<br /></span>(2) <span style="COLOR: blue">&lt;</span><span style="COLOR: maroon">types</span><span style="COLOR: blue">&gt;<br /></span>      <span style="COLOR: blue">&lt;</span><span style="COLOR: maroon">xsd:schema</span><span style="COLOR: fuchsia"></span><span style="COLOR: red">targetNamespace</span><span style="COLOR: blue">="urn:myMessages"&gt;<br /></span>         <span style="COLOR: blue">&lt;</span><span style="COLOR: maroon">xsd:complexType</span><span style="COLOR: fuchsia"></span><span style="COLOR: red">name</span><span style="COLOR: blue">="myMessage"&gt;<br /></span>             <span style="COLOR: blue">&lt;</span><span style="COLOR: maroon">xsd:sequence</span><span style="COLOR: blue">&gt;<br /></span>                <span style="COLOR: blue">&lt;</span><span style="COLOR: maroon">xsd:element</span><span style="COLOR: fuchsia"></span><span style="COLOR: red">name</span><span style="COLOR: blue">="data"</span><span style="COLOR: fuchsia"></span><span style="COLOR: red">type</span><span style="COLOR: blue">="xsd:string"/&gt;<br /></span>             <span style="COLOR: blue">&lt;/</span><span style="COLOR: maroon">xsd:sequence</span><span style="COLOR: blue">&gt;<br /></span>         <span style="COLOR: blue">&lt;/</span><span style="COLOR: maroon">xsd:complexType</span><span style="COLOR: blue">&gt;</span><br />
      <span style="COLOR: blue">&lt;/</span><span style="COLOR: maroon">xsd:schema</span><span style="COLOR: blue">&gt;<br />
  </span>  <span style="COLOR: blue">&lt;/</span><span style="COLOR: maroon">types</span><span style="COLOR: blue">&gt;<br /></span>(3) <span style="COLOR: blue">&lt;</span><span style="COLOR: maroon">actions</span><span style="COLOR: blue">&gt;<br /></span>(4)   <span style="COLOR: blue">&lt;</span><span style="COLOR: maroon">action</span><span style="COLOR: fuchsia"></span><span style="COLOR: red">name</span><span style="COLOR: blue">="OperationA"</span><span style="COLOR: fuchsia"></span><span style="COLOR: red">match</span><span style="COLOR: blue">="fabriq://MyApp/FirstNode/OperationA"&gt;<br /></span>(5)     <span style="COLOR: blue">&lt;</span><span style="COLOR: maroon">input</span><span style="COLOR: blue">&gt;<br /></span>          <span style="COLOR: blue">&lt;</span><span style="COLOR: maroon">message</span><span style="COLOR: fuchsia"></span><span style="COLOR: red">type</span><span style="COLOR: blue">="xsd:anyType"</span><span style="COLOR: fuchsia"></span><span style="COLOR: blue">/&gt;<br />
  </span>      <span style="COLOR: blue">&lt;/</span><span style="COLOR: maroon">input</span><span style="COLOR: blue">&gt;<br /></span>(6)     <span style="COLOR: blue">&lt;</span><span style="COLOR: maroon">pipeline</span><span style="COLOR: blue">&gt;<br /></span>          <span style="COLOR: blue">&lt;</span><span style="COLOR: maroon">pipeline</span><span style="COLOR: fuchsia"></span><span style="COLOR: red">type</span><span style="COLOR: blue">="transformExternalMessageToMessageAType"/&gt;<br /></span>          <span style="COLOR: blue">&lt;</span><span style="COLOR: maroon">handler</span><span style="COLOR: fuchsia"></span><span style="COLOR: red">type</span><span style="COLOR: blue">="canoncalizeMessageAType"/&gt;<br /></span>          <span style="COLOR: blue">&lt;</span><span style="COLOR: maroon">handler</span><span style="COLOR: fuchsia"></span><span style="COLOR: red">type</span><span style="COLOR: blue">="handleMessageAType"/&gt;<br />
  </span>      <span style="COLOR: blue">&lt;/</span><span style="COLOR: maroon">pipeline</span><span style="COLOR: blue">&gt;<br /></span>      <span style="COLOR: blue">&lt;/</span><span style="COLOR: maroon">action</span><span style="COLOR: blue">&gt;<br /></span>      <span style="COLOR: blue">&lt;</span><span style="COLOR: maroon">action</span><span style="COLOR: fuchsia"></span><span style="COLOR: red">name</span><span style="COLOR: blue">="OperationB"</span><span style="COLOR: fuchsia"></span><span style="COLOR: red">match</span><span style="COLOR: blue">="fabriq://MyApp/FirstNode/OperationB"&gt;<br />
  </span>      <span style="COLOR: blue">&lt;</span><span style="COLOR: maroon">input</span><span style="COLOR: blue">&gt;<br /></span>          <span style="COLOR: blue">&lt;</span><span style="COLOR: maroon">message</span><span style="COLOR: fuchsia"></span><span style="COLOR: red">type</span><span style="COLOR: blue">="mymsg:myMessage"</span><span style="COLOR: fuchsia"></span><span style="COLOR: blue">/&gt;<br /></span>        <span style="COLOR: blue">&lt;/</span><span style="COLOR: maroon">input</span><span style="COLOR: blue">&gt;<br /></span>        <span style="COLOR: blue">&lt;</span><span style="COLOR: maroon">pipeline</span><span style="COLOR: blue">&gt;<br /></span>          <span style="COLOR: blue">&lt;</span><span style="COLOR: maroon">pipeline</span><span style="COLOR: fuchsia"></span><span style="COLOR: red">type</span><span style="COLOR: blue">="transformExternalMessageToMessageBType"/&gt;<br />
  </span>        <span style="COLOR: blue">&lt;</span><span style="COLOR: maroon">handler</span><span style="COLOR: fuchsia"></span><span style="COLOR: red">type</span><span style="COLOR: blue">="canoncalizeMessageBType"/&gt;<br /></span>          <span style="COLOR: blue">&lt;</span><span style="COLOR: maroon">handler</span><span style="COLOR: fuchsia"></span><span style="COLOR: red">type</span><span style="COLOR: blue">="handleMessageBType"/&gt;<br /></span>        <span style="COLOR: blue">&lt;/</span><span style="COLOR: maroon">pipeline</span><span style="COLOR: blue">&gt;<br />
  </span>    <span style="COLOR: blue">&lt;/</span><span style="COLOR: maroon">action</span><span style="COLOR: blue">&gt;<br />
  </span>  <span style="COLOR: blue">&lt;/</span><span style="COLOR: maroon">actions</span><span style="COLOR: blue">&gt;<br />
  &lt;/</span><span style="COLOR: maroon">nodeType</span><span style="COLOR: blue">&gt;</span></span>
                  </p>
                </td>
              </tr>
            </tbody>
          </table>
          <p>
A node-type defines a (mostly) deployment independent one-way service. A nodeType
defines actions, their input messages and the pipelines that process input messages.
The example above shows an exemplary nodeType in most of its glory. Each nodeType
must have a unique name. 
</p>
          <p>
The nodeType <i>may</i> declare a policy (1) on the nodeType-level that is applied
to all messages that flow into any node based on this nodeType. In the example above,
the policy defines two assertions; the first mandates a maximum message age and the
second mandates the presence of a certain set of message headers (both are WS-SecurityPolicy
elements). Policies can also be declared on the action-level as per the configuration
schema, but we’re currently not processing such action-level policies.
</p>
          <p>
The nodeType <i>may</i> declare any number of local types via embedded XML schemas
(2). These types referenced by the input message declaration (5).
</p>
          <p>
Each nodeType declares a collection (3) of actions. An action (4) is a named activity
that has a locally unique name. Each action has a <i>match</i> attribute that is matched
against the &lt;wsa:Action&gt; header (those not too familiar with WS-Addressing should
think of SOAPAction) of an inbound message to determine whether the message is applicable
to the respective action. If the attribute value is “*”, the action applies
to any inbound message and the &lt;wsa:Action&gt; value is essentially ignored.
</p>
          <p>
An action <i>may</i> declare a set of accepted input messages (5). If this declaration
is missing, any input message is considered valid. If the declaration is present,
any message that is declared within the <i>input</i> element is considered valid.
In version 1.0, we do not provide a validation handler to enforce this rule, but it’s
on the to-do list. The primary reason for having this element is not validation, though.
Its presence allows generating WSDL for each node by ways of XSLT transformation quite
easily.
</p>
          <p>
Any action <i>must</i> declare a <a href="http://staff.newtelligence.net/clemensv/PermaLink.aspx?guid=1a502fa5-83db-4c43-bb33-b79bb2133713">pipeline</a> that
defines the processing steps that shall be performed by the action. 
</p>
          <table class="MsoTableGrid" style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; WIDTH: 100%; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse" cellspacing="0" cellpadding="0" width="100%" border="1">
            <tbody>
              <tr>
                <td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 7.5pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 7.5pt; PADDING-BOTTOM: 7.5pt; BORDER-LEFT: windowtext 1pt solid; WIDTH: 100%; PADDING-TOP: 7.5pt; BORDER-BOTTOM: windowtext 1pt solid" valign="top" width="100%">
                  <p>
                    <span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Lucida Console'">&lt;</span>
                    <span style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Lucida Console'">network</span>
                    <span style="FONT-SIZE: 10pt; COLOR: fuchsia; FONT-FAMILY: 'Lucida Console'">
                    </span>
                    <span style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Lucida Console'">name</span>
                    <span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Lucida Console'">="MyApp"&gt;<br /></span>
                    <span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'">    <span style="COLOR: blue">&lt;</span><span style="COLOR: maroon">node</span><span style="COLOR: fuchsia"></span><span style="COLOR: red">host</span><span style="COLOR: blue">="machine1;machine2;machine3;machine4"</span><span style="COLOR: fuchsia"></span><span style="COLOR: red">name</span><span style="COLOR: blue">="FirstNode"</span><span style="COLOR: fuchsia"></span><span style="COLOR: red">type</span><span style="COLOR: blue">="FirstNodeType"&gt;<br /></span>      <span style="COLOR: blue">&lt;</span><span style="COLOR: maroon">ports</span><span style="COLOR: blue">&gt;<br /></span>        <span style="COLOR: blue">&lt;</span><span style="COLOR: maroon">wsa:EndpointReference</span><span style="COLOR: fuchsia"></span><span style="COLOR: maroon">xmlns</span><span style="COLOR: fuchsia">:</span><span style="COLOR: red">wsa</span><span style="COLOR: blue">="http://schemas.xmlsoap.org/ws/2004/03/addressing"&gt;<br /></span>          <span style="COLOR: blue">&lt;</span><span style="COLOR: maroon">wsa:Address</span><span style="COLOR: blue">&gt;</span>msmq://any/fabriqport<span style="COLOR: blue">&lt;/</span><span style="COLOR: maroon">wsa:Address</span><span style="COLOR: blue">&gt;<br /></span>        <span style="COLOR: blue">&lt;/</span><span style="COLOR: maroon">wsa:EndpointReference</span><span style="COLOR: blue">&gt;<br /></span>      <span style="COLOR: blue">&lt;/</span><span style="COLOR: maroon">ports</span><span style="COLOR: blue">&gt;<br /></span>      <span style="COLOR: blue">&lt;</span><span style="COLOR: maroon">output</span><span style="COLOR: blue">&gt;<br /></span>        <span style="COLOR: blue">&lt;</span><span style="COLOR: maroon">route</span><span style="COLOR: fuchsia"></span><span style="COLOR: red">to</span><span style="COLOR: blue">="*"&gt;<br /></span>          <span style="COLOR: blue">&lt;</span><span style="COLOR: maroon">destination</span><span style="COLOR: fuchsia"></span><span style="COLOR: red">priority</span><span style="COLOR: blue">="1"&gt;<br /></span>            <span style="COLOR: blue">&lt;</span><span style="COLOR: maroon">wsa:EndpointReference</span><span style="COLOR: fuchsia"></span><span style="COLOR: maroon">xmlns</span><span style="COLOR: fuchsia">:</span><span style="COLOR: red">wsa</span><span style="COLOR: blue">="http://schemas.xmlsoap.org/ws/2004/03/addressing"&gt;<br /></span>              <span style="COLOR: blue">&lt;</span><span style="COLOR: maroon">wsa:Address</span><span style="COLOR: blue">&gt;</span>fabriq://MyApp/SecondNode<span style="COLOR: blue">&lt;/</span><span style="COLOR: maroon">wsa:Address</span><span style="COLOR: blue">&gt;<br /></span>            <span style="COLOR: blue">&lt;/</span><span style="COLOR: maroon">wsa:EndpointReference</span><span style="COLOR: blue">&gt;<br /></span>          <span style="COLOR: blue">&lt;/</span><span style="COLOR: maroon">destination</span><span style="COLOR: blue">&gt;<br /></span>        <span style="COLOR: blue">&lt;/</span><span style="COLOR: maroon">route</span><span style="COLOR: blue">&gt;<br /></span>      <span style="COLOR: blue">&lt;/</span><span style="COLOR: maroon">output</span><span style="COLOR: blue">&gt;<br /></span>    <span style="COLOR: blue">&lt;/</span><span style="COLOR: maroon">node</span><span style="COLOR: blue">&gt;<br /></span>    <span style="COLOR: blue">&lt;</span><span style="COLOR: maroon">node</span><span style="COLOR: fuchsia"></span><span style="COLOR: red">host</span><span style="COLOR: blue">="machine5;machine6;machine7"</span><span style="COLOR: fuchsia"></span><span style="COLOR: red">name</span><span style="COLOR: blue">="SecondNode"</span><span style="COLOR: fuchsia"></span><span style="COLOR: red">type</span><span style="COLOR: blue">="SecondNodeType"&gt;<br /></span>      <span style="COLOR: blue">&lt;</span><span style="COLOR: maroon">ports</span><span style="COLOR: blue">&gt;<br /></span>        <span style="COLOR: blue">&lt;</span><span style="COLOR: maroon">wsa:EndpointReference</span><span style="COLOR: fuchsia"></span><span style="COLOR: maroon">xmlns</span><span style="COLOR: fuchsia">:</span><span style="COLOR: red">wsa</span><span style="COLOR: blue">="http://schemas.xmlsoap.org/ws/2004/03/addressing"&gt;<br /></span>          <span style="COLOR: blue">&lt;</span><span style="COLOR: maroon">wsa:Address</span><span style="COLOR: blue">&gt;</span>msmq://any/fabriqport<span style="COLOR: blue">&lt;/</span><span style="COLOR: maroon">wsa:Address</span><span style="COLOR: blue">&gt;<br /></span>        <span style="COLOR: blue">&lt;/</span><span style="COLOR: maroon">wsa:EndpointReference</span><span style="COLOR: blue">&gt;<br /></span>      <span style="COLOR: blue">&lt;/</span><span style="COLOR: maroon">ports</span><span style="COLOR: blue">&gt;<br /></span>      <span style="COLOR: blue">&lt;</span><span style="COLOR: maroon">output</span><span style="COLOR: blue">&gt;<br /></span>        <span style="COLOR: blue">&lt;</span><span style="COLOR: maroon">route</span><span style="COLOR: fuchsia"></span><span style="COLOR: red">to</span><span style="COLOR: blue">="*"&gt;<br /></span>          <span style="COLOR: blue">&lt;</span><span style="COLOR: maroon">destination</span><span style="COLOR: fuchsia"></span><span style="COLOR: red">priority</span><span style="COLOR: blue">="1"&gt;<br /></span>            <span style="COLOR: blue">&lt;</span><span style="COLOR: maroon">replyTo</span><span style="COLOR: fuchsia"></span><span style="COLOR: blue">/&gt;<br /></span>          <span style="COLOR: blue">&lt;/</span><span style="COLOR: maroon">destination</span><span style="COLOR: blue">&gt;<br /></span>        <span style="COLOR: blue">&lt;/</span><span style="COLOR: maroon">route</span><span style="COLOR: blue">&gt;<br /></span>      <span style="COLOR: blue">&lt;/</span><span style="COLOR: maroon">output</span><span style="COLOR: blue">&gt;<br /></span>    <span style="COLOR: blue">&lt;/</span><span style="COLOR: maroon">node</span><span style="COLOR: blue">&gt;<br /></span>  <span style="COLOR: blue">&lt;/</span><span style="COLOR: maroon">network</span><span style="COLOR: blue">&gt;</span></span>
                  </p>
                </td>
              </tr>
            </tbody>
          </table>
          <p>
A <i>network</i> defines an application consisting of nodes. Each node is based on
a nodeType and adds the deployment dependent aspects and the handling of output to
the nodeType’s base-definitions.
</p>
          <p>
A node may be assigned to any number of hosts or to “any” host by specifying
the wildcard “*”. It may declare for itself a set of <i>ports</i> (the
runtime chooses a default endpoint using ES transport if the declaration is absent)
at which is can be reached. Each port is declared as an endpoint-reference. If the
address specified in the endpoint reference has a hostname of “any”, the
address is automatically mapped to a physical address based on the node’s hostname
list whenever required. In “SecondNode” in the above example, the runtime
will map msmq://any/fabriqport to one of msmq://machine5/fabriqport, msmq://machine6/fabriqport,
or msmq://machine7/fabriqport. When the runtime wants to route to the node MyApp/SecondNode,
it will pick one of these physical targets at random and send the message there (and
therefore balance across the hosting machines).
</p>
          <p>
The <i>output </i>section of the node declaration defines <i>routes</i>. A route can
be selected based on a combination of the “@To” or the “@Action”
property (analogous to the respective WS-Addressing headers) contained in the message(s)
that come(s) out of the pipeline after processing. If you omit the “to”
and/or “action” attribute, the route will apply to any destination and/or
any action. If multiple routes apply, a copy of the message will be sent along each
of those routes.
</p>
          <p>
Each route has a set of <i>destinations</i>. A destination contains a prioritized
endpoint reference or the reserved <i>replyTo</i> element. The runtime will load balance
across destinations with the same priority and if sending fails on a destination with
high priority (1 is highest, 9 is lowest, 0 is disabled), the engine will fall back
to a lower priority destination as a backup route. The <i>replyTo</i> destination
causes the runtime to pick up the wsa:ReplyTo header contained in the input message
and send to the endpoint indicated by that header. The wsa:ReplyTo header that is
sent into a FABRIQ network is always propagated throughout the network (even if the
message is split) and this element therefore enables the external client to dynamically
supply a destination where the network drops off the final message(s) after processing
is complete.
</p>
        </div>
        <img width="0" height="0" src="http://vasters.com/clemensv/aggbug.ashx?id=9ba96fdb-8acb-4ce7-a095-f0d5825bb27d" />
      </body>
      <title>Configuring FABRIQ Networks and Nodes</title>
      <guid isPermaLink="false">http://vasters.com/clemensv/PermaLink,guid,9ba96fdb-8acb-4ce7-a095-f0d5825bb27d.aspx</guid>
      <link>http://vasters.com/clemensv/2004/06/25/Configuring+FABRIQ+Networks+And+Nodes.aspx</link>
      <pubDate>Fri, 25 Jun 2004 11:49:33 GMT</pubDate>
      <description>&lt;div class=Section1&gt;
&lt;p&gt;
After providing some background on what &lt;a href="http://staff.newtelligence.net/clemensv/PermaLink.aspx?guid=82350b56-cff0-445d-b917-34cc49c37adf"&gt;nodes
and networks&lt;/a&gt; are and how they work, I&amp;#8217;ll get to how they are configured.
Warning: This post is pretty dense in terms of content ;-)
&lt;/p&gt;
&lt;p&gt;
Each FABRIQ network is defined in a single configuration document with the root element
&amp;#8220;fabriq&amp;#8221;.
&lt;/p&gt;
&lt;table class=MsoTableGrid style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; WIDTH: 100%; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse" cellspacing=0 cellpadding=0 width="100%" border=1&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 7.5pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 7.5pt; PADDING-BOTTOM: 7.5pt; BORDER-LEFT: windowtext 1pt solid; WIDTH: 100%; PADDING-TOP: 7.5pt; BORDER-BOTTOM: windowtext 1pt solid" valign=top width="100%"&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Lucida Console'"&gt;&amp;lt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Lucida Console'"&gt;fabriq&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: fuchsia; FONT-FAMILY: 'Lucida Console'"&gt; &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Lucida Console'"&gt;configuration&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Lucida Console'"&gt;="twoSimpleNodes"&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: fuchsia; FONT-FAMILY: 'Lucida Console'"&gt; &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Lucida Console'"&gt;version&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Lucida Console'"&gt;="2.15"&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: fuchsia; FONT-FAMILY: 'Lucida Console'"&gt; &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Lucida Console'"&gt;xmlns&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Lucida Console'"&gt;="urn:fabriq-europe-microsoft-com:2004-06:fabriq-configuration"&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;#8230;&lt;br&gt;
&amp;lt;/&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Lucida Console'"&gt;fabriq&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Lucida Console'"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;
Each configuration document must have a unique name (at least unique amongst the configurations
you want to use) and must have a version number. The version number has the notation &lt;i&gt;major&lt;/i&gt;.&lt;i&gt;minor&lt;/i&gt; and
must be incremented whenever you want to submit an updated configuration to a FABRIQ
engine. Changed configurations with the same version number are rejected by the engine.
&lt;/p&gt;
&lt;p&gt;
The first (optional) element within a configuration document is the &lt;i&gt;import&lt;/i&gt; element. &lt;i&gt;Import&lt;/i&gt; is
a very powerful facility to create and reuse libraries of &lt;a href="http://staff.newtelligence.net/clemensv/PermaLink.aspx?guid=1a502fa5-83db-4c43-bb33-b79bb2133713"&gt;handler-types,
pipeline-types&lt;/a&gt;, and node-type definitions (that I&amp;#8217;ll explain further down
in this document). 
&lt;/p&gt;
&lt;table class=MsoTableGrid style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; WIDTH: 100%; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse" cellspacing=0 cellpadding=0 width="100%" border=1&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 7.5pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 7.5pt; PADDING-BOTTOM: 7.5pt; BORDER-LEFT: windowtext 1pt solid; WIDTH: 100%; PADDING-TOP: 7.5pt; BORDER-BOTTOM: windowtext 1pt solid" valign=top width="100%"&gt;
&lt;p class=MsoNormal&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Lucida Console'"&gt;&amp;lt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Lucida Console'"&gt;fabriq&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: fuchsia; FONT-FAMILY: 'Lucida Console'"&gt; &amp;#8230;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Lucida Console'"&gt; &amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Lucida Console'"&gt;import&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: fuchsia; FONT-FAMILY: 'Lucida Console'"&gt; &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Lucida Console'"&gt;location&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Lucida Console'"&gt;="baseConfig.xml"&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: fuchsia; FONT-FAMILY: 'Lucida Console'"&gt; &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Lucida Console'"&gt;/&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Lucida Console'"&gt;import&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: fuchsia; FONT-FAMILY: 'Lucida Console'"&gt; &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Lucida Console'"&gt;location&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Lucida Console'"&gt;="http://myserver/defs/myfabriqdefs.xml"&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: fuchsia; FONT-FAMILY: 'Lucida Console'"&gt; &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Lucida Console'"&gt;/&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;#8230;&lt;br&gt;
&amp;lt;/&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Lucida Console'"&gt;fabriq&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Lucida Console'"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;
Imported definitions become a part of the importing configuration document (the imported
document&amp;#8217;s configuration name is not a namespace mechanism) and therefore names
of pipeline-types, handler-types and node-types should be unique across all configuration
files. All names of such items are freeform text and it may make sense to choose a
&amp;#8220;urn:xxx&amp;#8221; naming scheme to name for them (I don&amp;#8217;t do that in my
simple examples here) 
&lt;/p&gt;
&lt;p&gt;
Following the import clause, might be a sequence of handlerType and pipelineType definitions
that are already explained &lt;a href="http://staff.newtelligence.net/clemensv/PermaLink.aspx?guid=1a502fa5-83db-4c43-bb33-b79bb2133713"&gt;here&lt;/a&gt;. 
&lt;/p&gt;
&lt;p&gt;
The imported and locally declared pipelineTypes can then be applied to nodeTypes.
&lt;/p&gt;
&lt;table class=MsoTableGrid style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; WIDTH: 100%; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse" cellspacing=0 cellpadding=0 width="100%" border=1&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 7.5pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 7.5pt; PADDING-BOTTOM: 7.5pt; BORDER-LEFT: windowtext 1pt solid; WIDTH: 100%; PADDING-TOP: 7.5pt; BORDER-BOTTOM: windowtext 1pt solid" valign=top width="100%"&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Lucida Console'"&gt;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Lucida Console'"&gt;nodeType&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: fuchsia; FONT-FAMILY: 'Lucida Console'"&gt; &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Lucida Console'"&gt;name&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Lucida Console'"&gt;="FirstNodeType"&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: fuchsia; FONT-FAMILY: 'Lucida Console'"&gt; &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Lucida Console'"&gt;xmlns&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: fuchsia; FONT-FAMILY: 'Lucida Console'"&gt;:&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Lucida Console'"&gt;mymsg&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Lucida Console'"&gt;="urn:myMessages"&amp;gt;&lt;br&gt;
&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'"&gt;(1) &lt;span style="COLOR: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;policy&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt; &lt;/span&gt;&lt;span style="COLOR: maroon"&gt;xmlns&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt;:&lt;/span&gt;&lt;span style="COLOR: red"&gt;wsu&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"&lt;br&gt;
&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;xmlns&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt;:&lt;/span&gt;&lt;span style="COLOR: red"&gt;wssp&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="http://schemas.xmlsoap.org/ws/2002/12/secext"&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt; &lt;/span&gt;&lt;span style="COLOR: maroon"&gt;xmlns&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt;:&lt;/span&gt;&lt;span style="COLOR: red"&gt;wsp&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="http://schemas.xmlsoap.org/ws/2002/12/policy"&lt;br&gt;
&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;xmlns&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt;:&lt;/span&gt;&lt;span style="COLOR: red"&gt;wse&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="http://schemas.microsoft.com/wse/2003/06/Policy"&amp;gt;&lt;br&gt;
&lt;/span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;wsp:Policy&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt; &lt;/span&gt;&lt;span style="COLOR: maroon"&gt;wsu&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt;:&lt;/span&gt;&lt;span style="COLOR: red"&gt;Id&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="Kerb-Sign-Encrypt"&amp;gt;&lt;br&gt;
&lt;/span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;wssp:MessageAge&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt; &lt;/span&gt;&lt;span style="COLOR: maroon"&gt;wsp&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt;:&lt;/span&gt;&lt;span style="COLOR: red"&gt;Usage&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="wsp:Required"&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;Age&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="3660"&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;/&amp;gt;&lt;br&gt;
&lt;/span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;wsp:MessagePredicate&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt; &lt;/span&gt;&lt;span style="COLOR: maroon"&gt;wsp&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt;:&lt;/span&gt;&lt;span style="COLOR: red"&gt;Usage&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="wsp:Required"&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;Dialect&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="http://schemas.xmlsoap.org/2002/12/wsse#part"&lt;br&gt;
&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;xmlns&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt;:&lt;/span&gt;&lt;span style="COLOR: red"&gt;wsa&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="http://schemas.xmlsoap.org/ws/2004/03/addressing"&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt; &lt;/span&gt;&lt;span style="COLOR: maroon"&gt;xmlns&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt;:&lt;/span&gt;&lt;span style="COLOR: red"&gt;wse&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="http://schemas.microsoft.com/wse/2003/06/Policy"&amp;gt;&lt;br&gt;
&lt;/span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wsp:Body() wsp:Header(wsa:To)
wsp:Header(wsa:Action) wsp:Header(wsa:MessageID) wse:Timestamp()&lt;br&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;wsp:MessagePredicate&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;br&gt;
&lt;/span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;wsp:Policy&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;br&gt;
&lt;/span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;policy&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;br&gt;
&lt;/span&gt;(2) &lt;span style="COLOR: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;types&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;br&gt;
&lt;/span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;xsd:schema&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;targetNamespace&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="urn:myMessages"&amp;gt;&lt;br&gt;
&lt;/span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;xsd:complexType&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;name&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="myMessage"&amp;gt;&lt;br&gt;
&lt;/span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;xsd:sequence&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;br&gt;
&lt;/span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;xsd:element&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;name&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="data"&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;type&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="xsd:string"/&amp;gt;&lt;br&gt;
&lt;/span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;xsd:sequence&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;br&gt;
&lt;/span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;xsd:complexType&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt; 
&lt;br&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;xsd:schema&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;br&gt;
&amp;nbsp; &lt;/span&gt;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;types&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;br&gt;
&lt;/span&gt;(3) &lt;span style="COLOR: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;actions&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;br&gt;
&lt;/span&gt;(4) &amp;nbsp;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;action&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;name&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="OperationA"&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;match&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="fabriq://MyApp/FirstNode/OperationA"&amp;gt;&lt;br&gt;
&lt;/span&gt;(5) &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;input&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;br&gt;
&lt;/span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;message&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;type&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="xsd:anyType"&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;/&amp;gt;&lt;br&gt;
&amp;nbsp; &lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;input&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;br&gt;
&lt;/span&gt;(6) &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;pipeline&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;br&gt;
&lt;/span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;pipeline&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;type&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="transformExternalMessageToMessageAType"/&amp;gt;&lt;br&gt;
&lt;/span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;handler&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;type&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="canoncalizeMessageAType"/&amp;gt;&lt;br&gt;
&lt;/span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;handler&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;type&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="handleMessageAType"/&amp;gt;&lt;br&gt;
&amp;nbsp; &lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;pipeline&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;br&gt;
&lt;/span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;action&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;br&gt;
&lt;/span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;action&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;name&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="OperationB"&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;match&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="fabriq://MyApp/FirstNode/OperationB"&amp;gt;&lt;br&gt;
&amp;nbsp; &lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;input&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;br&gt;
&lt;/span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;message&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;type&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="mymsg:myMessage"&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;/&amp;gt;&lt;br&gt;
&lt;/span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;input&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;br&gt;
&lt;/span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;pipeline&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;br&gt;
&lt;/span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;pipeline&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;type&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="transformExternalMessageToMessageBType"/&amp;gt;&lt;br&gt;
&amp;nbsp; &lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;handler&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;type&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="canoncalizeMessageBType"/&amp;gt;&lt;br&gt;
&lt;/span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;handler&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;type&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="handleMessageBType"/&amp;gt;&lt;br&gt;
&lt;/span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;pipeline&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;br&gt;
&amp;nbsp; &lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;action&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;br&gt;
&amp;nbsp; &lt;/span&gt;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;actions&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;br&gt;
&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;nodeType&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;
A node-type defines a (mostly) deployment independent one-way service. A nodeType
defines actions, their input messages and the pipelines that process input messages.
The example above shows an exemplary nodeType in most of its glory. Each nodeType
must have a unique name. 
&lt;/p&gt;
&lt;p&gt;
The nodeType &lt;i&gt;may&lt;/i&gt; declare a policy (1) on the nodeType-level that is applied
to all messages that flow into any node based on this nodeType. In the example above,
the policy defines two assertions; the first mandates a maximum message age and the
second mandates the presence of a certain set of message headers (both are WS-SecurityPolicy
elements). Policies can also be declared on the action-level as per the configuration
schema, but we&amp;#8217;re currently not processing such action-level policies.
&lt;/p&gt;
&lt;p&gt;
The nodeType &lt;i&gt;may&lt;/i&gt; declare any number of local types via embedded XML schemas
(2). These types referenced by the input message declaration (5).
&lt;/p&gt;
&lt;p&gt;
Each nodeType declares a collection (3) of actions. An action (4) is a named activity
that has a locally unique name. Each action has a &lt;i&gt;match&lt;/i&gt; attribute that is matched
against the &amp;lt;wsa:Action&amp;gt; header (those not too familiar with WS-Addressing should
think of SOAPAction) of an inbound message to determine whether the message is applicable
to the respective action. If the attribute value is &amp;#8220;*&amp;#8221;, the action applies
to any inbound message and the &amp;lt;wsa:Action&amp;gt; value is essentially ignored.
&lt;/p&gt;
&lt;p&gt;
An action &lt;i&gt;may&lt;/i&gt; declare a set of accepted input messages (5). If this declaration
is missing, any input message is considered valid. If the declaration is present,
any message that is declared within the &lt;i&gt;input&lt;/i&gt; element is considered valid.
In version 1.0, we do not provide a validation handler to enforce this rule, but it&amp;#8217;s
on the to-do list. The primary reason for having this element is not validation, though.
Its presence allows generating WSDL for each node by ways of XSLT transformation quite
easily.
&lt;/p&gt;
&lt;p&gt;
Any action &lt;i&gt;must&lt;/i&gt; declare a &lt;a href="http://staff.newtelligence.net/clemensv/PermaLink.aspx?guid=1a502fa5-83db-4c43-bb33-b79bb2133713"&gt;pipeline&lt;/a&gt; that
defines the processing steps that shall be performed by the action. 
&lt;/p&gt;
&lt;table class=MsoTableGrid style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; WIDTH: 100%; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse" cellspacing=0 cellpadding=0 width="100%" border=1&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 7.5pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 7.5pt; PADDING-BOTTOM: 7.5pt; BORDER-LEFT: windowtext 1pt solid; WIDTH: 100%; PADDING-TOP: 7.5pt; BORDER-BOTTOM: windowtext 1pt solid" valign=top width="100%"&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Lucida Console'"&gt;&amp;lt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: maroon; FONT-FAMILY: 'Lucida Console'"&gt;network&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: fuchsia; FONT-FAMILY: 'Lucida Console'"&gt; &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Lucida Console'"&gt;name&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Lucida Console'"&gt;="MyApp"&amp;gt;&lt;br&gt;
&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Lucida Console'"&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;node&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;host&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="machine1;machine2;machine3;machine4"&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;name&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="FirstNode"&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;type&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="FirstNodeType"&amp;gt;&lt;br&gt;
&lt;/span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;ports&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;br&gt;
&lt;/span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;wsa:EndpointReference&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt; &lt;/span&gt;&lt;span style="COLOR: maroon"&gt;xmlns&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt;:&lt;/span&gt;&lt;span style="COLOR: red"&gt;wsa&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="http://schemas.xmlsoap.org/ws/2004/03/addressing"&amp;gt;&lt;br&gt;
&lt;/span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;wsa:Address&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;msmq://any/fabriqport&lt;span style="COLOR: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;wsa:Address&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;br&gt;
&lt;/span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;wsa:EndpointReference&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;br&gt;
&lt;/span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;ports&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;br&gt;
&lt;/span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;output&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;br&gt;
&lt;/span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;route&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;to&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="*"&amp;gt;&lt;br&gt;
&lt;/span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;destination&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;priority&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="1"&amp;gt;&lt;br&gt;
&lt;/span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;wsa:EndpointReference&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt; &lt;/span&gt;&lt;span style="COLOR: maroon"&gt;xmlns&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt;:&lt;/span&gt;&lt;span style="COLOR: red"&gt;wsa&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="http://schemas.xmlsoap.org/ws/2004/03/addressing"&amp;gt;&lt;br&gt;
&lt;/span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;wsa:Address&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;fabriq://MyApp/SecondNode&lt;span style="COLOR: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;wsa:Address&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;br&gt;
&lt;/span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;wsa:EndpointReference&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;br&gt;
&lt;/span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;destination&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;br&gt;
&lt;/span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;route&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;br&gt;
&lt;/span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;output&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;br&gt;
&lt;/span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;node&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;br&gt;
&lt;/span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;node&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;host&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="machine5;machine6;machine7"&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;name&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="SecondNode"&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;type&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="SecondNodeType"&amp;gt;&lt;br&gt;
&lt;/span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;ports&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;br&gt;
&lt;/span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;wsa:EndpointReference&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt; &lt;/span&gt;&lt;span style="COLOR: maroon"&gt;xmlns&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt;:&lt;/span&gt;&lt;span style="COLOR: red"&gt;wsa&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="http://schemas.xmlsoap.org/ws/2004/03/addressing"&amp;gt;&lt;br&gt;
&lt;/span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;wsa:Address&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;msmq://any/fabriqport&lt;span style="COLOR: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;wsa:Address&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;br&gt;
&lt;/span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;wsa:EndpointReference&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;br&gt;
&lt;/span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;ports&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;br&gt;
&lt;/span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;output&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;br&gt;
&lt;/span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;route&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;to&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="*"&amp;gt;&lt;br&gt;
&lt;/span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;destination&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt; &lt;/span&gt;&lt;span style="COLOR: red"&gt;priority&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="1"&amp;gt;&lt;br&gt;
&lt;/span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;replyTo&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;/&amp;gt;&lt;br&gt;
&lt;/span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;destination&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;br&gt;
&lt;/span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;route&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;br&gt;
&lt;/span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;output&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;br&gt;
&lt;/span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span style="COLOR: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;node&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;br&gt;
&lt;/span&gt;&amp;nbsp; &lt;span style="COLOR: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: maroon"&gt;network&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;
A &lt;i&gt;network&lt;/i&gt; defines an application consisting of nodes. Each node is based on
a nodeType and adds the deployment dependent aspects and the handling of output to
the nodeType&amp;#8217;s base-definitions.
&lt;/p&gt;
&lt;p&gt;
A node may be assigned to any number of hosts or to &amp;#8220;any&amp;#8221; host by specifying
the wildcard &amp;#8220;*&amp;#8221;. It may declare for itself a set of &lt;i&gt;ports&lt;/i&gt; (the
runtime chooses a default endpoint using ES transport if the declaration is absent)
at which is can be reached. Each port is declared as an endpoint-reference. If the
address specified in the endpoint reference has a hostname of &amp;#8220;any&amp;#8221;, the
address is automatically mapped to a physical address based on the node&amp;#8217;s hostname
list whenever required. In &amp;#8220;SecondNode&amp;#8221; in the above example, the runtime
will map msmq://any/fabriqport to one of msmq://machine5/fabriqport, msmq://machine6/fabriqport,
or msmq://machine7/fabriqport. When the runtime wants to route to the node MyApp/SecondNode,
it will pick one of these physical targets at random and send the message there (and
therefore balance across the hosting machines).
&lt;/p&gt;
&lt;p&gt;
The &lt;i&gt;output &lt;/i&gt;section of the node declaration defines &lt;i&gt;routes&lt;/i&gt;. A route can
be selected based on a combination of the &amp;#8220;@To&amp;#8221; or the &amp;#8220;@Action&amp;#8221;
property (analogous to the respective WS-Addressing headers) contained in the message(s)
that come(s) out of the pipeline after processing. If you omit the &amp;#8220;to&amp;#8221;
and/or &amp;#8220;action&amp;#8221; attribute, the route will apply to any destination and/or
any action. If multiple routes apply, a copy of the message will be sent along each
of those routes.
&lt;/p&gt;
&lt;p&gt;
Each route has a set of &lt;i&gt;destinations&lt;/i&gt;. A destination contains a prioritized
endpoint reference or the reserved &lt;i&gt;replyTo&lt;/i&gt; element. The runtime will load balance
across destinations with the same priority and if sending fails on a destination with
high priority (1 is highest, 9 is lowest, 0 is disabled), the engine will fall back
to a lower priority destination as a backup route. The &lt;i&gt;replyTo&lt;/i&gt; destination
causes the runtime to pick up the wsa:ReplyTo header contained in the input message
and send to the endpoint indicated by that header. The wsa:ReplyTo header that is
sent into a FABRIQ network is always propagated throughout the network (even if the
message is split) and this element therefore enables the external client to dynamically
supply a destination where the network drops off the final message(s) after processing
is complete.
&lt;/p&gt;
&lt;/div&gt;
&lt;img width="0" height="0" src="http://vasters.com/clemensv/aggbug.ashx?id=9ba96fdb-8acb-4ce7-a095-f0d5825bb27d" /&gt;</description>
      <comments>http://vasters.com/clemensv/CommentView,guid,9ba96fdb-8acb-4ce7-a095-f0d5825bb27d.aspx</comments>
      <category>Talks/TechEd Europe/Architecture</category>
      <category>Technology/FABRIQ</category>
    </item>
  </channel>
</rss>