Modelo BDC de ejemplo
Última modificación: jueves, 15 de abril de 2010
Hace referencia a: SharePoint Server 2010
El siguiente modelo de BDC de ejemplo representa un tipo de contenido externo de cliente para un sistema externo de tipo Servicio web. El ejemplo, que usa el servicio web AdventureWorks de ejemplo que se incluye con SDK de SharePoint 2010, muestra lo siguiente:
Adición de un tipo de contenido externo simple WSCustomer con un objeto Method
Adición de un objeto MethodInstance para convertir el Method en ejecutable en tiempo de ejecución
Asociar dos tipos de contenido externos, Cliente y Pedido
Ejemplo: Adición de una entidad simple con un objeto Method
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<Model xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://schemas.microsoft.com/windows/2007/BusinessDataCatalog BDCMetadata.xsd" Name="AdventureWorksWSModel" IsCached="false" xmlns="https://schemas.microsoft.com/windows/2007/BusinessDataCatalog">
<LobSystems>
<LobSystem Type="Wcf" Name="AdventureWorksWS">
<Properties>
<Property Name="WsdlFetchAuthenticationMode" Type="System.String">PassThrough</Property>
<Property Name="WcfMexDiscoMode" Type="System.String">Disco</Property>
<Property Name="WcfMexDocumentUrl" Type="System.String">http://webserver:90/webservice.asmx?wsdl</Property>
<Property Name="WcfProxyNamespace" Type="System.String">BCSServiceProxy</Property>
<Property Name="WildcardCharacter" Type="System.String">*</Property>
</Properties>
<LobSystemInstances>
<LobSystemInstance Name="AdventureWorksWS">
<Properties>
<Property Name="WcfAuthenticationMode" Type="System.String">PassThrough</Property>
<Property Name="WcfEndpointAddress" Type="System.String">http://webserver:90/webservice.asmx</Property>
<Property Name="ShowInSearchUI" Type="System.String"></Property>
</Properties>
</LobSystemInstance>
</LobSystemInstances>
<Entities>
<Entity Namespace="AdventureWorks” Version="1.0.0.0" EstimatedInstanceCount="10000" Name="WSCustomer" DefaultDisplayName="WSCustomer">
<Properties>
<Property Name="OutlookItemType" Type="System.String">Contact</Property>
</Properties>
<Identifiers>
<Identifier TypeName="System.Int32" Name="CustomerId" />
</Identifiers>
<Methods>
<Method IsStatic="false" Name="GetCustomerById">
<Parameters>
<Parameter Direction="In" Name="customerId">
<TypeDescriptor TypeName="System.Int32" IdentifierName="CustomerId" Name="customerId" />
</Parameter>
<Parameter Direction="Return" Name="GetCustomerById">
<TypeDescriptor TypeName="BCSServiceProxy.SalesCustomer, AdventureWorksWS" Name="GetCustomerById">
<TypeDescriptors>
<TypeDescriptor TypeName="System.Int32" ReadOnly="true" IdentifierName="CustomerId" Name="CustomerId" />
<TypeDescriptor TypeName="System.String" Name="Title" />
<TypeDescriptor TypeName="System.String" Name="FirstName">
<Properties>
<Property Name="OfficeProperty" Type="System.String">FirstName</Property>
</Properties>
</TypeDescriptor>
<TypeDescriptor TypeName="System.String" Name="MiddleName" />
<TypeDescriptor TypeName="System.String" Name="LastName">
<Properties>
<Property Name="OfficeProperty" Type="System.String">LastName</Property>
</Properties>
</TypeDescriptor>
<TypeDescriptor TypeName="System.String" Name="EmailAddress" />
<TypeDescriptor TypeName="System.String" Name="Phone" />
<TypeDescriptor TypeName="System.DateTime" Name="ModifiedDate" />
</TypeDescriptors>
</TypeDescriptor>
</Parameter>
</Parameters>
<MethodInstances>
<!- See below>
</MethodInstances>
</Method>
</Methods>
</Entity>
</Entities>
</LobSystem>
</LobSystems>
</Model>
Ejemplo: Adición de un MethodInstance para convertir el objeto Method en ejecutable en tiempo de ejecución
En el ejemplo anterior, Method no es ejecutable en tiempo de ejecución. En el ejemplo de código siguiente se muestra cómo se puede agregar un MethodInstance a la entidad Customer anterior para convertir Method en ejecutable.
<MethodInstances>
<MethodInstance Type="SpecificFinder" ReturnParameterName="GetCustomerById" Default="true" Name="GetCustomerById" DefaultDisplayName="Read Item WSCustomer">
<Properties>
<Property Name="LastDesignedOfficeItemType" Type="System.String">Contact</Property>
</Properties>
</MethodInstance>
</MethodInstances>
Associating Two entities, Customer and Order
La asociación es un tipo de MethodInstance. En el ejemplo de código siguiente se muestra cómo asociar dos entidades. Se supone que existe otro tipo de entidad denominado Order con un método que devuelve un parámetro denominado 'Orders ya definido en el modelo. En este caso, el modelo asocia las dos entidades, Customer y Order.
<!—BDC has three types of association operations - AssociationNavigator, Associate and DisAssociate -->
<MethodInstances>
<Association Name="GetOrdersByCustomer" Type="AssociationNavigator" ReturnParameterName="Orders">
<!—Name of the Source entity in the association -->
<Source Name="Customer" Namespace="AdventureWorks">
<!—Name of the destination entity in the association -->
<Destination Name="Order" Namespace=" AdventureWorks">
</Association>
</MethodInstances>
Nota
Por cuestiones de brevedad y para completar este ejemplo, los objetos LobSystem y LobSystemInstance no se muestran para el tipo de contenido externo.
Vea Esquema BDCMetadata en la documentación del esquema del modelo BDC y Servicios de conectividad empresarial: XML de ejemplo y ejemplos de código para obtener más ejemplos.