Novedades para desarrolladores
Content Platform Engine Versión V5.2.1 incorpora características nuevas y otras mejoras para desarrollar aplicaciones personalizadas.
Cambios en el modelo de objetos de Content Engine
Este release incluye clases y propiedades nuevas. Además, una propiedad y una clase han quedado en desuso y se eliminarán en un release futuro.
Clases nuevas
- CmAbstractSearchResult
- CmAdvancedStorageArea
- CmBackgroundSearch
- CmContentBackoutQueueEntry
- CmContentBackoutQueueSweep
- CmContentDeletionQueueEntry
- CmContentDeletionQueueSweep
- CmContentReplicationQueueEntry
- CmContentReplicationQueueSweep
- CmFileSystemStorageDevice
- CmIndexDefinition
- CmIndexedColumn
- CmIsilonFixedContentDevice
- CmOpenStackStorageDevice
- CmReplicaSynchronizationSiteSettings
- CmSearchFunctionDefinition
- CmSMTPConfiguration
- CmStorageDevice
- CmStorageDeviceConnection
- ContentIntegrityOption
- DomainType
- ExtendedInputStream (API Java)/ExtendedStream (API .NET)
- ReplicaSynchronizationType
- SearchFunctionHandler
Clase en desuso
La clase com.filenet.api.jdbc.Driver ha quedado en desuso en la API Java™ de Content Engine.
- Propiedades nuevas en clases existentes
-
Propiedad Clase AdvancedStorageDeletionDelay ObjectStore AuthenticationRealmName Domain BackgroundSearches ObjectStore BackgroundSearchLeaseDuration CmSweepConfiguration CmContentIntegrityOptions DatabaseStorageArea FileStorageArea FixedStorageArea StorageArea ContentSignature ContentTransfer ContentUploadTimeout ContentConfiguration CopyRetainedContent CmBulkMoveContentJob CurrentDeferredObjectCount CmCustomQueueSweep CmQueueSweep CmThumbnailRequestSweep DeferralCount CmAbstractQueueEntry CmThumbnailRequest DeferralData CmAbstractQueueEntry CmThumbnailRequest DeferredObjectCount CmCustomQueueSweep CmQueueSweep CmThumbnailRequestSweep DomainType Domain EventExporterAccountingInterval CmProcessEngineConfiguration EventExporterSleepDuration CmProcessEngineConfiguration IndexDefinitions TableDefinition IsDateOnly PropertyDefinitionDateTime PropertyDescriptionDateTime PropertyTemplateDateTime IsReadProtected PropertyDefinitionBinary PropertyDescriptionBinary PropertyTemplateBinary MaximumUploadBufferSize ContentConfiguration MaxRequestQueueSize IndexJob SecurityIdMappingCacheMaxEntries ObjectStore ServerCommunicationCertificateValidationEnabled VirtualServer ServerCommunicationTraceFlags TraceLoggingConfiguration ServerCommunicationURL VirtualServer SourceContentRetained McMoveContentEvent UseSequentialIds ObjectStore
Propiedad en desuso
La propiedad IsSingleIndexed de la clase ColumnDefinition ha quedado en desuso.
Desarrolladores de API de Content Engine Java y .NET
Las API Content Engine Java y .NET introducen soporte de características nuevas y otras mejoras en el producto.
- Corriente de entrada ampliada para la recuperación de contenido
Una clase nueva, ExtendedInputStream, en la API Java de Content Engine proporciona soporte para recuperar contenido en posiciones arbitrarias dentro de la corriente, incluida la posibilidad de realizar búsquedas hacia adelante y hacia atrás dentro de la corriente. La API .NET de Content Engine proporciona el mismo soporte a través de la nueva clase ExtendedStream.
En releases anteriores, la recuperación de contenido estaba limitada a la lectura secuencial en el contenido. Mediante el uso del nuevo soporte de corriente ampliado, la aplicación puede recuperar de forma más eficiente contenido muy grande de archivo, por ejemplo contenido de vídeo y audio, de cualquier punto del archivo. No es necesario realizar cambios en las aplicaciones existentes que no necesitan esta capacidad. Para aplicaciones que no necesitan esta capacidad, puede convertir la corriente de entrada devuelta del método accessContentStream actual (en las clases ContentTransfer, Document y Annotation) en la nueva clase ampliada para invocar las operaciones nuevas.
Tenga en cuenta que, aunque la nueva corriente de entrada ampliada soporta todos los tipos de dispositivos de almacenamiento, la capacidad para buscar de forma eficiente en una corriente de contenido está limitada a las prestaciones del soporte subyacente y es posible que no sea apropiada para algunos tipos de dispositivos de almacenamiento. Por ejemplo, los dispositivos de almacenamiento de sistema de archivos de área de almacenamiento avanzado y de área de almacenamiento de archivos se optimizan para realizar el reposicionamiento nativo de la corriente de entrada y, por consiguiente, pueden buscar de forma eficiente en una corriente de contenido. Además, los archivos que se han almacenado en memoria caché de contenido desde cualquier tipo de área de almacenamiento también se optimizan para realizar el reposicionamiento nativo de la corriente de entrada.
- Soporte para ID secuenciales
En releases anteriores al 5.2.1, los identificadores exclusivos asignados a objetos se generaban utilizando un algoritmo que produce valores totalmente aleatorios. En el release 5.2.1, está disponible un nuevo algoritmo que produce ID secuenciales. Los ID secuenciales tienen una parte basada en tiempo y contador que se combina con una parte aleatoria de tal forma que los ID creados de forma consecutiva son secuenciales (monotónicos) por el orden natural aplicado por la base de datos subyacente.
La nueva propiedad UseSequentialIds en la interfaz ObjectStore especifica si un almacén de objetos debe asignar ID aleatorios o secuenciales cuando se crea un objeto nuevo en dicho almacén de objetos. Una columna de base de datos indexada o una tabla con un índice en clúster en la clave primaria que contiene ID secuenciales se puede almacenar de forma más compacta y gestionar de forma más eficiente que los ID totalmente aleatorio, proporcionando potencialmente de este modo una ventaja de rendimiento y ahorros de espacio.
El valor predeterminado para esta propiedad es true (verdadero) (asignar ID secuenciales). Si no desea que los objetos nuevos de un almacén de objetos tengan ID secuenciales, establezca el valor de la propiedad UseSequentialIds en false (falso).
- Definir propiedades de contraseña a través de metadatos
Está disponible una propiedad de metadatos nueva, IsReadProtected, en propiedades con valores binarios para especificar que la propiedad con valor binario no está disponible para que la lean aplicaciones que se ejecutan fuera del servidor. Puede utilizar la propiedad IsReadProtected para almacenar contraseñas u otra información confidencial que sólo está disponible para el código de manejador de confianza que se ejecuta dentro del servidor. Utilice el nuevo método getReadProtectedProperty en la clase HandlerCallContext de la API Java de Content Engine para devolver el objeto Property que representa el valor de la propiedad con valor binario protegida contra lectura. Tenga en cuenta que cuando se actualiza al release 5.2.1, el valor de la propiedad de metadatos IsReadProtected en cualquier propiedad personalizada existente con valor binario se establece en false.
- Áreas de almacenamiento avanzado
Se ha añadido soporte para un área de almacenamiento nueva que proporciona almacenamiento de contenido de alta disponibilidad y recuperación tras desastre mediante el uso de la réplica y la reparación automática de réplica. Normalmente las áreas de almacenamiento avanzado se gestionan con la consola de administración para Content Platform Engine, pero las clases relacionadas con el área de almacenamiento avanzado se exponen en las API de Content Engine. Estas clases incluyen CmAdvancedStorageArea, CmStorageDeviceConnection, CmStorageDevice y CmReplicaSynchronizationSiteSettings.
Además, se han añadido las siguientes clases relacionadas con el barrido de cola como soporte de las áreas de almacenamiento avanzado: CmContentBackoutQueueSweep, CmContentDeletionQueueSweep y CmContentReplicationQueueSweep.
- Comunicación de servidor de Content Platform Engine
Se ha añadido soporte para la comunicación de servidor de Content Platform Engine (CPE), habilitando la réplica entre sitios para un área de almacenamiento avanzado sin necesidad de montar directorios de sistema de archivos en la WAN entre sitios. Normalmente la comunicación de servidor CPE se configura con la consola de administración para Content Platform Engine, pero esta característica también se puede configurar con las API de Content Engine. Se han añadido dos propiedades nuevas a la clase VirtualServer, ServerCommunicationURL y ServerCommunicationCertificateValidationEnabled.
- Dispositivos de contenido fijo nuevos
Se ha añadido soporte para dispositivos de contenido fijo de EMC nuevos: Atmos e Isilon. Normalmente los dispositivos de contenido fijo se configuran con la consola de administración para Content Platform Engine, pero estos dispositivos también se pueden configurar con las API de Content Engine. Se han añadido dos clases nuevas: CmAtmosFixedContentDevice y CmIsilonFixedContentDevice.
- Barridos personalizados
Se ha añadido soporte para barridos personalizados, un nuevo tipo de extensión de servidor. Igual que un barrido de sistema, un barrido personalizado funciona como una tarea de fondo en el servidor, recuperando instancias de una clase de destino y procesándolas. Sin embargo, un barrido personalizado procesa instancias con un manejador de acciones implementado por el usuario, en Java o JavaScript.
- CmQueueSweep.MaximumFailures: Nuevo valor predeterminado
El valor predeterminado de la propiedad MaximumFailures se ha cambiado a cero, lo que significa que una implementación de barrido de cola intentará volver a procesar las entradas de cola anómalas un número ilimitado de veces. El valor predeterminado se puede modificar. Esto repercute en los barridos de cola de sistema y los barridos de cola personalizados implementados por el usuario. CmThumbnalRequestSweep es una excepción, donde el valor predeterminado de MaximumFailures se ha cambiado de siete a tres.
- Reinicio de proceso de entradas de cola anómalas
Antes del release 5.2.1, cuando una entrada de cola (representada por una subclase CmAbstractQueueEntry) alcanzaba el recuento máximo de anomalías, ya no se seleccionaba para proceso, pero la propiedad QueueEntryStatus no cambiaba. Para reiniciar el proceso de las entradas de cola que han alcanzado el recuento máximo de anomalías, tenía que aumentar la propiedad MaximumFailures en el barrido de cola (representado por CmQueueSweep). Como resultado, el servicio de cola reanudaba el proceso de esas entradas de cola, hasta que alcanzaban el nuevo máximo.
En el release 5.2.1, cuando una entrada de cola alcanza el recuento máximo de anomalías, la propiedad QueueEntryStatus se establece en FAILED, impidiendo que la entrada de cola se seleccione para proceso. Ya no puede reiniciar el proceso de las entradas de cola aumentando el recuento máximo de anomalías en el barrido de cola. En lugar de ello, debe restablecer la propiedad FailureCount a cero en cada entrada de cola individual para que el servicio de barrido reanude el proceso de esas entradas de cola. Consulte Restablecimiento de entradas de barrido de cola anómalas para obtener más información.
- Carga de clases entre releases
En la API Java de Content Engine, se ha añadido soporte para capacidad de carga de clases entre releases (CRCL), permitiendo que una única instancia de una aplicación Java se conecte a varios releases de servidor de Content Platform Engine simultáneamente.
Nota: CRCL no se soporta en las aplicaciones de cliente utilizando el transporte EJB de JBoss.- Colaboración social
Se ha añadido soporte para la característica contenido social, permitiéndole implementar operaciones de colaboración de documentos en aplicaciones cliente.
- Clase HandlerCallContext
La clase HandlerCallContext se ha ampliado con los métodos siguientes:
- isShuttingDown
- getContentConversionServices
- getReadProtectedProperty
- getTemporaryFilesDirectory
- Propiedad MaxRequestQueueSize nueva para controlar el número de solicitudes de índice
Se ha añadido una propiedad nueva, MaxRequestQueueSize, a la clase IndexJob. Puede utilizar esta propiedad para controlar el número máximo de solicitudes de índice pendientes que se permiten para un trabajo de índice.
- Búsquedas no sensibles a mayúsculas y minúsculas
Este release soporta las búsquedas no sensibles a mayúsculas y minúsculas en índices a través de la nueva propiedad ForCaseInsensitiveSearch en la clase CmIndexDefinition. Además, para proporcionar soporte para las búsquedas no sensibles a mayúsculas y minúsculas con clientes de Process Engine, se ha añadido la propiedad ForceCaseInsensitiveSearch existente a la clase IsolatedRegion.
- Búsqueda en segundo plano
Búsqueda en segundo plano es una característica nueva que le permite ejecutar una consulta de búsqueda como un proceso de búsqueda en segundo plano, que es similar a un proceso de barrido. Los resultados de una consulta de búsqueda en segundo plano se almacenan en objetos de Content Platform Engine persistentes, que se pueden examinar posteriormente o utilizar en una aplicación cliente. Para dar soporte a esta nueva característica, se han añadido dos nuevas clases: CmBackgroundSearch y CmAbstractSearchResult. Al crear una búsqueda en segundo plano, se crean subclases que se basan en estas clases. La clase CmBackgroundSearch es una subclase de CmSweep y tiene las siguientes propiedades nuevas: AllowStringTruncation, EffectiveSQL, MaximumExaminedRowCount, OrderByGroupProperties, SearchExpression, SearchObjectStore y SearchResults. CmAbstractSearchResult tiene una propiedad nueva, BackgroundSearch. Una nueva propiedad BackgroundSearches en ObjectStore especifica las búsquedas en segundo plano que se ejecutan en un almacén de objetos. Una nueva propiedad BackgroundSearchLeaseDuration en CmSweepConfiguration especifica la cantidad de tiempo durante la cual una solicitud de búsqueda en segundo plano se puede ejecutar antes de que otra hebra puede intentar volver a emitir la solicitud.
Parámetros de búsqueda en segundo plano
En este release se incorporan los parámetros de búsqueda en segundo plano, que proporcionan la posibilidad de sustituir los parámetros en una consulta SQL de búsqueda en segundo plano. Cada parámetro está asociado con una propiedad personalizada de un objeto CmBackgroundSearch cuyo nombre simbólico coincide con el del parámetro. Cuando se inicia una búsqueda en segundo plano y se establece el valor de una propiedad personalizada que define un parámetro, el servidor sustituye ese valor para el parámetro en la consulta SQL.
Función de agregación y cláusula GROUP BY
Solo para búsquedas en segundo plano, Content Platform Engine soporta funciones de agregación de SQL y la cláusula GROUP. Una función de agregación de SQL realiza un cálculo en un conjunto de valores y devuelve un solo valor que es el resultado del cálculo. La cláusula GROUP BY se utiliza con una o más funciones de agregación para agrupar, por columna, un conjunto de filas que se devuelven en una consulta. Se soportan las siguientes funciones de agregación de SQL:
- COUNT(): Devuelve el número de elementos en la expresión.
- MAX(): Devuelve el mayor valor en la expresión.
- MIN(): Devuelve el valor más pequeño en la expresión.
- SUM(): Devuelve la suma de los valores en la expresión
- Funciones de búsqueda personalizada
en este release se incorporan funciones de búsqueda personalizadas. Las funciones de búsqueda personalizadas se crean en un almacén de objetos y se pueden utilizar en la lista SELECT de una sentencia SQL para búsquedas ad hoc y en segundo plano. Cada función de búsqueda personalizada recibe uno o más parámetros de entrada y produce un valor de retorno. Para esta característica, se han añadido la clase CmSearchFunctionDefinition y la propiedad CmFunctionName. Esta clase define una función de búsqueda de SQL personalizada que se puede invocar durante una búsqueda. Además, se ha añadido la clase SearchFunctionHandler, que permite implementar un manejador de función de búsqueda personalizada. Esta clase tiene los siguientes métodos nuevos: evaluate, getFunctionName, requiresTransaction y validate.
- Propiedades con valor de principal de seguridad
A partir de este release, una propiedad personalizada con valor de objeto puede contener un valor de principal de seguridad (SID), que haga referencia a un objeto de grupo o usuario. Como resultado, la propiedad RequiredClassId de un objeto PropertyDefinitionObject puede ahora establecerse en la clase SecurityPrincipal o en una de sus subclases, User o Group. En releases anteriores, la propiedad RequiredClassId estaba limitada a las clases RepositoryObject y GCD. Para dar soporte a esta característica, se ha añadido la propiedad SecurityIdMappingCacheMaxEntries a la clase ObjectStore.
Funciones SQL nuevas
Para proporcionar soporte para las con valor de principal de seguridad en las consultas SQL, se han añadido las siguientes funciones SQL a la sintaxis de consulta SQL de Content Engine:
- SecurityPrincipal: Esta función se utiliza en una consulta de búsqueda para permitir las comparaciones con un ID de principal de seguridad de grupo o usuario.
- CurrentUser: Esta función se utiliza en una consulta de búsqueda para permitir las comparaciones de usuario con el usuario conectado actual.
- Varios dominios
A partir de este release, se pueden configurar varios dominios separados lógicamente que compartan los mismos recursos e infraestructura física. Puede configurar varios dominios, denominados dominios de arrendatario, que estén gestionados por un dominio maestro. Para esta característica, se han añadido la constante de clase DomainType y las siguientes propiedades Domain nuevas: AuthenticationRealmName y DomainType.
- Soporte para crear índices de base de datos de varias columnas
En releases anteriores, un administrador de base de datos podía crear manualmente un índice de varias columnas utilizando las herramientas de base de datos nativas. El release 5.2.1 incluye una nueva clase, CmIndexDefinition, que proporciona soporte para crear índices de varias columnas mediante programación (así como a través de la Consola de administración para Content Platform Engine). Para obtener más información, consulte CmIndexDefinition. Para obtener información sobre cómo incorporar los índices creados manualmente en los metadatos de Content Platform Engine, consulte Actualizar aplicaciones personalizadas.
Otros cambios de la API para dar soporte a esta característica incluyen:
- Una nueva interfaz, CmIndexedColumn, que define una columna para un índice.
- Una nueva propiedad en la clase TableDefinition, IndexDefinitions, que especifica el conjunto de definiciones de índice que corresponden a una definición de tabla.
- La propiedad ColumnDefinition, IsSingleIndexed, está en desuso.
- Nueva propiedad IsDateOnly para la presentación o representación
Se ha añadido una nueva propiedad, IsDateOnly, a las clases PropertyDescriptionDateTime, PropertyDefinitionDateTime y PropertyTemplateDateTime. Puede utilizar esta propiedad como indicación de que la aplicación debe tratar esta propiedad DateTime como una propiedad de sólo fecha para la presentación o representación. Tenga en cuenta que no hay ningún comportamiento de servidor de Content Engine asociado con esta propiedad.
Desarrolladores de la API de servicio de descarga del cliente de Content Platform Engine
Ahora los componentes de las siguientes características se pueden descargar del servicio de descarga de cliente de Content Platform Engine:
- API Java de descarga de cliente
- Integración de Deployment Manager
- DLL de API .Net
- Instalador de API .Net
Desarrolladores de la API Java de proceso
La API Java de Process incluye clases y métodos nuevos.
- Clases nuevas
- VWXLIFFDefinition
Utilice esta clase para crear, leer, suprimir o modificar definiciones de XLIFF para entornos locales diferentes dentro de una región.
- VWXLIFFList
Utilice esta clase para crear, leer, suprimir o modificar elementos de definición de XLIFF. Esto es similar a las demás clases de lista de metadatos de región (VWRegionFieldList, VWSLAList y VWWorkScheduleList).
- Nueva constante de campo y métodos en clases existentes
- VWAttachmentType
/** * Valor de 7: indica que el tipo de conexión es un objeto de tarea. * @since CPE 5.2.0.3 IF003 */ public static final int ATTACHMENT_TYPE_TASK = 7;
- VWLogElement
/** * Obtiene el número de secuencia simple del registro, al empezando el * recuento en 1 y aumentando en uno con cada nuevo registro. * @return El número de secuencia del registro de anotaciones. * @exception VWException emitida por varias razones, incluida cuando * el número de secuencia no se ha encontrado. * @since CPE 5.2.1.0 */ public double getSequenceNumberAsDouble() throws VWException
- VWNotificationSettings
/** * Obtiene el distintivo "permitir valores SMTP locales'. * * @return El valor de distintivo 'permitir valores SMTP locales'. * @throws VWException emitida por diversas causas. * @since CPE 5.2.1.0 */ public boolean getAllowLocalSMTPSettings() throws VWException
/** * Establece el distintivo "permitir valores SMTP locales'. * * @param bAllowLocalSmtpSettings Especifique <code>true</code> para permitir * la especificación de valores de notificación 'local'. Si <code>false</code>, * se utilizarán los valores de GCD. * @throws VWException emitida por diversas causas. * @since CPE 5.2.1.0 */ public void setAllowLocalSMTPSettings(boolean bAllowLocalSmtpSettings) throws VWException
- VWParameter
/** * Obtiene un objeto VWAttribute que contiene atributos para este objeto, * como etiquetas emparejadas (palabras clave) y valores en formato de serie. * * @return Un objeto VWAttribute que contiene atributos para este objeto, * como etiquetas emparejadas (palabras clave) y valores en formato de serie. * @throws VWException * @since CPE 5.2.0.3 IF003 */ public VWAttributeInfo getAttributeInfo() throws VWException
- VWParameterDefinition
/** * Obtiene un objeto VWAttribute que contiene atributos para este objeto, * como etiquetas emparejadas (palabras clave) y valores en formato de serie. * Nota: Los atributos no se pueden recuperar del parámetro de una operación. * * @return Un objeto VWAttribute que contiene atributos para este objeto, * como etiquetas emparejadas (palabras clave) y valores en formato de serie. * @throws VWException * @since CPE 5.2.0.3 IF003 * @see #setAttributeInfo */ public VWAttributeInfo getAttributeInfo() throws VWException
/** * Establece un objeto VWAttribute que contiene atributos para este objeto. * Nota: Los atributos no se pueden establecer en el parámetro de una operación. * * @param theAttributeInfo Un objeto VWAttribute que contiene * atributos para este objeto, como etiquetas emparejadas (palabras clave) y * valores en formato de serie. * @throws VWException * @since CPE 5.2.0.3 IF003 * @see #getAttributeInfo */ public void setAttributeInfo(VWAttributeInfo theAttributeInfo) throws VWException
- VWSession
/** * Capta definiciones de XLIFF para la región asociada con el punto de conexión. * * @param startLocale Devuelve las definiciones de XLIFF a partir del entorno local * especificado. Si todas las definiciones de XLIFF son necesarias, especifique <code>null</code>. * Este método se debe emitir de nuevo para devolver los elementos subsiguientes de la lista. * @param count - número máximo de objetos a devolver. * @param greaterThan - si true, consultará todos los campos mayores que el * valor startLocale. Si false, consultará los elementos iguales y mayores que * startLocale. * @throws VWException * @since CPE 5.2.1.0 */ public VWXLIFFList fetchXliffList(Locale startLocale, int count, boolean greaterThan) throws VWException
/** * @fnexclude * Actualiza todos los objetos de trabajo del objeto de tarea proporcionado. Sólo puede llamarse local * respecto al servidor PE. * @param taskObject - el objeto de tarea a actualizar * @param modifiedProperties una lista de nombres simbólicos de propiedad modificada * @throws VWException * @since PE 5.2.0.3 IF003 */ public void updateTaskWorkObjects(CmTask taskObject, StringList modifiedProperties) throws VWException