http://msdn.microsoft.com/zh-cn/library/ms566880.aspx
-
提取 InfoPath 关联或初始表单的架构。
-
在 InfoPath 中打开已保存和发布的工作流表单。
-
若要将表单保存为源文件,请在“文件”菜单上单击“另存为源文件”。浏览到要保存表单源文件的位置,然后单击“确定”。
InfoPath 会将表单源文件集合(包括架构文件)保存到指定位置。表单架构文件始终命名为 myschema.xsd。
-
-
使用命令行工具 xsd.exe 根据表单架构文件 (.xsd) 生成新的类文件。
-
打开 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
-
导航到表单架构 (.xsd) 文件的位置,然后运行以下命令:xsd myschema.xsd /c /o:output_directory
xsd.exe 工具根据表单架构生成新的类文件。文件的名称与架构文件 myschema.cs 相同。文件中类的名称与架构的根元素相同,而根元素的名称又与表单字段集合相同。
注释 请为表单字段集合指定唯一的名称,而不要使用默认名称 myfields,这样有助于确保从表单架构文件生成的类也有唯一的名称。对使用多个表单的工作流进行编程时这一点尤为重要。
-
-
在 Visual Studio 中打开工作流项目,然后向其添加这个新的类文件。
-
向工作流添加代码,此代码通过使用工作流关联或初始数据对新类的新实例进行序列化。
例如,以下代码从名为 workflowProps 的 SPWorkflowActivationProperties 对象变量的InitiationData 属性中对InitForm 类型的新对象进行序列化。此示例假定开发人员已创建一个类InitForms,其架构与用于收集初始数据的 InfoPath 表单的架构相匹配。
-
向工作流添加代码,此代码根据表单架构将自定义属性作为类属性进行访问。
下面的代码以前一个示例为基础。这些代码访问 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