Metadata for the HelloFriend IBF Solution
Following the overwhelming response for HelloFriend IBF solution tutorial, I would like to put up the Metadata that has been described in Part2, Part3 and Part4 of the 5-part article on building the HelloFriend IBF Solution in today's post. Hope this will serve as a good reference in your attempt to build the IBF solution and get you started on this exciting new technology to leverage Office Application development... Good luck!!!
<?xml version="1.0" encoding="utf-8"?>
<Metadata Version="1.0.0.0" xmlns="
http://schemas.microsoft.com/InformationBridge/2004/Metadata">
<MetadataScopes xmlns:xsd="
http://www.w3.org/2001/XMLSchema"
xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance">
<MetadataScope Name="
http://InformationBridge/SayHello"
DisplayName="SayHello" Version="1.0">
<Entities>
<Entity Name="Friend" DefaultReferenceSchemaName="FriendSchema"
DefaultViewName="GreetingMessage">
<Views>
<View Name="GreetingMessage"
SchemaName="GreetingMessageSchema" IsList="false">
<MenuItemDefinition
MenuType="1">
<MenuDefinitionOperationInstance OperationName="DefineMenuItemName" Index="0">
<TransformationInstances>
<TransformationInstance TransformationName="MenuCaptionCreation" Index="1" InputOperationIndex="-1001"
InputOperationOutputSchemaIndex="1">
</TransformationInstance>
</TransformationInstances>
</MenuDefinitionOperationInstance>
</MenuItemDefinition>
<ViewLocators>
<ViewLocator ReferenceSchemaName="FriendSchema">
<OperationInstance OperationName="GetGreetingMessage" Index="0">
<TransformationInstances>
<TransformationInstance Index="1" InputOperationIndex="-1001" InputOperationOutputSchemaIndex="1">
</TransformationInstance>
</TransformationInstances>
</OperationInstance>
</ViewLocator>
</ViewLocators>
<Actions>
<Action Name="Display Greeting Message" Type="EnterContext" IsSequentialExecution="true">
<MenuItemDefinition MenuType="0">
</MenuItemDefinition>
<OperationInstances>
<OperationInstance OperationName="QueryMenu" Index="1">
</OperationInstance>
<OperationInstance OperationName="ShowAssociations" Index="2">
<TransformationInstances>
<TransformationInstance Index="1" InputOperationIndex="1" InputOperationOutputSchemaIndex="1">
</TransformationInstance>
</TransformationInstances>
</OperationInstance>
<OperationInstance OperationName="ShowRegion" Index="3">
<TransformationInstances>
<TransformationInstance TransformationName="GreetingMessageTransform" Index="1"
InputOperationIndex="-1" InputOperationOutputSchemaIndex="1">
</TransformationInstance>
</TransformationInstances>
</OperationInstance>
</OperationInstances>
</Action>
</Actions>
</View>
</Views>
</Entity>
</Entities>
<Ports>
<Port xsi:type="PortFileXml" Name="FriendPort"
IsCached="false" AuthenticationTypeValue="Windows" Comments="FriendPort specifies
the XML Schema Definition that should be used to validate
the input
structure of a Friend Entity received from an Office Document.
">
<Data>
<xs:schema elementFormDefault="qualified"
xmlns:xs="
http://www.w3.org/2001/XMLSchema">
<xs:element
name="Friend">
<xs:complexType>
<xs:attribute name="Name" type="xs:string" use="required">
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:schema>
</Data>
</Port>
<Port xsi:type="PortFileXml" Name="GreetingMessagePort"
IsCached="false" AuthenticationTypeValue="Windows" Comments="GreetingMessagePort provides
the definition of the schema to validate the structure of 
the view
GreetingMessage returned by the execution of the operation 
GetGreetingMessage()
on the entity Friend.">
<Data>
<xs:schema elementFormDefault="qualified"
xmlns:xs="
http://www.w3.org/2001/XMLSchema">
<xs:element
name="Salutation" type="xs:string">
</xs:element>
<xs:element
name="GreetingMessage">
<xs:complexType>
<xs:sequence>
<xs:element ref="Salutation">
</xs:element>
<xs:element ref="Name">
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element
name="Name" type="xs:string">
</xs:element>
</xs:schema>
</Data>
</Port>
<Port xsi:type="PortFileXml" Name="GreetingMessageTransformPort"
IsCached="false" AuthenticationTypeValue="Windows">
<Data>
<xsl:stylesheet
version="1.0" xmlns:xsl="
http://www.w3.org/1999/XSL/Transform"
xmlns:iwb="
http://schemas.microsoft.com/InformationBridge/2004"
xmlns:ab="urn-GreetingService-Data">
<xsl:template
match="ab:GreetingMessage">
<iwb:Region iwb:AssociationName="Region3" iwb:Enabled="true" iwb:EntityName="Friend"
iwb:MetadataScopeName="
http://InformationBridge/SayHello">
<iwb:RegionProperties RegionName="Greet Friend" Caption="Greetings to a Friend"
Description="Greet Friend Page" ShowAs="ExpandedRegion" TypeName="SayHello.UserInterface.GreetingMessage">
<xsl:choose>
<xsl:when test="count(ab:Name) >= 1">
<xsl:copy-of select="/">
</xsl:copy-of>
</xsl:when>
<xsl:otherwise>
<ab:GreetingMessage>
<EmptyResult xmlns="">Hello Stranger</EmptyResult>
</ab:GreetingMessage>
</xsl:otherwise>
</xsl:choose>
</iwb:RegionProperties>
</iwb:Region>
</xsl:template>
</xsl:stylesheet>
</Data>
</Port>
<Port xsi:type="PortSoap" Name="GreetingService"
Location="
http://localhost/IBFSimpleSolution/SayHello.asmx"
IsCached="false" AuthenticationTypeValue="Windows" Comments="GreetingService port
provides the location of ASP.NET file, in which this
service has
been implemented.">
</Port>
<Port xsi:type="PortFileXml" Name="MenuCaptionCreationInPort"
IsCached="false" AuthenticationTypeValue="None" Comments="Supplies the menu caption
for the IBF task pane.">
<Data>
<xsl:stylesheet
version="1.0" xmlns:xsl="
http://www.w3.org/1999/XSL/Transform"
xmlns:iwb="
http://schemas.microsoft.com/InformationBridge/2004"
xmlns:ab="urn-GreetingService-Data">
<xsl:template
match="/">
<iwb:ViewProperties Description="Default Friend view" ShowAs="MenuItem">
<xsl:attribute name="Caption">Greeting Message for <xsl:value-of select="
//@Name"></xsl:value-of></xsl:attribute>
</iwb:ViewProperties>
</xsl:template>
</xsl:stylesheet>
</Data>
</Port>
<Port xsi:type="PortFileXml" Name="MenuCaptionCreationOutPort"
IsCached="false" AuthenticationTypeValue="Windows">
<Data>
<s:element name="ViewProperties"
type="ViewPropertiesType" xmlns:s="
http://www.w3.org/2001/XMLSchema">
<s:complexType
name="ViewPropertiesType">
<s:sequence>
<s:any namespace="##any" processContents="lax" minOccurs="0">
</s:any>
</s:sequence>
<s:attribute name="Caption" type="s:string" use="optional" default="">
</s:attribute>
<s:attribute name="Description" type="s:string" use="optional" default="">
</s:attribute>
</s:complexType>
</s:element>
</Data>
</Port>
<Port xsi:type="PortAssembly" Name="UIAssembly"
Location="C:\Inetpub\wwwroot\IBFSimpleSolution\UserInterface\bin\Debug\SayHello.UserInterface.dll"
IsCached="false" AuthenticationTypeValue="None" Comments="UI Developed to render information
retreived from IBF-compatible Web Service.">
</Port>
</Ports>
<Operations>
<Operation xsi:type="OperationTransformationAggregation"
Name="DefineMenuItemName" EntityName="Friend" TimeOut="0">
<InputSchemas>
<SchemaInstance
SchemaName="MenuCaptionCreationOutputSchema" Index="1">
</SchemaInstance>
</InputSchemas>
<OutputSchemas>
<SchemaInstance
SchemaName="MenuCaptionCreationOutputSchema" Index="1">
</SchemaInstance>
</OutputSchemas>
</Operation>
<Operation xsi:type="OperationSoapRequest"
Name="GetGreetingMessage" EntityName="Friend" TimeOut="0" IsUpdate="false" PortName="GreetingService"
SoapAction="
http://InformationBridge/SayHello/GetGreetingMessage"
SoapBodyWrapper="q1:GetGreetingMessage" xmlns:q1="
http://InformationBridge/SayHello">
<InputSchemas>
<SchemaInstance
SchemaName="FriendSchema" Index="1">
</SchemaInstance>
</InputSchemas>
<OutputSchemas>
<SchemaInstance
SchemaName="GreetingMessageSchema" Index="1">
</SchemaInstance>
</OutputSchemas>
</Operation>
<Operation xsi:type="OperationTransformationAggregation"
Name="MenuDefinitionPassThru" EntityName="Friend" TimeOut="0" Comments="This operation
is used to define the name of the menu displayed in the IBF Task Pane">
<InputSchemas>
<SchemaInstance
SchemaName="AnySchema" Index="1">
</SchemaInstance>
</InputSchemas>
<OutputSchemas>
<SchemaInstance
SchemaName="AnySchema" Index="1">
</SchemaInstance>
</OutputSchemas>
</Operation>
<Operation xsi:type="OperationQueryMenu"
Name="QueryMenu" TimeOut="0" QueryMenuTypeValue="" MenuType="1">
<InputSchemas>
<SchemaInstance
SchemaName="AnySchema" Index="1">
</SchemaInstance>
</InputSchemas>
<OutputSchemas>
<SchemaInstance
SchemaName="AnySchema" Index="1">
</SchemaInstance>
</OutputSchemas>
</Operation>
<Operation xsi:type="OperationCustom"
Name="ShowAssociations" TimeOut="0" OperationTypeName="MSIBF.UI.ShowAssociations">
<InputSchemas>
<SchemaInstance
SchemaName="AnySchema" Index="1">
</SchemaInstance>
</InputSchemas>
<OutputSchemas>
<SchemaInstance
SchemaName="AnySchema" Index="1">
</SchemaInstance>
</OutputSchemas>
</Operation>
<Operation xsi:type="OperationCustom"
Name="ShowRegion" TimeOut="0" OperationTypeName="MSIBF.UI.ShowRegion" PortName="UIAssembly">
<InputSchemas>
<SchemaInstance
SchemaName="AnySchema" Index="1">
</SchemaInstance>
</InputSchemas>
<OutputSchemas>
<SchemaInstance
SchemaName="AnySchema" Index="1">
</SchemaInstance>
</OutputSchemas>
</Operation>
</Operations>
<Transformations>
<Transformation xsi:type="TransformationXsl"
Name="GreetingMessageTransform" InputSchemaName="AnySchema" OutputSchemaName="AnySchema"
PortName="GreetingMessageTransformPort" ApplyTranslations="false">
</Transformation>
<Transformation xsi:type="TransformationXsl"
Name="MenuCaptionCreation" InputSchemaName="FriendSchema" OutputSchemaName="MenuCaptionCreationOutputSchema"
PortName="MenuCaptionCreationInPort" ApplyTranslations="false">
</Transformation>
</Transformations>
<Schemas>
<Schema xsi:type="SchemaString" Name="AnySchema"
Comments="A Schema to be used for operations involving plain String input and output">
</Schema>
<Schema xsi:type="SchemaXsd" Name="FriendSchema"
Comments="FriendSchema is the schema corresponding to the entity "Friend".

Corresponding
to this schema is a class named "Friend" in the WebService.
This
schema maps directly to the class "Friend" and is the therefore
an XML 
Representation of the class structure." PortName="FriendPort">
</Schema>
<Schema xsi:type="SchemaXsd" Name="GreetingMessageSchema"
PortName="GreetingMessagePort">
</Schema>
<Schema xsi:type="SchemaXsd" Name="MenuCaptionCreationOutputSchema"
PortName="MenuCaptionCreationOutPort">
</Schema>
</Schemas>
</MetadataScope>
</MetadataScopes>
<OperationTypes xmlns:xsd="
http://www.w3.org/2001/XMLSchema"
xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance">
<OperationType Name="MSIBF.UI.ShowAssociations">
</OperationType>
<OperationType Name="MSIBF.UI.ShowRegion">
</OperationType>
</OperationTypes>
<Timestamp xmlns:md="
http://schemas.microsoft.com/InformationBridge/2004/Metadata"
xmlns:mdd="
http://schemas.microsoft.com/InformationBridge/2004/MetadataDesigner/Schema"
xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance">
<MetadataScopeTimestamps>
<MetadataScopeTimestamp MetadataScopeName="
http://InformationBridge/SayHello">
<EntityTimestamps>
<EntityTimestamp EntityName="Friend">
</EntityTimestamp>
</EntityTimestamps>
</MetadataScopeTimestamp>
</MetadataScopeTimestamps>
</Timestamp>
</Metadata>