製作 Windows SharePoint Services 工作流程
何謂 Windows SharePoint Services 工作流程?基本上是由兩個項目組成:工作流程用來與其使用者互動的表單,以及定義工作流程行為的邏輯。瞭解 Windows SharePoint Services 工作流程的建立方式之前,需要先瞭解上述二者。
因為 Windows SharePoint Services 工作流程透過網頁瀏覽器與使用者通訊,所以會依賴 Microsoft ASP.NET 來顯示其表單。因此,這些表單會定義為 ASPX 頁面。Windows SharePoint Services 工作流程可能會在其生命週期的四個時間點顯示其自己的表單:
關聯:Windows SharePoint Services 管理員建立工作流程範本與特定文件庫或清單的關聯時,可能可以設定選項,以套用至透過這個關聯建立的每個工作流程執行個體。如果工作流程作者選擇允許進行這項操作,則必須提供可讓管理員指定這項資訊的表單。
初始化:可能會允許工作流程起始者在啟動執行中執行個體時指定選項。例如,在剛才說明的核准案例中,這些選項包括指定工作流程參與者清單及定義每位參與者必須完成其工作的時間長度。如果工作流程允許進行這項操作,則其作者必須提供表單,讓起始者設定這些選項 (如上圖的步驟 3 所示)。
工作完成:執行中工作流程執行個體必須向工作流程參與者顯示表單,讓他們完成工作。如上圖步驟 6 所示,這個表單就是允許先前案例中的核准者對文件加上註解並指出核准或拒絕的表單。
修改:雖然上面的案例中未顯示,但是工作流程建立者可以允許在工作流程執行時對其進行修改。例如,工作流程可能允許在開始執行或延長完成工作的到期日之後新增參與者。如果使用這個選項,則工作流程必須在此時顯示表單,讓參與者指定應該進行的變更。
只在 Windows SharePoint Services 上建置的工作流程會將其表單定義為 .aspx 頁面,而使用 Office SharePoint Server 的工作流程也可以使用透過 InfoPath 建立的表單 (如本文稍後所述)。在任一情況下,工作流程的邏輯一律都會定義為一組活動,就與任何 WF 型工作流程一樣。為了指定工作流程的邏輯和表單,Microsoft 提供兩種不同的工具,而每種工具針對的對象各不相同。軟體開發人員可以使用 Visual Studio 2005 中主控的 WF 工作流程設計工具。資訊工作者 (技術較弱的群組) 則可以使用 Office SharePoint Designer 來建立工作流程,而不需要撰寫程式碼。下兩節會檢查如何使用這些工具來建立 Windows SharePoint Services 工作流程。
使用 Visual Studio 2005 和 WF 工作流程設計工具製作工作流程
在許多方面,工作流程都和流程圖類似。因此,提供圖形工具讓開發人員指定工作流程的動作是有意義的。對 WF 而言,這個工具是工作流程設計工具 (Visual Studio 2005 的 Windows Workflow Foundation 擴充功能的一部分)。開發人員可以使用 WF 工作流程設計工具以圖形方式定義工作流程的活動,以及執行這些活動的順序。以下畫面顯示這項操作的簡單範例。
可用的活動會出現在畫面左邊的工具箱中。開發人員可以將這些活動拖曳至設計介面,來定義工作流程中的步驟。接著,可以在出現於右下角的 [內容] 視窗中設定每個活動的內容。
WF 的基本活動庫提供一組基本活動 (如前所述)。Windows SharePoint Services 也提供一組專為建立 Windows SharePoint Services 工作流程而設計的活動。其中,最重要的活動包括:
OnWorkflowActivated:提供 Windows SharePoint Services 工作流程的標準起始點。此外,這個活動會接受 Windows SharePoint Services 管理員在建立工作流程與文件庫或清單的關聯時,透過 [關聯] 表單提供的資訊,以及其他資訊。這個活動也會接受啟動工作流程時,透過 [初始化] 表單提供的資訊。每個 Windows SharePoint Services 工作流程都必須以這個活動開始。
CreateTask:在工作清單中建立指定給特定使用者的工作。例如,先前案例中的核准工作流程使用這個活動,將工作新增至每個參與者使用的工作清單。這個活動也具有 SendEmailNotification 屬性,在設為 True 時,會自動將電子郵件訊息傳送給建立這個工作的人員。
OnTaskChanged:接受 [工作完成] 表單中的資訊。先前案例中的核准工作流程使用這個活動,在核准文件之後接受每位參與者的輸入。
CompleteTask:將工作標示為已完成。
DeleteTask:從工作清單中移除工作。
OnWorkflowModified:接受 [修改] 表單中的資訊,然後使用這些資訊來變更這個工作流程執行個體的運作方式。如果工作流程的建立者選擇不要在工作流程中包含這個活動的任何執行個體,則該工作流程在執行時無法進行修改。
SendEmail:將電子郵件傳送給指定的人員或一組人員。
LogToHistoryList:將工作流程的執行資訊寫入歷程記錄清單。這份清單中的資訊是用來讓使用者查看工作流程的執行位置、在工作流程完成後查看其歷程記錄等。若要允許這種監視,工作流程的作者必須在工作流程的適當執行時點,將資訊寫入 [歷程記錄] 清單。因為這份清單提供自己的機制來追蹤工作流程,所以 Windows SharePoint Services 不支援 WF 的標準追蹤服務。
簡單 Windows SharePoint Services 工作流程的一般模式是以 OnWorkflowActivated 活動開始,然後使用 CreateTask 活動將工作指定給工作流程式中的參與者。接著可能會使用 BAL 的標準 While 活動來等待使用者完成工作。若要瞭解何時會發生此情況 (可能是使用者對活動進行多項變更,然後在完成時核取 [工作完成] 表單上的方塊),OnTaskChanged 活動會在 While 內執行,以擷取使用者在該表單上輸入的任何資訊。使用者完成工作時,可能會執行 CompleteTask 活動,而後面可能會接著 DeleteTask。工作流程接著可以移至下一位參與者、使用 CreateTask 將工作指定給該參與者等。當然,也可能會發生其他情況,例如傳送電子郵件、將資訊記錄至歷程記錄清單,甚至包括允許執行任意程式碼的 BAL Code 活動。
Windows SharePoint Services 提供的所有活動都是與讓工作流程在 Windows SharePoint Services 環境內運作有關。工作流程實作的商務邏輯完全取決於該工作流程的建立者。實際上,製作 Windows SharePoint Services 工作流程的開發人員可以自由建立及使用自己的自訂活動,而不是只能使用 Windows SharePoint Services 和 WF 提供的活動。
如前所述,Windows Workflow Foundation 同時支援循序和狀態電腦工作流程。而使用 WF 工作流程設計工具建立的 Windows SharePoint Services 工作流程也可以使用任一選項。作法是 Windows SharePoint Services 將兩種專案類型新增至 Visual Studio 2005 (一種工作流程樣式一種專案類型)。
不論選擇的是哪一種樣式,開發人員都必須定義工作流程的邏輯,而且還必須指定工作流程應該使用的 ASPX 表單。若要執行這項操作,開發人員會依賴 workflow.xml 檔案。這個檔案提供範本,讓開發人員填寫以指定應該在 Windows SharePoint Services 工作流程允許執行這項操作的四個時間點顯示的表單 (如果有的話)。
開發人員必須進行一些工作,才能在 Windows SharePoint Services 工作流程與其使用的 ASPX 表單之間傳遞資訊。Windows SharePoint Services 提供的命名空間 Microsoft.Windows.SharePoint.Workflow,可公開物件模型供開發人員使用。使用這個命名空間中的類型,Windows SharePoint Services 工作流程建立者可以將資訊從 ASPX 表單傳遞至工作流程,反之亦然。
建立 Windows SharePoint Services 工作流程及其表單之後,開發人員必須將其封裝成 Windows SharePoint Services 3.0 稱為功能的項目。Windows SharePoint Services 管理員接著必須安裝這個功能 (包括將工作流程的組件安裝至目標系統的全域組件快取)。現在,管理員可以看到新的工作流程,以可與文件庫或清單建立關聯的工作流程範本表示。
對軟體開發人員而言,使用 Visual Studio 和 WF 工作流程設計工具建立 Windows SharePoint Services 工作流程並不會特別難。開發人員需要瞭解環境中的工作細節,但大部分都是熟悉的操作。而軟體開發人員並不是唯一想要製作 Windows SharePoint Services 工作流程的人員。如下所述,不是專業開發人員的人員也可以使用 Office SharePoint Designer 建立工作流程。
使用 Office SharePoint Designer 2007 製作工作流程
Office SharePoint Designer 2007 是 2007 Office 系統另外授權的元件,可讓資訊工作者及其他人將應用程式邏輯 (實作為工作流程) 新增至 Windows SharePoint Services 網站。這無疑是有用的目標,但是 Office SharePoint Designer 也會解決另一個重要問題。如果開發人員使用 Visual Studio 建立 Windows SharePoint Services 工作流程,則工作流程必須與任何其他應用程式一樣安裝在 Windows SharePoint Services 伺服器上。但是,許多 Windows SharePoint Services 管理員不允許將任意程式碼部署在其伺服器上,認為這樣系統不穩定的風險很大。不過,可以建立連絡至文件和清單項目的直接商務邏輯十分地有用,而且是許多 Windows SharePoint Services 使用者需要的事項。除了允許技術較弱的人員建立工作流程之外,Office SharePoint Designer 也可以提供更安全的方式,在 Windows SharePoint Services 伺服器上定義及部署商務邏輯,以解決這個問題。
Office SharePoint Designer 所要解決的工作流程案例,與 Visual Studio 和 WF 工作流程設計工具所解決的工作流程案例在某些方面有所不同。雖然極有可能會建立複雜的應用程式,但是 Office SharePoint Designer 的目的還是讓使用者將商務邏輯新增至 Windows SharePoint Services 網站。例如,假設網站包含可讓其使用者送出變更要求的清單。可使用 Office SharePoint Designer 建立工作流程,以在接受或拒絕送出者的變更要求時自動通知該送出者。同樣地,只要將新的文件新增至特定文件庫,自訂工作流程就可能會通知特定使用者群組。執行這種自訂通知並不複雜 (建立工作流程十分簡單),但是使用舊版 Windows SharePoint Services 的挑戰造成管理員不願意安裝使用者撰寫的程式碼。
其中一個明顯的問題是,為什麼應該將使用 Office SharePoint Designer 建立的邏輯視為不同?又是什麼讓 Windows SharePoint Services 管理員願意讓使用這個工具建置的工作流程部署在他們所負責的系統上?答案是使用 Office SharePoint Designer 建置的工作流程僅可以使用管理員控制清單中的活動。雖然網站管理員可以選擇在這份清單上包含開發人員建立的自訂活動,但是不一定非得這樣做。確切地定義允許進行的工作流程,Windows SharePoint Services 管理員就可以較有自信部署使用 Office SharePoint Designer 所建立的邏輯不會讓系統不穩定。
因為 Office SharePoint Designer 是針對資訊工作者而不是開發人員,而且強調的是較簡單的案例,所以 Office SharePoint Designer 用來建立工作流程的模型會與 Visual Studio 主控的 WF 工作流程設計工具不同。Office SharePoint Designer 使用的是合乎規則的方式,而不是圖形方式。有點類似 Outlook 中的 [規則精靈],這是許多人都熟悉的工具。以下畫面說明 Office SharePoint Designer 使用者如何定義工作流程中的步驟。
每個步驟都可以有一個條件和一個動作。條件決定是否應該執行這個步驟的動作,如上述的 If 陳述式。而動作的選擇包括將待辦事項指定給工作流程參與者、傳送電子郵件等。這些動作每個都可以由某個 Windows SharePoint Services 活動實際執行,而且此處使用的活動會與 Visual Studio 和 WF 工作流程設計工具相同。例如,上述的 [傳送電子郵件] 選項相當於 SendEmail 活動,[指定待辦事項]**** 則相當於較特定的 CreateTask 活動版本。動作清單也可以包含 Windows SharePoint Services 管理員允許用於這個網站的任何其他活動 (包含開發人員建立的自訂活動)。
即使 Office SharePoint Designer 的使用者介面外觀與搭配 Visual Studio 和 WF 工作流程設計工具使用的圖形方法相當不同,但是 Office SharePoint Designer 還是會建立標準 WF 工作流程。實際產生的內容是具有使用 WF 規則引擎表示之條件的循序工作流程。不過,使用這個工具建立的工作流程還是有其限制。例如,與使用 Visual Studio 和 WF 工作流程設計工具建置的工作流程不同,這些工作流程不可以在執行時進行修改,而且僅可以建立不支援狀態電腦的循序工作流程。此外,使用這種工具所建置的工作流程在設計時,必須根據特定文件庫或清單予以製作。因此不可能建立稍後可以與任何文件庫或清單建立關聯或與內容類型建立關聯的一般工作流程範本。雖然這確實會限制可以使用工作流程的方式,但是也會讓部署工作流程較為簡單。實際上,當使用者使用 Office SharePoint Designer 製作工作流程之後,這個工具會自動將工作流程部署至目標網站。這明顯比使用 Visual Studio 和 WF 工作流程設計工具建立的工作流程所需要的多步驟部署程序還要簡單。
使用 Office SharePoint Designer 建立的工作流程也可以顯示自訂表單。但是,這個工具會產生 ASPX 頁面,而不是由工作流程作者直接建立這些頁面。作者只要指定所產生頁面之外觀的詳細資料 (例如頁面應該包含的欄位),Office SharePoint Designer 就會自動進行其餘操作。不過,在可以使用表單之 Windows SharePoint Services 工作流程生命週期的四個時間點中,只有其中兩個可以搭配透過 Office SharePoint Designer 建立的工作流程使用:[初始化] 和 [工作完成]。因為每個使用這個工具建立的工作流程都必須與特定文件庫或清單建立關聯,所以不需要關聯步驟,因此也不會有 [關聯] 表單。由於這些工作流程在執行時無法進行修改,因此也不需要 [修改] 表單。
Office SharePoint Designer 可以用於建立 Windows SharePoint Services 工作流程以外的事項。例如,您可以使用這個工具建立 Windows SharePoint Services 網站,或編輯網頁的主版頁面以自訂網頁的外觀與風格。您也可以使用這個工具連線至依賴 ASP.NET 中資料繫結支援的外部資料。但是,如果是需要建立在 Windows SharePoint Services 網站上執行之邏輯的資訊工作者,則 Office SharePoint Designer 的最重要部分無庸置疑會是其對製作工作流程的支援。
Windows SharePoint Services 提供建立文件導向工作流程的大量功能。但是它最終還是開發和執行的平台。其本身並未提供使用者直接可用的工作流程功能。如果需要的是現成工作流程應用程式 (通常也是需要這類應用程式),則 Windows SharePoint Services 仍嫌不夠。僅使用 Windows SharePoint Services 建立的工作流程還有其他限制,例如,無法透過 Office 用戶端應用程式與參與者互動。以下將說明 Office SharePoint Server 為克服所有這些限制所提供的方式。
下載本書
本主題隨附於下列可下載的叢書中,以便於閱讀與列印:
請參閱 Office SharePoint Server 2007 可下載的內容 (英文) 上提供的完整叢書清單。