officeba > 单独文章


定制使用MOSS2007的信息管理策略

   一直想写关于这个信息管理策略的随笔,前段时间做了不少实验,可是一直没达到我想要的效果,今天拿出来算是抛砖引玉吧,希望做过这方面研究的多多分享经验,个人觉得如果利用好Timer,可以实现我们很多的关于定时的需求,如到期提醒、过期删除或归档等等,尤其这个信息策略的action是可以扩展的,我们可以自己创建要执行动作,MOSS2007默认的只有一个删除action。下面就开始写一下我在这方面的一点心得。
如果以前从来没接触过信息管理策略,建议先看一下这篇文章,https://office.microsoft.com/zh-cn/sharepointserver/HA101735292052.aspx。
MOSS2007的信息管理策略有两种,实时策略和定时策略,关于实时策略我还没有深入研究过,它实现的应该是类似于给内容类型附加Event handler的功能,对于定时策略,如到期策略、过期策略,它是通过WSS本身的Timer Job来实现的,在后台有一个windows service,它定时轮循相应的文档库或者列表库,检测是否满足条件,它可以检测任何的时间字段,我们可以创建网站集级的信息管理策略,也可以创建针对某个列表的或者文档库的策略,两者除了使用范围以外基本一致,信息管理策略是可以导出,它也存在一个列表中。
1.        创建信息管理策略
•        为网站集创建信息管理策略
网站操作—网站设置,在网站集管理中网站集策略,可以创建也可以导入,我们点击创建,输入必要的名称和说明后,我们启用过期,如图:



可以选择基于项属性的时间段,在下拉列表中可以选择我们任一日期字段,并在后面选择年、月、日,在项过期时,我们可以在下拉中选择要执行的action,MOSS自带的只有一个删除动作,我们可以开发自定义action。
•        为列表、文档库创建信息管理策略
在设置—列表设置,权限和管理中信息管理策略设置,如果我们创建了网站集信息管理策略,可以选择使用网站集策略。若要为该列表单独创建策略,可以选择定义策略。其他的设置与创建网站集策略完全一致。
2.        给MOSS的信息管理策略添加自定义action
(原文参考地址:https://www.tonstegeman.com/Blog/Lists/Posts/Post.aspx?ID=25)
若要创建一个自定义动作,我们需要继承自IExpirationAction接口,它包含在Microsoft.Office.RecordsManagement.Features命名空间中。我们需要添加对Microsoft.Office.Policy这个DLL的引用,路径为:C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\ISAPI。
     例如,我们创建一个名为TestPolicy的信息管理策略动作,示例代码如下:
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.SharePoint;
using Microsoft.Office.RecordsManagement;
using Microsoft.Office.RecordsManagement.PolicyFeatures;
using Microsoft.Office.RecordsManagement.InformationPolicy;
namespace TestPolicy
{
    public class Policy : IExpirationAction
    {
        public void OnExpiration(Microsoft.SharePoint.SPListItem item,System.Xml.XmlNode parametersData, DateTime expiredDate)
        {
            //你要实现功能的代码,例如发邮件。。
        }      
    }
}
你还需要将它强命名并添加到GAC中。
我们还需要将这个DLL注册到MOSS中,类似于添加一个Feature,我们要先创建一个
XML文件,我通常都是在VS中创建XML,如下将刚才的TestPolicy注册到MOSS中:
<?xml version="1.0" encoding="utf-8" ?>
<p:PolicyResource id="TestPolicy" featureId="Microsoft.Office.RecordsManagement.PolicyFeatures.Expiration" type="Action" xmlns:p="urn:schemas-microsoft-com:office:server:policy">
        <p:LocalizationResources>站点集名称</p:LocalizationResources>
        <p:Name>TestPolicy</p:Name>
        <p:Description>Only have a test.</p:Description>
        <p:Publisher>whale</p:Publisher>
              <p:AssemblyName>TestPolicy, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null</p:AssemblyName>
        <p:ClassName>TestPolicy</p:ClassName>
</p:PolicyResource>
创建完XML文件后,我们在解决方案中添加一个控制台应用程序RegPolicy,同样的也需要添加对Microsoft.Office.Policy的引用。代码如下:
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Office.RecordsManagement.InformationPolicy;
namespace RegPolicy
{
    class Program
    {
        static void Main(string[] args)
        {
            string actionmanifest = System.IO.File.ReadAllText(@"XML文件路径");
            PolicyResourceCollection.Delete("TestPolicy");
            PolicyResourceCollection.Add(actionmanifest);
        }
    }
}
编译执行,如果一切都没问题,我们会在操作的下拉框中看到我们创建的TestPolicy。如图所示:



那老外的博客挺有意思,最后来了一句”Good luck!”,呵呵~~

作者:whalelover


声明:欢迎各大网站转载本站文章,还请保留一条能直接指向本站的超级链接,谢谢!

时间:2008-08-05 16:53:28,点击:65824


【OfficeBa论坛】:阅读本文时遇到了什么问题,可以到论坛进行交流!Excel专家邮件:342327115@qq.com(大家在Excel使用中遇到什么问题,可以咨询此邮箱)。

【声明】:以上文章或资料除注明为Office自创或编辑整理外,均为各方收集或网友推荐所得。其中摘录的内容以共享、研究为目的,不存在任何商业考虑。如有任何异议,请与本站联系,本站确认后将立即撤下。谢谢您的支持与理解!


相关评论

我要评论

评论内容