SharePoint 2010 + VS 2010 + InfoPath做工作流的各种坑[新手向]

准备讲课要用的Demo(工作流确实是我的弱项,泪),折腾了一晚上,遇到各种坑,估计2007的时候就已经有不少人踩过了,总结一下自己备用。

正常的那些流程就不用说了包括URN的设定什么的,主要是几个VS没有自动补进去的地方:

1、工作流定义中的启动页面、关联页面等几个地址,如果用InfoPath做启动页面或者关联页面的话,需要手动指定到相应位置:

   1: <Workflow
   2: someotherproperties
   3: InstantiationUrl="_layouts/IniWrkflIP.aspx"
   4: AssociationURL ="_layouts/CstWrkflIP.aspx"
   5: >
   6: </Workflow>

这两个页面是专门用来加载InfoPath的(MSDN相关链接:http://msdn.microsoft.com/en-us/library/ms563325.aspx)。

 

2、如果用InfoPath作为任务表单,那么任务内容类型要指定为"0x01080100C9C9515DE4E24001905074F980F93160":

   1: <Workflow someotherproperties
   2:     TaskListContentTypeId="0x01080100C9C9515DE4E24001905074F980F93160">
   3: </Workflow>

这个是SharePoint专门用来处理InfoPath表单的工作流任务的(继承自工作流任务)(MSDN相关链接:http://msdn.microsoft.com/en-us/library/ms550938.aspx

 

3、如果是在VS项目里面同时部署xsn表单模板,需要在Feature里面加上表单模板的注册:

在VS中展开Feature,编辑那个xxx.Template.xml(如下图)

image

加上表单注册的属性(这个和2007里面做InfoPath工作流是一样的),鼓捣完之后,应该是下面这个样子:

   1: <?xml version="1.0" encoding="utf-8" ?>
   2: <Feature xmlns="http://schemas.microsoft.com/sharepoint/">
   3:   <Properties>
   4:     <Property Key="GloballyAvailable" Value="true" />
   5:     <Property Key="RegisterForms" Value="Forms\*.xsn"/>
   6:   </Properties>
   7: </Feature>
那个Forms是部署的相对路径,取决于你的表单部署在什么地方(参考上面那张截图)

 

4、在Feature上增加一个SharePoint内置的事件处理程序,选中工作流的SPI(比如上图里面的“Workflow1”),在属性面板中可以看到“功能接收器”,如下图:

image

程序集名称:Microsoft.Office.Workflow.Feature, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c

类名:Microsoft.Office.Workflow.Feature.WorkflowFeatureReceiver

这个是SharePoint用来注册工作流的(为什么不自动加进去呢……)

 

总结:2007的时候很多东西都要自己写,而VS2010很多东西都为我们生成好了,于是就容易忘……

我坦白,2007的时候我就没做过VS工作流……

posted on 2012-04-04 02:08  Erucy  阅读(...)  评论(...编辑  收藏

导航