When using the
        org.alfresco.repo.audit.AuditMethodInterceptor Data Producer, which
      generates audit data for all public service API calls, it is sometimes useful to be able to
      audit before and after values in a 'post' call application, or to include values from before
      the call.
     For example, the nodeName data extractor can only be called on a node
      that exists, so calling it after a delete has no effect.
        
    
  The output of 'pre' call
        applications is available to 'post' call applications, which can be seen in the following
        example. The example shows auditing the deletion of nodes and includes the node name. The
          nodeName is evaluated in the 'pre' call application and copied in the
        'post' call application.
        
<?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 SkyVault-audit-3.2.xsd" >
  <DataExtractors>
    <DataExtractor name="simpleValue" registeredName="auditModel.extractor.simpleValue"/>
    <DataExtractor name="nodeNameValue" registeredName="auditModel.extractor.nodeName"/>
  </DataExtractors>
  <PathMappings>
    <PathMap source="/alfresco-api/pre/NodeService/deleteNode" target="/preDelete" />
    <PathMap source="/alfresco-api/post/NodeService/deleteNode" target="/postDelete" />
  </PathMappings>
  <Application name="PreCallDataDelete" key="preDelete">
    <RecordValue key="nodeName" dataExtractor="nodeNameValue" dataSource="/preDelete/args/nodeRef" dataTrigger="/preDelete/args/nodeRef" />
  </Application>
  <Application name="PostDelete" key="postDelete">
    <RecordValue key="error" dataExtractor="simpleValue" dataSource="/postDelete/error" dataTrigger="/postDelete/error" />
    <AuditPath key="deleteDetails">
      <RecordValue key="deletedNodeRef" dataExtractor="simpleValue" dataSource="/postDelete/args/nodeRef" dataTrigger="/postDelete/args/nodeRef" />
      <RecordValue key="nodeName" dataExtractor="simpleValue" dataSource="/postDelete/preCallData/preDelete/nodeName" dataTrigger="/postDelete/preCallData/preDelete/nodeName" />
    </AuditPath>
  </Application>
</Audit>
        
Note: The dataSource attribute of the final
            <RecordValue> element includes the output path of the 'pre' call
          application ("preDelete/nodeName"). This is prefixed by
            preCallData/ much like the args/ prefix for method
          arguments. To avoid 'pre' call applications from generating audit records themselves,
          rather than just generating output for the 'post' call applications, give them a name that
          starts with PreCallData.