共用方式為


規劃建立工作流程 (SharePoint Server 2010)

 

適用版本: SharePoint Foundation 2010, SharePoint Server 2010

上次修改主題的時間: 2016-11-30

何謂工作流程?基本上由兩個項目所組成:工作流程用以與其使用者互動的表單,以及定義工作流程行為的邏輯。了解工作流程的建立方式之前,需要先了解上述二者。

因為工作流程透過網頁瀏覽器與使用者通訊,所以仰賴 ASP.NET 顯示其表單。因此,這些表單會定義為 .aspx 頁面。工作流程可能會在其生命週期的四個時間點顯示其本身的表單:

  • 關聯:管理員建立工作流程範本與特定文件庫或清單的關聯時,可能可以設定選項,以套用至透過此關聯所建立的每個工作流程執行個體。若工作流程作者選擇允許進行此項操作,則必須提供可讓管理員指定此項資訊的表單。

  • 初始化:可能允許工作流程起動者在啟動執行中的執行個體時指定選項。例如,在剛才說明的核准案例中,這些選項包括指定工作流程參與者清單及定義每位參與者必須完成其工作的時間長度。若工作流程允許進行此項操作,則其作者必須提供表單,供啟動者設定這些選項。

  • 工作完成:執行中的工作流程執行個體必須對工作流程參與者顯示表單,讓他們完成工作。此表單就是允許先前案例中的核准者對文件加上註解並指出核准或拒絕的表單。

  • 修改:工作流程建立者可以允許在工作流程執行時對其進行修改。例如,工作流程可能允許在開始執行或延長完成工作的到期日之後新增參與者。若使用此選項,則工作流程必須在此時顯示表單,讓參與者指定應該進行的變更。

使用 Microsoft SharePoint Server 2010 建置的工作流程可以使用以 InfoPath 建立的表單。工作流程的邏輯一律定義為一組活動,就與任何 Windows Workflow Foundation (WF) 型工作流程一樣。為了指定工作流程的邏輯和表單,Microsoft 提供兩種不同的工具,而每種工具針對的對象各不相同。軟體開發人員可以使用 Windows Workflow Foundation 的 [工作流程設計工具] 功能。此工具在 Visual Studio 2010 Professional Edition 內執行,提供圖形化的環境讓您將活動組織成工作流程。資訊工作者 (技術較弱的群組) 則可以使用 Microsoft SharePoint Designer 2010 建立工作流程,不需要撰寫程式碼。下兩節會檢查如何使用這些工具建立流程。

使用 Visual Studio 2010 及 WF 工作流程設計工具製作工作流程

使用 SharePoint Server 的工作流程可以使用 Microsoft InfoPath 2010 工作流程表單,而不只是 .aspx 表單。工作流程作者使用 Microsoft InfoPath 建立這些表單。這項工具提供了圖形化的編輯器,讓作者能定義表單的內容。偏好完全在 Visual Studio 環境內工作的開發人員,可以使用 Visual Studio 2010 Professional Edition。

InfoPath 工作流程表單在建立之後,會使用 workflow.xml 檔案附加到工作流程,就像 ASP.NET 表單一樣。不過和 ASP.NET 表單不同的是,開發人員不必撰寫自訂程式碼,即可在 InfoPath 工作流程表單和工作流程之間移動資訊。相反地,SharePoint Server 及 InfoPath 提供此連結,方便建立工作流程的人員使用。

在許多方面,工作流程都和流程圖類似。因此,提供圖形工具讓開發人員指定工作流程的動作是有意義的。此工具是 Visual Studio 2010 Professional 的 SharePoint 工作流程工具,是可以使用 Windows Workflow Foundation (WF) 工作流程設計工具的專案類型,並可支援工作流程的部署與表單作業。開發人員可以使用 WF 工作流程設計工具以圖形方式定義工作流程的活動,以及執行這些活動的順序。以下畫面為此作業在 Microsoft Visual Studio 中的簡單範例。

收集意見反應工作流程

Windows SharePoint Services 工作流程範例

可用的活動會出現在畫面左側的工具箱中。開發人員可以將這些活動拖曳至設計介面,定義工作流程中的步驟。接著,可以在出現於右下角的 [內容] 視窗中設定每個活動的內容。

基本活動庫 Windows Workflow Foundation 提供一組基本活動 (如前述)。SharePoint Server 也提供一組專為建立工作流程所設計的活動。其中,最重要的活動包括:

  • OnWorkflowActivated:提供工作流程的標準起始點。此外,此活動會接受 SharePoint 管理員在建立工作流程與文件庫、清單、內容類型或網站的關聯時,透過 [關聯] 表單所提供的資訊。此活動也會接受啟動工作流程時,透過 [初始化] 表單所提供的資訊。每個工作流程都必須以此活動為開端。

  • CreateTask:在工作清單中建立指派給特定使用者的工作。例如,先前案例中所述的核准工作流程會使用此活動,將工作新增至每個參與者所使用的工作清單。此活動也具有 SendEmailNotification 屬性,在設為 True 時,會自動將電子郵件傳送給建立此工作的人員。

  • OnTaskChanged:接受 [工作完成] 表單中的資訊。先前案例中的核准工作流程使用此活動,在核准文件之後接受每位參與者的輸入。

  • CompleteTask:將工作標示為已完成。

  • DeleteTask:從工作清單中移除工作。

  • OnWorkflowModified:接受 [修改] 表單中的資訊,然後使用這些資訊變更此工作流程執行個體的運作方式。若工作流程的建立者選擇不要在工作流程中包含此活動的任何執行個體,該工作流程在執行時即無法進行修改。

  • SendEmail:將電子郵件傳送給指定的人員或一組人員。

  • LogToHistoryList:將工作流程的執行資訊寫入歷程記錄清單。此份清單中的資訊可用以讓使用者查看工作流程的執行位置、在工作流程完成後查看其歷程記錄等。若要允許此類監視,工作流程的作者必須在工作流程的適當執行時點,將資訊寫入歷程記錄清單。因為這份清單提供本身的機制追蹤工作流程,所以 SharePoint Server 不支援 WF 的標準追蹤服務。

簡單工作流程的一般模式以 OnWorkflowActivated 活動開始,然後使用 CreateTask 活動將工作指派給工作流程式中的參與者。接著可能會使用 BAL 的標準 While 活動,等待使用者完成工作。若要了解何時會發生此情況 (可能是使用者對工作進行多項變更,然後在完成時核取「工作完成」表單上的方塊),OnTaskChanged 活動會在 While 內執行,以擷取使用者在該表單上輸入的任何資訊。使用者完成工作時,可能會執行 CompleteTask 活動,後面接著 DeleteTask。工作流程接著可以移至下一位參與者、使用 CreateTask 將工作指定給該參與者等。當然,也可能會發生其他情況,例如傳送電子郵件、將資訊記錄至歷程記錄清單,甚至包括允許執行任意程式碼的 BAL Code 活動。

SharePoint Server 所提供的所有活動,都與讓工作流程在 SharePoint 環境內運作有關。工作流程實作的商務邏輯完全取決於該工作流程的建立者。實際上,製作工作流程的開發人員可以自由地建立及使用其本身的自訂活動,而不是只能使用 SharePoint Server 和 WF 所提供的活動。

如前所述,Windows Workflow Foundation 支援循序、平行和狀態電腦工作流程。而使用 WF 工作流程設計工具所建立的工作流程也可以使用任一選項。作法是 SharePoint Server 將兩種專案類型新增至 Visual Studio (一種工作流程樣式一種專案類型)。

不論選擇的是哪一種樣式,開發人員都必須定義工作流程的邏輯,而且還必須指定工作流程應該使用的 .aspx 表單或 InfoPath 表單。若要執行這項操作,開發人員會依賴 element.xml 檔案。此檔案會提供範本讓開發人員填寫,以指定在允許工作流程執行此項操作的四個時間點應該顯示的表單 (如果有的話)。

開發人員必須進行一些工作,才可在工作流程與其使用的 .aspx 表單之間傳遞資訊。Microsoft.Windows.SharePoint.Workflow 命名空間可公開物件模型供開發人員使用。使用此命名空間中的類型,工作流程建立者可以將資訊從 .aspx 表單傳遞至工作流程,反之亦然。

建立工作流程及其表單之後,開發人員必須將其封裝成稱為「功能」的項目。SharePoint 管理員接著必須安裝此功能 (包括將工作流程的組件安裝至目標系統的全域組件快取)。現在,管理員可以看到新的工作流程,且其會是可與文件庫、清單、內容類型或網站相關聯的工作流程範本。

對軟體開發人員而言,使用 Visual Studio 和 WF 工作流程設計工具建立工作流程並不特別困難。開發人員需要了解環境中的工作細節,但大部分都是熟悉的操作。而軟體開發人員並不是唯一想要製作工作流程的人員。後文將會說明,非專業開發人員也可以使用 Microsoft SharePoint Designer 2010 建立工作流程。

使用 Microsoft SharePoint Designer 2010 製作工作流程

Microsoft SharePoint Designer 2010 是免費下載的獨立應用程式。Microsoft SharePoint Designer 讓資訊工作者及其他人可以將應用程式邏輯 (實作為工作流程) 新增至 SharePoint 網站。這當然是極有用處的目標,但 Microsoft SharePoint Designer 還得處理另一個重要的問題。若開發人員使用 Visual Studio 建立工作流程,此工作流程即必須像其他任何功能一樣,部署到執行 SharePoint Server 的伺服器上。可是許多 SharePoint 管理員不允許在其伺服器上部署任意的程式碼,他們認為風險太大,會造成系統不穩定。但能夠建立與文件及清單項目結合的直接商務邏輯真的非常有用,而且它正是許多 SharePoint 使用者所需要的。除了允許技術較弱的人員建立工作流程之外,Microsoft SharePoint Designer 也提供較安全的方式,在執行 SharePoint Server 的伺服器上定義及部署商務邏輯,以解決此問題。

Microsoft SharePoint Designer 所要解決的工作流程案例,與 Visual Studio 和 WF 工作流程設計工具所解決的工作流程案例在某些方面有所不同。雖然極有可能會建立複雜的應用程式,但是 Microsoft SharePoint Designer 的目的還是讓使用者將商務邏輯新增至 SharePoint 網站。例如,假設網站包含可讓其使用者送出變更要求的清單。可使用 Microsoft SharePoint Designer 建立工作流程,以在接受或拒絕送出者的變更要求時自動通知該送出者。同樣地,只要將新的文件新增至特定文件庫,自訂工作流程就可能會通知特定的使用者群組。執行此類自訂通知並不複雜 (建立工作流程十分簡單),但是對於使用舊版 SharePoint Server 的情況而言,會有些挑戰,因為管理員不太願意安裝使用者撰寫的程式碼。

其中一個明顯的問題是,為什麼應該將使用 Microsoft SharePoint Designer 所建立的邏輯視為不同?又是什麼讓 SharePoint 管理員願意讓使用此工具建置的工作流程,部署在他們所負責的系統上?答案是使用 Microsoft SharePoint Designer 所建置的工作流程,僅可使用管理員控制清單中的活動。除了 SharePoint Server 所提供的活動之外,網站管理員還可選擇在這份清單上包含開發人員所建立的自訂活動。確切地定義允許進行的工作流程,SharePoint 管理員就可以較有自信部署使用 Microsoft SharePoint Designer 所建立的邏輯,並不會讓系統不穩定。

因為 Microsoft SharePoint Designer 是針對資訊工作者而不是開發人員,而且強調的是較簡單的案例,所以用以建立工作流程的模型,會與 Visual Studio 主控的 WF 工作流程設計工具不同。Microsoft SharePoint Designer 使用的是合乎規則的方式,而不是圖形方式。有點類似 Microsoft Outlook 中的 [規則精靈],這是許多人都熟悉的工具。以下畫面說明 Microsoft SharePoint Designer 使用者如何定義工作流程中的步驟。請注意,此工作流程會同時執行一些動作,但一些動作會依序執行。舊版 SharePoint Server 僅支援依序執行動作,亦即動作僅會連續執行。

處理順序工作流程

Process Order Workflow

每個步驟都可以有一個條件和一個動作。條件決定是否應該執行這個步驟的動作,如上述的 If 陳述式所示。動作選擇包括指定活動表演者、收集同意書及其他更多。這些動作每一個實際上都是由某個 SharePoint Server 活動所執行,而此處使用的活動與 Visual Studio 及 WF 工作流程設計工具所用者相同。動作清單也會包含 SharePoint 管理員允許用於此網站的任何其他活動 (包含開發人員建立的自訂活動)。SharePoint Server 也有特殊的活動集合,可讓使用者自訂常用的核准,或收集 Microsoft SharePoint Designer 之特殊設計工具的「建立一組工作並等候其完成」回應範例。

即使 Microsoft SharePoint Designer 的使用者介面外觀與搭配 Visual Studio 和 WF 工作流程設計工具使用的圖形方法大不相同,但它還是會建立標準的 WF 工作流程。實際產生的內容是以 WF 規則引擎表示條件的循序、平行或二者兼容的工作流程。不過,使用此工具建立的工作流程還是有其限制。例如,與使用 Visual Studio 和 WF 工作流程設計工具建置的工作流程不同,這些工作流程不可以在執行時進行修改,而且僅可以建立不支援狀態電腦的循序及平行工作流程。此外,使用這種工具所建置的工作流程在設計時,可以根據特定的文件庫、清單或網站製作。工作流程作者也可以建立一般的工作流程範本,稍後再與任何文件庫、清單或內容類型建立關聯性。雖然這確實會限制可以使用工作流程的方式,但是也會讓部署工作流程較為簡單。實際上,當使用者以 Microsoft SharePoint Designer 完成工作流程後,此工作還讓使用者只要按一下,即可將工作流程部署到目標網站,同時啟動該工作流程。這明顯比使用 Visual Studio 和 WF 工作流程設計工具建立的工作流程所需要的多步驟部署程序還要簡單。

使用 Microsoft SharePoint Designer 建立的工作流程也可以顯示自訂表單。但此工具會產生 .aspx 頁面,而不是由工作流程作者直接建立這些頁面。作者只要指定所產生頁面之外觀的詳細資料 (例如頁面應該包含的欄位),Microsoft SharePoint Designer 就會自動進行其餘操作。不過,在可以使用表單之工作流程生命週期的四個時間點中,只有兩個可搭配以 Microsoft SharePoint Designer 建立的工作流程使用:[初始化] 和 [工作完成]。因為每個使用此工具建立的工作流程都必須與特定的文件庫、清單、內容類型或網站建立關聯,所以不需要關聯步驟,也不會有 [關聯] 表單。由於這些工作流程在執行時無法進行修改,因此也不需要 [修改] 表單。

Microsoft SharePoint Designer 也可匯入使用 Microsoft Visio 2010 所建立的工作流程。如此可讓業務主管或工作流程作者使用知名的圖形化環境,建立工作流程邏輯。然後,工作流程作者可將此工作流程邏輯匯入 Microsoft SharePoint Designer,並視需要予以修改,然後再發佈至 SharePoint 網站。

SharePoint Server 提供建立文件導向工作流程的大量功能。但是它最終還是開發與執行的平台。其本身並不提供使用者直接可用的工作流程功能。在 SharePoint Server 上執行的工作流程還有其他限制,例如,無法透過 Office 用戶端應用程式與參與者互動。

製作工具比較

下表顯示使用 SharePoint Designer 及 Visual Studio 2010 Professional Edition 的 WF 工作流程設計工具,在 SharePoint Server 中建立工作流程時,Microsoft 支援工具之間的重大差異。

功能/需求 SharePoint Designer Visual Studio 中的 WF 工作流程設計工具

是否只有使用網站管理員核准的動作,才可建立工作流程?

可以

不可以

是否可在用戶端應用程式 (而非瀏覽器) 中存取工作流程?

可以

可以

是否可使用 Microsoft Visio Professional 建立工作流程邏輯?

可以

不可以

是否需要撰寫程式碼?

不可以

可以

是否提供其他活動 (SharePoint Server 所提供之活動以外的活動)?

不可以

可以

是否可建立自訂活動?

不可以

可以

是否可在工作流程中使用 InfoPath 表單?

可以

可以

是否可在執行時修改工作流程?

不可以

可以

是否按一下即發佈工作流程?

可以

可以

是否可遠端部署工作流程?

可以

不可以

是否可在伺服器陣列之間使用?

不可以

可以

是否可將範圍限定在網站集合?

可以

可以