惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

H
Help Net Security
博客园 - Franky
GbyAI
GbyAI
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
爱范儿
爱范儿
IT之家
IT之家
酷 壳 – CoolShell
酷 壳 – CoolShell
aimingoo的专栏
aimingoo的专栏
博客园_首页
MongoDB | Blog
MongoDB | Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Recent Announcements
Recent Announcements
Scott Helme
Scott Helme
有赞技术团队
有赞技术团队
M
MIT News - Artificial intelligence
C
CERT Recently Published Vulnerability Notes
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Jina AI
Jina AI
F
Fortinet All Blogs
N
Netflix TechBlog - Medium
L
LangChain Blog
L
LINUX DO - 最新话题
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
H
Hacker News: Front Page
MyScale Blog
MyScale Blog
P
Palo Alto Networks Blog
G
Google Developers Blog
Google DeepMind News
Google DeepMind News
AI
AI
T
Troy Hunt's Blog
Microsoft Azure Blog
Microsoft Azure Blog
阮一峰的网络日志
阮一峰的网络日志
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Vercel News
Vercel News
Microsoft Security Blog
Microsoft Security Blog
罗磊的独立博客
S
Secure Thoughts
大猫的无限游戏
大猫的无限游戏
博客园 - 叶小钗
人人都是产品经理
人人都是产品经理
Blog — PlanetScale
Blog — PlanetScale
博客园 - 司徒正美
Apple Machine Learning Research
Apple Machine Learning Research
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 三生石上(FineUI控件)
S
Security @ Cisco Blogs
Cloudbric
Cloudbric
E
Exploit-DB.com RSS Feed
Attack and Defense Labs
Attack and Defense Labs

博客园 - Ipark

[SharePoint 2010 User Profile Service] 关于User Profile Service的一些提示 搬到博客堂了! [Live Writer Test]台南地震,海底光缆大面积中断,MSN登不上以及境外网站无法访问 [ECM IRM RMS - 1]WSS V3中的IRM解决方案概述 microsoft.com全新改版,告诉你MOSS的性能不是问题,她很好使!! [WSS V3 WorkFlow]利用Visual Studio开发WSS V3工作流视频资料 RMS SP2 & MOSS 2007开启文档管理新时代,让文档权限保护无处不在 在KPI列表中使用Excel Services发布的工作簿 3步完成Excel Services的初始化和使用(使用Excel Services的最简步骤) 应用SharePoint的Workflow须记住的10句话!(也许还有更多:) SharePoint 中的Workflow,你用着爽吗? MOSS-Excel Services-Udf(用户自定义函数)-SQLExcuteUdf 查询sql server数据的用户自定义函数 MOSS2007 B2TR 下载,安装指南以及SDK下载(all from ms sharepoint team) SharePoint Portal Server 2003 Search does't like .Net Framework 2.0!!! (for Error in PortalCrawl Web Service solution) WSS V3和MOSS2007的区别 讨论:为什么Web不行?Console可以?---为什么Document Library不行?Generic List可以?(MOSS2007) 《Microsoft Office SharePoint Server 2007 前瞻技术指南》第八章预览_Excel Services WSS V3 中用代码遍历列表的方法(支持文件夹的列表的项目遍历) Windows Rights Management Services SP2 BETA下载
[SharePoint WorkFlow InfoPath]在InfoPath表单内提交表单并启动工作流
Ipark · 2007-01-13 · via 博客园 - Ipark

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

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

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

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

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

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

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

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

我提供的思路如下:

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

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

可以看到这个提交连接会包括提交到的文档库的URl和默认的文件名命名规则。这个提交连接是我们提交表单和启动工作流所需要的。

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

XPathNavigator field2 = this.MainDataSource.CreateNavigator().SelectSingleNode("/my:myFields/my:field2", NamespaceManager);
//取到提交连接的对象,FileSubmitConnection对应的是提交到SharePoint文档库的连接类
FileSubmitConnection osssubmit = (FileSubmitConnection)this.DataConnections["OSSSubmit"];
//我们可以通过表单里面的某个项目来作为表单提交的时候的文件名,或者用其他的命名规则,或者用户指定都可以
string tempfilename = field2.Value +"_"+ DateTime.Now.ToString().Replace(":","_");
//设置提交表单的文件名
osssubmit.Filename.SetStringValue(tempfilename+".xml");
//执行提交
osssubmit.Execute();
//到这一步,表单已经提交到了文档库,接下来启动表单的工作流
try
{
//根据提交连接的FolderUrl属性可以取到文档库所在的网站集
SPSite mysite = new SPSite(osssubmit.FolderUrl);
//根据表单的名称和FolderUrl可以把提交上去的表单的完整URL拼出来
string fileurl = osssubmit.FolderUrl+"/"+tempfilename+".xml";
if(osssubmit.FolderUrl.EndsWith("/"))
{
fileurl = osssubmit.FolderUrl+tempfilename+".xml";
}
//利用FolderUrl可以根据SPWeb.GetList方法取到文档库对应的SPList对象
SPList mylist = mysite.RootWeb.GetList(osssubmit.FolderUrl);
//根据前面拼出来的已上传得表单的完整URL可以取到表单对应的SPListItem对象
SPListItem mylistitem = mysite.RootWeb.GetListItem(fileurl);
//取到文档库绑定的某个工作流关联
SPWorkflowAssociation mywfass = mylist.WorkflowAssociations.GetAssociationByName("Review", System.Globalization.CultureInfo.CurrentCulture);
//EventData中就是工作流启动的时候需要的参数,比如审批人等信息,用表单中用户设置的启动参数替换EventData中的相应信息即可 

/*关联信息定义了工作流启动的参数,格式如下XML所示,我们需要做的只是用表单里面的对应字段值替换这个XML里面的对应内容即可,红色标示的部分

<my:myFields xml:lang=\"zh-CN\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:my=\"http://schemas.microsoft.com/office/infopath/2003/myXSD/2006-12-16T05:28:36\" xmlns:xd=\"http://schemas.microsoft.com/office/infopath/2003\">

<my:instructions>Review it!</my:instructions>

<my:assignees>litwareinc\\Administrator;litwareinc\\DemoUser2</my:assignees>

</my:myFields>

*/
string EventData = mywfass.AssociationData;
mysite.AllowUnsafeUpdates = true;
mysite.RootWeb.AllowUnsafeUpdates = true;

//根据设定的信息,启动工作流
mysite.WorkflowManager.StartWorkflow(mylistitem, mywfass, EventData);
}
catch{ }

更新:示例下载 here