我希望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
会将审核事件限制为仅限于Alfresco 文档的审核事件?如果我也想要关于文件夹的事件,我会在那里写cm:folder;cm:content
。
尽管有这段代码,但在查询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"
}
},
答案 0 :(得分:1)
解决方案是在我的审计应用程序的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>
答案 1 :(得分:0)
如果您尝试过滤这样的审核数据,那么您的审核过滤错误! 实际上没有开箱即用的方法来过滤每个应用程序的审计数据,你只能在每个生产者的基础上做到这一点!我知道露天文档可能会有一些混乱,因为开箱即用的审计应用程序名称(alfresco-access)恰好与数据生成器的名称(alfresco-access)相同。
您实际可以做的是在过滤设置中使用alfresco-access(数据提供者),过滤将起作用:
audit.filter.alfresco-access.transaction.type=cm:content;~.*
请注意:但是,这将过滤掉来自数据生产者的所有审核事件(适用于所有审核应用程序)
我曾经实现了审计组件的扩展,使得可以根据与路径重写命名约定一起使用的DataExtractor过滤出审计应用程序级别的条目,所以如果你想要实现的,那么它这样做可能更好;或者编写自己的dataproducer来生成所需的数据,让一个审计应用程序使用过滤后的数据!