infopath表单内提交并启动工作流.pdfVIP

  • 0
  • 0
  • 约3.27千字
  • 约 4页
  • 2025-05-12 发布于北京
  • 举报

[SharePointWorkFlowInfoPath]在InfoPath表单内提交表单并启动工作流

MOSS中对工作流的强大支持,让我们可以做很多应用。

举个例子,我们可以用表单库做表单,然后给这个表单库附加一个流程。

我们可能希望用户在填写表单的时候,在表单中填一些在启动工作流时需要用的信息,比如设

置人等等。

我们的表单会像下面这样,包括待内容,和设置者等其他工作流设置。

我们也希望用户在点“保存”的时候,提交表单并同时根据用户设置的人来启动工作流。

MOSS默认的模式是,提交完表单以后,在另一个页面启动工作流,需要做两步操作,这样的

用户体验比较不好

最好的体检就是“一步到位”,只需要在一个界面完成提交和启动的工作。

所以,我们就需要在InfoPathFormServices表单中的“保存”按钮上做一些工作来满足这种

需求。

我提供的思路如下:

利用VSTA给表单库的表单模板里的“保存”按钮添加代码来完成提交表单和启动工作流的任

1)设计表单模板的时候,为InfoPath表单设置一个提交连接(DataConnection)

可以看到这个提交连接会包括提交到的文档库的URl和默认的文件名命名规则。这个提交连接

是我们提交表单和启动工作流所需要的。

2)给InfoPath表单的“保存”的按钮添加代码(以下代码为示例):

XPathNavigatorfield2=

this.MainDataSource.CreateNavigator().SelectSingleNode(/my:myFields/my:

field2,NamespaceManager);

//取到提交连接的对象,FileSubmitConnection对应的是提交到SharePoint

文档库的连接类

FileSubmitConnectionosssubmit=

(FileSubmitConnection)this.DataConnections[OSSSubmit];

//我们可以通过表单里面的某个项目来作为表单提交的时候的文件名,或者用

其他名规则,或者用户指定都可以

stringtempfilename=field2.Value+_+

DateTime.Now.ToString().Replace(:,_);

//设置提交表单的文件名

osssubmit.Filename.SetStringValue(tempfilename+.xml);

//执行提交

osssubmit.Execute();

//到这一步,表单已经提交到了文档库,接下来启动表单的工作流

try

{

//根据提交连接的FolderUrl属性可以取到文档库所在的集

SPSitemysite=newSPSite(osssubmit.FolderUrl);

//根据表单的名称和FolderUrl可以把提交上去的表单的完整URL拼出来

stringfileurl=osssubmit.FolderUrl+/+tempfilename+.xml;

if(osssubmit.FolderUrl.EndsWith(/))

{

fileurl=osssubmit.FolderUrl+tempfilename+.xml;

}

//利用FolderUrl可以根据SPWeb.GetList方法取

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档