准备讲课要用的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(如下图)
加上表单注册的属性(这个和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>
4、在Feature上增加一个SharePoint内置的事件处理程序,选中工作流的SPI(比如上图里面的“Workflow1”),在属性面板中可以看到“功能接收器”,如下图:
程序集名称:Microsoft.Office.Workflow.Feature, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c
类名:Microsoft.Office.Workflow.Feature.WorkflowFeatureReceiver
这个是SharePoint用来注册工作流的(为什么不自动加进去呢……)
总结:2007的时候很多东西都要自己写,而VS2010很多东西都为我们生成好了,于是就容易忘……
我坦白,2007的时候我就没做过VS工作流……