Help Center> FOUNDATION Help

Gilt für:

  • Winshuttle Foundation

Arbeiten mit externem Speicher

Die folgenden Informationen gelten für Workflowadministratoren und Systemarchitekten.

Einige Organisationen verwenden Workflow, um sehr große Datentabellen zu verarbeiten. Letztendlich werden diese Daten an SAP übermittelt. SAP wurde dafür entworfen, große Datenvolumen auf unbegrenzte Zeit zu pflegen. Das Speichern von all diesen Daten in SharePoint ist zwar kein nachhaltiges Modell, aber es gibt eine Möglichkeit, die SharePoint-Inhaltsdatenbank von diesen Daten zu befreien.

Die grundlegende Idee ist es, Zweige der Formular-XML, die große Tabellen beinhalten, „abzutrennen“ und diese Zweige dann woanders unterzubringen. Der Hauptkörper der Formular-XML ist und bleibt weiterhin im SharePoint-Listenelement gespeichert, aber die größeren Zweige werden woanders untergebracht. Wenn die Formular-XML benötigt wird, ruft der Code die Zweige aus dem externen Speicher ab und fügt sie der Haupt-Formular-XML an ihrer ursprünglichen Stelle wieder an.

Zusätzlich zu externem Speicher unterstützt die neue Funktion gleichzeitiges Bearbeiten. Dadurch können verschiedene Personen zur selben Zeit verschiedene Spalten in einer Tabelle bearbeiten, und nur die Zellen, die von den Benutzern tatsächlich geändert werden, werden in der endgültigen Tabelle zusammengeführt.

So konfigurieren Sie externen Speicher

Zurück zum Anfang

Sie müssen im Stammknoten einer Tabelle oder eines wiederholten Abschnitts einige Attribute verwalten:

  • key='<EinBeliebigerSpaltenname>'
  • ext ='0'

Wenn das Attribut key festgelegt wird, führt der Code jedes Mal eine Zusammenführung durch, wenn die Tabellendaten aktualisiert werden. Nur die tatsächlich durch den Benutzer geänderten Felder werden aktualisiert. Der Wert des Attributs „key“ sollte der Name einer der Tabellenspalten sein. Die Voraussetzung für das Zusammenführen ist, dass jede Zeile einen eindeutigen Schlüssel besitzt und dass der Wert des Attributs anzeigt, welche Spalte den Schlüssel enthält (zum Beispiel my:partnumber).

Wenn das Attribut ext festgelegt wird, speichert der Code die Tabelle an einem externen Speicherort. Momentan gibt es vier verschiedene Implementierungen von „Speichern“. Wenn „ext='0'“ gefunden wurde, ruft der Code den Konfigurationswert „PayloadStoreType“ ab, der anzeigt, welcher der vier Speicher verwendet wird (siehe Datenbankspeicher-Typen, unten).

Nachdem die Tabelle zum ersten Mal gespeichert wurde, wird der Speichertyp (1, 2, 3 oder 4) im Attribut „ext“ beibehalten und verwendet, wenn der Lösungsdesigner sich entscheidet, Daten extern zu speichern.

Konfigurieren von wiederholten Tabellen oder Gruppen zum Verwenden von externem Speicher

Zurück zum Anfang

In Composer gibt es zwei neue erweiterte Eigenschaften für wiederholte Gruppen und wiederholte Tabellen, um die Verwendung von externen Speichern zu aktivieren:

  • Schlüsselspalte für Zusammenführung: Dieses Dropdownmenü beinhaltet eine Liste mit allen Feldern in der wiederholten Tabelle/Gruppe. Durch das Festlegen dieses „Schlüssels“ vollzieht die Tabelle jedes Mal eine Zusammenführung, wenn die Tabellendaten aktualisiert werden. Es werden aber nur die Felder aktualisiert, die tatsächlich durch den Benutzer aktualisiert werden.

    Der Wert des Schlüssels sollte der Name einer der Tabellenspalten sein. Jede Zeile muss einen eindeutigen Schlüsselwert besitzen. Der Schlüsselwert zeigt an, in welcher Spalte sich der Schlüssel befindet (zum Beispiel my:partnumber).

  • Nutzdaten-Speicherart: Speicherort für die externen Daten. Wenn Sie in einer Umgebung arbeiten, in der ein externer Speicher konfiguriert wurde, um einen Teil Ihrer Formulardaten auszulagern, erlauben es Ihnen die Werte in diesem Dropdownmenü anzugeben, welcher Speicher verwendet werden soll. (Dies muss durch Ihren Winshuttle Workflow Administrator konfiguriert werden.)

Datenbankspeicher-Typen

Zurück zum Anfang

Die vier verschiedenen Datenbankspeicher-Typen und wie sie konfiguriert werden, wird unten stehend beschrieben.

Legen Sie den Wert des globalen Konfigurationswerts „PayloadStoreType“ fest, um anzuzeigen, welchen Speichertyp Sie verwenden möchten.

Sie können außerdem „_<Listenname>“ anhängen, um listenspezifische Einstellungen zu erstellen, zum Beispiel PayloadStoreType_MyTestForm.

1 – Anhangspeicher

Zurück zum Anfang

Dies ist der Standardspeicher, wenn „PayloadStoreType“ nicht angegeben ist. Die externen Tabellen werden einfach als Anhänge am Listenelement gespeichert.

2 – Dateispeicher

Zurück zum Anfang

Die externen Tabellen werden auf einem Netzwerk-Dateisystem gespeichert. Verwenden Sie den globalen Konfigurationswert „FileSystemPayloadStoreFolder“, um einen UNC-Pfad zum Dateisystem anzugeben. Sie müssen außerdem Anmeldedaten für einen Benutzer angeben, der Lese-/Schreibzugang zu diesem Ordner unter Verwendung der Konfigurationswerte „FileSystemPayloadDomain“, „FileSystemPayloadUsername“ und „FileSystemPayloadPassword“ besitzt. Sie können außerdem „_<Listenname>“ an all diese Konfigurationsschlüssel anhängen, um listenspezifische Einstellungen zu erstellen (d. h. „FileSystemPayloadStoreFolder_MyTestForm“).

3 – Datenbank-Blob-Speicher

Zurück zum Anfang

Die externen Tabellen werden als Blobs in einer SQL-Datenbank gespeichert. Verwenden Sie das folgende Skript, um die nötige Tabelle und Indizes zu erstellen:

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

Die Tabelle kann zur Workflow Datenbank oder zu einer anderen Datenbank hinzugefügt werden. Im letzteren Fall können Sie eine Verbindungszeichenfolge mit dem globalen Konfigurationswert „SqlConnectionPayloadStore“ angeben. Sie können außerdem „_<ListName>“ anhängen, um listenspezifische Einstellungen zu erstellen.

4 – Datenbanktabellen-Speicher

Zurück zum Anfang

Die externen Tabellen werden zerlegt und als einzelne Datensätze in einer SQL-Datenbank gespeichert. Verwenden Sie das folgende Skript, um die nötige Tabelle und Indizes zu erstellen:

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

Die Tabelle kann zur Workflow Datenbank oder zu einer anderen Datenbank hinzugefügt werden. Im letzteren Fall können Sie eine Verbindungszeichenfolge mit dem globalen Konfigurationswert „SqlConnectionFormXmlDB“ angeben. Sie können außerdem „_<ListName>“ anhängen, um listenspezifische Einstellungen zu erstellen.