向 SharePoint 文檔庫中添加欄
1. 打開一個 SharePoint 網站 。
2. 建立一個文檔庫。 文檔庫的名字可取為“共享文檔”
3. 在“庫工具”功能區上單擊“庫”,然後單擊該功能區上的“建立列”按鈕以建立新列。
4. 将該列命名為“文檔狀态”,将其類型設定為“選項(要從中選擇的菜單)”,指定以下三個選項,然後單擊“确定”:
· 需要評審
· 評審完成
· 請求更改
5. 再建立兩列并将它們命名為“受理人”和“評審注釋”。 将“受理人”列類型設定為單行文本,将“評審注釋”列類型設定為多行文本。
使文檔無需簽出即可編輯
如果無需簽出文檔即可進行編輯,則測試工作流模闆會更容易一些。 在下一個過程中,您将配置 SharePoint 網站以達到此目的。
1. 單擊“共享文檔”。
2. 在“庫工具”功能區上單擊“庫”,然後單擊“庫設定”按鈕以顯示“文檔庫設定”頁。
3. 在“正常設定”部分中,單擊“版本控制設定”以顯示“版本控制設定”頁。
4. 驗證“要求先簽出文檔然後再對其進行編輯”的設定是否為“否”。 如果不是這樣,請将其更改為“否”,然後單擊“确定”。
建立 SharePoint 順序工作流項目
順序工作流是按順序執行直到最後一個活動完成的一組步驟。 在此過程中,我們将建立一個将應用于“共享文檔”清單的順序工作流。 利用此工作流向導,您可以将工作流與網站定義或清單定義關聯,并可以确定工作流的啟動時間。
啟動 Visual Studio,然後通過指向“檔案”菜單上的“建立”并單擊“項目”,顯示“建立項目”對話框。
1. 展開“Visual C#”下的“SharePoint”節點,然後單擊“2010”。
2. 在“模闆”窗格中選擇“順序工作流”。
3. 在“名稱”框中,鍵入 MySharePointWorkflow,然後單擊“确定”。

這将顯示“SharePoint 自定義向導”。
4. 在“要使用哪個本地網站進行調試?”頁中,單擊“下一步”以接受預設網站。
5. 在“指定用于調試的工作流名稱”頁上,接受預設名稱(“MySharePointWorkflow - Workflow1”)。 保留預設工作流模闆類型值“清單工作流”,然後單擊“下一步”。
6. 在“是否希望 Visual Studio 在調試會話中自動關聯工作流?”頁中,單擊“下一步”以接受所有預設設定。 此步驟會自動将工作流與共享文檔庫關聯。
7. 在“指定确定工作流啟動方式的條件”頁上,将“您希望如何啟動工作流?”部分中的預設選項保持選中狀态,然後單擊“完成”。
可利用此頁指定工作流啟動的時間。 預設情況下,當使用者在 SharePoint 中手動啟動工作流時,或在建立與工作流關聯的項時,工作流将啟動。
建立工作流活動
工作流包含一個或多個表示要執行的操作的活動。 使用工作流設計器可為工作流安排活動。 在此過程中,我們将向工作流中添加兩個活動:HandleExternalEventActivity 和 OnWorkFlowItemChanged。 這些活動将監視“共享文檔”清單中文檔的評審狀态。
1. 工作流應顯示在工作流設計器中。 如果不是這樣,請輕按兩下“解決方案資料總管”中的“Workflow1.cs”以打開工作流。
2. 在設計器中,單擊選擇“OnWorkflowActivated1”活動。
3. 在“屬性”視窗中,在“Invoked”屬性旁鍵入 onWorkflowActivated,然後按 Enter。
代碼編輯器将會打開,一個名為“onWorkflowActivated”的事件處理程式方法被添加到 Workflow1 代碼檔案中。
4. 切換回工作流設計器,打開工具箱,然後展開“Windows Workflow v3.0”節點。
5. 從“工具箱”的“Windows Workflow v3.0”節點拖動一個“While”活動,并将該活動與“onWorkflowActivated1”活動下的行連接配接。
6. 單擊選擇“WhileActivity1”活動。
7. 在“屬性”視窗中,将“Condition”設定為“代碼定義”。
8. 展開“Condition”屬性,在“Condition”屬性旁鍵入 isWorkflowPending,然後按 Enter。
代碼編輯器将會打開,一個名為 isWorkflowPending 的方法被添加到 Workflow1 代碼檔案中。
9. 切換回工作流設計器,打開工具箱,然後展開“SharePoint 工作流”節點。
10. 從“工具箱”的“SharePoint 工作流”節點拖動一個“OnWorkflowItemChanged”活動,并将該活動與“whileActivity1”活動中的行連接配接。
11. 單擊選擇“onWorkflowItemChanged1”活動。
2. 在“屬性”視窗中,如下表所示設定屬性。
屬性 | 值 |
CorrelationToken | workflowToken |
Invoked | onWorkflowItemChanged |
處理活動事件
最後,檢查每個活動後文檔的狀态。 如果文檔已經過評審,則工作流将完成。
1. 在 Workflow1.cs中,将以下字段添加到 Workflow1 類的頂部。 在活動中使用此字段可确定工作流是否已完成。
Boolean workflowPending = true;
2. 将下面的方法添加到 Workflow1 類中。 此方法檢查“文檔”清單的 “文檔狀态” 屬性的值,以确定文檔是否已評審。 如果“文檔狀态”屬性設定為 “評審完成”,checkStatus 方法就将 workflowPending 字段設定為 false 以訓示工作流可以完成。
private void checkStatus()
{
if ((string)workflowProperties.Item["文檔狀态"] == "評審完成")
workflowPending = false;
}
3. 将下面的代碼添加到 onWorkflowActivated 和 onWorkflowItemChanged 方法以調用 checkStatus 方法。 當工作流開始時,onWorkflowActivated 方法調用 checkStatus 方法以确定文檔是否已評審。 如果文檔尚未評審,則工作流繼續。 儲存文檔時,onWorkflowItemChanged 方法再次調用 checkStatus 方法以确定文檔是否已評審。 如果 workflowPending 字段設定為 true,則工作流繼續運作。
private void onWorkflowActivated(object sender, ExternalDataEventArgs e)
{
// Check the status.
checkStatus();
}
private void onWorkflowItemChanged(object sender, ExternalDataEventArgs e)
{
// Check the status.
checkStatus();
}
4. 向 isWorkflowPending 方法中添加以下代碼以檢查 workflowPending 屬性的狀态。 每次儲存文檔時,“whileActivity1”活動都會調用 isWorkflowPending 方法。 此方法檢查 ConditionalEventArgs 對象的 Result 屬性,以确定“WhileActivity1”活動應繼續還是完成。 如果該屬性設定為 true,則活動繼續。 否則,活動完成并且工作流也完成。
private void isWorkflowPending(object sender, ConditionalEventArgs e)
{
e.Result = workflowPending;
}
5. 儲存項目。
測試 SharePoint 工作流模闆
啟動調試器時,Visual Studio 将工作流模闆部署到 SharePoint Server,并将該工作流與“共享文檔”清單相關聯。 若要測試工作流,請從“共享文檔”清單中的某個文檔啟動工作流的一個執行個體。
1. 在 Workflow1.cs中,在“onWorkflowActivated”方法旁設定一個斷點。
2. 按 F5 生成并運作解決方案。 SharePoint 網站将出現。
3. 在 SharePoint 中的導航窗格中單擊“共享文檔”。
4. 在“共享文檔”頁中,單擊“庫工具”頁籤上的“文檔”,然後單擊“上載文檔”按鈕以上載文檔。
5. 在“上載文檔”對話框中,單擊“浏覽”按鈕,選擇任何文檔檔案,單擊“打開”,然後單擊“确定”。
這會将標明文檔上載到“共享文檔”清單中并啟動工作流。
6. 在 Visual Studio 中,确認調試器是否在 onWorkflowActivated 方法旁的斷點處停止。
7. 按 F5 繼續執行。
8. 雖然您可以在此處更改文檔的設定,但此時請單擊“儲存”以保留這些文檔設定的預設值。
這将傳回到預設 SharePoint 網站的“共享文檔”頁。
9. 在“共享文檔”頁中,驗證“MySharePointWorkflow”列下方的值是否設定為“正在進行中”。 這訓示工作流正在進行中,文檔在等待評審。
10. 在“共享文檔”頁中,指向該文檔,單擊向下箭頭,然後單擊“編輯屬性”。
11. 将“文檔狀态”設定為“評審完成”,然後單擊“儲存”。
這将傳回到預設 SharePoint 網站的“共享文檔”頁。
12. 在“共享文檔”頁中,驗證“MySharePointWorkflow”列下方的值是否設定為“評審完成”。 這訓示工作流已完成,文檔已評審。
本文參考msdn文檔完成。