如何:访问工作流中的关联和初始表单数据

 http://msdn.microsoft.com/zh-cn/library/ms566880.aspx

  1. 提取 InfoPath 关联或初始表单的架构。

    1. 在 InfoPath 中打开已保存和发布的工作流表单。

    2. 若要将表单保存为源文件,请在“文件”菜单上单击“另存为源文件”。浏览到要保存表单源文件的位置,然后单击“确定”。

      InfoPath 会将表单源文件集合(包括架构文件)保存到指定位置。表单架构文件始终命名为 myschema.xsd

  2. 使用命令行工具 xsd.exe 根据表单架构文件 (.xsd) 生成新的类文件。

    1. 打开 Visual Studio 命令提示符。单击“开始”,依次指向“所有程序”、“Microsoft Visual Studio 2010”和“Visual Studio 工具”,然后单击“Visual Studio 2010 命令提示符”。

      注释注释

      默认情况下,Visual Studio 2010 将 xsd.exe 命令行工具安装到以下位置(其中 C: 表示安装 Visual Studio 2010 的驱动器):C:\Program Files\Microsoft Visual Studio 10\SDK\v2.0\Bin

    2. 导航到表单架构 (.xsd) 文件的位置,然后运行以下命令:xsd myschema.xsd /c /o:output_directory

      xsd.exe 工具根据表单架构生成新的类文件。文件的名称与架构文件 myschema.cs 相同。文件中类的名称与架构的根元素相同,而根元素的名称又与表单字段集合相同。

      注释注释

      请为表单字段集合指定唯一的名称,而不要使用默认名称 myfields,这样有助于确保从表单架构文件生成的类也有唯一的名称。对使用多个表单的工作流进行编程时这一点尤为重要。

  3. 在 Visual Studio 中打开工作流项目,然后向其添加这个新的类文件。

  4. 向工作流添加代码,此代码通过使用工作流关联或初始数据对新类的新实例进行序列化。

    例如,以下代码从名为 workflowPropsSPWorkflowActivationProperties 对象变量的InitiationData 属性中对InitForm 类型的新对象进行序列化。此示例假定开发人员已创建一个类InitForms,其架构与用于收集初始数据的 InfoPath 表单的架构相匹配。

     
    using System.Xml.Serialization;
    using System.Xml;
    …
      XmlSerializer serializer = new 
         XmlSerializer(typeof(InitForm));
       XmlTextReader reader = new XmlTextReader(new 
         System.IO.StringReader(workflowProps.InitiationData));
       InitForm initform = (InitForm) serializer.Deserialize(reader);

  5. 向工作流添加代码,此代码根据表单架构将自定义属性作为类属性进行访问。

    下面的代码以前一个示例为基础。这些代码访问 InitForm 对象的三个自定义属性,并将这些属性赋给字符串变量。

     
    assignee = initform.assignee;
      instructions = initform.instructions;
      comments = initform.comments;


这个初始化表单并不是所提交的那个表单,只是启动工作流时的一个表单,在其中可以指定第一个签核者. :(

如果要得到提交的表单的内容,就需要先将表单字段提升为列表字段,然后根据表单的完整地址找到表单对应的listitem,读取相应字段的值了  :)

string strListItem = workflowProperties.WebUrl + "/" + workflowProperties.ItemUrl;
SPSite mysite =newSPSite(workflowProperties.SiteUrl);
SPListItem mylistitem = mysite.RootWeb.GetListItem(strListItem);
string Email = mylistitem["Email"];
mylistitem["Email"] ="test@test.com";
mylistitem.Update();


可参考 http://tech.it168.com/KnowledgeBase/Articles/2/c/1/2c144c38640f76e01ff2d1089c46a6cd.htm

设置初始化表单可参考 http://msdn.microsoft.com/zh-cn/library/ms563325.aspx

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值