在VS中开发工作流:部署和调试工作流
原文地址:
http://blogs.msdn.com/sharepoint/archive/2006/11/30/developing-workflows-in-vs-part-6-deploy-and-debug-your-workflow.aspx
第四步:部署你的工作流
一旦你准备好了表单和代码,是时候编译和部署你的工作流了。还要做下面的准备:
有两个必备的文件
1、 Feature.xml,就像SharePoint的每个功能一样,你需要一个类似的功能描述文件
2、 工作流模板xml文件,workflow.xml,我们已经说了工作流模板的很多内容,这是它从哪里而来。为你的表单类型指定的aspx页面(对于InfoPath表单,指定开箱即用的宿主页面)和dll的详细描述,同时在Metadata 部分放一些你需要的额外信息。
你同样需要编译程序集和你的表单。
一旦你有了这些东西,你可以做实际的部署工作了。你还需要做下面的事情(如果你正在使用SharePoint的工作流模板,这就是PostBuildAction批处理文件做的事情):
1、 拷贝程序集到GAC中以便SharePoint可以运行它
2、 将xml文件和表单拷贝到SharePoint的Features文件夹,这个文件夹就是feature运行和安装的地方,自定义的aspx页面应该拷贝到layouts文件夹。
3、 在命令行运行staadm命令,SharePoint的部署工具,参数是installfeature和activatefeature,是工作流在网站集中可以使用。
4、 使用iisreset命令重启IIS,刷新程序集和模板
还有两件事要记住:
1、 每次都要将工作流发布到整个网站集
2、 如果在你的feature.xml文件中有<Property Key="RegisterForms" Value="*.xsn" />标记的话,InfoPath表单将会被自动安装到服务器,aspx页面需要手动拷贝到layouts目录
下面的图显示了workflow.xml如何映射到SharePoint UI部分和工作流表单(宿主的InfoPath表单)
第五步:调试工作流
在服务器上有了运行的功能,你现在可以通过添加断电来调试它,别忘了附加w3wp.exe进程和启动工作流。关联你的工作流到一个列表并且运行它,当你发现一个BUG的时候,重新编译,重新发布,重新启动IIS,重复上面的步骤直到满意为止。
FAQ:调试器问题
当我附加进程的时候VS就崩溃了,在附加对话框,只是附加到工作流或者托管代码。
我的断点没有激活。确保GAC中的程序集和你工程中的程序集完全相同,如果你改变工程中的俄一个文件,而没有重新编译。VS将会认为这个dll被更新了,不会和工程建立连接。同时,不要忘了重启IIS来重新加载新的程序集。
FAQ:乏味的调试过程
调试过程相对发布过程来说可能有点乏味,可以通过下面的建议来加快这个过程:
1、 当你build一个项目的时候,VS中的SharePoint工作流模板能够自动运行staadm部署命令,你要做的就是准备xml文件,标记程序集位置,在工程的PostBuildActions设置运行的时候需要的发布参数
2、 如果你是修改了程序集,只需要重新安装GAC和iisreset(不需要重新安装feature)。SharePoint工作流模板中的PostBuildAction批处理文件中有一个QUICK参数来做这些事情。
3、 如果你修改了你的模板表单,你将需要重新安装feature,再重新激活之前不要忘记反激活并且卸载以前的feature。
4、 在workflow.xml文件的metadata部分的<AssociateOnActivate>标记将会自动和文档内容类型关联。设置为true可以节约安装和重新激活一个关联的时间。只需要确保你在一个文档内容类型库中做了测试。
5、 批量上载文档以便保持取消工作流不是必须的,
其他的调试小技巧:
启动失败,通常意味着在SharePoint中在你的工作流启动之前有一个错误正在发生,记录找不到工作流对应的程序集dll。错误发生通常意味着工作流启动,代码中的某些地方发生错误。
检查SharePoint的ULS日志,工作的致命错误可能发生在工作流之外,因此在调试器中通常是捕获不到的。可以通过打开最新的日志,从下面开始查找“workfkow”关键字来找到相关内容。日志是获取监管信息 的一个重要来源。日志文件存放在%Program Files%\Common Files\Microsoft Shared\web server extensions\12\LOGS目录。
下一个章节:总结
谢谢!