Saltar al contenido

Consejos para trabajar con columnas binarias en Jitterbit App Builder

Por razones de rendimiento en aplicaciones de App Builder, solo agrega una columna binaria a un Business Object si la vas a usar en un control de archivo. Si estás creando un Business Object con una tabla que incluye columnas binarias, no selecciones el botón Todos para agregar todas las columnas a menos que ese objeto se use para mostrar un control de archivo en un panel. Vale la pena crear Business Objects específicamente para usarlos en paneles donde se carga o descarga un archivo. Además, considera si es posible que hayas agregado uno a una tabla de usuario/parámetro y podrías haberlo agregado a otros Business Objects y luego seleccionado todas las columnas.

Si tienes un Panel Multirow (MRP) con 25 registros que se devuelven y hay un campo binario seleccionado en el Business Object detrás de ese panel, recuperará los 25 archivos cada vez que se renderice ese panel. Si tienes 4 archivos binarios en ese Business Object, recuperará 100 archivos cada vez que se renderice ese panel.

Si deseas que un archivo sea descargable desde un MRP, considera llamar al botón de descarga en una página oculta para que no recupere el archivo como parte de la renderización del panel MRP.

Para restringir los tipos de archivos que acepta una columna binaria, consulta Archivo.

A continuación se muestra una consulta que puedes ejecutar en tu servidor para encontrar ALGUNOS de los archivos en un Business Object detrás de un panel donde el archivo no se usa en un control:

SELECT        TOP (100) PERCENT Ui_Control_1.Name AS Page, dbo.Ui_Control.Name AS Panel, dbo.Db_Table.Name AS DataObjectName, dbo.Db_Column.Name AS ColumnName
FROM            dbo.Ui_Control INNER JOIN
                         dbo.Ui_Control AS Ui_Control_1 ON dbo.Ui_Control.RootControlId = Ui_Control_1.ControlId INNER JOIN
                         dbo.Db_Table ON dbo.Ui_Control.SourceTableId = dbo.Db_Table.TableId INNER JOIN
                         dbo.Db_Column ON dbo.Db_Table.TableId = dbo.Db_Column.TableId INNER JOIN
                         dbo.Db_Column AS Db_Column_1 ON dbo.Db_Column.TargetColumnId = Db_Column_1.ColumnId INNER JOIN
                         dbo.Db_StorageDataType ON Db_Column_1.StorageDataTypeId = dbo.Db_StorageDataType.StorageDataTypeId LEFT OUTER JOIN
                         dbo.Ui_Control AS Ui_Control_2 ON dbo.Ui_Control.ControlId = Ui_Control_2.PanelControlId AND dbo.Db_Column.ColumnId = Ui_Control_2.SourceColumnId
WHERE        (dbo.Ui_Control.ControlTypeId = '81d20b00-15b2-f8c3-7fe1-d889d9c7e95f') AND (dbo.Db_StorageDataType.Name = N'binary') AND (Ui_Control_2.ControlId IS NULL)
ORDER BY DataObjectName

Nota

Al recuperar los resultados del Business Object detrás de un panel, solo recuperará las columnas que se necesitan para los controles A MENOS que estés usando formato condicional, en cuyo caso recupera todas las columnas para la lógica condicional.