mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-31 17:39:05 +00:00
RM-3293 RM Audit History does not log Cutoff
This commit is contained in:
@@ -17,6 +17,8 @@ imap.server.attachments.extraction.enabled=false
|
||||
#
|
||||
audit.enabled=true
|
||||
audit.rm.enabled=true
|
||||
audit.rm.runasadmin=false
|
||||
#audit.filter.alfresco-access.transaction.user=~null;.*
|
||||
|
||||
#
|
||||
# Extended permission service cache sizing
|
||||
|
@@ -59,6 +59,7 @@
|
||||
<property name="jobDataAsMap">
|
||||
<map>
|
||||
<entry key="jobName" value="dispositionLifecycle"/>
|
||||
<entry key="runAsAdmin" value="${audit.rm.runasadmin}"/>
|
||||
<entry key="jobLockService">
|
||||
<ref bean="jobLockService" />
|
||||
</entry>
|
||||
@@ -94,7 +95,7 @@
|
||||
<ref bean="schedulerFactory" />
|
||||
</property>
|
||||
<property name="cronExpression">
|
||||
|
||||
|
||||
<!-- run at 3am -->
|
||||
<!-- <value>0 30 3 * * ?</value> -->
|
||||
<!-- <value>0/30 * * * * ?</value> -->
|
||||
|
@@ -42,12 +42,12 @@ import org.apache.commons.logging.LogFactory;
|
||||
import org.quartz.Job;
|
||||
import org.quartz.JobExecutionContext;
|
||||
import org.quartz.JobExecutionException;
|
||||
import org.springframework.scheduling.quartz.QuartzJobBean;
|
||||
|
||||
/**
|
||||
* Base records management job implementation.
|
||||
* <p>
|
||||
* Delegates job execution and ensures locking
|
||||
* is enforced.
|
||||
* Delegates job execution and ensures locking is enforced.
|
||||
*
|
||||
* @author Roy Wetherall
|
||||
*/
|
||||
@@ -55,6 +55,9 @@ public class RecordsManagementJob implements Job
|
||||
{
|
||||
private static Log logger = LogFactory.getLog(RecordsManagementJob.class);
|
||||
|
||||
/** indicates whether the audit history should be run as admin or not */
|
||||
private boolean runAsAdmin = false;
|
||||
|
||||
private static final long DEFAULT_TIME = 30000L;
|
||||
|
||||
private JobLockService jobLockService;
|
||||
@@ -67,17 +70,17 @@ public class RecordsManagementJob implements Job
|
||||
{
|
||||
return QName.createQName(NamespaceService.SYSTEM_MODEL_1_0_URI, jobName);
|
||||
}
|
||||
|
||||
|
||||
private class LockCallback implements JobLockRefreshCallback
|
||||
{
|
||||
final AtomicBoolean running = new AtomicBoolean(true);
|
||||
|
||||
|
||||
@Override
|
||||
public boolean isActive()
|
||||
{
|
||||
return running.get();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void lockReleased()
|
||||
{
|
||||
@@ -85,11 +88,10 @@ public class RecordsManagementJob implements Job
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Attempts to get the lock. If the lock couldn't be taken, then <tt>null</tt> is returned.
|
||||
* Attempts to get the lock. If the lock couldn't be taken, then <tt>null</tt> is returned.
|
||||
*
|
||||
* @return Returns the lock token or <tt>null</tt>
|
||||
* @return Returns the lock token or <tt>null</tt>
|
||||
*/
|
||||
private String getLock()
|
||||
{
|
||||
@@ -107,27 +109,21 @@ public class RecordsManagementJob implements Job
|
||||
public void execute(JobExecutionContext context) throws JobExecutionException
|
||||
{
|
||||
// get the job lock service
|
||||
jobLockService = (JobLockService)context.getJobDetail().getJobDataMap().get("jobLockService");
|
||||
if (jobLockService == null)
|
||||
{
|
||||
throw new AlfrescoRuntimeException("Job lock service has not been specified.");
|
||||
}
|
||||
jobLockService = (JobLockService) context.getJobDetail().getJobDataMap().get("jobLockService");
|
||||
if (jobLockService == null) { throw new AlfrescoRuntimeException("Job lock service has not been specified."); }
|
||||
|
||||
// get the job executer
|
||||
jobExecuter = (RecordsManagementJobExecuter)context.getJobDetail().getJobDataMap().get("jobExecuter");
|
||||
if (jobExecuter == null)
|
||||
{
|
||||
throw new AlfrescoRuntimeException("Job executer has not been specified.");
|
||||
}
|
||||
jobExecuter = (RecordsManagementJobExecuter) context.getJobDetail().getJobDataMap().get("jobExecuter");
|
||||
if (jobExecuter == null) { throw new AlfrescoRuntimeException("Job executer has not been specified."); }
|
||||
|
||||
// get the job name
|
||||
jobName = (String)context.getJobDetail().getJobDataMap().get("jobName");
|
||||
if (jobName == null)
|
||||
{
|
||||
throw new AlfrescoRuntimeException("Job name has not been specified.");
|
||||
}
|
||||
jobName = (String) context.getJobDetail().getJobDataMap().get("jobName");
|
||||
if (jobName == null) { throw new AlfrescoRuntimeException("Job name has not been specified."); }
|
||||
|
||||
setRunAsAdmin(Boolean.parseBoolean((String) context.getJobDetail().getJobDataMap().get("runAsAdmin")));
|
||||
|
||||
final LockCallback lockCallback = new LockCallback();
|
||||
|
||||
AuthenticationUtil.runAs(new RunAsWork<Void>()
|
||||
{
|
||||
public Void doWork()
|
||||
@@ -154,7 +150,8 @@ public class RecordsManagementJob implements Job
|
||||
// Ignore
|
||||
if (logger.isDebugEnabled())
|
||||
{
|
||||
logger.debug("Lock release failed: " + getLockQName() + ": " + lockToken + "(" + e.getMessage() + ")");
|
||||
logger.debug("Lock release failed: " + getLockQName() + ": " + lockToken + "("
|
||||
+ e.getMessage() + ")");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -163,6 +160,17 @@ public class RecordsManagementJob implements Job
|
||||
// return
|
||||
return null;
|
||||
}
|
||||
}, AuthenticationUtil.getSystemUserName());
|
||||
}, this.runAsAdmin ? AuthenticationUtil.getAdminUserName() : AuthenticationUtil.getSystemUserName());
|
||||
}
|
||||
|
||||
public boolean isRunAsAdmin()
|
||||
{
|
||||
return runAsAdmin;
|
||||
}
|
||||
|
||||
public void setRunAsAdmin(boolean runAsAdmin)
|
||||
{
|
||||
this.runAsAdmin = runAsAdmin;
|
||||
}
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user