MOSS 2007 Catalogo de datos empresariales BDC (4)

Como comentaba anteriormente, los filtros especificados en el LOB, serán los que nos permitirán realizar búsquedas dentro del Business Data List WebPart (Lista de datos profesionales) [Yo hubiera preferido la traducción de Bussines por Negocio en vez de Profesionales], como comenté en el post anterior, para poder realizar estas búsquedas dentro del webpart, debemos especificar estos campos en el LOB.


Lo primero que debemos hacer es añadir a nuestra sentencia SQL, los nexos necesarios en la clausula WHERE :

SELECT CustomerID, CompanyName, ContactName, ContactTitle, Address, City, Region, PostalCode, Country, Phone, Fax 
FROM
dbo.Customers
WHERE
(CustomerID LIKE @CustomerID) AND (CompanyName LIKE @CompanyName) AND (ContactName LIKE @ContactName)

En el ejemplo superior he añadido CompanyName y ContactName. Una vez que hemos extendido nuestra cláusula WHERE debemos añadir los FilterDescriptor en la sección FilterDescriptors de nuestro LOB.

  <FilterDescriptors>
<FilterDescriptor Type=”Wildcard” Name=”CustomerID”>
<Properties>
<Property Name=”UsedForDisambiguation Type=”System.Boolean”>true</Property>
</Properties>
</FilterDescriptor>
<FilterDescriptor Type=”Wildcard” Name=”CompanyName />
<FilterDescriptor Type=”Wildcard” Name=”ContactName />
</FilterDescriptors>

El mecanismo que usaremos para el filtro dependerá del tipo de nexo que estemos usando en la cláusula WHERE,  si quisiéramos localizar un registro por igualdad, deberíamos usar ExactMacth. Los tipos posibles son:



  • Limit – Para especificar el número de filas que devolverá la consulta (SELECT TOP)
  • ExactMatch – Para igualdades entre terminos.
  • Wildcard – Para las similitudes.
  • Range – Para especificar rangos, desde hasta (WHERE Unidades > mínimo AND Unidades < máximo)
  • UserContext – Pasa el dominiousuario del usuario que realiza la consulta
  • Username – El nombre del usuario identificado en el Single-Sign-On (SSO)
  • Password – La clave del usuario identificado por el SSO
  • LastId – El último id usado
  • SsoTicket – El ticket completo de SSO.

Por último hay que añadir los filtros como parámetros de entrada obviamente, al igual que hicimos con el CustomerID para recuperar los datos de un cliente en particular.

<Parameter Direction=”In” Name=”@CompanyName“>
<TypeDescriptor TypeName=”System.String” AssociatedFilter=”CompanyName Name=”CompanyName”>
<DefaultValues>
<DefaultValue MethodInstanceName=”ClientesFinder” Type=”System.String”>%</DefaultValue>
<DefaultValue MethodInstanceName=”ClientesSpecificFinder” Type=”System.String”>%</DefaultValue>
</DefaultValues>
</TypeDescriptor>
</Parameter>
<Parameter Direction=”In” Name=”@ContactName“>
<TypeDescriptor TypeName=”System.String” AssociatedFilter=”ContactName Name=”ContactName”>
<DefaultValues>
<DefaultValue MethodInstanceName=”ClientesFinder” Type=”System.String”>%</DefaultValue>
<DefaultValue MethodInstanceName=”ClientesSpecificFinder” Type=”System.String”>%</DefaultValue>
</DefaultValues>
</TypeDescriptor>
</Parameter>

Para estos parámetros  también debemos incluir los valores por defecto que se usará para recuperar los datos, aquí entre en juego un apartado de los filtros que es importante aunque sea opcional, se trata del UsedForDisambiguation, que indicará el campo que diferenciará los resultados cuando una búsqueda retorne múltiples respuestas.


Una cosa más para terminar con el LOB, se trata de las relaciones. En el LOB se corresponden con el elemento Associations, que viene definido después de las entidades.

<Associations>
<Association AssociationMethodEntityName=”Clientes”
AssociationMethodName
=”PedidosDeCliente”
AssociationMethodReturnParameterName
=”Orderss”
Name
=”Pedidos de Cliente”
IsCached
=”true”>
<SourceEntity Name=”Clientes” />
<DestinationEntity Name=”Pedidos” />
</Association>
</Associations>

AssociationMethodEntityName es el método de la entidad que tiene la relación, en este caso Clientes, el método de la entidad que devolverá datos de la relación es AsssociationMethodName, PedidosDeCliente en este caso, los parámetros que son devueltos por dicho método y que contienen el resultado de la relación, el nombre de la relación “Pedidos de Cliente” y dentro de la asociación, se especifican que entidades dentro del LOB, se están relacionando. En este caso la entidad de Clientes con la entidad de Pedidos.


 

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *