Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#工作流项目中的Sharepoint工作流全局变量_C#_Sharepoint 2010_Workflow - Fatal编程技术网

C#工作流项目中的Sharepoint工作流全局变量

C#工作流项目中的Sharepoint工作流全局变量,c#,sharepoint-2010,workflow,C#,Sharepoint 2010,Workflow,过去,我曾使用SharePoint Designer开发文档工作流,并创建了“全局变量”。据我所知,这些变量在工作流实例中是全局变量 如何在VisualStudio工作流项目中创建等效的全局变量?我的第一个想法是在模块中创建一组如下字段: <Elements xmlns="http://schemas.microsoft.com/sharepoint/"> <Field ID="{2FE15855-3CAB-44A6-AB29-1600204FCA20}" Name="Te

过去,我曾使用SharePoint Designer开发文档工作流,并创建了“全局变量”。据我所知,这些变量在工作流实例中是全局变量

如何在VisualStudio工作流项目中创建等效的全局变量?我的第一个想法是在模块中创建一组如下字段:

<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表单访问任何全局变量?

在Visual Studio中开发了我的工作流后,我得出结论,您应该使用SharePoint列表和类范围变量的组合来保留工作流中的全局状态

当..

  • 数据需要在工作流中跨多个不同的类进行访问
当..

  • 数据只在一个类中需要

  • 数据属于可以序列化的类型(基元类型,标记为[Serializable]的类型)。我的解决方案中有一种这样的类型:

    [可序列化] 公共类书包{ 公共词典审阅者{get;set;} 公共字符串调节器{get;set;}

    public ReviewerBag()
    {
        Reviewers = new Dictionary<string,Reviewer>();
    }
    ...
    
    公共文件包()
    {
    审阅者=新词典();
    }
    ...
    
    }

  • 如果工作流中的类之间需要数据,您仍然可以使用变量,但请注意,每次在类中声明变量时,当工作流变为空闲时(例如,当工作流等待用户完成任务时),变量都将被独立序列化。变量在工作流恢复时被独立反序列化,因此变为不同步。这个故事的寓意是在这个场景中使用列表来存储数据


对于VS工作流,您可以编写代码,因此这与在C#中询问如何拥有全局状态相同。如果可以选择的话,最好将数据存储在列表中的某个位置,特别是当您计划从ASPX页面访问数据时。谢谢。我不相信Sharepoint Designer使用列表来保留全局状态(我肯定是错的!)。能否为每个工作流实例创建一个“隐藏”列表实例?我基本上想要一个全局内存区域,该区域在服务器重新启动时保持不变,并且只能由创建它的工作流读取。我不知道designer工作流是否在内部使用全局状态列表,我知道我经常显式地使用列表来存储我在工作流中使用的状态(在VS和designer中)。您可能不希望每个实例都有一个列表,而是希望每个实例都有一个列表和该列表中的一个项目。至于将其隐藏,您可以中断继承并删除每个人的权限,以便只有网站集管理员可以修改它。