Help Center > Foundation Help

S’applique à :

  • Winshuttle Foundation

Utilisation du stockage externe

Les informations suivantes s’appliquent aux administrateurs de workflow et aux architectes système.

Certaines entreprises utilisent un workflow pour traiter les grandes tables de données. Ces données sont destinées à SAP, et SAP est apte à traiter de grands volumes de données indéfiniment. Cependant, le stockage des mêmes données dans SharePoint ne constitue pas un modèle durable, mais il existe un moyen d’extraire les données de la base de données de contenu SharePoint.

L’idée de base vise à « clipper » des branches du code XML du formulaire qui contiennent de grandes tables et à stocker ces branches dans un autre emplacement. Le corps principal du code XML du formulaire demeure et continue d’être stocké dans l’élément de liste, mais les grandes branches sont stockées à un autre emplacement. Lorsque le code XML du formulaire est nécessaire, le code extrait les branches du stockage externe et les rattache au corps au code XML du formulaire dans son emplacement d’origine.

Outre le stockage externe, la nouvelle fonction inclut le support d’édition simultanée. Ainsi, les utilisateurs peuvent modifier les colonnes d’une table simultanément, et seules les cellules que l’utilisateur change sont fusionnées dans la table finale.

Comment configurer le stockage externe

Retour au début

Dans le nœud racine d’une table ou d’une section répétitive, vous devez conserver quelques attributs :

  • key=’<SomeColumnName>’
  • ext =’0’

Si vous définissez l’attribut « key », le code exécute une fusion chaque fois que les données de la table sont mises à jour. Seuls les champs modifiés par l’utilisateur sont mis à jour. La valeur de l’attribut key doit être le nom de l’une des colonnes de la table. La condition de fusionnement repose sur le fait que chaque ligne dispose d’une clé unique et que la valeur de l’attribut indique la colonne qui contient la clé (par exemple, my:partnumber).

Si l’attribut « ext » est défini, le code stocke la table à l’emplacement externe. Actuellement, il existe quatre implémentations des « magasins ». Lorsque ext=’0’ est détecté, le code dispose d’une valeur de configuration « PayloadStoreType » qui indique le magasin parmi les quatre magasins à utiliser (voir Types de magasins de données, ci-dessous).

Après le premier stockage de la table, le type de magasin (1, 2, 3 ou 4) est conservé dans l’attribut « ext » et il est utilisé chaque fois que le concepteur décide de stocker les données en externe.

Configuration de tables ou de groupes répétitifs pour utiliser le stockage externe

Retour au début

Dans Composer, il existe deux propriétés avancées pour les groupes répétitifs et les tables répétitives afin d’utiliser le stockage externe :

  • Colonne de clé pour la fusion : Cette liste déroulante contient la liste de tous les champs contenus dans la table ou le groupe répétitifs. Si vous définissez cette « clé », le formulaire exécute une fusion chaque fois que les données de la table sont mises à jour, mais seuls les champs que l’utilisateur a modifiés sont mis à jour.

    La valeur de la clé doit être le nom de l’une des colonnes de la table. Chaque ligne doit avoir une valeur de clé unique. La valeur de clé indique la colonne qui contient la clé (par exemple, my:partnumber).

  • Type de magasin de charge utile : emplacement de stockage des données externes. Si vous travaillez dans un environnement dans lequel un magasin de données externes a été configuré pour décharger une partie des données de formulaire, les valeurs dans cette liste déroulante permettent de définir le « magasin » à utiliser. (L’administrateur Winshuttle Workflow doit le configurer.)

Types de magasins de base de données

Retour au début

Les quatre types de magasins de base de données et leur définition sont décrits ci-dessous.

Définissez la valeur de configuration globale « PayloadStoreType » pour indiquer le type de magasin à utiliser.

Vous pouvez également ajouter _<ListName> pour créer un paramètre de liste, par exemple, « PayloadStoreType_MyTestForm »

1 - Magasin de pièces jointes

Retour au début

Il s’agit du magasin par défaut si PayloadStoreType n’est pas défini. Les tables externes sont simplement stockées comme pièces jointes dans l’élément de liste.

2 - Magasin de fichiers

Retour au début

Les tables externes sont stockées dans un système de fichiers réseau. Utilisez la valeur de configuration globale « FileSystemPayloadStoreFolder » pour fournir le chemin UNC du système de fichiers. Vous devez également fournir des données d’identification pour un utilisateur ayant un accès en lecture/écriture sur ce dossier en utilisant les valeurs de configuration « FileSystemPayloadDomain », « FileSystemPayloadUsername » et « FileSystemPayloadPassword ». Vous pouvez également ajouter _<ListName> à n’importe laquelle de ces clés de configuration pour créer un paramètre de liste (par exemple, « FileSystemPayloadStoreFolder_MyTestForm »).

3 - Magasin d’objets blob de base de données

Retour au début

Les tables externes sont stockées sous forme d’objets blob dans une base de données SQL. Utilisez le script suivant pour créer la table et les index nécessaires :

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 table peut être ajoutée à la base de données de workflow ou à une autre base de données. Dans le dernier cas, vous pouvez définir une chaîne de connexion avec la valeur de configuration globale « SqlConnectionPayloadStore ». Vous pouvez également ajouter _<ListName> pour créer un paramètre de liste.

4 - Magasin de tables de base de données

Retour au début

Les tables externes sont désassemblées et stockées sous forme d’enregistrements individuels dans une base de données SQL. Utilisez le script suivant pour créer la table et les index nécessaires :

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 table peut être ajoutée à la base de données de workflow ou à une autre base de données. Dans le dernier cas, vous pouvez définir une chaîne de connexion avec la valeur de configuration globale « SqlConnectionFormXmlDB ». Vous pouvez également ajouter _<ListName> pour créer un paramètre de liste.