设为首页 收藏本站
查看: 1017|回复: 0

[经验分享] SharePoint对于Workflow的历史信息清理的要点

[复制链接]

尚未签到

发表于 2015-9-29 11:38:20 | 显示全部楼层 |阅读模式
  禁用workflow history的自动清除作业
  =========================
  Workflow是由一些列的事件组成的, 诸如workflow initiation, task creation, 和task completion. 当你添加一个workflow的时候, 一个workflow history数据库就被自动得创建出来, 用来跟踪workflow的事件. workflow history数据库存储包括日期, 状态, 参与者, 和描述等每个事件的关键信息. workflow history记录项存放在Sharepoint列表中, 这个列表与列表或者文档库是关联起来的, 目的是查看workflow的状态和报告错误.
  
  Microsoft Office SharePoint Server 2007每天都运行一个Workflow auto Cleanup的作业, 它会从Workflow history列表中移出掉已完成或者已取消60天的记录项. [译者注]: 被划掉的这段话有错误. 实际的情况是workflow列表中的记录项并没有被删除, 删除的只是文档与workflow history列表中列表项的关联关系, 其目的是清除掉workflow的实例以及任务列表. 如果你想要跟踪更长时间段内的workflow信息, 你可以禁用掉这个Workflow Auto Cleanup作业.  
  
  然而, 就像任何的SharePoint列表一样, 如果你的workflow history列表超过了2000个项目, 你站点的性能就会受到影响. 如果你关心workflow history列表的尺寸, 你可以重新开启Workflow Auto Cleanup作业. 另一个选择, 你可以为每一个workflow关联都创建一个单独的workflow history列表.
  更多信息请参考Add a workflow to a list or document library.

  注意: Workflow history的目的并不是用来监视workflow事件的, 并且它也不够安全.  Office SharePoint Server 2007维护一个关于Workflow事件的日志, 但是并不会提供一个预定义的监视报告. 你可以使用SPAuditEntry类来写一个自定义的监视日志(audit log)

  
  禁用自动清除workflow的步骤


  •   From Central Administration, click the Operations tab on the top navigation bar.

  •   On the Operations page, in the Global Configuration section, click Timer job definitions.

  •   On the Timer Job Definitions page, click Workflow Auto Cleanup to edit the appropriate timer job.

  •   On the Edit Timer Job page, click Disable and then click OK to disable the Workflow Auto Cleanup feature.

  如何修改自动清除60天这个期限呢?
  =========================
  默认情况下SPWorkflowAssociation.AutoCleanupDays这个属性的值是"60"天, 要修改这个值, 你需要调用SPList.UpdateWorkflowAssociation(SPWorkflowAssociation)函数, 在这里SPWeb.Update()方法行不通.





   1: SPSite site = new SPSite(&quot;<http://nishandv3:100/sites/DevSite/>&quot;);  

   2: SPWeb web = site.OpenWeb();   

   3: SPWorkflowTemplateCollection collection = web.WorkflowTemplates;   

   4: SPList list = web.Lists[&quot;Shared Documents&quot;];   

   5: SPWorkflowAssociation _asso = null;   

   6: foreach (SPWorkflowAssociation asso in list.WorkflowAssociations)  

   7: {  

   8:     if (asso.Name == &quot;Approval&quot;)   

   9:     {  

  10:         asso.AutoCleanupDays = 100;

  11:         _asso = asso;  

  12:     }

  13: }  

  14: List.UpdateWorkflowAssociation(_asso);
  
  上面这种代码的方式修改的是站点级的. 下面通过stsadm.exe的方式做的修改时web application级的.
  stsadm -o setproperty -propertyname job-workflow-autoclean -propertyvalue &quot;yearly at Jan 1 15:00:00&quot; -url <Http://server>
  更多信息可以参考
  http://technet.microsoft.com/en-us/library/cc424956.aspx
  
  对于查看丢失了的Workflow History信息的替代方法
  ==========================
  如上所述, 在workflow history列表中, 默认你是看不到六十天前完成的workflow的. 关于workflow的信息还在task列表和workflow history列表中, 但是在workflow与列表项之间的关联关系已经被从数据库中清除掉了.
  
  即使workflow auto cleanup作业将workflow与一个文档之间的association溢出了, workflow的历史仍然是会存储在一个单独的列表中的. 这是个隐藏的列表, 叫做&quot;workflow history&quot;. 所有与一个给定文档相关的workflow都是可见的, 只是存储的格式不容易阅读.
  
  将文档与各自的workflow历史信息联系起来的最佳的解决方案, 是能够从隐藏的列表中捞出信息, 使之与文档的属性对应起来.
  
  具体的步骤在Workaround for missing workflow history文章中有详细的步骤.
  思想陈述如下:
  所有信息都在, 只是关联关系不在了. 所以, 通过对workflow history列表创建一个新的view, 在加上对列的分组, 过滤, 就能达到查看特定文档的workflow的历史信息的目的了.


  • 首先, 在workflow history中创建一个新的view, 其中包括user ID, event type, date occurred, outcome, description这些属性列.
  • 选择按照创建日期属性列排序.
  • 得到你想看的文档库的列表ID, 然后用这个ID作为workflow history列表的一个filter, 让这个view只显示你想要看到的列表中文档的记录.
  • 然后按照primary item id对显示出来的项目进行分组, 这样, 根据所关联文档的不同, workflow就分类的挂在了关联的文档之下了.
  • 这之后再按照workflow history parent instance再进行一次分组, 这样同一个文档开启不同的workflow也都分类地聚在一起了.
  效果图应该是这样
DSC0000.png
  
  下一步就是在文档库中为文档添加一个属性, 点击这个属性就会导航到workflow history列表中的我们刚刚创建好的view里的这个文档的部分. 从而完成对应关系, 也就完成了我们的最终目的, 查看60天以前的workflow的信息.
  
  添加这个属性的column的过程中, 最重要的一环就是为这个属性添加一个计算公式.
DSC0001.png
  公式如下:
  =CONCATENATE(&quot;http://sharepointserver/Docs/Lists/Workflow%20History/auditview.aspx?View=%7B426D5F02-A5D0-4E8E-AC13-4388C179D8ED%7D&FilterField1=Item&FilterValue1=&quot;,RIGHT(DocID,LEN(DocID)-SEARCH(&quot;-&quot;,DocID,1)))

  注意, 这里的view的ID是可以通过创建了之后的view页面上方的IE地址栏中拷贝得到的.

  
  关于这个公式中的函数的信息, 请参考:
  Formulas and Functions
  http://office.microsoft.com/en-us/sharepointtechnology/CH011711541033.aspx
  
  2011-07-13 更新:
  经过测试, 上面列出的公式有点问题, 下面的公式在SharePoint 2007和SharePoint 2010下均测试通过

  =CONCATENATE(&quot;http://sharepointserver/Docs/Lists/Workflow%20History/auditview.aspx?View=%7B426D5F02-A5D0-4E8E-AC13-4388C179D8ED%7D&FilterField1=Item&FilterValue1=&quot;,ID)

  
  原文地址:
  Disable automatic cleanup of workflow history (这篇文章有错误, 原文的后面列出了一篇文章其中的内容对其进行了纠正.)
  http://technet.microsoft.com/en-us/library/cc298800.aspx
  Workflow Scalability and Performance in Windows SharePoint Services 3.0
  http://msdn.microsoft.com/en-us/library/dd441390.aspx
  Changing the SPWorkflowAssociation.AutoCleanupDays property
  http://blogs.msdn.com/nishand/archive/2007/09/10/changing-the-spworkflowassociation-autocleanupdays-property.aspx
  Workaround for Missing Workflow History
  http://www.sharepointblogs.com/drewdevo/archive/2008/08/27/workaround-for-missing-workflow-history.aspx

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-120406-1-1.html 上篇帖子: SharePoint 2003中的账号和权限小结 下篇帖子: SharePoint Welcome.ascx 控件自定义样式的另类解决方式
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表