【问题标题】:How to detect renames via CMIS ChangeLog in Alfresco?如何通过 Alfresco 中的 CMIS ChangeLog 检测重命名?
【发布时间】:2018-01-22 12:00:44
【问题描述】:

CMIS 变更日志

我正在使用CMIS 标准的ChangeLog 功能来跟踪我的Alfresco 服务器上的变化。

例如,当我创建 newfile.txt 时,ChangeLog 令牌(<cmis:latestChangeLogToken> 的值)从 1713 变为 1735。

问题

当我将 newfile.txt 重命名为 myfile.txt 时,ChangeLog 令牌不会更改。

问题

有没有办法让 Alfresco 在发生重命名时碰撞 ChangeLog 令牌?

这是我目前的tomcat/shared/classes/alfresco-global.properties

audit.enabled=true
audit.alfresco-access.enabled=true
audit.alfresco-access.sub-actions.enabled=true
audit.cmischangelog.enabled=true
audit.cmischangelog.sub-actions.enabled=true

【问题讨论】:

  • 重命名甚至不是移动/归档。这是属性更新。

标签: alfresco cmis changelog


【解决方案1】:

为此,您必须修改负责生成 CMIS ChangeLog 事件的 Alfresco 的审核配置文件。这个文件是alfresco-audit-cmis.xml,它可以在alfresco-repository-5.2.g.jar(版本号可能不同)里面找到,它本身就在alfresco.warWEB-INF/lib文件夹里面。

您必须向该文件添加一个 PathMap 和一个 AuditPath,如下所述:

<PathMap source="/alfresco-api/post/FileFolderService/rename"
    target="/CMISChangeLog/UPDATED" />

...在&lt;PathMappings&gt;,和

<AuditPath key="fileFolderRef">
    <RecordValue key="value" dataExtractor="simpleValue" />
</AuditPath>

...在&lt;AuditPath key="UPDATED"&gt;&lt;AuditPath key="args"&gt; 中。

在此答案的底部,我将整个修改后的 alfresco-audit-cmis.xml 粘贴为 Alfresco Community 5.2.0 201707 作为示例,请注意您的基本文件可能不同,因此最好将修改应用于您的 Alfresco 自己的 alfresco-audit-cmis.xml

为了部署该文件以便 Alfresco 实际使用它,请按照以下说明操作:https://stackoverflow.com/a/48221347/226958

例子:

<?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">

    <DataExtractors>
       <DataExtractor name="simpleValue" registeredName="auditModel.extractor.simpleValue"/>
       <DataExtractor name="nullValue" registeredName="auditModel.extractor.nullValue"/>
       <DataExtractor name="changeLog" registeredName="CMISChangeLogDataExtractor"/>
    </DataExtractors>

    <PathMappings>
        <PathMap source="/CMISChangeLog" target="/CMISChangeLog" />
        <PathMap source="/alfresco-api/post/FileFolderService/create" target="/CMISChangeLog/CREATED" />
        <PathMap source="/alfresco-api/post/NodeService/createNode" target="/CMISChangeLog/CREATED" />
        <PathMap source="/alfresco-api/post/NodeService/setProperties" target="/CMISChangeLog/UPDATED" />
        <PathMap source="/alfresco-api/post/NodeService/addProperties" target="/CMISChangeLog/UPDATED" />
        <PathMap source="/alfresco-api/post/NodeService/setProperty" target="/CMISChangeLog/UPDATED" />
        <PathMap source="/alfresco-api/post/NodeService/removeProperty" target="/CMISChangeLog/UPDATED" />
        <PathMap source="/alfresco-node/beforeDeleteNode" target="/CMISChangeLog/DELETED" />
        <PathMap source="/alfresco-api/post/PermissionService/setPermission" target="/CMISChangeLog/SECURITY" />
        <PathMap source="/alfresco-api/post/PermissionService/setInheritParentPermissions" target="/CMISChangeLog/SECURITY" />
        <PathMap source="/alfresco-api/post/PermissionService/clearPermission" target="/CMISChangeLog/SECURITY" />
        <PathMap source="/alfresco-api/post/PermissionService/deletePermission" target="/CMISChangeLog/SECURITY" />
        <PathMap source="/alfresco-api/post/NodeService/moveNode" target="/CMISChangeLog/UPDATED" />
        <PathMap source="/alfresco-api/post/FileFolderService/moveFrom" target="/CMISChangeLog/UPDATED" />
        <PathMap source="/alfresco-api/post/FileFolderService/rename" target="/CMISChangeLog/UPDATED" />
    </PathMappings>

    <Application name="CMISChangeLog" key="CMISChangeLog">
        <AuditPath key="CREATED">
            <AuditPath key="result">
                <RecordValue key="value" dataExtractor="changeLog" />
            </AuditPath>
            <AuditPath key="error">
                <RecordValue key="value" dataExtractor="nullValue" />
            </AuditPath>
        </AuditPath>

        <AuditPath key="UPDATED">
            <AuditPath key="args">
                <AuditPath key="nodeRef">
                    <RecordValue key="value" dataExtractor="changeLog" />
                </AuditPath>
                <AuditPath key="nodeToMoveRef">
                    <RecordValue key="value" dataExtractor="changeLog" />
                </AuditPath>
                <AuditPath key="sourceNodeRef">
                    <RecordValue key="value" dataExtractor="changeLog" />
                </AuditPath>
                <AuditPath key="fileFolderRef">
                    <RecordValue key="value" dataExtractor="simpleValue" />
                </AuditPath>
            </AuditPath>
            <AuditPath key="error">
                <RecordValue key="value" dataExtractor="nullValue" />
            </AuditPath>
        </AuditPath>

        <AuditPath key="DELETED">
            <AuditPath key="node">
                <RecordValue key="value" dataExtractor="changeLog" />
            </AuditPath>
        </AuditPath>

        <AuditPath key="SECURITY">
            <AuditPath key="args">
                 <AuditPath key="nodeRef">
                    <RecordValue key="value" dataExtractor="changeLog" />
                 </AuditPath>
            </AuditPath>
            <AuditPath key="error">
                <RecordValue key="value" dataExtractor="nullValue" />
            </AuditPath>
        </AuditPath>        
    </Application>

</Audit>

这个“解决方案”很不方便,可能不完整,所以如果你知道更好的方法,请发布一个新的答案,非常感谢! :-)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多