Gewusst wie: Verwenden von Business Connectivity Services mit SharePoint-Workflows

Letzte Änderung: Freitag, 16. April 2010

Gilt für: SharePoint Server 2010

Mit Microsoft Business Connectivity Services (BCS) gibt es zwei Möglichkeiten, um auf externe Daten in SharePoint-Workflows zuzugreifen:

  • Über mithilfe von Microsoft SharePoint Designer 2010 erstellte codelose Workflows, die mit externen Listen interagieren.

  • Über in Microsoft Visual Studio erstellte Workflows mit Code (Codeworkflows), die mit externen Listen oder den Microsoft SharePoint 2010- oder Business-Konnektivitätsdienste (Business Connectivity Services)-Objektmodellen interagieren.

Beachten Sie vor dem Erstellen von Workflows für Ihre Szenarien Folgendes:

  • Workflows können keiner externen Liste zugeordnet werden. In SharePoint Server 2010 können Workflows, obwohl sie zusammen mit externen Listen verwendet werden können, nicht direkt externen Listen zugeordnet werden. Sie können einen Website-Workflow erstellen, oder einen Listenworkflow in einer SharePoint-Liste verwenden, wie z. B. eine Dokumentbibliothek, und diesen über eine externe Liste lesen oder aktualisieren. Darüber hinaus können Sie ein externes Listenelement als Ziel für einen Aufgabenprozess in SharePoint Designer verwenden. Im Link zu der Aufgabe wird jedoch kein Titel für das externe Listenelement angezeigt.

  • Workflows, die auf den Business Data Connectivity-Dienst (BDC) zugreifen, werden immer als Dienstkonto ausgeführt, selbst in einem Schritt für den Identitätswechsel. Ein Workflow wird immer als Dienstkonto ausgeführt und wird nur bei Verwendung von Einmaliges Anmelden oder "RevertToSelf" unterstützt (ist aus Sicherheitsgründen standardmäßig deaktiviert; weitere Informationen finden Sie unter Business Connectivity Services-Sicherheit (Übersicht)). Durch diese Einschränkung kann SharePoint 2010 vor bösartigen BDC-Modellen und bösartigem Code schützen. Der Zugriff auf das Back-End-System erfolgt stets über ein einzelnes Konto, weshalb Sie den Überblick darüber verlieren können, wer die Änderungen vornimmt. Sie können festlegen, dass der Workflow den SPUser-Namen an eine Spalte in der externen Liste oder an eine benutzerdefinierte Aktivität übergibt, die die Anwendungsprogrammierschnittstellen (Application Programming Interfaces, APIs) von BDC verwendet. Dieses Szenario dient nur zu Informationszwecken und sollte nicht als Sicherheitsfeature verwendet werden.

Definieren eines codelosen Workflows in einer SharePoint-Liste zum Aktualisieren einer externen Liste mithilfe von SharePoint Designer 2010

Mit SharePoint Designer 2010 können Sie Workflows erstellen, die keinen Code verwenden (codelose Workflows) und die Sie an eine beliebige SharePoint-Liste oder -Website anfügen können. Die Workflowaktivitäten Listenelement erstellen, Listenelement aktualisieren und Listenelemente entfernen für SharePoint-Listen wurden um die Unterstützung externer Listen erweitert. Darüber hinaus können Sie andere Aktivitäten wie z. B. Workflowvariable festlegen für externe Listen verwenden, um eine Liste oder ein Element in einer SharePoint-Liste auszuwählen. Die Listenworkflows können automatisch gestartet werden, wenn ein Listenelement hinzugefügt oder geändert wird, und sie können Bedingungslogik für zugeordnete Aktionen enthalten. Für Website-Workflows ist kein Trigger zum Starten erforderlich.

Mithilfe von SharePoint Designer 2010 können Sie eine Listenaktivität wie z. B. Listenelement erstellen oder Listenelement aktualisieren in einer SharePoint-Liste konfigurieren, um Daten in einer externen Liste zu lesen oder in diese zu schreiben. Beispielsweise können Sie einen Workflow erstellen, mit dem ein Listenelement in einer externen Liste aktualisiert wird, wenn ein Listenelement in einer SharePoint-Standardliste oder ein Dokument in einer Dokumentbibliothek geändert wird. Im folgenden Verfahren werden die Schritte zum Erstellen eines einfachen Workflows beschrieben, mit dem das Feld Address in der externen Kundenliste aktualisiert wird, wenn das Dokument New Contact Information für den Kunden in der Dokumentbibliothek Customer Contacts hinzugefügt wird.

So erstellen Sie einen Workflow, mit dem eine externe Liste automatisch aktualisiert wird, wenn in einer Dokumentbibliothek ein neues Element erstellt wird

  1. Navigieren Sie in SharePoint Designer 2010 zur Dokumentbibliothek Customer Contacts.

  2. Klicken Sie im Menüband für die Serverkomponente auf Neuer Listenworkflow.

  3. Geben Sie einen Name und eine Beschreibung für den Workflow an, und klicken Sie auf Weiter. Der Workflow-Designer wird in SharePoint Designer 2010 geöffnet.

  4. Fügen Sie wie in Abbildung 1 dargestellt eine Aktion Listenelement aktualisieren ein.

    Abbildung 1. Einfügen der Aktion "Listenelement aktualisieren"

    Einfügen einer Aktion 'Listenelement aktualisieren'

  5. Klicken Sie auf die Verknüpfung Diese Liste. Navigieren Sie im Feld Liste zu Customer External List. Klicken Sie auf die Schaltfläche Hinzufügen, um die Felder hinzuzufügen, die Sie in der externen Liste aktualisieren möchten.

    Abbildung 2. Hinzufügen von Feldern zum Aktualisieren in der externen Liste

    Felder zum Aktualisieren in der externen Liste hinzufügen

  6. Wählen Sie im Dialogfeld Wert zuweisen das Feld Address, das Sie aktualisieren möchten, in der externen Liste sowie das entsprechende Feld Address in der Dokumentbibliothek aus, und klicken Sie dann auf OK.

    HinweisHinweis

    Im Dialogfeld Wert zuweisen werden alle Felder im Rückgabeparameter des SpecificFinder-Elements angezeigt. Falls ein Ersteller oder Aktualisierer nur einen Teil der Felder benötigt, wählen Sie in diesem Dialogfeld nur die entsprechenden Felder aus.

    Abbildung 3. Dialogfeld "Wert zuweisen"

    'Wert zuweisen' (Dialog)

  7. Geben Sie die Übereinstimmungsfelder in den Quell- und Ziellisten an, damit SharePoint die übereinstimmenden Elemente in der Dokumentbibliothek und der externen Liste identifizieren kann. Wählen Sie dazu das Feld CustomerID in der externen Liste sowie das Feld Current Item: Client Id in der Dokumentbibliothek aus (es wird davon ausgegangen, dass diese Felder zum Identifizieren der übereinstimmenden Elemente in beiden Listen verwendet werden können). Klicken Sie auf OK.

    Abbildung 4. Angeben von Übereinstimmungsfeldern in den Quell- und Ziellisten

    Übereinstimmende Felder angeben

    Damit haben Sie wie in Abbildung 5 dargestellt einen einfachen Workflow erstellt, mit dem eine externe Liste aktualisiert wird.

    Abbildung 5. Einfacher Workflow zum Aktualisieren einer externen Liste

    Einfacher Workflow

  8. Um diesen Workflow automatisch zu starten, wenn ein Element in der Dokumentbibliothek Customer Contacts erstellt wird, klicken Sie im Menüband auf die Schaltfläche Workfloweinstellungen, und aktivieren Sie dann wie in Abbildung 6 dargestellt das Kontrollkästchen Workflow automatisch starten, wenn ein Element erstellt wird.

    Abbildung 6. Workflow-Startoptionen

    Workflow-Startoptionen

Damit haben Sie erfolgreich einen Workflow erstellt, mit dem eine externe Liste automatisch aktualisiert wird, wenn in einer Dokumentbibliothek ein neues Element erstellt wird.

Tipps zu Workflowaktivitäten, Verwendung und häufige Fehler

Verwenden Sie die integrierten SharePoint-Workflowaktivitäten in den folgenden Situationen:

  • Sie müssen ein paar wenige Spalte in einer externen Liste lesen, um sie später im Workflow zu verwenden.

    Durch das Lesen mehrerer Werte aus demselben externen Listenelement wird das Element nicht zwischengespeichert. Deshalb wird mit dieser Aktivität zunächst die Read List-Methode (Finder) und dann die Elementlesemethode (SpecificFinder) für jede Spalte, die gelesen wird, aufgerufen. Beim Lesen von 10 Eigenschaften in einer Liste mit 2.000 Elementen werden demnach 20 Aufrufe für BDC ausgeführt sowie 20.010 Elemente aus dem externen System abgerufen.

  • Sie müssen ein einzelnes Element in einer externen Liste erstellen, aktualisieren oder löschen.

Sie müssen unbedingt Folgendes beachten:

  • Beim Lesen eines Werts aus einem Element, das keinen Wert enthält, wird null zurückgegeben. In SharePoint 2010 ist dies mit empty identisch, aber bei externen Listen gibt es Unterschiede zwischen null und "nicht gefunden".

  • Nachdem Sie ein Element in einer externen Liste erstellt haben, muss für Änderungen an diesem Element im selben Workflow die BDC-Identität verwendet werden, die von Listenelement erstellen zurückgegeben wird.

  • Business Connectivity Services zeigt standardmäßig alle SpecificFinder-Felder an. Falls also ein Ersteller oder Aktualisierer nur einen Teil der Felder benötigt, wählen Sie in der Workflowbenutzeroberfläche in SharePoint Designer 2010 nur die erforderlichen Felder aus.

  • Eine BDC-Identität erhält man nur von einem Ersteller. Sie sollten die vom Ersteller zurückgegebene BDC-Identität verwenden, wenn Sie nach dem soeben erstellten externen Element suchen. Mit einem anderen Feld kann nicht danach gesucht werden. Außerdem können Sie für die Suche nach einem soeben aktualisierten externen Element nicht die BDC-Identität verwenden, da sie nicht vom Aktualisierer zurückgegeben wird. Die einzige Möglichkeit ist die Suche mithilfe eines anderen Felds.

  • Falls Sie einen Workflow für die Verwendung mit einem InfoPath-Formular erstellen, müssen Sie sicherstellen, dass während des Veröffentlichungsprozesses die richtigen Felder in der Formularvorlage als SharePoint-Spalten höher gestuft werden, damit sie in Workflowbedingungen und -aktionen verwendet werden können.

Erstellen codebasierter Workflows mithilfe von Visual Studio

Mithilfe von Visual Studio können Sie Codeworkflows erstellen, die mit externen Daten über externe Listen oder das SharePoint 2010-Objektmodell und das Business-Konnektivitätsdienste (Business Connectivity Services)-Objektmodell interagieren. Darüber hinaus können Sie benutzerdefinierte Workflowaktivitäten erstellen. Weitere Informationen finden Sie in den Themen zum SharePoint-Workflow im SharePoint 2010 SDK.