在Sharepoint 2007文档列表中,我需要有一个列,该列是到期日期,然后是另一列,该指标可以指示到期日期是否已过。
我已经与最终用户进行了交谈,仅让其他视图仅显示已过期的文档还不够好-他们希望该列显示“ Expired”一词。
我可以通过在创建项目的事件上设置一个工作流来完成此任务,该工作流仅等待日期小于今天。这将运行工作流,并且工作流将保持“进行中”状态,直到项目过期(可能为5年)
我还可以通过powershell进行此操作,并每天晚上运行计划任务以迭代列表中的所有项目,如果符合条件,则手动设置列文本。
我的问题是最好的,因为此文档列表将包含100,000多个文档。对工作流运行5年有影响吗?在那上面有很多工作吗?
暂停一万个工作流并等待五年是一个坏主意。如果您的工作流计时器服务在这五年内的某个时候意外停止,这不仅会给您的工作流计时器服务带来不必要的负担,而且还冒着万万个工作流进入错误状态的风险。并重新启动所有10,000个工作流程以保持流程的进行。
计划的任务触发控制台应用程序或Powershell脚本的执行是一种更好的方法,或者您可以在Visual Studio中编写自己的SharePoint计时器作业。两种方法都可以通过SPQuery对象使用SharePoint服务器端对象模型来查询列表。使用SharePoint服务器端对象模型时,重要的是使用尽可能高效的查询。
你不通过列表中的所有项目需要迭代,直到永远。您的CAML查询应足够具体,以仅返回指标列不等于“到期”且到期日期小于今天的日期的项目子集。
将列索引添加到这两个列中,以减少该查询对数据库的负担。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句