共用方式為


逐步解說:使用關聯與起始表單建立工作流程

此逐步解說會示範如何建立包含關聯和起始表單用法的基本循序工作流程。 這些是 ASPX 表單,可在工作流程第一次由 SharePoint 系統管理員建立關聯時 (關聯表單),以及使用者啟動工作流程時 (起始表單),將參數新增至工作流程。

本逐步解說將概述使用者想要針對具有下列需求的費用報表建立核准工作流程的案例:

  • 當工作流程與清單相關聯時,管理員會在輸入費用報表的限額時收到關聯表單的提示。

  • 員工將費用報表上傳至「共用文件」清單、啟動工作流程,然後在工作流程起始表單中輸入費用總計。

  • 如果員工費用報表總計超過管理員預先定義的限制,則會為員工主管建立核准費用報表的工作。 不過,如果員工的費用報表總計小於或等於費用限制,則會將自動核准的訊息寫入工作流程的記錄清單。

    本逐步解說將說明下列工作:

  • 在 Visual Studio 中建立 SharePoint 清單定義循序工作流程專案。

  • 建立工作流程排程。

  • 處理工作流程活動事件。

  • 建立工作流程的關聯和起始表單。

  • 與工作流程建立關聯。

  • 手動啟動工作流程。

注意

雖然本逐步解說使用循序工作流程專案,但此程序同樣適用於狀態機器工作流程。

此外,您的電腦可能會在下列指示中為某些 Visual Studio 使用者介面元素顯示不同的名稱或位置。 您所擁有的 Visual Studio 版本以及使用的設定會決定這些項目。 如需詳細資訊,請參閱將 Visual Studio IDE 個人化

必要條件

您需要下列元件才能完成這個逐步解說:

  • 支援的 Microsoft Windows 和 SharePoint 版本。

  • Visual Studio。

建立 SharePoint 循序工作流程專案

首先,在 Visual Studio 中建立循序工作流程專案。 循序工作流程是一系列依序執行的步驟,直到最後一個活動完成為止。 在此程序中,您將在 SharePoint 中建立適用於「共用文件」清單的循序工作流程。 工作流程精靈可讓您將工作流程與網站或清單定義建立關聯,並可讓您決定工作流程何時開始。

建立 SharePoint 循序工作流程專案

  1. 在功能表列上,選擇 [檔案]>[新增]>[專案],以顯示 [新增專案] 對話方塊。

  2. 展開 [Visual C#] 或 [Visual Basic] 底下的 [SharePoint] 節點,然後選擇 [2010] 節點。

  3. 在 [範本] 窗格中,選擇 [SharePoint 2010 專案] 專案範本。

  4. 在 [名稱] 方塊中,輸入 ExpenseReport,然後選擇 [確定] 按鈕。

    [SharePoint 自訂精靈] 隨即出現。

  5. 在 [指定偵錯的網站和安全性層級] 中,選擇 [部署為伺服器陣列解決方案] 選項按鈕,然後選擇 [完成] 按鈕,以接受信任層級和預設網站。

    此步驟也會將解決方案的信任層級設定為伺服器陣列解決方案,這是工作流程專案唯一可用的選項。

  6. 在 [ 方案總管] 中選擇專案節點。

  7. 在功能表列中,選擇 [專案]>[加入新項目]

  8. 在 [Visual C#] 或 [Visual Basic] 底下展開 [SharePoint] 節點,然後選擇 [2010] 節點。

  9. 在 [範本] 窗格中,選擇 [循序工作流程 (僅限伺服器陣列解決方案)] 範本,然後選擇 [新增] 按鈕。

    [SharePoint 自訂精靈] 隨即出現。

  10. 在 [指定用於偵錯的工作流程名稱] 頁面中,接受預設名稱 (ExpenseReport - Workflow1)。 保留預設工作流程範本類型值 (清單工作流程)。 選擇 [下一步] 按鈕。

  11. 在 [您希望 Visual Studio 在偵錯工作階段中自動與工作流程建立關聯嗎?] 頁面中,清除核取自動與工作流程範本建立關聯的方塊 (如果已核取的話)。

    此步驟可讓您稍後手動將工作流程與「共用文件」清單建立關聯,而這會顯示關聯表單。

  12. 選擇 [完成] 按鈕。

將關聯表單新增至工作流程

接下來,建立 .ASPX 關聯表單,該表單會在 SharePoint 系統管理員第一次將工作流程與費用報表文件產生關聯時出現。

將關聯表單新增至工作流程

  1. 選擇 [方案總管] 中的 Workflow1 節點。

  2. 在功能表列上,選擇 [專案]> [新增項目] 以顯示 [新增項目] 對話方塊。

  3. 在對話方塊樹狀檢視中,展開 Visual C#Visual Basic (視您的專案語言而定),展開 SharePoint 節點,然後選擇 [2010] 節點。

  4. 在範本清單中,選擇 [工作流程關聯表單] 範本。

  5. 在 [名稱] 文字方塊中,輸入 ExpenseReportAssocForm.aspx

  6. 選擇 [新增] 按鈕,將表單新增至專案。

設計關聯表單及撰寫程式碼

在此程序中,您會藉由在關聯表單中新增控制項和程式碼,將功能引入關聯表單。

設計關聯表單及撰寫程式碼

  1. 在關聯表單中 (ExpenseReportAssocForm.aspx),找出具有 ID="Main"asp:Content 元素。

  2. 直接在此內容元素的第一行後面新增下列程式碼,以建立用於提示費用核准限制的標籤和文字方塊 (AutoApproveLimit):

    <asp:Label ID="lblAutoApproveLimit" Text="Auto Approval Limit:" runat="server" />
    
    <asp:TextBox ID="AutoApproveLimit" runat="server" />
    <br /><br />
    
  3. 展開 [方案總管] 中的 ExpenseReportAssocForm.aspx 檔案,以顯示其相依檔案。

    注意

    如果您的專案位於 Visual Basic 中,您必須選擇 [檢視所有檔案] 按鈕,才能執行此步驟。

  4. 開啟 ExpenseReportAssocForm.aspx 檔案的捷徑功能表,然後選擇 [檢視程式碼]

  5. GetAssociationData 方法取代為:

    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;
    }
    

將起始表單新增至工作流程

接下來,建立使用者針對其費用報表執行工作流程時顯示的起始表單。

建立起始表單

  1. 選擇 [方案總管] 中的 Workflow1 節點。

  2. 在功能表列上,選擇 [專案]>[新增項目] 以顯示 [新增項目] 對話方塊。

  3. 在對話方塊樹狀檢視中,展開 Visual C#Visual Basic (視您的專案語言而定),展開 SharePoint 節點,然後選擇 [2010] 節點。

  4. 在範本清單中,選擇 [工作流程起始表單] 範本。

  5. 在 [名稱] 文字方塊中,輸入 ExpenseReportInitForm.aspx

  6. 選擇 [新增] 按鈕,將表單新增至專案。

設計起始表單及撰寫程式碼

接下來,藉由在起始表單中新增控制項和程式碼,將功能引入起始表單。

撰寫起始表單的程式碼

  1. 在起始表單中 (ExpenseReportInitForm.aspx),找出包含ID="Main"asp:Content 元素。

  2. 直接在此內容元素的第一行後面新增下列程式碼來建立標籤和文字方塊,以顯示關聯表單中輸入的費用核准限制 (AutoApproveLimit),以及建立另一個用於提示費用總計 (ExpenseTotal) 的標籤和文字方塊:

    <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. 展開 [方案總管] 中的 ExpenseReportInitForm.aspx 檔案,以顯示其相依檔案。

  4. 開啟 ExpenseReportInitForm.aspx 檔案的捷徑功能表,然後選擇 [檢視程式碼]

  5. Page_Load 方法取代為下列範例:

    protected void Page_Load(object sender, EventArgs e)
    {
        InitializeParams();
        this.AutoApproveLimit.Text =
          workflowList.WorkflowAssociations[new
          Guid(associationGuid)].AssociationData;
    }
    
  6. GetInitiationData 方法取代為下列範例:

    // 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;
    }
    

自訂工作流程

接下來,自訂工作流程。 稍後,您會將兩個表單與工作流程產生關聯。

自訂工作流程

  1. 在專案中開啟 Workflow1,使工作流程顯示在工作流程設計工具中。

  2. 在 [工具箱] 中,展開 [Windows 工作流程 v3.0] 節點,然後找出 IfElse 活動。

  3. 執行下列其中一個步驟,將此活動新增至工作流程:

    • 開啟 IfElse 活動的捷徑功能表,選擇 [複製],針對工作流程設計工具中 onWorkflowActivated1 活動底下的行開啟捷徑功能表,然後選擇 [貼上]

    • 從 [工具箱] 拖曳IfElse 活動,然後將其連結到工作流程設計工具中 onWorkflowActiviated1 活動底下的行。

  4. 在 [工具箱] 中,展開 [SharePoint 工作流程] 節點,然後找出 CreateTask 活動。

  5. 執行下列其中一個步驟,將此活動新增至工作流程:

    • 開啟 CreateTask 活動的捷徑功能表,選擇 [複製],針對工作流程設計工具中 IfElseActivity1 內兩個 [將活動置放於此] 區域的其中一個開啟捷徑功能表,然後選擇 [貼上]

    • CreateTask 活動從 [工具箱] 拖曳到 IfElseActivity1 內兩個 [將活動置放於此] 區域中的其中一個。

  6. 在 [屬性] 視窗中,針對 CorrelationToken 屬性輸入 taskToken 的屬性值。

  7. 選擇 CorrelationToken 屬性旁邊的加號 (TreeView plus) 來將其展開。

  8. 選擇 OwnerActivityName 子屬性上的下拉式箭號,並設定 Workflow1 值。

  9. 選擇 TaskId 屬性,然後選擇省略符號 (ASP.NET Mobile 設計工具橢圓形) 按鈕以顯示 [繫結屬性] 對話方塊。

  10. 選擇 [繫結至新成員] 索引標籤、選擇 [建立欄位] 選項按鈕,然後選擇 [確定] 按鈕。

  11. 選擇 TaskProperties 屬性,然後選擇省略符號 (ASP.NET Mobile 設計工具橢圓形) 按鈕以顯示 [繫結屬性] 對話方塊。

  12. 選擇 [繫結至新成員] 索引標籤、選擇 [建立欄位] 選項按鈕,然後選擇 [確定] 按鈕。

  13. 在 [工具箱] 中,展開 [SharePoint 工作流程] 節點,然後找出 LogToHistoryListActivity 活動。

  14. 執行下列其中一個步驟,將此活動新增至工作流程:

    • 開啟 LogToHistoryListActivity 活動的捷徑功能表,選擇 [複製],針對工作流程設計工具中 IfElseActivity1 內的另一個 [將活動置放於此] 區域開啟捷徑功能表,然後選擇 [貼上]

    • LogToHistoryListActivity 活動從 [工具箱] 拖放到 IfElseActivity1 內的另一個 [將活動置放於此] 區域。

將程式碼新增至工作流程

接下來,將程式碼新增至工作流程來為其提供功能。

將程式碼新增至工作流程

  1. 在工作流程設計工具中開啟 createTask1 活動的捷徑功能表,然後選擇 [檢視程式碼]

  2. 新增下列方法:

    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";
    }
    

    注意

    在程式碼中,將 somedomain\\someuser 取代為將為其建立工作的網域和使用者名稱,例如 "Office\\JoeSch"。 若要進行測試,最簡單的方法就是使用您用於開發的帳戶。

  3. MethodInvoking 方法下方,新增下列範例:

    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. 在工作流程設計工具中,選擇 ifElseBranchActivity1 活動。

  5. 在 [屬性] 視窗中,選擇 [條件] 屬性的下拉式箭號,然後設定 [程式碼條件] 值。

  6. 選擇 Condition 屬性旁邊的加號 (TreeView plus) 來將其展開,然後將其值設定為 checkApprovalNeeded

  7. 在工作流程設計工具中,開啟 logToHistoryListActivity1 活動的捷徑功能表,然後選擇 [產生處理常式] 來產生 MethodInvoking 事件的空白方法。

  8. 使用下列內容取代 MethodInvoking 程式碼:

    private void logToHistoryListActivity1_MethodInvoking(object sender,
      EventArgs e)
    {
        this.logToHistoryListActivity1.HistoryOutcome = "Expense was
          auto approved for " + workflowProperties.InitiationData;
    }
    
  9. 選擇 F5 鍵來對程式進行偵錯。

    這會編譯應用程式、封裝應用程式、部署應用程式、啟動其功能、回收 IIS 應用程式集區,然後在網站 URL 屬性中指定的位置啟動瀏覽器。

將工作流程與文件清單產生關聯

接下來,藉由將工作流程與 SharePoint 網站上的 SharedDocuments 清單產生關聯,以顯示工作流程關聯表單。

與工作流程建立關聯

  1. 選擇快速啟動列上的 [共用文件] 連結。

  2. 選擇 [程式庫工具] 索引標籤上的 [程式庫] 連結,然後選擇 [程式庫設定] 功能區按鈕。

  3. 在 [權限和管理] 區段中,選擇 [工作流程設定] 連結,然後選擇 [工作流程] 頁面上的 [新增工作流程] 連結。

  4. 在工作流程設定頁面的頂端清單中,選擇 ExpenseReport - Workflow1 範本。

  5. 在下一個欄位中,輸入 ExpenseReportWorkflow,然後選擇 [下一步] 按鈕。

    這會將工作流程與共用文件清單產生關聯,並顯示工作流程關聯表單。

  6. 在 [自動核准限制] 文字方塊中,輸入 1200,然後選擇 [與工作流程建立關聯] 按鈕。

啟動工作流程

接下來,將工作流程與共用文件清單中的其中一份檔產生關聯,以顯示工作流程起始表單。

啟動工作流程

  1. 在 SharePoint 頁面上,選擇 [首頁] 按鈕。

  2. 選擇快速啟動列上的 [共用文件] 連結,以顯示 [共用文件] 清單。

  3. 選擇頁面頂端 [程式庫工具] 索引標籤上的 [文件] 連結,然後選擇功能區上的 [上傳文件] 按鈕,將新文件上傳至 [共用文件] 清單中。

  4. 在 [上傳文件] 對話方塊中,選擇 [瀏覽] 按鈕、選擇任何文件檔、選擇 [開啟] 按鈕,然後選擇 [確定] 按鈕。

    您可以在此對話方塊中變更文件的設定,但請選擇 [儲存] 按鈕來將其保留為預設值。

  5. 選擇上傳的文件,選擇出現的下拉式箭號,然後選擇 [工作流程] 項目。

  6. 選擇 ExpenseReportWorkflow 旁的影像。

    這會顯示工作流程起始表單。 (請注意,[自動核准限制] 方塊中顯示的值是唯讀狀態,因為這是在關聯表單中輸入的值)。

  7. 在 [費用總計] 文字方塊中輸入 1600,然後選擇 [開始工作流程] 按鈕。

    這會再次顯示 [共用文件] 清單。 名為 ExpenseReportWorkflow 且值為 Completed 的新資料行會新增至工作流程剛啟動的項目。

  8. 選擇已上傳文件旁的下拉式箭號,然後選擇 [工作流程] 項目以顯示工作流程狀態頁面。 選擇 [已完成工作流程] 底下的 [已完成] 值。 工作會列在 [工作] 區段底下。

  9. 選擇工作的標題以顯示其工作詳細資料。

  10. 返回 SharedDocuments 清單,然後使用相同文件或不同文件重新啟動工作流程。

  11. 在起始頁面上輸入小於或等於關聯頁面上所輸入數量 (1200) 的數量。

    在此情況下會建立記錄清單中的項目,而不是工作。 項目會顯示在工作流程狀態頁面的 [工作流程記錄] 區段中。 記下記錄事件 [結果] 資料行中的訊息。 其中包含 logToHistoryListActivity1.MethodInvoking 事件中輸入的文字,該事件包含自動核准的數量。