在利用Microsoft的WWF開發工作流後,部署到Sharepoint平台中,在運行自定義的流程進行審批的時候,在審批完每個任務後,只要工作流沒有最後的完成 工作流的狀態都是顯示“進行中”,不管在這個任務審批是同意要流到下一個任 務,還是拒絕返回到本任務中都顯示這個狀態值,但在現實的項目中這樣情況並 不能滿足用戶的需求,用戶希望可以自定義工作流在審批過程中顯示的狀態值;
接下就介紹下如何進行自定義工作流狀態列的值,新建一個工作流項目如順 序工作流項目,具體如何進行創建工作流項目在此就不“唠叨”了,主要介紹自 定義工作流狀態值,假設現在已創建好基本的工作流項目,那麼自定義工作流狀 態值的步驟,具體如下:
1、在工作流設計器中,將“SetState”活動拖曳進來到某onTaskChange活動 下,並修改CorrelationToken屬性的值為當前工作流開始活動 (onWorkflowActivated)對應的屬性值一樣即可。
說明:SetState活動是對當前工作流進行設置的,而不是對應工作流中的某 個任務
2、修改“SetState”活動裡的State屬性值,創建一個名如 setWorkflowState的Field。
3、修改Workflow.xml文件,打開此文件並在<MetaData>節點中添加如 下節點元素:
<ExtendedStatusColumnValues>
<StatusColumnValue>已取消(可自定義) </StatusColumnValue>
<StatusColumnValue>已批准(可自定義) </StatusColumnValue>
<StatusColumnValue>被拒絕(可自定義) </StatusColumnValue>
</ExtendedStatusColumnValues>
上面此段節點就是擴展工作流中現有狀態值的信息,由於工作流中狀態值都 是用基於0開始的一個整型數來表示的即是0~14之間的數,且0~14這15個數值 是保留給系統內部使用的,所以自定義擴展的狀態值將在原先的數上進行累加即 從編號15開始於此類推。如上面自定義的擴展的三個狀態值對應的編號:已取消 為15、已批准為16、被拒絕為17;
保存Workflow.xml文件;
4、雙擊SetState活動創建關聯的事件處理程序,並在此事件中設置當前運行 的工作流的狀態值,代碼如下:
setWorkflowState = (int)SPWorkflowStatus.Max + 1;
說明:SPWorkflowStatus.Max表示為獲取當前工作流狀態值的最大值即15;
5、按“F5”進行編譯並部署工作流到Sharepoint網站中;