C#Workflow Project中的Sharepoint工作流全局变量

时间:2012-11-05 17:07:19

标签: c# sharepoint-2010 workflow

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

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

1 个答案:

答案 0 :(得分:0)

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

您应该在......

时使用列表
  • 需要在工作流程中的许多不同类中访问数据

您应该在..

时使用类作用域变量
  • 数据仅在一个类

  • 中需要
  • 数据类型可以序列化(基本类型,标有[Serializable]的类型)。我的解决方案中有一个这样的类型:

    [序列化] 公共类ReviewerBag {     公共词典审稿人{得到;组; }     public string主持人{get;组; }

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

    }

  • 如果工作流中的类之间需要数据, 仍然可以使用变量,但要注意每次在类中声明变量时,它将在工作流变为空闲时独立地序列化(例如,当工作流等待用户完成任务时)。变量变得不同步,因为它们在工作流程恢复时独立地反序列化。故事的道德是使用列表来存储这种情况下的数据!