近来开发的项目用到微软新推出的WWF(windows workflow foundtion)。在开发中越到了不少问题。特别记录下来:
1 onitemchanged 是不能用的,但onworkitemchanged是可以用的
SharePoint 2007支持WWF,并提供了自己的activiies类库,只要在项目中引入就可以使用这些activity。不过不是所有的activity都正常工作,毕竟现在还是beta2。 onitemchanged 是不能用的,但onworkitemchanged是可以用的。这两个事件都是在list item发生内容改变时出发的。我原来准备用onitemchanged,但总是抛出异常。后来到网上问了一圈,被告知很多人都遇到此问题,估计是一个bug。改用onworkitemchanged后,同样可以监控list item的变化,只是被监视的item就是启动workflow的item,对于我的项目需求是可以了。但有些情况下,要监视其他list item就做不到了。
2 错误的跟踪。
一开始,常常犯错误,后来找到了一个察看错误日志的方法:
当发生异常后,在list item的workflow一列的状态会显示为error occurred. 双击它,打开workflow状态页。
Workflow History | ||
|
打开view workflow reports,会出现一个详细的错误日志Cancellation & Error Report
3 我常犯的几个错误:
如果日志中出现
Could not load file or assembly 'MTCWorkFlow/, Version/=3.0.0.0/, Culture/=neutral/, PublicKeyToken/=publicKeyToken' or one of its dependencies. The given assembly name or codebase was invalid. (Exception from HRESULT: 0x80131047)
那是在GAC中找不到workflow的dll。 可能是dll编译时没有加strong name.也可能是在workflow.xml中的两行CodeBesideClass="MTCWorkFlow.MTCWorkflow" CodeBesideAssembly="MTCWorkFlow, Version=3.0.0.0, Culture=neutral, PublicKeyToken=39e8c4ddedffc92b"
和dll中的不一致。