> # Creacion y Uso de Catalogos de Datos Profesionales

> El primer paso para crear una definición de Catalogo de Datos es crear un archivo XML que contenga los metadatos para conectarse al sistema externo.

> Cuando se crean metadatos para un Catalogo, se definen los datos en forma de "Entidades", por ejemplo, un grupo de usuarios puede ser una entidad y una consulta para reportes puede ser otra entidad. La estructura del Catalogo permite crear asociaciones entre las entidades (uno a uno, uno a múltiple, etc.), de tal manera que se pueda crear una relación entre un reporte y un grupo de usuarios, para seguir con el ejemplo anterior.

> La definición de una entidad contiene "Identificadores", "Propiedades" y "Métodos". Un método define como un Catalogo interactúa con las aplicaciones externas. Para sistemas accesibles por medio de WebServices, los métodos definen la operación y los nombres de los parámetros del WebService, necesarios para activarlo. Para sistemas con Bases de Datos, los métodos definen las consultas a ejecutar.

> Entidades también pueden definir acciones, usadas para navegar hacia una pagina dentro de SharePoint o fuera del sistema. Acciones fueron diseñadas para soportar escenarios en donde el Catalogo de Datos es usado para mostrar datos solamente, de tal forma que el usuario pueda navegar hacia otros sitios después de ver la información.

> La primera sección de un archivo de definición XML de un Catalogo define el esquema y el nombre del Catalogo:

>     <LobSystem xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>     		xsi:schemaLocation="http://schemas.microsoft.com/office/2006/03/BusinessDataCatalog BDCMetadata.xsd"
>     					Type="Database" Version="1.0.0.0" Name="NombreSistemaLOB"
>     		xmlns="http://schemas.microsoft.com/office/2006/03/BusinessDataCatalog">
>       <Properties>
>         <Property Name="WildCardCharacter" Type="System.String">%</Property>
>       </Properties>

> Nota: Para poder utilizar la InteliSence de Visual Studio, cambie el esquema del archivo XML a ""C:\Archivos de programa\Microsoft Office Servers\12.0\Bin\bdcmetadata.xsd".

> La siguiente sección define la(s) instancia(s) a utilizar y la forma de conectarse al sistema externo (en este caso, conexión con una Base de Datos):

>       <LobSystemInstances>
>         <LobSystemInstance Name="MiInstancia ">
>           <Properties>
>             <Property Name="DatabaseAccessProvider"
>     		Type="Microsoft.Office.Server.ApplicationRegistry.SystemSpecific.Db.DbAccessProvider">SqlServer
>             <Property Name="RdbConnection Data Source" Type="System.String">NombreServidor
>             <Property Name="RdbConnection Initial Catalog" Type="System.String">BaseDeDatos
>             <Property Name="RdbConnection Integrated Security" Type="System.String">SSPI
>             <Property Name="RdbConnection Pooling" Type="System.String">false
>             <Property Name="AuthenticationMode"
>     		Type="Microsoft.Office.Server.ApplicationRegistry.SystemSpecific.Db.DbAuthenticationMode">PassThrough
>           </Properties>
>         </LobSystemInstance>
>       </LobSystemInstances>

> Ahora se puede definir el esquema de los datos a retornar por medio de la sección de entidades:

>       <Entities>
>         <Entity EstimatedInstanceCount="10000" Name="NombreDeEntidad ">

> Entidades contienen Identificadores, que representan el campo llave a buscar en la Base de Datos:

>           <Identifiers>
>             <Identifier TypeName="System.Int32" Name="NombreID" />
>           </Identifiers>

> Luego, los métodos son definidos por medio de un nombre único:

>           <Methods>
>             <Method Name="NombreDeMetodo ">

> Y las propiedades que definen la consulta con los datos que se esperan de la Base de Datos:

>               <Properties>
>                 <Property Name="RdbCommandType"
>     			Type="System.Data.CommandType,
>     			System.Data,
>     			Version=2.0.0.0,
>     			Culture=neutral,
>     			PublicKeyToken=b77a5c561934e089">Text
>                 <Property Name="RdbCommandText"
>     				Type="System.String">SELECT NombreID, Nombre FROM dbo.BaseDeDatos
>               </Properties>

> Los parámetros para la consulta son definidos en la sección de parámetros. Parametros pueden ser de entrada de datos ("In") o de salida de datos ("Return"):

>               <Parameters>
>                 <Parameter Direction="In" Name="@ParametroDeEntrada">

> Y cada parámetro contiene una colección de Tipos de Descriptores, que definen los diferentes campos que lo pueden componer:

>                   <TypeDescriptor TypeName="System.Int32"
>     			  		IdentifierName="NombreID"
>     					AssociatedFilter="NombreID"
>     					Name="NombreID">

> Para un parámetro de salida, la definición podría ser:

>                 <Parameter Direction="Return"
>     		TypeReflectorTypeName="Microsoft.Office.Server.ApplicationRegistry.Infrastructure.DotNetTypeReflector"
>     		Name="NombreParametro">
>                   <TypeDescriptor TypeName="System.Data.IDataReader,
>     			  	System.Data,
>     				Version=2.0.3600.0,
>     				Culture=neutral,
>     				PublicKeyToken=b77a5c561934e089"
>     				IsCollection="true"
>     				Name="NombreDataReader">

> Despues de terminar el archivo de definición, se puede registrar el Catalogo utilizando la página de configuración del Servicio Compartido:

> ### Figura 1: Pagina de Administración de Catalogos de Datos Profesionales

> En donde hay una sección dedicada al manejo de los Catalogos de Datos. Desde la pagina de mantenimiento de los Catalogos, se puede ver una lista con los que actualmente están registrados, y se pueden registrar nuevos o eliminar antiguos:

> ### Figura 2: Pagina de Administración de un Catalogo de Datos Profesionales

> Una vez registrado, SharePoint dispone de algunas WebParts especializadas para mostrar e interactuar con los Catalogos de Datos:

> ### Figura 3: WebParts para Catalogos de Datos Profesionales

> ## Video

> Creación de un archivo de configuración de un Catalogo, su registro y utilización pueden ser vistos en el siguiente video. En el ejemplo, se comienza con la creación de una pequeña base de datos y se termina viendo los datos contenidos en ella en una pagina de SharePoint utilizando las WebParts para Catalogos de Datos.
> Duración: 9:18 minutos

> ## Bajar codigo

> Desde aquí se pueden bajar los archivos para la creación de la Base de Datos y el archivo XML de configuración completo para la definición del Catalogo utilizado en el video.