FilterDescriptor

Los filtros son la herramienta fundamental con la que el Catálogo de datos profesionales captura entradas de usuario (o del sistema) y las envía a la invocación de API de servidor. Los objetos FilterDescriptor describen en qué lugar de una serie compleja de parámetros se debe insertar un valor de filtro. Para ello, se "etiquetan" los descriptores de método que representan parámetros complejos de una definición de métodos para indicar dónde debe producirse la inserción. Es importante tener en cuenta que el cliente debe proporcionar la funcionalidad de filtrado; los objetos FilterDescriptor simplemente forman un mecanismo para presentarle esto al usuario final. Los objetos FilterDescriptor pertenecen a los objetos Method (es decir, se encuentran dentro de éstos). Posteriormente se denominan objetos TypeDescriptor.

Es posible que los usuarios deseen recuperar las instancias de una entidad que cumpla determinados criterios. Por ejemplo, es posible que un usuario desee mostrar los clientes cuyos nombres empiezan por "A" o los pedidos realizados por un cliente determinado. La API que se emplea para recuperar clientes requiere que esta entrada de usuario se pase como tercer parámetro de cadena de la invocación. El autor de los metadatos creará un FilterDescriptor de un tipo de caracteres comodín y, a continuación, etiquetará el TypeDescriptor raíz del tercer parámetro con este FilterDescriptor recién creado. Muchos de estos objetos FilterDescriptor pueden estar asociados a un único método (API). A continuación, los usuarios, eligen el filtro que desean en tiempo de ejecución, especifican un valor para dicho filtro y el Catálogo de datos profesionales pasa el valor de dicho filtro al método del servidor, y lo inserta en la ubicación exacta prevista por el servidor que, a continuación, devuelve sólo las filas que el usuario desea ver.

Por ejemplo, supongamos que el método Finder de la entidad Customer se define de la siguiente manera:

SELECT * FROM Customers WHERE CustomerID >= lo

Supongamos que el método tiene un valor de parámetro predeterminado de lo = 0. Los metadatos de FilterDescriptor indican que si el usuario reemplaza el valor lo, se puede limitar el rango de instancias devueltas. En este caso, el usuario puede proporcionar el valor lo y consultar resultados específicos.

Nota

FilterDescriptor es un objeto de metadatos mientras que los filtros son objetos de tiempo de ejecución. Los objetos FilterDescriptor describen los filtros disponibles en un método.

Patrones de filtrado

Los sistemas de línea de negocio (LOB) proporcionan diversos mecanismos de filtrado. El Catálogo de datos profesionales aísla patrones habituales para poder proporcionar a los usuarios la misma semántica de filtrado, independientemente del origen de los datos. El Catálogo de datos profesionales admite los siguientes filtros y patrones de filtrado:

  • Wildcard filter   Limita las instancias devueltas a aquellas en que field like value, donde "value" puede contener el carácter comodín asterisco (*). Los usuarios pueden utilizar este tipo de filtro para presentar filtros más sencillos como "starts with" y "contains".

Nota

El Catálogo de datos profesionales usa el carácter comodín especificado en los metadatos del objeto LobSystem con fines de filtrado.

  • Comparison filter   Limita las instancias devueltas a aquellas en que the condition is met.. SQL lo admite con la cláusula WHERE.

  • Filtro Limit    Limita el número de instancias devueltas a n. SQL lo admite con la cláusula SELECT TOP. El uso de un filtro Limit puede contribuir a evitar que haya esperas largas, que se agote el tiempo de espera y que los usuarios realicen consultas incorrectas que requieran un gran volumen de datos.

  • UserContext   Limita las instancias en función del contexto del usuario actual. Este filtro indica al Catálogo de datos profesionales que añada el dominio y el nombre del usuario actual de Microsoft Windows a la llamada al método.

  • Username   Limita las instancias mediante un nombre de usuario de inicio de sesión único (SSO). Este filtro indica al Catálogo de datos profesionales que pase el nombre de usuario de SSO como parte de un parámetro a la llamada al método.

  • Password   Funciona con el filtro Username. Este filtro indica al Catálogo de datos profesionales que pase la contraseña de SSO como parte de un parámetro a la llamada al método.

    Nota

    La definición del método de servidor debe admitir los filtros. Sólo entonces podrá, de forma contextual, usar filtros para reflejar en la aplicación cliente la funcionalidad que está disponible en el servidor. Los metadatos simplemente declaran los filtros que admite un método.

  • UserProfile    Un tipo de filtro simple que se puede especificar en la definición FilterDescriptor. Para usar este filtro, declare un filtro del tipo "UserProfile" y agregue una propiedad System.String con el nombre "UserProfilePropertyName", cuyo valor es el nombre de una propiedad de perfil de usuario. El Catálogo de datos profesionales buscará el perfil del usuario actual, leerá el valor de la propiedad con dicho nombre y enviará esa información a la invocación del servidor.

  • SSOTicket   Indica al Catálogo de datos profesionales que pase el vale SSO del inicio de sesión único como parte de un parámetro a la llamada al método.

  • LastIdSeen   Permite realizar fragmentaciones para los miembros de la enumeración IDEnumerator . Para servicios web y otras aplicaciones servidor de no transmisión por secuencias, debe usar el filtro LastIdSeen en el miembro IDEnumerator para mejorar el rendimiento, como se muestra en el ejemplo siguiente:

    SELECT TOP 100 Id FROM Customers WHERE Id>=@LastIdSeen
    ORDER BY Id
    

Los filtros de usuario, como Comparison, declaran qué entradas pueden reemplazar los usuarios, mientras que los filtros del sistema, como UserContext y UserProfile, permiten al Catálogo de datos profesionales establecer valores, como por ejemplo los tokens de usuario, de forma segura.

Importante

Si un autor de metadatos crea metadatos incorrectos que toman un nombre de usuario como un filtro controlable de usuario y devuelve datos personales importantes, un usuario podría ver los datos de otro. Para evitarlo, use UserContextFilter a fin de pasar el nombre de usuario a la llamada al método.

Los clientes consultan el repositorio de metadatos para determinar qué filtros admite el sistema y representar sus interfaces de usuario en consecuencia.

Ejemplo

<FilterDescriptors>
      <FilterDescriptor Type="Wildcard" Name="Name">
         <Properties>
            <Property Name="UsedForDisambiguation" 
               Type="System.Boolean">true</Property>
         </Properties>
      </FilterDescriptor>
   <FilterDescriptor Type="Wildcard" Name="ProductNumber" />
</FilterDescriptors>

Esquema

Secundario Tipo Aparece Valor predeterminado Límites / Valores aceptados Descripción

Type

Atributo (bdc:FilterDescriptorType)

1..1

true

Limit

Comparison

Wildcard

UserContext

Username

Password

LastId

SsoTicket

UserProfile

Especifica el tipo de filtro.

Propiedades

A continuación se indican las propiedades que el objeto FilterDescriptor acepta para sistemas tanto de base de datos como de servicios web.

Importante

Las propiedades distinguen entre mayúsculas y minúsculas.

Propiedad Tipo Obligatorio Valor predeterminado Límites / Valores aceptados Comentarios

UsedForDisambiguation

System.Boolean

No

false

true

false

Si el valor es true, este filtro se usa en el selector de datos profesionales para generar la lista de coincidencias posibles.

CaseSensitive

System.Boolean

No

false

true

false

Si el valor es true, los elementos web de datos profesionales y el selector de datos profesionales indican al usuario que este filtro distingue entre mayúsculas y minúsculas.

IsDefault

System.Boolean

No

false

true

false

Si el valor es true, este filtro se selecciona de forma predeterminada en el selector de datos profesionales.

Vea también

Otros recursos

Ejemplo de SQL Server 2000 de AdventureWorks
Procedimiento para familiarizarse con el uso del modelo de objetos Runtime
Procedimiento para empezar a usar el modelo de objetos Administración
Preguntas más frecuentes sobre el Catálogo de datos profesionales
Catálogo de datos profesionales: glosario