Freigeben über


Exemplarische Vorgehensweise: Erstellen eines Workflows mit Zuordnungs- und Initiierungsformularen

Diese exemplarische Vorgehensweise zeigt, wie Sie einen einfachen sequenziellen Workflow erstellen, der die Verwendung von Zuordnungs- und Initiierungsformularen umfasst. Hierbei handelt es sich um ASPX-Formulare, mit denen einem Workflow Parameter hinzugefügt werden können, wenn er vom SharePoint-Administrator erstmals zugeordnet (Zuordnungsformular) und vom Benutzer gestartet (Initiierungsformular) wird.

In dieser exemplarischen Vorgehensweise wird ein Szenario beschrieben, in dem ein Benutzer einen Genehmigungsworkflow für Spesenabrechnungen erstellen möchte, der die folgenden Anforderungen erfüllt:

  • Wenn der Workflow mit einer Liste verknüpft wird, wird für den Administrator ein Zuordnungsformular angezeigt, in dem er ein Ausgabenlimit für Spesenabrechnungen eingibt.

  • Mitarbeiter laden ihre Spesenabrechnungen in die Liste „Freigegebene Dokumente“ hoch, starten den Workflow und geben dann die Gesamtausgaben in das Workflowinitiierungsformular ein.

  • Wenn der Gesamtbetrag der Spesenabrechnung eines Mitarbeiters das vom Administrator vordefinierte Ausgabenlimit überschreitet, wird eine Aufgabe für den Vorgesetzten des Mitarbeiters erstellt, damit dieser die Spesenabrechnung genehmigt. Ist der Gesamtbetrag der Spesenabrechnung eines Mitarbeiters jedoch kleiner oder gleich dem Ausgabenlimit, wird eine Nachricht vom Typ „automatisch genehmigt“ in die Verlaufsliste des Workflows geschrieben.

    In dieser exemplarischen Vorgehensweise werden die folgenden Aufgaben veranschaulicht:

  • Erstellen eines Projekts für einen sequenziellen SharePoint-Workflow mit einer Listendefinition in Visual Studio

  • Erstellen eines Workflowzeitplans

  • Behandeln von Workflowaktivitätsereignissen

  • Erstellen von Workflowzuordnungs- und -initiierungsformularen

  • Zuordnen des Workflows

  • Manuelles Starten des Workflows

Hinweis

In dieser exemplarischen Vorgehensweise wird ein Projekt für einen sequenziellen Workflow verwendet, der Prozess für Zustandsautomatworkflows ist jedoch der gleiche.

Möglicherweise unterscheiden sich die auf Ihrem Computer angezeigten Namen oder Positionen einiger Visual Studio-Benutzeroberflächenelemente von den Angaben in den folgenden Anweisungen. Diese Elemente sind von der jeweiligen Visual Studio-Version und den verwendeten Einstellungen abhängig. Weitere Informationen finden Sie unter Personalisieren von Visual Studio-IDE.

Voraussetzungen

Zum Abschließen dieser exemplarischen Vorgehensweise benötigen Sie Folgendes:

  • Unterstützte Editionen von Microsoft Windows und SharePoint.

  • Visual Studio.

Erstellen eines Projekts für einen sequenziellen Workflow

Erstellen Sie zunächst ein Projekt für einen sequenziellen Workflow in Visual Studio. Ein sequenzieller Workflow besteht aus einer Reihe von Schritten, die nacheinander ausgeführt werden, bis die letzte Aktivität abgeschlossen ist. In diesem Verfahren erstellen Sie einen sequenziellen Workflow, der für die Liste „Freigegebene Dokumente“ in SharePoint gilt. Im Workflow-Assistenten können Sie den Workflow der Website oder der Listendefinition zuordnen und angeben, wann der Workflow gestartet wird.

So erstellen Sie ein Projekt für einen sequenziellen SharePoint-Workflow

  1. Wählen Sie auf der Menüleiste Datei>Neu>Projekt aus, um das Dialogfeld Neues Projekt zu öffnen.

  2. Erweitern Sie unter Visual C# oder Visual Basic den Knoten SharePoint, und wählen Sie dann den Knoten 2010 aus.

  3. Wählen Sie im Bereich Vorlagen die Projektvorlage SharePoint 2010-Projekt aus.

  4. Geben Sie im Feld Name den Namen ExpenseReport ein, und wählen Sie dann die Schaltfläche OK aus.

    Der Assistent zum Anpassen von SharePoint wird angezeigt.

  5. Aktivieren Sie auf der Seite Website und Sicherheitsebene für Debuggen angeben das Optionsfeld Als Farmlösung bereitstellen, und wählen Sie dann die Schaltfläche Fertig stellen aus, um die Vertrauensebene und die Standardwebsite zu akzeptieren.

    In diesem Schritt wird auch die Vertrauensebene für die Projektmappe als Farmlösung festgelegt (die einzige verfügbare Option für Workflowprojekte).

  6. Wählen Sie im Projektmappen-Explorerden Projektknoten aus.

  7. Wählen Sie in der Menüleiste Projekt>Neues Element hinzufügen aus.

  8. Erweitern Sie unter Visual C# oder Visual Basic den Knoten SharePoint, und wählen Sie dann den Knoten 2010 aus.

  9. Wählen Sie im Bereich Vorlagen die Vorlage Sequenzieller Workflow (nur Farmlösung) und dann die Schaltfläche Hinzufügen aus.

    Der Assistent zum Anpassen von SharePoint wird angezeigt.

  10. Übernehmen Sie auf der Seite Workflownamen für das Debuggen angeben den Standardnamen (ExpenseReport – Workflow1). Übernehmen Sie für den Workflowvorlagentyp den Standardwert (Listenworkflow). Klicken Sie auf Weiter.

  11. Deaktivieren Sie auf der Seite Soll Visual Studio den Workflow in einer Debugsitzung automatisch zuordnen? das Kontrollkästchen, bei dessen Auswahl Ihre Workflowvorlage automatisch zugeordnet wird.

    In diesem Schritt können Sie den Workflow später manuell der Liste „Freigegebene Dokumente“ zuordnen, über die das Zuordnungsformular angezeigt wird.

  12. Klicken Sie auf die Schaltfläche Fertig stellen.

Hinzufügen eines Zuordnungsformulars zum Workflow

Als Nächstes erstellen Sie ein ASPX-Zuordnungsformular, das angezeigt wird, wenn der SharePoint-Administrator den Workflow zum ersten Mal einem Spesenabrechnungsdokument zuordnet.

So fügen Sie dem Workflow ein Zuordnungsformular hinzu

  1. Wählen Sie im Projektmappen-Explorer den Knoten Workflow1 aus.

  2. Wählen Sie auf der Menüleiste Projekt>Neues Element hinzufügen aus, um das Dialogfeld Neues Element hinzufügen zu öffnen.

  3. Erweitern Sie in der Strukturansicht des Dialogfelds entweder Visual C# oder Visual Basic (je nach Projektsprache), erweitern Sie den Knoten SharePoint, und wählen Sie dann den Knoten 2010 aus.

  4. Wählen Sie in der Liste der Vorlagen die Vorlage Workflowzuordnungsformular aus.

  5. Geben Sie im Feld Name den Namen ExpenseReportAssocForm.aspx ein.

  6. Wählen Sie die Schaltfläche Hinzufügen aus, um das Formular dem Projekt hinzuzufügen.

Entwerfen und Codieren des Zuordnungsformulars

In diesem Verfahren fügen Sie dem Zuordnungsformular Steuerelemente und Code hinzu, um Funktionen bereitzustellen.

So entwerfen und codieren Sie das Zuordnungsformular

  1. Suchen Sie im Zuordnungsformular (ExpenseReportAssocForm.aspx) nach dem asp:Content-Element mit ID="Main".

  2. Fügen Sie direkt nach der ersten Zeile in diesem Content-Element den folgenden Code hinzu, um eine Bezeichnung und ein Textfeld zu erstellen, das zur Eingabe des Ausgabenlimits für die Spesengenehmigung (AutoApproveLimit) auffordert:

    <asp:Label ID="lblAutoApproveLimit" Text="Auto Approval Limit:" runat="server" />
    
    <asp:TextBox ID="AutoApproveLimit" runat="server" />
    <br /><br />
    
  3. Erweitern Sie im Projektmappen-Explorer die Datei ExpenseReportAssocForm.aspx, um die abhängigen Dateien anzuzeigen.

    Hinweis

    Wenn Ihr Projekt in Visual Basic geschrieben ist, müssen Sie die Schaltfläche Alle Dateien anzeigen auswählen, um diesen Schritt auszuführen.

  4. Öffnen Sie das Kontextmenü für die Datei „ExpenseReportAssocForm.aspx“, und wählen Sie Code anzeigen aus.

  5. Ersetzen Sie die GetAssociationData-Methode durch folgenden Code:

    private string GetAssociationData()
    {
        // TODO: Return a string that contains the association data that
        // will be passed to the workflow. Typically, this is in XML
        // format.
        return this.AutoApproveLimit.Text;
    }
    

Hinzufügen eines Initiierungsformulars zum Workflow

Als Nächstes erstellen Sie das Initiierungsformular, das angezeigt wird, wenn Benutzer den Workflow für ihre Spesenabrechnungen ausführen.

So erstellen Sie ein Initiierungsformular

  1. Wählen Sie im Projektmappen-Explorer den Knoten Workflow1 aus.

  2. Wählen Sie auf der Menüleiste Projekt>Neues Element hinzufügen aus, um das Dialogfeld Neues Element hinzufügen zu öffnen.

  3. Erweitern Sie in der Strukturansicht des Dialogfelds entweder Visual C# oder Visual Basic (je nach Projektsprache), erweitern Sie den Knoten SharePoint, und wählen Sie dann den Knoten 2010 aus.

  4. Wählen Sie in der Liste der Vorlagen die Vorlage Workflowinitiierungsformular aus.

  5. Geben Sie im Feld Name den Namen ExpenseReportInitForm.aspx ein.

  6. Wählen Sie die Schaltfläche Hinzufügen aus, um das Formular dem Projekt hinzuzufügen.

Entwerfen und Codieren des Initiierungsformulars

Als Nächstes fügen Sie dem Initiierungsformular Steuerelemente und Code hinzu, um Funktionen bereitzustellen.

So codieren Sie das Initiierungsformular

  1. Suchen Sie im Initiierungsformular (ExpenseReportInitForm.aspx) nach dem asp:Content-Element mit ID="Main".

  2. Fügen Sie direkt nach der ersten Zeile in diesem Content-Element den folgenden Code hinzu, um eine Bezeichnung und ein Textfeld, das das im Zuordnungsformular eingegebene Ausgabenlimit für die Spesengenehmigung (AutoApproveLimit) anzeigt, sowie eine weitere Bezeichnung und ein Textfeld, das zur Eingabe der Gesamtausgaben (ExpenseTotal) auffordert, zu erstellen:

    <asp:Label ID="lblAutoApproveLimit" Text="Auto Approval Limit:" runat="server" />
    
    <asp:TextBox ID="AutoApproveLimit" ReadOnly="true" runat="server" />
    <br /><br />
    <asp:Label ID="lblExpenseTotal" Text="Expense Total:" runat="server" />
    
    <asp:TextBox ID="ExpenseTotal" runat="server" />
    <br /><br />
    
  3. Erweitern Sie im Projektmappen-Explorer die Datei ExpenseReportInitForm.aspx, um die abhängigen Dateien anzuzeigen.

  4. Öffnen Sie das Kontextmenü für die Datei „ExpenseReportInitForm.aspx“, und wählen Sie Code anzeigen aus.

  5. Ersetzen Sie die Page_Load-Methode durch das folgende Beispiel:

    protected void Page_Load(object sender, EventArgs e)
    {
        InitializeParams();
        this.AutoApproveLimit.Text =
          workflowList.WorkflowAssociations[new
          Guid(associationGuid)].AssociationData;
    }
    
  6. Ersetzen Sie die GetInitiationData-Methode durch das folgende Beispiel:

    // This method is called when the user clicks the button to start the workflow.
    private string GetInitiationData()
    {
        // TODO: Return a string that contains the initiation data that
        // will be passed to the workflow. Typically, this is in XML
        // format.
        return this.ExpenseTotal.Text;
    }
    

Anpassen des Workflows

Als Nächstes passen Sie den Workflow an. Später ordnen Sie dem Workflow zwei Formulare zu.

So passen Sie den Workflow an

  1. Zeigen Sie den Workflow im Workflow-Designer an, indem Sie „Workflow1“ im Projekt öffnen.

  2. Erweitern Sie in der Toolbox den Knoten Windows Workflow Version 3.0, und suchen Sie nach der Aktivität IfElse.

  3. Fügen Sie diese Aktivität dem Workflow hinzu, indem Sie einen der folgenden Schritte ausführen:

    • Öffnen Sie das Kontextmenü für die Aktivität IfElse, und wählen Sie Kopieren aus. Öffnen Sie dann im Workflow-Designer das Kontextmenü für die Zeile unter der Aktivität onWorkflowActivated1, und wählen Sie Einfügen aus.

    • Ziehen Sie die Aktivität IfElse aus der Toolbox, und verbinden Sie sie im Workflow-Designer mit der Zeile unter der Aktivität onWorkflowActiviated1.

  4. Erweitern Sie in der Toolbox den Knoten SharePoint-Workflow, und suchen Sie nach der Aktivität CreateTask.

  5. Fügen Sie diese Aktivität dem Workflow hinzu, indem Sie einen der folgenden Schritte ausführen:

    • Öffnen Sie das Kontextmenü für die Aktivität CreateTask, und wählen Sie Kopieren aus. Öffnen Sie dann im Workflow-Designer das Kontextmenü für einen der beiden Bereiche Aktivitäten hier ablegen in IfElseActivity1, und wählen Sie Einfügen aus.

    • Ziehen Sie die Aktivität CreateTask aus der Toolbox in einen der beiden Bereiche Aktivitäten hier ablegen in IfElseActivity1.

  6. Geben Sie im Fenster Eigenschaften den Eigenschaftswert taskToken für die Eigenschaft CorrelationToken ein.

  7. Erweitern Sie die Eigenschaft CorrelationToken, indem Sie das Pluszeichen (TreeView-Plus) daneben auswählen.

  8. Wählen Sie den Dropdownpfeil der Untereigenschaft OwnerActivityName aus, und legen Sie den Wert Workflow1 fest.

  9. Wählen Sie die Eigenschaft TaskId und dann die Schaltfläche mit den Auslassungspunkten (Auslassungszeichen im ASP.NET Mobile-Designer) aus, um das Dialogfeld Eigenschaft binden anzuzeigen.

  10. Wählen Sie die Registerkarte An neues Mitglied binden aus, aktivieren Sie das Optionsfeld Feld erstellen, und wählen Sie dann die Schaltfläche OK aus.

  11. Wählen Sie die Eigenschaft TaskProperties und dann die Schaltfläche mit den Auslassungspunkten (Auslassungszeichen im ASP.NET Mobile-Designer) aus, um das Dialogfeld Eigenschaft binden anzuzeigen.

  12. Wählen Sie die Registerkarte An neues Mitglied binden aus, aktivieren Sie das Optionsfeld Feld erstellen, und wählen Sie dann die Schaltfläche OK aus.

  13. Erweitern Sie in der Toolbox den Knoten SharePoint-Workflow, und suchen Sie nach der Aktivität LogToHistoryListActivity.

  14. Fügen Sie diese Aktivität dem Workflow hinzu, indem Sie einen der folgenden Schritte ausführen:

    • Öffnen Sie das Kontextmenü für die Aktivität LogToHistoryListActivity, und wählen Sie Kopieren aus. Öffnen Sie dann im Workflow-Designer das Kontextmenü für den anderen Bereich Aktivitäten hier ablegen in IfElseActivity1, und wählen Sie Einfügen aus.

    • Ziehen Sie die Aktivität LogToHistoryListActivity aus der Toolbox in den anderen Bereich Aktivitäten hier ablegen in IfElseActivity1.

Hinzufügen von Code zum Workflow

Als Nächstes fügen Sie dem Workflow Code hinzu, um Funktionen bereitzustellen.

So fügen Sie dem Workflow Code hinzu

  1. Öffnen Sie im Workflow-Designer das Kontextmenü für die Aktivität CreateTask1, und wählen Sie dann Code anzeigen aus.

  2. Fügen Sie die folgende Methode hinzu:

    private void createTask1_MethodInvoking(object sender, EventArgs e)
    {
        createTask1_TaskId1 = Guid.NewGuid();
        createTask1_TaskProperties1.AssignedTo = "somedomain\\someuser";
        createTask1_TaskProperties1.Description = "Please approve the
          expense report";
        createTask1_TaskProperties1.Title = "Expense Report Approval
          Needed";
    }
    

    Hinweis

    Ersetzen Sie somedomain\\someuser im Code durch eine Domäne und einen Benutzernamen, für den eine Aufgabe erstellt wird (z. B. Office\\JoeSch). Für Testzwecke ist es am einfachsten, das zum Entwickeln verwendete Konto anzugeben.

  3. Fügen Sie unter der MethodInvoking-Methode das folgende Beispiel hinzu:

    private void checkApprovalNeeded(object sender, ConditionalEventArgs
      e)
    {
        bool approval = false;
        if (Convert.ToInt32(workflowProperties.InitiationData) >
          Convert.ToInt32(workflowProperties.AssociationData))
        {
            approval = true;
        }
        e.Result = approval;
    }
    
  4. Wählen Sie im Workflow-Designer die Aktivität ifElseBranchActivity1 aus.

  5. Wählen Sie im Fenster Eigenschaften den Dropdownpfeil der Eigenschaft Bedingung aus, und legen Sie dann den Wert Codebedingung fest.

  6. Erweitern Sie die Eigenschaft Bedingung, indem Sie das Pluszeichen (TreeView-Plus) daneben auswählen, und legen Sie dann den Wert auf checkApprovalNeeded fest.

  7. Öffnen Sie im Workflow-Designer das Kontextmenü für die Aktivität logToHistoryListActivity1, und wählen Sie dann Handler generieren aus, um eine leere Methode für das MethodInvoking-Ereignis zu generieren.

  8. Ersetzen Sie den MethodInvoking-Code durch Folgendes:

    private void logToHistoryListActivity1_MethodInvoking(object sender,
      EventArgs e)
    {
        this.logToHistoryListActivity1.HistoryOutcome = "Expense was
          auto approved for " + workflowProperties.InitiationData;
    }
    
  9. Drücken Sie F5, um das Programm zu debuggen.

    Dadurch wird die Anwendung kompiliert, gepackt und bereitgestellt, ihre Features werden aktiviert, der IIS-Anwendungspool wird wiederverwendet, und anschließend wird der Browser mit dem in der Eigenschaft Website-URL angegebenen Speicherort gestartet.

Zuordnen des Workflows zur Dokumentliste

Als Nächstes zeigen Sie das Workflowzuordnungsformular an, indem Sie den Workflow der Liste Freigegebene Dokumente auf der SharePoint-Website zuordnen.

So ordnen Sie den Workflow zu

  1. Wählen Sie auf der Schnellstartleiste den Link Freigegebene Dokumente aus.

  2. Wählen Sie auf der Registerkarte Bibliothekstools den Link Bibliothek und dann auf dem Menüband die Schaltfläche Bibliothekseinstellungen aus.

  3. Wählen Sie im Abschnitt Berechtigungen und Verwaltung den Link Workfloweinstellungen und dann auf der Seite Workflows den Link Workflow hinzufügen aus.

  4. Wählen Sie in der oberen Liste auf der Seite „Workfloweinstellungen“ die Vorlage ExpenseReport – Workflow1 aus.

  5. Geben Sie im nächsten Feld ExpenseReportWorkflow ein, und wählen Sie dann die Schaltfläche Weiter aus.

    Dadurch wird der Workflow der Liste Freigegebene Dokumente zugeordnet und das Workflowzuordnungsformular angezeigt.

  6. Geben Sie im Textfeld Auto Approval Limit den Wert 1200 ein, und wählen Sie dann die Schaltfläche Workflow zuordnen aus.

Starten des Workflows

Als Nächstes ordnen Sie den Workflow einem der Dokumente in der Liste Freigegebene Dokumente zu, um das Workflowinitiierungsformular anzuzeigen.

So starten Sie den Workflow

  1. Wählen Sie auf der SharePoint-Seite die Schaltfläche Start aus.

  2. Wählen Sie auf der Schnellstartleiste den Link Freigegebene Dokumente aus, um die Liste Freigegebene Dokumente anzuzeigen.

  3. Wählen Sie oben auf der Seite auf der Registerkarte Bibliothekstools den Link Dokumente und dann auf dem Menüband die Schaltfläche Dokument hochladen aus, um ein neues Dokument in die Liste Freigegebene Dokumente hochzuladen.

  4. Klicken Sie im Dialogfeld Dokument hochladen auf die Schaltfläche Durchsuchen, wählen Sie eine beliebige Dokumentdatei aus, klicken Sie auf die Schaltfläche Öffnen und dann auf OK.

    Sie können die Einstellungen für das Dokument in diesem Dialogfeld ändern. Übernehmen Sie hier jedoch die Standardwerte, indem Sie die Schaltfläche Speichern auswählen.

  5. Wählen Sie das hochgeladene Dokument aus, klicken Sie auf den angezeigten Dropdownpfeil, und wählen Sie dann das Element Workflows aus.

  6. Wählen Sie das Bild neben „ExpenseReportWorkflow“ aus.

    Dadurch wird das Workflowinitiierungsformular angezeigt. (Beachten Sie, dass der Wert im Feld Auto Approval Limit schreibgeschützt ist, da er im Zuordnungsformular eingegeben wurde.)

  7. Geben Sie im Textfeld Expense Total den Wert 1600 ein, und wählen Sie dann die Schaltfläche Workflow starten aus.

    Dadurch wird die Liste Freigegebene Dokumente erneut angezeigt. Dem Element, für das der Workflow gerade gestartet wurde, wird eine neue Spalte namens ExpenseReportWorkflow mit dem Wert Abgeschlossen hinzugefügt.

  8. Wählen Sie den Dropdownpfeil neben dem hochgeladenen Dokument und dann das Element Workflows aus, um die Workflowstatusseite anzuzeigen. Wählen Sie unter Abgeschlossene Workflows den Wert Abgeschlossen aus. Die Aufgabe wird im Abschnitt Aufgaben aufgeführt.

  9. Wählen Sie den Titel der Aufgabe aus, um die Details anzuzeigen.

  10. Kehren Sie zur Liste Freigegebene Dokumente zurück, und starten Sie den Workflow mit demselben oder einem anderen Dokument erneut.

  11. Geben Sie im Initiierungsformular einen Betrag ein, der kleiner oder gleich dem im Zuordnungsformular eingegebenen Betrag (1200) ist.

    In diesem Fall wird anstelle einer Aufgabe ein Eintrag in der Verlaufsliste erstellt. Der Eintrag wird im Abschnitt Workflowverlauf der Workflowstatusseite angezeigt. Beachten Sie die Meldung in der Spalte Ergebnis des Verlaufsereignisses. Sie enthält den im Ereignis logToHistoryListActivity1.MethodInvoking eingegebenen Text mit dem automatisch genehmigten Betrag.