Se aplica a:
- Winshuttle Foundation
Trabajar con almacenamiento externo
En esta página
La información siguiente se aplica a administradores de flujo de trabajo y arquitectos del sistema.
Algunas organizaciones utilizan un flujo de trabajo para procesar tablas de datos de gran tamaño. Con el tiempo, los datos van a parar a SAP y SAP está diseñado para manejar grandes volúmenes de datos por tiempo indefinido. No obstante, almacenar los mismos datos en SharePoint no es un modelo sostenible, pero hay una forma de sacar estos datos de la base de datos de contenido de SharePoint.
La idea básica es «unir» las partes de FormXML que contienen tablas de gran tamaño y, a continuación, almacenarlas en cualquier sitio. El cuerpo principal del FormXML permanecerá y sigue almacenado en el elemento de la lista de SharePoint, pero las partes más grandes se almacenarán en otro sitio. Cuando es necesario el FormXML, el código recupera las partes del almacenamiento externo y vuelve a adjuntarlas en el FormXML principal en su ubicación original.
Además del almacenamiento externo, la nueva función admite la edición simultánea. Esto permite que personas diferentes puedan editar columnas distintas de una tabla al mismo tiempo y solo las celdas que el usuario realmente ha cambiado se combinan en la tabla final.
Cómo configurar el almacenamiento externo
En el nodo raíz de una tabla o sección de repetición, debe mantener un par de atributos:
- key='<SomeColumnName>'
- ext ='0'
Si se establece el atributo «key», el código realiza una combinación cada vez que se actualizan los datos de la tabla. Solo se actualizarán esos campos que el usuario realmente haya cambiado. El valor del atributo clave debe ser el nombre de una de las columnas de la tabla. El requisito de la combinación es que cada fila tenga una clave única y el valor del atributo indique qué columna contiene la clave (por ejemplo, my:partnumber).
Si se establece el atributo «ext», el código almacena la tabla en una ubicación externa. Actualmente, hay cuatro implementaciones distintas de «almacenes». Cuando se encuentre ext=«0», el código obtendrá el valor de configuración «PayloadStoreType» que indica cuál de los cuatro almacenes se va a usar (consulte Tipos de almacenes de base de datos, a continuación).
Después de que se almacene la tabla por primera vez, el tipo de almacén (1, 2, 3 o 4) se mantiene en el atributo «ext» y se usará siempre que el diseñador de soluciones elija almacenar los datos de forma externa.
Configurar tablas o grupos de repetición para usar el almacenamiento externo
En Composer, hay dos nuevas propiedades avanzadas para grupos y tablas de repetición que permiten el uso de almacenamiento externo:
- Columna clave para combinar: Este desplegable contendrá una lista de todos los campos que figuran en la tabla o el grupo de repetición. Al configurar esta «clave», el formulario realizará una combinación cada vez que se actualicen los datos de la tabla, pero solo se actualizan los campos que el usuario realmente ha cambiado.
El valor de la clave debe ser el nombre de una de las columnas de la tabla. Cada fila debe tener un valor de clave único. El valor de la clave indica qué columna contiene la clave (por ejemplo, my:partnumber).
- Tipo de almacén de carga útil: Ubicación de almacenamiento de los datos externos. Si trabaja en un entorno en el que se ha configurado un almacén de datos externo para descargar parte de sus datos de formulario, los valores de este desplegable permiten especificar qué «almacén» se debe usar. (Debería configurarlo el administrador de Winshuttle Workflow).
Tipos de almacenes de bases de datos
A continuación se describen los cuatro tipos de almacenes de base de datos y cómo configurarlos.
Establezca el valor de la configuración global «PayloadStoreType» para indicar qué tipo de almacén desea usar.
También puede añadir _<ListName> para crear una configuración específica para listas; por ejemplo, «PayloadStoreType_MyTestForm»
1 - Almacén de datos adjuntos
Es el almacén predeterminado si no se especifica PayloadStoreType. Las tablas externas se almacenan simplemente como adjuntos en el elemento de lista.
2 - Almacén de archivos
Las tablas externas se almacenan en un sistema de archivos de red. Utilice el valor de la configuración global «FileSystemPayloadStoreFolder» para proporcionar una ruta UNC al sistema de archivos. También debe proporcionar las credenciales de un usuario que tenga acceso de lectura o escritura a esta carpeta mediante los valores de configuración «FileSystemPayloadDomain», «FileSystemPayloadUsername» y «FileSystemPayloadPassword». También puede añadir _<ListName> a cualquiera de estas claves de configuración para crear una lista de configuraciones específicas (es decir, «FileSystemPayloadStoreFolder_MyTestForm»).
3 - Almacén de blobs de base de datos
Las tablas externas son como blobs en una base de datos de SQL. Use el script siguiente para crear las tablas y los índices necesarios:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Payloads](
[PayLoadID] [uniqueidentifier] NOT NULL,
[WebGuid] [uniqueidentifier] NOT NULL,
[ListGuid] [uniqueidentifier] NOT NULL,
[ItemID] [int] NOT NULL,
[Binding] [nvarchar](50) NOT NULL,
[Payload] [nvarchar](max) NOT NULL,
[LastUpdate] [datetime] NOT NULL,
CONSTRAINT [PK_Payloads] PRIMARY KEY CLUSTERED
(
[PayLoadID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[Payloads] ADD CONSTRAINT [DF_Payloads_PayLoadID] DEFAULT (newid()) FOR [PayLoadID]
GO
ALTER TABLE [dbo].[Payloads] ADD CONSTRAINT [DF_Payloads_LastUpdate] DEFAULT (getdate()) FOR [LastUpdate]
GO
CREATE NONCLUSTERED INDEX [IX_Payloads] ON [dbo].[Payloads]
(
[WebGuid] ASC,
[ListGuid] ASC,
[ItemID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
La tabla se puede añadir a la base de datos de Workflow o a cualquier otra base de datos. En el último caso, puede especificar una cadena de conexión con el valor de la configuración global «SqlConnectionPayloadStore». También puede añadir _<ListName> para crear una configuración específica para listas.
4 - Almacén de tablas de base de datos
Las tablas externas se desensamblan y almacenan como registros individuales en una base de datos de SQL. Use el script siguiente para crear las tablas y los índices necesarios:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[PayloadTables](
[Id] [uniqueidentifier] NOT NULL,
[ParentId] [uniqueidentifier] NOT NULL,
[Ordinal] [int] NOT NULL,
[Binding] [nvarchar](50) NULL,
[Value] [nvarchar](100) NULL,
[PayloadLockID] [int] NULL,
CONSTRAINT [PK_PayloadTables] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
CREATE NONCLUSTERED INDEX [IX_PayloadTables] ON [dbo].[PayloadTables]
(
[ParentId] ASC,
[Ordinal] ASC,
[Binding] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
La tabla se puede añadir a la base de datos de Workflow o a cualquier otra base de datos. En el último caso, puede especificar una cadena de conexión con el valor de la configuración global «SqlConnectionFormXmlDB». También puede añadir _<ListName> para crear una configuración específica para listas.