InfoPath + Workflow + MOSS
时间:2010-03-16 来源:sdwjian
- 如何看InfoPath表单是否发布成功:打开SharePoint 3.0管理中心,在应用程序管理有 InfoPath Form Services 一节,进入“Manage Form Template”就可以看到你所有发布的表单。其中看状态 Status 栏,如果为 Ready,则表示该表单已经准备好可以使用了;如果为 Installing,那就是有可能因为前面罗列的各种原因造成表单模板还无法正常发布,这时候你就要检查了。另外,你可以通过URL访问已经发布的表单,地址为类似 http://服务器/_layouts/formserver.aspx?XsnLocation=urn:schemas-microsoft-com:office:infopath:ReviewTaskForm:-myXSD-2005-11-22T23-52-35,后面 XsnLocation=跟上表单的 ID(URN)即可。
- 前面提过,在MOSS中,每个Workflow都是作为一个Feature存在,然后具体使用时再关联到某个List/Library中然后创建Workflow实例运行的。在一个Workflow生命周期里,业务数据自然主要就是List/Library中的记录数据SPListItem/SPFile,再辅之任务列表数据;而Workflow过程中需要的一些流程状态数据则被WF提供的服务持久化(术语好像叫“钝化”之类的)起来,供Workflow被启用时再度激活,从而顺利继续工作流的运作。
- 关于 Task。一开始很多要问为什么(是/要) Task?因为在 MOSS 2007 的 Workflow 中,对于业务流程中人的部分,即工作流中人为参与的部分主要是通过“任务 Task”形式实现的。即要某人来审批或添加些数据时,就在Task列表中创建分配一个 Task 给他,然后这个人过来编辑 Task,完成人为数据的录入采集,使得工作流继续运行。
- 上贴有提到如果不小心用VSTA打开产生后部C#/VB.NET代码后,发布时变成了需要经过管理员审核才能使用。为什么会这样?这类表单和其他表单还有什么区别吗?答案就在《Office Forms Server 简介》。
- SharePoint Desginer 2007 的工作流设计不支持 InfoPath 表单形式吗?是的,很遗憾,SPD2007只支持 ASPX Form形式的 Task Form。所以如果要在 MOSS 2007 里开发 InfoPath + Workflow,还得用前面说过的方法。当然,前面的方法也支持 ASPX Form形式,详细可看 ECM Starter Kits中很经典的 ASPX Form 范例 —— CollectFeedback 示例。
- 为什么 Workflow.xml 中的 AssociationUrl="_layouts/CstWrkflIP.aspx" 和 InstantiationUrl="_layouts/IniWrkflIP.aspx" 不能换成其他页面?这些页面可以理解为 InfoPath Form 的 Host Page(实际是这些页面内部嵌入了显示InfoPath Form的WebPart),InfoPath Form Services处理 InfoPath Form后通过这些 xxxIP.aspx 的页面把 InfoPath Form表单以 Web Page形式呈现出来。所以,不能改变成其它页面,否则无法正常显示 InfoPath Form。
- 不太明白 ItemMetadata.xml 作用,或者说把SPListItem数据传给InfoPath Form并和InfoPath控件绑定显示出来的过程是怎样的?这个一开始确实比较费解。首先根据 SDK 操作一遍后,此时 ItemMetadata.xml 已经作为辅助数据源和资源文件保存在 InfoPath Form里了。记得,此时最好把 ItemMetadata.xml 理解为 InfoPath Form 的“数据源”!然后传递过程是这样的:
- 把准备传递给 Task InfoPath Form 的 SPListItem 字段值取出来赋值为 SPWorkflowTaskProperties.ExtendedProperties["表单字段名"]。
- 任务表单接受这些值,然后组织成一份 xml ,也就是你看到的 ItemMetadata.xml:<z:row xmlns:z="#RowsetSchema" ... />。
- InfoPath Form接收这份 xml 数据,因为InfoPath Form中的控件已经绑定过相应的辅助数据源 ItemMetadata.xml 的 ows_字段名,所以可以顺利的从含有数据的 ItemMetadata.xml 数据源中抽取值显示在表单里。
相关阅读 更多 +