尽管过滤器“type=cm:content”,Alfresco audit也会写文件夹

尽管过滤器“type=cm:content”,Alfresco audit也会写文件夹,alfresco,audit,Alfresco,Audit,我希望Alfresco审核文档更改,但不审核文件夹更改。例如,如果删除了包含文档的文件夹,则在审核中只显示文档删除 在Alfresco 5.1.0中,我使用以下配置定义了一个审计应用程序myapp: audit.tagging.enabled=false audit.myapp.enabled=true audit.myapp.sub-actions.enabled=false audit.filter.myapp.default.enabled=true audit.filter.myapp.

我希望Alfresco审核文档更改,但不审核文件夹更改。例如,如果删除了包含文档的文件夹,则在审核中只显示文档删除

在Alfresco 5.1.0中,我使用以下配置定义了一个审计应用程序myapp:

audit.tagging.enabled=false
audit.myapp.enabled=true
audit.myapp.sub-actions.enabled=false
audit.filter.myapp.default.enabled=true
audit.filter.myapp.transaction.type=cm:content
audit.filter.myapp.transaction.path=/app:company_home/app:shared/.*
audit.filter.myapp.transaction.action=CREATE|READ|UPDATE CONTENT|CHECK IN|DELETE|COPY|MOVE|DOWNLOAD|addNodeAspect|deleteNodeAspect
如果我的理解是正确的,type=cm:content将审核事件限制为仅与露天文档有关的事件?如果我也想要关于文件夹的事件,我会写cm:folder;cm:内容在那里

尽管有此代码,但在查询时http://localhost:8080/alfresco/service/api/audit/query/myapp 每当创建或删除文件夹时,我仍然会收到审核事件。 我做错了什么

文件夹创建后的审核:

  {
     "id":945,
     "application":"myapp",
     "user":"user1",
     "time":"2017-03-16T13:20:59.480+09:00",
     "values":
     {
                 "\/bmyapp\/transaction\/action":"CREATE"
                 ,"\/myapp\/transaction\/path":"\/app:company_home\/app:shared\/cm:folder1"
     }
  },
删除文件夹后的审核:

  {
     "id":947,
     "application":"myapp",
     "user":"user1",
     "time":"2017-03-16T13:24:51.098+09:00",
     "values":
     {
                 "\/myapp\/transaction\/action":"DELETE"
                 ,"\/myapp\/transaction\/path":"\/app:company_home\/app:shared\/cm:folder1"
     } 
  },
解决方案是在我的审计应用程序的XML定义文件中添加RecordValue key=type元素,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<Audit xmlns="http://www.alfresco.org/repo/audit/model/3.2"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://www.alfresco.org/repo/audit/model/3.2 alfresco-audit-3.2.xsd">
    ...
    <Application name="myapp" key="myapp">
        <AuditPath key="transaction">
            <RecordValue key="type" dataExtractor="simpleValue" dataSource="/myapp/transaction/type" dataTrigger="/myapp/transaction/type" />
            ...
        </AuditPath>
        ...
    </Application>
</Audit>

如果您试图像这样过滤审计数据,那么您的审计过滤是错误的! 实际上,没有现成的方法可以根据每个应用程序筛选审核数据,您只能根据每个生产者进行筛选!我知道alfresco文档可能会有一些混淆,因为开箱即用的审核应用程序名称alfresco access恰好与数据生产者alfresco access的名称相同

实际上,您可以使用alfresco访问过滤设置中的数据提供程序,这样您的过滤将正常工作:

audit.filter.alfresco-access.transaction.type=cm:content;~.*
请注意:但是,这将过滤掉所有审计应用程序的数据生成器中的所有审计事件

我曾经实现过对audit组件的一个扩展,使它能够根据与路径重写命名约定一起使用的DataExtractor在audit应用程序级别上过滤出条目,因此如果您希望实现这一点,那么这样做可能更好;或者编写自己的dataproducer来生成所需的数据,并让一个审计应用程序使用过滤后的数据