wss3.0的Audit特性,记录文档操作,做SharePoint2007文档的点击率

SharePoint中关于文档的跟踪记录和点击率一直是个让人头疼的问题。不过wss3.0的audit功能,可以帮我们一点忙。
Audit功能说白了就是可以跟踪并记录站点集 、网站、列表或者列表项(文档)的操作记录(包括察看、下载、更新等),
并且通过对象模型来访问这些操作记录。 其实除了通过对性模型,我们也可以直接访问数据库来获取操作记录。那我们看看怎么样来做吧!

1. 通过Audit对象模型访问操作记录

在wss3.0中,有几个类和枚举与我们的Audit有关,他们所处的命名空间为Microsoft.SharePoint。

这几个类分别是:

SPAudit

SPAuditEntry

SPAuditEntryCollection

SPAuditQuery

枚举分别是:

SPAuditEventSource
SPAuditEventType
SPAuditItemType
SPAuditLocationType
SPAuditMaskType

其中几个类都很重要,那我们就来看看如果通过对向模型来获站点集、网站、列表或者文档的“记录”情况。
首先,我们要打开Audit开关,这样才能保证我们对网站集、文档等所做的操作会被记录下来。打开Audit开关的代码如下:

using (SPSite sitecol = new SPSite("collectionUrl"))

            {
            //设置网站集跟踪所有的操作
                sitecol.Audit.AuditFlags = SPAuditMaskType. All;

                sitecol.Audit.Update();

        }

注意其中的语句:sitecol.Audit.AuditFlags
=
SPAuditMaskType.All。这句话的意思是打开Audit开关,这样就可以跟踪对应网站集的所有操作了。(当然,所有的跟踪操作都是owstimer这个后台服务来完成的,具体跟踪的原理还需要研究。)
具体的操作我们也可以根据需要选择,使用枚举SPAuditMaskType的其它值来选择不同的跟踪类型:

 All,CheckIn,CheckOut,ChildDelete,Copy,Delete,Move,None,ProfileChange,SchemaChange,Search,SecurityChange,Undelete,Update,View,Workflow

给文档(列表)库或者文档(列表)打开开关也是同样的方法,在这里我就不重复描述了。(注意:如果要关闭该功能,只要设置SPAuditMaskType.
None就可以了)。

OK,现在我们已经打开Audit的开关了,现在我们所做的“一切”动作都会被“记录在案”了。那接下来我们就看看如何获取操作记录。
要获取操作记录,我们需要使用刚才提到的几个类
SPAudit:Audit类,相当于一个Manager的作用。

SPAuditEntry:具体的操作记录实体,代表着某一个操作。

SPAuditEntryCollection:操作记录实体集合。

SPAuditQuery:操作查询类。
获取网站集操作记录的代码如下:
using (SPSite siteColl = new SPSite("sitecollectionurl"))

      {

//1、使用站点集构造一个SPAuditQuery类

            SPAuditQuery wssQuery = new SPAuditQuery(siteColl);

            //2、通过站点集的Audit属性得到SPAuditEntryCollection,即该站点集所有操作记录的集合

            SPAuditEntryCollection auditCol = siteColl.Audit.GetEntries(wssQuery);

foreach (SPAuditEntry entry in auditCol)

              {

               //3、通过遍历就可以得到每条操作记录

              }

    }

注意注解3,我们可以通过操作记录实体(SPAuditEntry)的实例entry去获取相关的属性信息了。SPAuditEntry的属性很多,可以我们经常用到的属性有:
DocLocation:文档的路径(string),被访问或者操作的文档、列表等的相对路径(相对于站点集)。
Event:事件枚举(enum
SPAuditEventType),包括:签入、签出、拷贝、删除、更新、查看等等操作。具体操作可以参考wss3.0
sdk
EventName:事件的名称(string)

ItemId:列表项GUID(Guid)
ItemTyp:列表项类型枚举(enum
SPAuditItemType),指操作被执行的对象,包括Document,Folder,List,ListItem,Site,Web
Occurred:操作发生的时间(DateTime)
UserId:操作者ID(string)
如果我们要通过条件筛选操作记录,可以在注解2处加上以下代码:
            //获取特定列表操作记录

                wssQuery.RestrictToList(list);

                //获取特定列表项操作记录

                wssQuery.RestrictToListItem(listItem);

                //获取特定用户操作记录

                wssQuery.RestrictToUser(userId);

                //获取特定时间操作记录

                wssQuery.SetRangeStart(starttime);

                wssQuery.SetRangeEnd(endtime);

使用对象模型确实不错,可以获取我们需要的数据,但是却发现几个问题。
第一, 不够灵活。SPAuditQuery对象提供的筛选方法比较少,比如就不能按照操作类型来获取。
第二, 效率不高,通过Reflector反射发现,在SPAuditEntryCollection中存在这样的语句
using (SqlDataReader dr = this.m_query.Site.SqlSession.ExecuteReader(cmd, CommandBehavior.CloseConnection))     {         
while (dr.Read())                 {                       
this.AddDataReaderRow(dr);                
}    
}

这段代码的意思是:遍历整个操作记录查询结果来构造SPAuditEntry对象。因此,为了获取更灵活的查询和更高的效率,我们可以直接访问Audit数据库,即通过直接查询数据库表获取我们需要的操作记录。


通过数据库访问操作

其实,操作记录的数据在数据库中的存储十分简单,就存储在wss_content_XXX内容数据库的AuditData表中,只要Audit开关打开,该数据表中就会记录对应站点集、网站、列表(文档)库或者列表(文档)的操作记录。
我们可以直接访问数据库去做一些自己需要的查询统计分析了。比如:做某个站点集文档的点集率排名,我们就可以写如下sql作一个简单的统计:

select itemid,count(itemid) as countnum from AuditData where SiteId = @SiteId and
Event = 3 and itemtype = 1 group by itemid order by countnum desc

其中Event =3 表示统计查看(下载),Itemtype = 1表示统计文档库
当然我们会发现这样统计会把一些我们不需要的内容也统计进来,比如母版页库的访问,样式库的访问等等。
我们可以通过代码来写一些过滤的方法把我们不需要的内容过滤掉,比如我们可以写一个配置文件,把需要作统计的列表名称列出来,这样就可以把多余的统计内容过滤掉了。

SharePoint2007文档的点击率统计相关推荐

  1. 页面点击率统计java_JSP点击量(访问量)统计实例

    在本章中,我们将在JSP中讨论如何实现点击量统计. 点击计数器用于统计有关网站的特定页面上的访问次数.假设人们首先登陆网站主页,通常是index.jsp页面中有点击计数器. 要实现一个点击计数器,可使 ...

  2. 其实华为手机还是个扫描仪,点击这个按钮,纸质文档一键电子化

    华为手机一直都深受办公族的喜爱,不仅是因为手机性能好,还是因为EMUI系统中有众多实用功能. 比如学习.工作中经常需要将纸质文档电子化,而专业的OCR扫描仪器又不是随时随地都有. 其实华为手机就是一个 ...

  3. chrome自动提交文件_收集文档及提交名单统计

    知乎文章若有排版问题请见谅,原文放在个人博客中[欢迎互踩!] 文叔叔文档收集 使用动机 在我们的学习工作中,少不了要让大家集体提交文件的情况,举个最简单的例子:收作业. 传统的文件收集流程大致是:群内 ...

  4. word文档纯字数统计_如何在您的Word文档中插入字数统计

    word文档纯字数统计 Word tracks certain summary information about documents, such as the number of words in ...

  5. arnold官方帮助文档_Baklib-随时编辑随时发布的在线帮助文档制作平台

    据了解,目前很多公司都还没有制作帮助文档的概念,许多产品的售后还是通过电话.邮件等方式进行,客服团队工作量极大,客服压力更大,离职率高,新员工招聘培训成本高,帮助文档很好的解决了这些问题,一方面,对外 ...

  6. 叫你两招编辑PDF文档的方法

    PDF 文档的规范性使得浏览者在阅读上方便了许多,但倘若要从里面提取些资料,实在是麻烦的可以.回忆起当初做毕业设计时规定的英文翻译,痛苦的要命,竟然傻到 用Print Screen截取画面到画图板,再 ...

  7. 如何将PDF格式转换为WORD文档

    经常在PDF形式上看到有好的文件时,想把它拿出来,但是却是不行,所以我第一步就是找一下有没有可以到PDF格式与WORD文档的转换,在网上找了一下,原来还真的有很多,今天我就把这些方法也传上来,不过我也 ...

  8. wps怎么恢复成单页_我告诉你文档两页怎么变成单页

    操作方法:以WPS2019为例,打开WPS文字,点击页面右下角的"页面视图"图标即可将两页怎么变成单页. 软件常用功能:1.WPS具有文档加密功能,可以防止别人查看文档,打开软件, ...

  9. wps如何在目录里面打省略号_在wps中怎么让文档目录的省略号对齐 - 卡饭网

    怎么在WPS中快速统计文档字数? 怎么在WPS中快速统计文档字数? 相信很多小伙伴在日常办公中都有用到WPS,在其中如何才能统计文档字数呢?方法很简单,下面小编就来为大家介绍.具体如下:1. 首先,打 ...

  10. 盘点PDF文件转Word文档的四种高效率转换方法

    随着PDF文件的广泛使用,PDF文件已经作为正式文件进行传输.但大多的人还是偏向于用Word进行编辑,对于手头上的PDF文件束手无策.不用怕,今天小编就来解救大家.经过小编亲身实践的几个关于PDF转换 ...

最新文章

  1. Nature综述:皮肤微生物群-宿主相互作用
  2. Linux 6.8 root密码丢失找回
  3. 阿里对象存储OSS在laravel框架中的使用
  4. Java黑皮书课后题第10章:*10.13(几何:MyRectangle2D类)定义MyRectangle2D类
  5. 【渝粤题库】广东开放大学企业标准化 形成性考核
  6. css3---( 框架)
  7. 微信回应朋友圈表情包评论关闭:灰度测试;Twitter漏洞波及1700万用户;Ruby 2.7.0发布 | 极客头条...
  8. 面向对象编程(一):类对象
  9. 规定计算机系统实现安全等级保护,计算机信息系统安全等级保护标准体系包括:信息系统安全保.DOC...
  10. 向量交点坐标公式_高中数学必修1-5常用公式(定理)
  11. linux耳机的检测原理,耳机检测原理介绍
  12. 【2015-18年腾讯招聘】腾讯产品策划类笔试面试题整理
  13. 平面设计完全手册_工业时代的平面设计
  14. HTTP Live Streaming直播(iOS直播)技术分析与实现
  15. python小于_删除python中小于某个值的行
  16. git提交到主干后,本地将主干代码更新到分支上
  17. 本地机连接不上虚拟机?
  18. Python tell 和 seek用法
  19. 计算机科学领域专业,计算机科学与技术专业主要包括哪些领域?
  20. 一个简单的登录界面设计

热门文章

  1. Typinator for mac(打字员)附注册码支持m1
  2. Better And Better for Mac(Mac手势神器BAB)中文版
  3. 「mac操作指南」WidsMob HEIC将HEIC/HEIF 转换为 JPEG/PNG/TIFF格式
  4. 使用和编辑Mac的特殊触摸板命令?你值得一看
  5. 联系人字段中增加生日字段
  6. hdu1078 FatMouse and Cheese(记忆化搜索)
  7. CentOS部署×××
  8. CentOS永久修改主机名
  9. 【深入篇】Android常用布局方式简介
  10. android开发——图文并茂