2012-11-05 113 views
0

過去,我使用SharePoint Designer開發了文檔工作流,並創建了「全球可變成員」。據我所知,這些變量在整個工作流實例中是全局變量。C#工作流項目中的Sharepoint工作流全局變量

如何在Visual Studio Workflow項目中創建等效的全局變量?我的第一個想法是在一個模塊中創建一組這樣的字段:

<Elements xmlns="http://schemas.microsoft.com/sharepoint/"> 
    <Field ID="{2FE15855-3CAB-44A6-AB29-1600204FCA20}" Name="TechRev1" 
     MaxLength="255" DisplayName="Technical Reviewer 1" Description="" 
     Direction="None" Type="User" Overwrite="TRUE" /> 
    <Field ID="{517B22A5-1B89-4C24-82BE-3D4FD99645BC}" Name="TechRev2" 
     MaxLength="255" DisplayName="Technical Reviewer 2" Description="" 
     Direction="None" Type="User" Overwrite="TRUE"/> 
<Elements/> 

這是正確的做法,我將如何訪問從ASPX形式的任何全局變量?

+0

對於VS工作流程,您可以編寫代碼,因此它與詢問如何在C#中具有全局狀態相同。最好的辦法就是將數據存儲在某個列表中,如果它是一個選項,尤其是如果您打算從ASPX頁面訪問它的話。 – Servy

+0

謝謝Servy。我不相信Sharepoint Designer使用一個列表保留全局狀態(我肯定可能是錯的!)。你可以爲每個工作流實例創建一個「隱藏」列表實例嗎? 我基本上想要一個全局內存區域,該區域在服務器重啓時仍然存在,並且只能由創建它的工作流讀取。 –

+0

我不知道設計器工作流是否在內部使用全局狀態列表,我知道我經常明確地使用列表來存儲我在工作流中使用的狀態(在VS和設計器中)。您可能不希望每個實例都有一個列表,您希望每個實例都有一個列表和一個列表中的項目。至於隱藏它,您可以中斷繼承並刪除所有人的權限,以便只有網站集管理員才能修改它。 – Servy

回答

0

在Visual Studio中開發了我的工作流程我已經得出結論,您應該使用SharePoint列表和類範圍變量的組合來保留工作流程中的全局狀態。

時,應使用表...

  • ,數據需要在工作流

您應該使用類範圍的變量時,在許多不同的類訪問..

  • 該數據僅在一個類中需要

  • 數據類型可以是序列化的(原始類型,標有[Serializable]的類型)。我在我的解決方案中有一個這樣的類型:

    [Serializable] public class ReviewerBag { public Dictionary Reviewers {get;組; } public string Moderator {get;組; }

    public ReviewerBag() 
    { 
        Reviewers = new Dictionary<string,Reviewer>(); 
    } 
    ... 
    

    }

  • 如果在工作流類之間所需要的數據,你可以仍然使用變量,但要注意,每個變量是在類中聲明時,它將獨立當連載工作流變得空閒(例如,當工作流等待用戶完成任務時)。由於它們在工作流程簡歷上獨立解序列化,因此變量不同步。故事的道德是使用列表來存儲這種情況下的數據!