Integrieren von mobilen Clientanwendungen mit SharePoint 2010-Workflows

Zusammenfassung: In diesem Artikel erfahren Sie, wie Sie mobile Geräte mit Microsoft SharePoint Server 2010 integrieren. Außerdem lernen Sie, wie Sie eine WPF-Anwendung (Windows Presentation Foundation) erstellen, die einen Windows Communication Foundation (WCF)-Dienst zum Übermitteln von Daten an eine SharePoint-Website aufruft, und den Status eines benutzerdefinierten SharePoint-Workflows aktualisieren.

Letzte Änderung: Montag, 9. März 2015

Gilt für: Business Connectivity Services | Office 2010 | Open XML | SharePoint Designer 2010 | SharePoint Foundation 2010 | SharePoint Online | SharePoint Server 2010 | Visual Studio

Inhalt dieses Artikels
Integrieren von Clientanwendungen mit Geschäftsprozessen
Einführung in das Beispielszenario
Erstellen der mobilen WPF-Clientanwendung
Erstellen des WCF-Diensts
Bereitstellen der mobilen Clientanwendung und anderer Komponenten
Debuggen der Lösungskomponenten
Schlussbemerkung
Weitere Ressourcen

Inhalt

  • Integrieren von Clientanwendungen mit Geschäftsprozessen

  • Einführung in das Beispielszenario

  • Erstellen der mobilen WPF-Clientanwendung

  • Erstellen des WCF-Diensts

  • Bereitstellen der mobilen Clientanwendung und anderer Komponenten

  • Debuggen der Lösungskomponenten

  • Schlussbemerkung

  • Weitere Ressourcen

Klicken Sie hier, um den Code abzurufen  Beispielcode herunterladen

Integrieren von Clientanwendungen mit Geschäftsprozessen

Mobile Geräte werden immer leistungsfähiger und benutzerfreundlicher. Robuste Laptops, Netbooks, Tablet PCs und Mobiltelefone gehören inzwischen zum beruflichen Alltag, da Mitarbeiter von überall Zugriff auf Informationen und Anwendungen benötigen, um ihre Aufgaben erledigen zu können. Zudem ist es heute einfacher denn je, Anwendungen für mobile Geräte zu entwickeln. Die Folge ist, dass Geschäftsszenarien immer öfter die Integration von Clientanwendungen in Geschäftsprozesse und Workflows erfordern. Dieser Artikel ist Teil einer Artikelreihe, in der diese Integration beschrieben wird:

Microsoft SharePoint Foundation 2010 und Microsoft SharePoint Server 2010 bieten Workflowfunktionen, mit denen Sie Geschäftsprozesse modellieren und in zahlreiche Anwendungen und Systeme integrieren können. Sie können Clientanwendungen erstellen, um die Reichweite des Workflows zu vergrößern und den Workflow außerhalb des Kontexts von SharePoint-Websites verfügbar zu machen. Zum Erstellen von Clientanwendungen für den Zugriff auf Workflows in SharePoint-Websites benötigen Sie eine Clientanwendung, Netzwerkfunktionen (Netzwerkdienste) und Integration mit SharePoint-Listen und -Workflows.

Szenarien

Die folgenden Szenarien sind Beispiele für die Verwendung von mobilen Geräten mit SharePoint-Workflows:

  • Eine Versicherungsgesellschaft, die mobile Anwendungen nutzt, um versicherte Anlagen aufzufinden und Schadensmeldungen für Kunden einzureichen.

  • Ein Unternehmen mit unterirdischer Infrastruktur, z. B. eine Telefongesellschaft, ein Stromversorger oder ein Kabelnetzbetreiber, das mobile Anwendungen einsetzt, um unterirdische Infrastruktur zu lokalisieren und zu markieren, damit sie beim Graben nicht beschädigt wird.

  • Ein Wasserversorger, der mobile Anwendungen nutzt, um den Wasserverbrauch seiner Kunden zu dokumentieren.

  • Ein Einzelhandelsunternehmen, das mobile Anwendungen als Point-of-Sale-Anwendung bei Outdoor-Events (z. B. bei Konzerten, Sportveranstaltungen, Volksfesten usw.) einsetzt.

Wie die obigen Szenarien zeigen, sind generell ein breites Spektrum an Funktionen, Datenzugriff und Prozessintegration in mobilen Anwendungen notwendig. Die Entwicklung von mobilen Anwendungen, die diese Anforderungen erfüllen, geht schneller, wenn diese mobilen Anwendungen mit SharePoint 2010 integriert sind.

In diesem Artikel geht es schwerpunktmäßig darum, wie Clientanwendungen mit dem SharePoint-Framework integriert werden können. Insbesondere wird aufgezeigt, wie Daten zum Zwecke der Integration mit Workflowprozessen in SharePoint-Listen gelesen und geschrieben werden können.

Vorteile

Die Erweiterung von SharePoint-Workflows über SharePoint-Websites in einem Webbrowser hinaus eröffnet Workflowteilnehmern mehrere Vorteile. Zu diesen Vorteilen gehören unter anderem folgende:

  • Interaktion mit Workflows von einer mobilen Clientanwendung aus (mobiler Zugriff)

  • Verringerung der Zahl der Schritte zur Interaktion mit einem Workflow

  • Erweiterung des Workflowprozesses durch umfangreiche Daten und Funktionen

  • Automatisierung von Teilen des Workflowprozesses

Komponenten

Sie müssen mehrere Komponenten erstellen, um mobile Clientanwendungen mit SharePoint-Workflows zu integrieren. Hierzu gehören der Computer, auf dem SharePoint Server ausgeführt wird, Websites, Listen und Workflows zum Speichern von Daten, Definieren von Geschäftsprozessen und Definieren von Sicherheitsberechtigungen, die mobilen Clientanwendungen, die auf die Daten in den SharePoint-Listen und -Workflows zugreifen, und die Dienste, die die Kommunikation zwischen der mobilen Clientanwendung und dem Computer mit SharePoint Server unterstützen. Die folgende Abbildung zeigt diese Komponenten und die Beziehungen zwischen ihnen.

Abbildung 1. Mit SharePoint-Workflows integrierte mobile Clientanwendungen

Ereignisfluss

Einführung in das Beispielszenario

Betrachten wir einmal folgendes Szenario: Eine Versicherungsgesellschaft erstellt eine mobile Anwendung, die mit SharePoint-Websites, -Listen und -Workflows integriert ist. Mithilfe der mobilen Anwendung können Versicherungsvertreter im Außendienst Ansprüche von Kunden bearbeiten, den Anspruch überprüfen, weitere Informationen über den Versicherungsfall sammeln und dem Anspruch stattgeben oder ihn zurückweisen.

Dieses Beispiel wird im gesamten vorliegenden Artikel herangezogen, um den Kontext des betreffenden Themas zu verdeutlichen und zu zeigen, wo eine WPF-Clientanwendung zur Integration mit Geschäftsprozessen, SharePoint-Websites, -Listen und -Workflows verwendet wird.

Contoso, Inc. ist eine Versicherungsgesellschaft, die mithilfe von SharePoint Server 2010 und Microsoft Office 2010 ein automatisiertes System zur Erfassung und Verarbeitung von Versicherungsfällen implementiert hat. Diese Lösung gibt dem Versicherungsnehmer die Möglichkeit, Einzelheiten des Schadensfalls direkt mit dem Unternehmen, den Versicherungsvertretern und der Reparaturwerkstatt auszutauschen, um eine Beilegung des Falls herbeizuführen.

Beteiligte

  • Don Funk, Fahrer (Unfallopfer), ein Kunde von Contoso, Inc.

  • April Regan, Kundenservice-Mitarbeiterin bei Contoso, Inc.

  • Rob Young, Versicherungsvertreter bei Contoso, Inc.

  • Jeff Ford, Inhaber einer KFZ-Werkstatt und Partner von Contoso, Inc.

Ereignisabfolge

Abbildung 2. Ereignisabfolge

Workflowdiagramm

Ein Gewittersturm ist über das Stadtviertel hinweggefegt, in dem Don Funk wohnt. Die heftigen Sturmböen haben einen Baum umgerissen, der auf Dons Auto gestürzt ist. Don macht mit der Kamera seines Handys Fotos von dem Schaden und sendet diese zusammen mit einem Bericht über den Vorfall über sein Mobiltelefon an seinen Versicherer, um seinen Versicherungsanspruch geltend zu machen.

Die Schadensmeldung geht bei der Versicherungsgesellschaft ein, wo sie einer Aufgabenliste hinzugefügt wird. April, eine Mitarbeiterin des Kundenservice, erhält eine entsprechende Benachrichtigung, prüft die Daten, um sicherzustellen, dass alle erforderlichen Informationen vorliegen, und übergibt den Fall an den zuständigen Versicherungsvertreter, Rob Young.

Für Rob Young wird die Aufgabe erstellt, den Anspruch zu untersuchen und dem Antrag auf Schadenersatz entweder stattzugeben oder ihn abzulehnen. Rob Young liest die Schadensmeldung und trifft sich dann mit Don, um den Schaden zu besichtigen und weitere Informationen über das Ereignis zu sammeln. Er kommt zu dem Schluss, dass kein Betrugsfall vorliegt, genehmigt den Versicherungsanspruch und fordert einen Kostenvoranschlag für die Reparatur an. Die Aufgabe, die Rob zugewiesen ist, wird aktualisiert, und der Workflow weist dem KFZ-Werkstattinhaber Jeff Ford eine neue Aufgabe zu, ein Angebot für die Reparaturarbeiten einzusenden.

Als Jeff die Benachrichtigung erhält, dass Contoso, Inc. eine neue Aufforderung zur Angebotsabgabe bereitgestellt hat, meldet er sich beim Extranet von Contoso, Inc. an und füllt ein Angebotsformular aus. Jeff erhält den Zuschlag für die Reparatur und vereinbart mit Don einen Termin für die Durchführung der Arbeiten an Dons Auto.

Nachdem das Fahrzeug repariert worden ist, stellt Jeff eine Rechnung an Contoso.

Details des Workflows

Abbildung 3 zeigt den Teil des Microsoft Visual Studio 2010-Workflows, der für diesen Artikel verwendet wird.

Abbildung 3. Workflowdiagramm

Schadensliste

Wie das Diagramm zeigt, wird von der createInsAgentTask-Aktivität eine Aufgabe für den Versicherungsvertreter (Rob Young im aktuellen Szenario) erstellt. Anschließend erstellt die logToHistoryListActivity-Aktivität ein Listenelement in der Workflowverlaufsliste, das darauf hinweist, dass die Aufgabe dem Versicherungsvertreter zugewiesen wurde. Zuletzt werden zwei E-Mail-Nachrichten gesendet, mit denen der Versicherungsnehmer (Don Funk) und der Versicherungsvertreter (Rob Young) darüber benachrichtigt werden, dass der Anspruch bearbeitet wurde und die abschließende Untersuchung und Genehmigung aussteht.

Abbildung 4. Die Aufgabe, die dem Versicherungsvertreter in der Aufgabenliste für Versicherungsfälle zugewiesen ist

Schadensaufgabenliste

Die Versicherungsfallliste enthält das dem Workflow zugeordnete Listenelement. An diesem Punkt gibt der Status des Workflows an, dass ein Vertreter zugewiesen wird, der den Anspruch bearbeiten soll.

Abbildung 5. Aktueller Workflowstatus in der Versicherungsfallliste

Schadensdashboard

An dieser Stelle verwendet der Versicherungsvertreter, Rob Young, die WPF-Clientanwendung, um den Anspruch zu untersuchen und zu genehmigen.

Erstellen der mobilen WPF-Clientanwendung

Die in diesem Szenario verwendete mobile Clientanwendung ist eine WPF-Anwendung (Windows Presentation Framework), die mit Visual Studio 2010 erstellt wurde. Mithilfe der mobilen Clientanwendung können Versicherungsvertreter im Außendienst Versicherungsansprüche von Kunden bearbeiten, den Anspruch überprüfen, weitere Informationen über den Versicherungsfall sammeln und dem Anspruch stattgeben oder ihn zurückweisen. In diesem Abschnitt wird beschrieben, wie Sie eine WPF-Clientanwendung erstellen, sie für die Nutzung einer Schnittstelle mit einem WCF-Dienst konfigurieren und anschließend mit SharePoint-Workflows integrieren.

Zum Erstellen der Komponenten benötigen Sie die folgenden Elemente.

  • Ein Server mit Windows Server 2008 R2, auf dem SharePoint Server 2010 installiert ist

  • Visual Studio 2010

  • Visual Studio 2010-SharePoint-Projektvorlagen

HinweisHinweis

Der Beispielcode für diesen Artikel enthält den gesamten Quellcode für die Anwendungen und Dienste, über die das zuvor beschriebene Beispielszenario implementiert wird. In den Schritt-für-Schritt-Anweisungen in diesem Artikel wird beschrieben, wie Sie die einzelnen Teile der Anwendungen und Dienste für das Beispielszenario erstellen.

Klicken Sie hier, um den Code abzurufen  Code zum Herunterladen

Erstellen der WPF-Anwendung

Die WPF-Anwendung im Codebeispiel hat den Namen Contoso.AgentApp. Das Contoso.AgentApp-Projekt ist Teil der Contoso.Solution-Lösung. Die Contoso.AgentApp-Anwendung enthält umfangreiche Funktionen, von denen die meisten jedoch für diesen Artikel nicht anwendbar sind.

In diesem Abschnitt wird beschrieben, wie Sie eine WPF-Anwendung mit Visual Studio 2010 erstellen und die in diesem Artikel behandelten Komponenten implementieren.

So erstellen Sie eine WPF-Anwendung in Visual Studio 2010

  1. Starten Sie Visual Studio 2010.

  2. Zeigen Sie im Menü Datei auf Neu, und klicken Sie dann auf Projekt.

  3. Erweitern Sie im Dialogfeld Neues Projekt im Bereich Zuletzt verwendete Vorlagen den Eintrag Visual C#, und klicken Sie dann auf Windows.

  4. Klicken Sie rechts vom Bereich Zuletzt verwendete Vorlagen auf WPF-Anwendung, um die Projektvorlage für WPF-Anwendungen zu verwenden.

    Abbildung 6. Projektvorlage für WPF-Anwendungen in Visual Studio 2010

    Silverlight-Anwendungsvorlage

  5. Geben Sie im Feld Name den gewünschten Namen für das Projekt ein, z. B. Contoso.AgentAppSample.

  6. Geben Sie im Feld Speicherort den Speicherort für das Projekt ein.

  7. Klicken Sie auf OK, um die Lösung zu erstellen.

Registrieren des WCF-Diensts

Die Clientanwendung verwendet für die Interaktion mit SharePoint-Websites, -Listen und -Workflows einen WCF-Dienst. Damit der WCF-Dienst verwendet wird, müssen Sie der WPF-Anwendung einen Dienstverweis hinzufügen.

HinweisHinweis

Bevor Sie den Dienstverweis hinzufügen können, müssen Sie den WCF-Dienst erstellen. Führen Sie die Schritte im Abschnitt Erstellen des WCF-Diensts aus, um den benutzerdefinierten WCF-Dienst zu erstellen, bevor Sie der WPF-Anwendung den WCF-Dienstverweis hinzufügen.

In diesem Abschnitt wird beschrieben, wie Sie der WPF-Anwendung Dienstverweise hinzufügen.

So fügen Sie den Dienstverweis hinzu

  1. Wählen Sie im Projektmappen-Explorer das Contoso.AgentAppSample-Projekt aus.

  2. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den Knoten Verweise, und wählen Sie dann Dienstverweis hinzufügen aus.

  3. Geben Sie im Adressfeld die URL zum vorher erstellten WCF-Dienst ein.

  4. Klicken Sie auf Los.

  5. Geben Sie im Feld Namespace einen Anzeigenamespace für den Dienst ein.

    Abbildung 7. Hinzufügen eines Dienstverweises

    Erstellen des Websiteprojekts

  6. Klicken Sie auf OK.

    Der Dienstverweis wird der Clientanwendung für den WCF-Dienst hinzugefügt.

    Abbildung 8. WCF-Dienstverweis

    Silverlight-Anwendung mit Referenzen

Interaktion mit Workflows

Wenn der Versicherungsvertreter den Anspruch bestätigt und seine Aufgabe erledigt, verschiebt die WPF-Anwendung den Workflow eigentlich nicht zum nächsten Schritt. Vielmehr löst sie durch Aktualisieren der aktuellen Workflowaufgabe die Verschiebung des Workflows zum nächsten Schritt aus.

So rufen Sie WCF-Dienste aus WPF-Anwendungen auf

  1. Doppelklicken Sie im Projektmappen-Explorer auf die Datei MainWindow.xaml.cs.

  2. Fügen Sie die folgende using-Anweisung hinzu, um den WCF-Dienstverweis-Namespace zu registrieren.

    using Contoso.AgentAppSample.ContosoIncidentService;
    
  3. Fügen Sie in der MainWindow-Klasse folgende Codezeile ein, um eine Instanz der ContosoIncidentsClient-Klasse zu erstellen.

    ContosoIncidentsClient contosoService;
    
  4. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den Projektknoten, und wählen Sie Erstellen aus.

    HinweisHinweis

    Die ContosoIncidentsClient-Klasse wird von Visual Studio 2010 automatisch generiert, wenn Sie dem Projekt den WCF-Dienstverweis hinzufügen. Die ContosoIncidentsClient-Klasse fungiert als Proxy zum WCF-Dienst.

  5. Doppelklicken Sie im Projektmappen-Explorer auf die Datei MainWindow.xaml.

  6. Öffnen Sie die Toolbox, und ziehen Sie ein Schaltflächen-Steuerelement auf die Entwurfsoberfläche.

  7. Klicken Sie mit der rechten Maustaste auf das Schaltflächen-Steuerelement, und wählen Sie dann Eigenschaften aus.

  8. Klicken Sie im Fenster Eigenschaften auf die Schaltfläche Ereignisse.

  9. Doppelklicken Sie auf das Feld neben dem Click-Ereignis, um den Click-Ereignishandler für die Schaltfläche zu generieren.

  10. Fügen Sie dem Click-Ereignishandler für die Schaltfläche den folgenden Code hinzu. Dieser Code veranschaulicht, wie die WPF-Anwendung Aufrufe an den WCF-Dienst sendet, um die aktuelle Workflowaufgabe zu aktualisieren. Die button1_Click-Methode wird ausgelöst, wenn in der Clientanwendung auf die Schaltfläche geklickt wird.

    private void button1_Click(object sender, RoutedEventArgs e)
    {
         string incidentID = 1;
         string returnValue =
              contosoService.UpdateSharePointWorkflowTask(webUrl, listName,
              "Incident - " + incidentID, "Rob Young");
         MessageBox.Show("Claim Approved Successfully");
    }
    
HinweisHinweis

Im Codebeispiel wird die Btn_Approve_Click-Methode ausgelöst, wenn der Versicherungsvertreter in der Clientanwendung auf eine Schaltfläche klickt, um den Anspruch zu bestätigen. Anhand des Bezeichners, der dem Ereignis zugeordnet ist, mit dem die Workflowaufgabe verbunden ist, und dem Benutzer, dem die Workflowaufgabe zugewiesen ist, kann die einzelne Workflowaufgabe gefunden werden.

Die UpdateSharePointWorkflowTask-Methode in der contosoService-Klasse übergibt die Parameter, die zum Aktualisieren der Workflowaufgabe benötigt werden, wie weiter oben beschrieben.

Erstellen des WCF-Diensts

Der WCF-Dienst ist die zentrale Komponente, über die die Clientanwendung mit den Workflowaufgaben interagieren kann. Der Dienst ist flexibel genug, um eine Schnittstelle mit mehreren SharePoint-Webanwendungen in der Serverfarm nutzen zu können. In diesem Abschnitt wird beschrieben, wie Sie WCF-Dienste erstellen, die eine Schnittstelle mit mehreren SharePoint-Webanwendungen in der gleichen Serverfarm nutzen können, und wie Sie damit Workflowaufgaben aktualisieren können.

Separate IIS-Website (Internet Information Services) Website

Damit sichergestellt ist, dass der Dienst eine Schnittstelle mit mehreren SharePoint-Webanwendungen in der Serverfarm verwenden kann, müssen Sie den Dienst auf einer separaten IIS-Website (Internet Information Services, Internetinformationsdienste) auf dem Computer bereitstellen, auf dem SharePoint Server ausgeführt wird. Durch die Bereitstellung des WCF-Diensts außerhalb des Kontexts von SharePoint-Webanwendungen wird der WCF-Dienst zudem von Problemen abgeschirmt, die beim Installieren von Service Packs oder Hotfixes in der Serverfarm auftreten können.

Der Anwendungspool, der dem WCF-Dienst zugeordnet ist, verwendet die gleiche Identität wie die SharePoint-Webanwendung. Dadurch wird sichergestellt, dass der WCF-Dienst über die nötigen Berechtigungen zum Zugriff auf das SharePoint-Objektmodell verfügt.

Abbildung 9. IIS-Website für den WCF-Dienst

Abbildung 9

Im Codebeispiel heißt der WCF-Dienst Contoso.Service. Das Contoso.Service-Projekt ist Teil der Contoso.Solution-Lösung. Der WCF-Dienst von Contoso.Service enthält zahlreiche Methoden zur Unterstützung der Komponenten im Beispielszenario, von denen die meisten jedoch für diesen Artikel nicht anwendbar sind.

In diesem Abschnitt wird beschrieben, wie Sie einen WCF-Dienst mithilfe von Visual Studio 2010 sowie eine Methode zum Aktualisieren des Status einer SharePoint-Workflowaufgabe erstellen.

So erstellen Sie den WCF-Dienst

  1. Starten Sie Visual Studio 2010.

  2. Zeigen Sie im Menü Datei auf Neu, und klicken Sie dann auf Projekt.

  3. Erweitern Sie im Dialogfeld Neues Projekt im Bereich Zuletzt verwendete Vorlagen den Eintrag Visual C#, und klicken Sie dann auf WCF.

  4. Klicken Sie rechts vom Bereich Zuletzt verwendete Vorlagen auf WCF-Dienstanwendung.

    Abbildung 10. Projektvorlage für WCF-Dienstanwendungen in Visual Studio 2010

    ClientAccessPolicy.xml

  5. Geben Sie im Feld Name den gewünschten Namen für das Projekt ein, z. B. Contoso.Service.

  6. Geben Sie im Feld Speicherort den Speicherort für das Projekt ein.

  7. Klicken Sie auf OK, um die Lösung zu erstellen.

So fügen Sie Verweise auf Microsoft.SharePoint.dll hinzu

  1. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf Verweise, und klicken Sie dann auf Verweis hinzufügen.

  2. Klicken Sie auf die Registerkarte .NET.

  3. Blättern Sie in der Liste hinunter, bis Sie Microsoft.SharePoint finden.

  4. Wählen Sie Microsoft.SharePoint aus.

  5. Klicken Sie auf OK.

Aktualisieren von Workflowaufgaben

Die WPF-Anwendung verschiebt den Workflow nicht direkt von einem Schritt zum nächsten. Vielmehr löst sie durch Aktualisieren der aktuellen Workflowaufgabe die Verschiebung des Workflows zum nächsten Schritt aus. Das Workflowmodul reagiert dann auf die Änderungen in den Workflowaufgaben und verschiebt den Workflow von einem Schritt zum nächsten.

Mit der UpdateSharePointWorkflowTask-Methode im WCF-Dienst wird die aktuelle Workflowaufgabe aktualisiert. Die UpdateSharePointWorkflowTask-Methode verwendet die vier Parameter, die in der folgenden Tabelle beschrieben werden.

Tabelle 1. Parameter für die UpdateSharePointWorkflowTask-Methode

Eigenschaft

Beschreibung

webUrl

Die SharePoint-Website, in der der Workflow ausgeführt und die Aufgaben gespeichert sind.

listName

Die SharePoint-Liste, in der die Workflowaufgaben gespeichert sind.

listItemName

Das Listenelement, das der zu aktualisierenden Workflowaufgabe entspricht.

AssignedTo

Der Benutzer, dem die Workflowaufgabe derzeit zugewiesen ist.

So erstellen Sie die UpdateSharePointWorkflowTask-Methode und den zugehörigen ServiceContract im WCF-Dienst

  1. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf die Datei IService1.cs , und wählen Sie Löschen aus.

  2. Klicken Sie auf OK.

  3. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf die Datei IService1.svc , und wählen Sie Löschen aus.

  4. Klicken Sie auf OK.

  5. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Contoso.Service-Projekt.

  6. Wählen Sie Hinzufügen aus, und klicken Sie dann auf Neues Element.

  7. Klicken Sie rechts vom Bereich Zuletzt verwendete Vorlagen auf WCF-Dienst.

  8. Geben Sie im Feld Name den Namen ContosoIncidents.svc ein.

  9. Klicken Sie auf Hinzufügen.

  10. Doppelklicken Sie im Projektmappen-Explorer auf die Datei ContosoIncidents.svc.cs .

  11. Fügen Sie der Datei die folgenden using-Anweisungen hinzu.

    Using System.Collections;
    Using Microsoft.SharePoint;
    Using Microsoft.SharePoint.Workflow;
    
  12. Fügen Sie der ContosoIncidents-Klasse den folgenden Code hinzu.

    public string UpdateSharePointWorkflowTask(string webUrl, string listName, string listItemName, string AssignedTo)
    {
         string returnValue = "Failed";
         try
         {
              using (SPSite oSite = new SPSite(webUrl))
              {
                   using (SPWeb oWeb = oSite.RootWeb)
                   {
                        SPList oList = oWeb.Lists[listName];
                        SPListItem workFlowItem = null;
                        string assignedTo = null;
                        string pctComplete = null;
                        string status = null;
    
                        foreach (SPListItem oItem in oList.Items)
                        {
                             if (oItem.Title.Equals(listItemName))
                             {
                                  workFlowItem = oItem;
                                  break;
                             }
                        }
    
                        if (workFlowItem != null)
                        {
                             foreach (SPWorkflowTask oTask in 
                                  workFlowItem.Tasks)
                             {
                                  assignedTo = 
                                       oTask["Assigned To"].ToString();
                                  pctComplete = 
                                       oTask["% Complete"].ToString();
                                  status = oTask["Status"].ToString();
    
                                  if (assignedTo.Contains(AssignedTo))
                                  {
                                       if (pctComplete != "1")
                                       {
                                            Hashtable ht = new Hashtable();
                                            ht["Status"] = "Completed";
                                            ht["% Complete"] = "1";
                                            oSite.AllowUnsafeUpdates = 
                                                 true;
                                            SPWorkflowTask.AlterTask((oTask 
                                                 as SPListItem), ht, true);
                                            oTask.Update();
                                            oSite.AllowUnsafeUpdates = 
                                                 false;
                                            returnValue = "Success";
                                       }
                                  }
                             }
                        }
                        else
                        {
                             returnValue = "Task to update was not found.";
                        }
                   }
              }
         }
         catch (Exception ex)
         {
              returnValue = ex.Message;
         }
         return returnValue;
    }
    

    Die UpdateSharePointWorkflowTask-Methode sucht das Listenelement heraus, das der zu aktualisierenden Workflowaufgabe für den angegebenen Benutzer entspricht. Anschließend aktualisiert sie die Spalten Status und % abgeschlossen so, dass daraus hervorgeht, dass die Aufgabe erledigt ist.

  13. Doppelklicken Sie im Projektmappen-Explorer auf die Datei IContosoIncidents.cs .

  14. Fügen Sie der IContosoIncidents-Schnittstelle den folgenden Code hinzu.

    [OperationContract]
    String UpdateSharePointWorkflowTask(string webUrl, string listName, string listItemName, string AssignedTo);
    

Die Aufgabenliste, die die Workflowaufgabe enthält, sieht nach der Aktualisierung der Workflowaufgabe etwa so wie in Abbildung 11 aus. Wie Sie sehen, sind die Spalten Status und % abgeschlossen aktualisiert. Der Workflow hat erkannt, dass die dem Versicherungsvertreter zugewiesene Aufgabe erledigt ist und hat die dem nächsten Schritt im Workflow zugeordnete Aufgabe erstellt.

Abbildung 11. Aktualisierte Workflowaufgabe in der Aufgabenliste für Versicherungsfälle

Neustarten der Website

Wenn der WCF-Dienst die Workflowaufgabe aktualisiert, reagiert der Workflow auf die aktualisierte Aufgabe, aktualisiert den Workflowstatus und protokolliert die Ereignisse in der Workflowverlaufsliste. Dann wechselt der Workflow zum nächsten Schritt, wie in Abbildung 3 gezeigt.

Im Codebeispiel heißt der Workflow Contoso.Workflow. Das Contoso.Workflow-Projekt ist Teil der Contoso.Solution-Lösung. Das Contoso.Workflow-Projekt enthält zahlreiche Aktivitäten, die das Beispielszenario unterstützen, von denen die meisten für diesen Artikel jedoch nicht anwendbar sind.

In diesem Abschnitt wird beschrieben, wie Sie SharePoint-Workflows mit Visual Studio 2010 erstellen und wie Sie eine abgeschlossene Aktivität zum Aktualisieren des Status eines SharePoint-Workflows erstellen.

So erstellen Sie den Workflow

  1. Starten Sie Visual Studio 2010.

  2. Zeigen Sie im Menü Datei auf Neu, und klicken Sie dann auf Projekt.

  3. Erweitern Sie im Dialogfeld Neues Projekt im Bereich Zuletzt verwendete Vorlagen den Eintrag Visual C#, erweitern Sie SharePoint, und klicken Sie dann auf 2010.

  4. Klicken Sie rechts vom Bereich Zuletzt verwendete Vorlagen auf Sequenzieller Workflow.

  5. Geben Sie im Feld Name den gewünschten Namen für das Projekt ein, z. B. Contoso.Workflow.

  6. Geben Sie im Feld Speicherort den Speicherort für das Projekt ein.

  7. Klicken Sie auf OK, um die Lösung zu erstellen.

  8. Geben Sie im SharePoint-Anpassungs-Assistent die URL zu der Website ein, auf der Sie den Workflow bereitstellen und debuggen möchten.

    Abbildung 12. Lösungseinstellungen im SharePoint-Anpassungs-Assistent

    Testen von Druckergebnissen

  9. Klicken Sie auf Weiter.

  10. Geben Sie im SharePoint-Anpassungs-Assistent einen Namen für den Workflow ein, und klicken Sie auf das Optionsfeld Listenworkflow.

    Abbildung 13. Workfloweinstellungen im SharePoint-Anpassungs-Assistent

    Standardmäßiges Kontextmenü

  11. Wählen Sie im SharePoint-Anpassungs-Assistent die Liste, die Verlaufsliste und die Aufgabenliste aus, die dem Workflow zugeordnet werden sollen.

  12. Im Codebeispiel werden für das Contoso.Workflow-Projekt die Einstellungen verwendet, die in Abbildung 14 zu sehen sind. Diese Listen sind erst auf dem System verfügbar, nachdem Sie den Installer zum Erstellen der Beispielwebsites und -listen ausgeführt haben, die das Demoszenario unterstützen.

    Abbildung 14. Workflowlisteneinstellungen im SharePoint-Anpassungs-Assistent

    Popup-Anzeige bei Rechtsklick

  13. Klicken Sie auf Weiter.

  14. Klicken Sie auf Fertig stellen. Die in Visual Studio 2010 erstellten SharePoint-Workflows können nur als Server-Farmlösung bereitgestellt werden.

  15. Wie bereits erwähnt, enthält der Beispielcode den vollständigen Workflow, der zum Beispielszenario gehört. In diesem Abschnitt wird beschrieben, wie Sie die Aktivität für die abgeschlossene Aufgabe für diesen Artikel anwendbar machen. Die abgeschlossene Aufgabe wird in Abbildung 15 gezeigt.

    Abbildung 15. Workflowaktivität für eine abgeschlossene Aufgabe im Beispielszenario-Workflow

    Hinzufügen eines Webparts

So erstellen Sie die Beispielwebsites und -listen für die Demo

  1. Doppelklicken Sie im Projektmappen-Explorer auf die Datei Workflow1.cs.

  2. Ziehen Sie aus der Toolbox eine CompleteTask-Aktivität auf die Entwurfsoberfläche.

    Abbildung 16. Hinzufügen einer Workflowaktivität für eine abgeschlossene Aufgabe zum Workflow

    Hinzufügen eines Webparts

  3. Doppelklicken Sie auf die CompleteTask-Aktivität.

  4. Fügen Sie der completeTask1_MethodInvoking-Methode den folgenden Code hinzu:

         insAgentTaskProperties.PercentComplete = 100;
         SPListItem item = workflowProperties.Item;
         item["Status"] = "Claim Approved";
         item.SystemUpdate(false);
         workflowHistoryComments = "Insurance agent has reviewed the claim
          and has approved the claims request which completes their task - "      + insAgentTaskProperties.Title + ".";
    
HinweisHinweis

Im Codebeispiel heißt die Methode, die dieser Serie von Schritten entspricht, completeInsAgentTask_MethodInvoking-Methode.

Die Liste, die die Workflowelemente enthält, sieht nach der Aktualisierung des Workflowstatus etwa so wie in Abbildung 17 aus. Beachten Sie, dass die Spalte Status so aktualisiert wurde, dass daraus hervorgeht, dass der Versicherungsvertreter den Anspruch genehmigt hat.

Abbildung 17. Aktualisierter Workflowstatus in der Versicherungsfallliste

Eingeben des Pfads

Bereitstellen der mobilen Clientanwendung und anderer Komponenten

Nachdem Sie die WPF-Clientanwendung erstellt haben, müssen Sie sie auf den Desktops in der Organisation bereitstellen. Außerdem müssen Sie den WCF-Dienst in der Serverfarm bereitstellen. In diesem Abschnitt wird erläutert, wie Sie diese Komponenten mit einem automatisierten, wiederholbaren und konsistenten Verfahren packen und bereitstellen.

Bereitstellen der Lösung mit ClickOnce

Sie können ClickOnce-Bereitstellungspakete verwenden, um WPF-Clientanwendungen zu packen und bereitzustellen.

So erstellen Sie ClickOnce-Bereitstellungspakete

  1. Klicken Sie in Visual Studio 2010 im Projektmappen-Explorer mit der rechten Maustaste auf das WPF-Projekt, und klicken Sie dann auf Eigenschaften.

  2. Klicken Sie auf die Registerkarte Veröffentlichen.

    Abbildung 18. Registerkarte Veröffentlichen in Visual Studio 2010

    Bearbeiten des Silverlight-Webparts

  3. Klicken Sie auf Webpublishing-Assistent, um den Assistent zu starten, mit dem das ClickOnce-Bereitstellungspaket generiert wird.

  4. Geben Sie einen Speicherort für die Veröffentlichung der Anwendung ein.

    Abbildung 19. Festlegen des Veröffentlichungsspeicherorts im Webpublishing-Assistent

    Konfigurieren der Silverlight-Webparteigenschaften

  5. Klicken Sie auf Weiter.

  6. Klicken Sie auf Weiter.

  7. Klicken Sie auf Weiter.

  8. Klicken Sie auf Fertig stellen.

    Wenn der Veröffentlichungsprozess abgeschlossen ist, werden die folgenden Dateien an den Veröffentlichungsspeicherort kopiert. Durch Ausführen von Setup.exe wird die WPF-Anwendung auf einem Clientgerät installiert.

    Abbildung 20. Die vom Webpublishing-Assistent generierten Dateien

    Silverlight-Anwendung in einem Webpart

    HinweisHinweis

    Weitere Informationen zu ClickOnce-Bereitstellungspaketen finden Sie unter Weitere Ressourcen.

Packen des WCF-Diensts mit Visual Studio 2010

Sie können den WCF-Dienst auch mithilfe von Visual Studio 2010 packen.

So konfigurieren Sie für den WCF-Dienst Optionen für das Packen

  1. Klicken Sie in Visual Studio 2010 im Projektmappen-Explorer mit der rechten Maustaste auf das WCF-Dienstprojekt, und klicken Sie dann auf Eigenschaften.

  2. Klicken Sie auf die Registerkarte Web packen/veröffentlichen.

    Abbildung 21. Registerkarte Web packen/veröffentlichen in Visual Studio 2010

    Abbildung 21

  3. Beachten Sie den Speicherort für die Paketerstellung.

So generieren Sie das Paket nach dem Festlegen von Paketkonfigurationsoptionen

  1. Klicken Sie in Visual Studio 2010 im Projektmappen-Explorer mit der rechten Maustaste auf das WCF-Dienstprojekt.

  2. Klicken Sie auf Bereitstellungspaket erstellen.

    Abbildung 22. Erstellen von Bereitstellungspaketen in Visual Studio 2010

    Abbildung 22

Wenn Sie sich das Ausgabefenster einmal genauer ansehen, erkennen Sie, welche einzelnen Schritte in Visual Studio 2010 ausgeführt werden, um das Bereitstellungspaket zu erstellen, und wo die Datei generiert wird.

Abbildung 23. Visual Studio 2010-Ausgabefenster, das die Erstellung des Pakets für die WCF-Dienstanwendung zeigt

Abbildung 23

Das von Visual Studio 2010 generierte Paket erstellt eine IIS-Website und stellt den zugehörigen Code und die Ressourcen bereit. Es erstellt jedoch keine Webanwendung oder weist den Anwendungspool nicht der Webanwendung zu. Wenn Sie den Bereitstellungsprozess vollständig automatisieren möchten, können Sie verwalteten Code verwenden, um die IIS-Website und die zugehörige Webanwendung zu erstellen und der Webanwendung den entsprechenden Anwendungspool zuzuweisen. Die folgende Batchdatei stellt den WCF-Dienst auf einem Computer mit SharePoint Server bereit und führt nach Bedarf Aufrufe in einer benutzerdefinierten Konsolenanwendung aus, um den Prozess vollständig zu automatisieren.

[command]
rem Set the path to the console application that creates the IIS web site and web application.
set Installerengine=InstallerEngine\Contoso.InstallerEngine.exe

rem Set the path where the IIS web site should be created.
set IISWebSitePhysicalPath=C:\SP2010Demo

rem Create the directory for the IIS web site.
md "C:\SP2010Demo\Contoso.Service"

rem Create the IIS web site.
"%Installerengine%" createiiswebsite "Contoso Service" "9999" "%IISWebSitePhysicalPath%"

rem Set the location to the package for the WCF service generated by Visual Studio 2010.
set ServicePackage=5_Service\Package\Contoso.Service.zip

rem Set the location for the web application in the IIS web site.
set Service_IISWebApplication="%IISWebSitePhysicalPath%\Contoso.Service"

rem Set the location to the msdeploy.exe.
set MSDeployTool=%ProgramFiles%\IIS\Microsoft Web Deploy\msdeploy.exe

rem Set the name for the application pool.
set ApplicationPoolName=Contosoo Service Application Pool

rem Deploy the deployment package for the WCF service.
"%MSDeployTool%" -source:package="%ServicePackage%" -dest:auto,includeAcls=false -verb:sync -disableLink:ContentExtension 

rem Add the web application to the IIS web site.
"%Installerengine%" addapplication "Contoso Service" "%Service_IISWebApplication%" "%ApplicationPoolName%"

Die Batchdatei führt Aufrufe in einer Konsolenanwendung aus und führt die CreateWebsite-Methode aus, um eine IIS-Website zu erstellen, auf der der WCF-Dienst gehostet wird. Das Zeichenfolgenarray aus Argumenten enthält die Werte für Namen, Port und Verzeichnis, die zum Erstellen der neuen IIS-Website verwendet wurden. Diese Methode verwendet die ServerManager-Klasse und die Sites-Klasse im Microsoft.Web.Administration-Namespace.

Die Batchdatei führt einen zusätzlichen Aufruf in der Konsolenanwendung aus und führt die AddApplicationToSite-Methode zum Erstellen einer Webanwendung auf der IIS-Website aus, die den WCF-Dienst hostet. Das Zeichenfolgenarray aus Argumenten enthält den Namen der IIS-Website, der die Webanwendung hinzugefügt werden soll, das für die Webanwendung zu erstellende Verzeichnis und den Namen des Anwendungspools, der der Webanwendung zugewiesen werden soll. Bei dieser Methode werden die ServerManager-Klasse, die Sites-Klasse und die Application-Klasse im Microsoft.Web.Administration-Namespace verwendet.

Die Installationsanwendung für das Codebeispiel heißt Contoso.InstallerEngine. Das Contoso.InstallerEngine-Projekt ist Teil der Contoso.Solution-Lösung. Das Contoso.InstallerEngine-Projekt enthält zahlreiche Methoden, die die Installation des Beispielszenarios unterstützen, von denen die meisten jedoch für diesen Artikel nicht anwendbar sind.

Erstellen von Installationsmodulen für Konsolenanwendungen zum Automatisieren der Bereitstellung des WCF-Diensts

In diesem Abschnitt wird beschrieben, wie Sie ein Installationsmodul für eine Konsolenanwendung zur Automatisierung der Bereitstellung des WCF-Diensts auf mobilen Clients erstellen.

So erstellen Sie die Konsolenanwendung

  1. Starten Sie Microsoft Visual Studio 2010.

  2. Zeigen Sie im Menü Datei auf Neu, und klicken Sie dann auf Projekt.

  3. Klicken Sie im Dialogfeld Neues Projekt im Bereich Zuletzt verwendete Vorlagen auf Visual C#.

  4. Klicken Sie rechts vom Bereich Zuletzt verwendete Vorlagen auf Konsolenanwendung.

  5. Geben Sie im Feld Name den gewünschten Namen für das Projekt ein, z. B. Contoso.InstallerEngine.

  6. Geben Sie im Feld Speicherort den Speicherort für das Projekt ein.

  7. Klicken Sie auf OK, um die Lösung zu erstellen.

So fügen Sie Verweise auf System.Web.Administration.dll hinzu

  1. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf Verweise, und klicken Sie dann auf Verweis hinzufügen.

  2. Klicken Sie auf die Registerkarte Durchsuchen.

  3. Navigieren Sie zu der folgenden Assembly und wählen Sie sie aus: C:\Windows\System32\inetsrv\Microsoft.Web.Administration.dll

  4. Klicken Sie auf OK.

  5. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den Projektknoten, und wählen Sie Eigenschaften aus.

  6. Konfigurieren Sie auf der Registerkarte Anwendung für das Zielframework .NET Framework 3.5.

  7. Klicken Sie auf Ja.

So fügen Sie die Methoden zum Erstellen der IIS-Website und zum Hinzufügen eines Anwendungspools zur Website hinzu

  1. Doppelklicken Sie im Projektmappen-Explorer auf die Datei Program.cs .

  2. Ersetzen Sie den Inhalt der Datei Program.cs durch den folgenden Code.

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Configuration;
    using System.IO;
    
    namespace ConsoleApplication1
    {
        class Program
        {
            internal enum InstallerCommands
            {
                createiiswebsite,
                addapplication
            }
    
            static void Main(string[] args)
            {
                if (args.Length > 0)
                {
                    try
                    {
                        InstallerCommands currentCommand = (InstallerCommands)Enum.Parse(typeof(InstallerCommands), args[0]);
                        switch (currentCommand)
                        {
                            case InstallerCommands.createiiswebsite:
                                ProvisionIISWebSite.CreateWebsite(args);
                                break;
                            case InstallerCommands.addapplication:
                                ProvisionIISWebSite.AddApplicationToSite(args);
                                break;
                        }
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine("Error:");
                        Console.WriteLine(ex.Message);
                    }
                }
                else
                {
                    Console.WriteLine("No valid operations detected, type help for list of operations.");
                }
            }       
        }
    }
    
  3. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Projekt Contoso.InstallerEngine .

  4. Wählen Sie Hinzufügen aus, und klicken Sie dann auf Klasse.

  5. Geben Sie im Feld Name den Namen Helper.cs ein.

  6. Klicken Sie auf Hinzufügen.

  7. Ersetzen Sie den Inhalt der Datei Helper.cs durch den folgenden Code.

    using System;
    using System.Text;
    
    namespace ConsoleApplication1
    {
        internal static class Helper
        {
    
            internal static string GetArgumentValue(string[] arguments, string parmName, int index)
            {
                if (arguments.Length > index)
                {
                    return (arguments[index].ToString());
                }
                else
                {
                    throw new ArgumentException("Invalid argument: \"" + parmName + "\".");
                }
            }
    
        }
    }
    
  8. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Contoso.InstallerEngine-Projekt.

  9. Wählen Sie Hinzufügen aus, und klicken Sie dann auf Klasse.

  10. Geben Sie im Feld Name den Namen ProvisionIISWebSite.cs ein.

  11. Klicken Sie auf Hinzufügen.

  12. Ersetzen Sie den Inhalt der Datei ProvisionIISWebSite.cs durch den folgenden Code.

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using Microsoft.Web.Administration;
    
    namespace ConsoleApplication1
    {
        internal static class ProvisionIISWebSite
        {
            internal static void CreateWebsite(string[] args)
            {
                string siteName, port, homeDirectory;
                siteName = Helper.GetArgumentValue(args, "sitename", 1);
                port = Helper.GetArgumentValue(args, "port", 2);
                homeDirectory = Helper.GetArgumentValue(args, "homeDirectory", 3);
    
                ServerManager iisManager = new ServerManager();
                if (iisManager.Sites[siteName] == null)
                {
                    iisManager.Sites.Add(siteName, "http", "*:" + port + ":", homeDirectory);
                    iisManager.CommitChanges();
                    Console.WriteLine("Completed.");
                }
                else
                {
                    Console.WriteLine("Website already exists.");
                }
            }
    
            internal static void AddApplicationToSite(string[] args)
            {
                string siteName, appDirectory, appPoolName;
                siteName = Helper.GetArgumentValue(args, "sitename", 1);
                appDirectory = Helper.GetArgumentValue(args, "appdirectory", 2);
                appPoolName = Helper.GetArgumentValue(args, "apppoolname", 3);
                string[] appArry = appDirectory.Split(@"\".ToCharArray());
                string applicationName = "/" + appArry[appArry.Length - 1];
                ServerManager iisManager = new ServerManager();
                if (iisManager.Sites[siteName] != null)
                {
                    Application app;
                    if (iisManager.Sites[siteName].Applications[applicationName] == null)
                    {
                        app = iisManager.Sites[siteName].Applications.Add(applicationName, appDirectory);
                        app.ApplicationPoolName = appPoolName;
                        iisManager.CommitChanges();
                        Console.WriteLine("Completed.");
                    }
                    else
                    {
                        app = iisManager.Sites[siteName].Applications[applicationName];
                        app.ApplicationPoolName = appPoolName;
                        iisManager.CommitChanges();
                        Console.WriteLine("Updated existing application.");
                    }
                }
                else
                {
                    Console.WriteLine("No such website exists.");
                }
            }
    
        }
    }
    

Debuggen der Lösungskomponenten

Sie können mithilfe von Visual Studio 2010 die WPF-Clientanwendung, den WCF-Dienst und den SharePoint-Workflow debuggen. Zum Debuggen der WPF-Anwendung setzen Sie einen Haltepunkt im WPF-Anwendungscode, stellen Sie sicher, dass es sich um das Startprojekt handelt, und drücken Sie F5, um das Debuggen zu starten. Visual Studio 2010 wird automatisch an den Prozess für die WPF-Anwendung angehängt und unterbricht an dem Haltepunkt im Code.

Zum Debuggen der WCF-Dienstanwendung setzen Sie einen Haltepunkt im WCF-Dienstcode. Während des Debuggens der WPF-Anwendung drücken Sie F11 und steigen in den Code in der WCF-Dienstanwendung ein. Visual Studio 2010 wird automatisch an den Prozess angehängt und unterbricht an dem Haltepunkt, den Sie im WCF-Dienst gesetzt haben.

Zum Debuggen des SharePoint-Workflows setzen Sie einen Haltepunkt im Workflowcode und hängen Visual Studio 2010 an den SharePoint-Timerdienst (OWSTIMER.EXE) an. Dann führen Sie eine Aktion aus, die bewirkt, dass der Workflowcode aufgerufen wird. Visual Studio 2010 unterbricht an dem Haltepunkt, den Sie im Workflowcode gesetzt haben.

Schlussbemerkung

Mobile Anwendungen und Clientanwendungen sind aus der heutigen Arbeitswelt nicht mehr wegzudenken. Das Erstellen von Clientanwendungen, die mit SharePoint-Websites integriert sind, ist eine gängige Aufgabe für Entwickler. Die WPF-Anwendung, die in diesem Artikel erstellt wird, veranschaulicht, wie mobile Anwendungen mit SharePoint-Workflows integriert werden können.

Abbildung 24. Mit einem SharePoint-Workflow integrierte WPF-Anwendung

Abbildung 24

Der vollständige Beispielcode, der zu diesem Artikel verfügbar ist, enthält eine robustere Version der WPF-Anwendung, die mit dem SharePoint-Workflow integriert wird.

Abbildung 25. Mit einem SharePoint-Workflow integrierte WPF-Anwendung

Abbildung 25

Wenn Sie WPF-Anwendungen, WCF-Dienste und SharePoint 2010 verwenden, um leistungsfähige Clientanwendungen, Datenspeicherung und Funktionen für die Workflowintegration bereitzustellen, sparen Sie gegenüber dem Entwickeln von benutzerdefinierten Komponenten Zeit. In diesem Artikel wurde beschrieben, wie Sie WCF-Dienste erstellen und bereitstellen und für den Zugriff auf mehrere SharePoint-Webanwendungen in der gleichen Serverfarm verwenden. Ferner wurde erklärt, wie Sie Workflowaufgaben so aktualisieren, dass sie Workflowprozesse auslösen. Darüber hinaus wurde demonstriert, wie Sie mit Visual Studio 2010 auf einfache Weise WPF-Clientanwendungen packen und bereitstellen sowie WCF-Dienste packen können. Und schließlich wurde erläutert, wie Sie die Bereitstellung von WCF-Diensten in Serverfarmen mithilfe von Batchdateien und verwaltetem Code automatisieren können.

Weitere Ressourcen

Weitere Informationen finden Sie in den folgenden Ressourcen: