mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-31 17:39:05 +00:00
RM-853 File Record audit event is absent
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/modules/recordsmanagement/HEAD@54561 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -97,6 +97,43 @@ sendEmail.description=Send an email
|
|||||||
setPropertyValue.title=Set property value
|
setPropertyValue.title=Set property value
|
||||||
setPropertyValue.description=Set a property value
|
setPropertyValue.description=Set a property value
|
||||||
|
|
||||||
|
# Edit Hold Reason
|
||||||
|
editHoldReason.title=Edit hold reason
|
||||||
|
editHoldReason.description=Edit hold reason
|
||||||
|
# Relinquish Hold
|
||||||
|
relinquishHold.title=Relinquish hold
|
||||||
|
relinquishHold.description=Relinquish hold
|
||||||
|
# Edit Review As Of Date
|
||||||
|
editReviewAsOfDate.title=Edit review as of date
|
||||||
|
editReviewAsOfDate.description=Edit review as of date
|
||||||
|
# Edit Disposition Action As Of Date
|
||||||
|
editDispositionActionAsOfDate.title=Edit disposition action as of date
|
||||||
|
editDispositionActionAsOfDate.description=Edit disposition action as of date
|
||||||
|
# Broadcast Vital Record Definition
|
||||||
|
broadcastVitalRecordDefinition.title=Broadcast vital record definition
|
||||||
|
broadcastVitalRecordDefinition.description=Broadcast vital record definition
|
||||||
|
# Broadcast Disposition Action Definition Update
|
||||||
|
broadcastDispositionActionDefinitionUpdate.title=Broadcast disposition action definition update
|
||||||
|
broadcastDispositionActionDefinitionUpdate.description=Broadcast disposition action definition update
|
||||||
|
# Undo Event
|
||||||
|
undoEvent.title=Undo event
|
||||||
|
undoEvent.description=Undo event
|
||||||
|
# Transfer Complete
|
||||||
|
transferComplete.title=Transfer complete
|
||||||
|
transferComplete.description=Transfer complete
|
||||||
|
# Accession Complete
|
||||||
|
accessionComplete.title=Accession complete
|
||||||
|
accessionComplete.description=Accession complete
|
||||||
|
# Split Email
|
||||||
|
splitEmail.title=Split email
|
||||||
|
splitEmail.description=Split email
|
||||||
|
# Create Disposition Schedule
|
||||||
|
createDispositionSchedule.title=Create disposition schedule
|
||||||
|
createDispositionSchedule.description=Create disposition schedule
|
||||||
|
# File Destruction Report
|
||||||
|
fileDestructionReport.title=File destruction report
|
||||||
|
fileDestructionReport.description=File destruction report
|
||||||
|
|
||||||
# Action parameter constraints
|
# Action parameter constraints
|
||||||
rm-ac-is-kind-kinds.record_category=Record Category
|
rm-ac-is-kind-kinds.record_category=Record Category
|
||||||
rm-ac-is-kind-kinds.record_folder=Record Folder
|
rm-ac-is-kind-kinds.record_folder=Record Folder
|
||||||
|
@@ -145,6 +145,7 @@
|
|||||||
abstract="true">
|
abstract="true">
|
||||||
<property name="runtimeActionService" ref="actionService"/>
|
<property name="runtimeActionService" ref="actionService"/>
|
||||||
<property name="recordsManagementActionService" ref="recordsManagementActionService"/>
|
<property name="recordsManagementActionService" ref="recordsManagementActionService"/>
|
||||||
|
<property name="recordsManagementAuditService" ref="recordsManagementAuditService"/>
|
||||||
<property name="proxyInterfaces">
|
<property name="proxyInterfaces">
|
||||||
<list>
|
<list>
|
||||||
<value>org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementAction</value>
|
<value>org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementAction</value>
|
||||||
@@ -852,7 +853,7 @@
|
|||||||
</list>
|
</list>
|
||||||
</property>
|
</property>
|
||||||
</bean>
|
</bean>
|
||||||
<bean id="executeScript" class="org.alfresco.module.org_alfresco_module_rm.action.impl.DelegateAction">
|
<bean id="executeScript" class="org.alfresco.module.org_alfresco_module_rm.action.impl.DelegateAction" parent="rmAction">
|
||||||
<property name="publicAction" value="true"/>
|
<property name="publicAction" value="true"/>
|
||||||
<property name="delegateAction" ref="rmscript" />
|
<property name="delegateAction" ref="rmscript" />
|
||||||
</bean>
|
</bean>
|
||||||
@@ -888,7 +889,7 @@
|
|||||||
</list>
|
</list>
|
||||||
</property>
|
</property>
|
||||||
</bean>
|
</bean>
|
||||||
<bean id="sendEmail" class="org.alfresco.module.org_alfresco_module_rm.action.impl.DelegateAction">
|
<bean id="sendEmail" class="org.alfresco.module.org_alfresco_module_rm.action.impl.DelegateAction" parent="rmAction">
|
||||||
<property name="publicAction" value="true"/>
|
<property name="publicAction" value="true"/>
|
||||||
<property name="delegateAction" ref="mail" />
|
<property name="delegateAction" ref="mail" />
|
||||||
</bean>
|
</bean>
|
||||||
@@ -905,7 +906,7 @@
|
|||||||
</list>
|
</list>
|
||||||
</property>
|
</property>
|
||||||
</bean>
|
</bean>
|
||||||
<bean id="setPropertyValue" class="org.alfresco.module.org_alfresco_module_rm.action.impl.DelegateAction">
|
<bean id="setPropertyValue" class="org.alfresco.module.org_alfresco_module_rm.action.impl.DelegateAction" parent="rmAction">
|
||||||
<property name="publicAction" value="true"/>
|
<property name="publicAction" value="true"/>
|
||||||
<property name="delegateAction" ref="set-property-value" />
|
<property name="delegateAction" ref="set-property-value" />
|
||||||
<property name="adhocPropertiesAllowed" value="true" />
|
<property name="adhocPropertiesAllowed" value="true" />
|
||||||
|
@@ -208,4 +208,11 @@ public interface RecordsManagementAuditService
|
|||||||
* @return List of audit events
|
* @return List of audit events
|
||||||
*/
|
*/
|
||||||
List<AuditEvent> getAuditEvents();
|
List<AuditEvent> getAuditEvents();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Register records management action
|
||||||
|
*
|
||||||
|
* @param rmAction records management action
|
||||||
|
*/
|
||||||
|
void register(RecordsManagementAction rmAction);
|
||||||
}
|
}
|
||||||
|
@@ -50,9 +50,9 @@ import org.alfresco.repo.policy.JavaBehaviour;
|
|||||||
import org.alfresco.repo.policy.PolicyComponent;
|
import org.alfresco.repo.policy.PolicyComponent;
|
||||||
import org.alfresco.repo.transaction.AlfrescoTransactionSupport;
|
import org.alfresco.repo.transaction.AlfrescoTransactionSupport;
|
||||||
import org.alfresco.repo.transaction.RetryingTransactionHelper;
|
import org.alfresco.repo.transaction.RetryingTransactionHelper;
|
||||||
|
import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback;
|
||||||
import org.alfresco.repo.transaction.TransactionListenerAdapter;
|
import org.alfresco.repo.transaction.TransactionListenerAdapter;
|
||||||
import org.alfresco.repo.transaction.TransactionalResourceHelper;
|
import org.alfresco.repo.transaction.TransactionalResourceHelper;
|
||||||
import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback;
|
|
||||||
import org.alfresco.service.cmr.audit.AuditQueryParameters;
|
import org.alfresco.service.cmr.audit.AuditQueryParameters;
|
||||||
import org.alfresco.service.cmr.audit.AuditService;
|
import org.alfresco.service.cmr.audit.AuditService;
|
||||||
import org.alfresco.service.cmr.audit.AuditService.AuditQueryCallback;
|
import org.alfresco.service.cmr.audit.AuditService.AuditQueryCallback;
|
||||||
@@ -103,36 +103,8 @@ public class RecordsManagementAuditServiceImpl
|
|||||||
private static final String MSG_DELETE_OBJECT = "rm.audit.delte-object";
|
private static final String MSG_DELETE_OBJECT = "rm.audit.delte-object";
|
||||||
private static final String MSG_LOGIN_SUCCEEDED = "rm.audit.login-succeeded";
|
private static final String MSG_LOGIN_SUCCEEDED = "rm.audit.login-succeeded";
|
||||||
private static final String MSG_LOGIN_FAILED = "rm.audit.login-failed";
|
private static final String MSG_LOGIN_FAILED = "rm.audit.login-failed";
|
||||||
private static final String MSG_REVIEWED = "rm.audit.reviewed";
|
|
||||||
private static final String MSG_CUT_OFF = "rm.audit.cut-off";
|
|
||||||
private static final String MSG_REVERSED_CUT_OFF = "rm.audit.reversed-cut-off";
|
|
||||||
private static final String MSG_DESTROYED_ITEM = "rm.audit.destroyed-item";
|
|
||||||
private static final String MSG_OPENED_RECORD_FOLDER = "rm.audit.opened-record-folder";
|
|
||||||
private static final String MSG_CLOSED_RECORD_FOLDER = "rm.audit.closed-record-folder";
|
|
||||||
private static final String MSG_DECLARED_RECORD = "rm.audit.declared-record";
|
|
||||||
private static final String MSG_UNDECLARED_RECORD = "rm.audit.undeclared-record";
|
|
||||||
private static final String MSG_FROZE_ITEM = "rm.audit.froze-item";
|
|
||||||
private static final String MSG_RELINQUISED_HOLD = "rm.audit.relinquised-hold";
|
|
||||||
private static final String MSG_UPDATED_HOLD_REASON = "rm.audit.updated-hold-reason";
|
|
||||||
private static final String MSG_UPDATED_REVIEW_AS_OF_DATE = "rm.audit.updated-review-as-of-date";
|
|
||||||
private static final String MSG_UPDATED_DISPOSITION_AS_OF_DATE = "rm.audit.updated-disposition-as-of-date";
|
|
||||||
private static final String MSG_UPDATED_VITAL_RECORD_DEFINITION = "rm.audit.updated-vital-record-definition";
|
|
||||||
private static final String MSG_UPDATED_DISPOSITOIN_ACTION_DEFINITION = "rm.audit.updated-disposition-action-definition";
|
|
||||||
private static final String MSG_COMPELTED_EVENT = "rm.audit.completed-event";
|
|
||||||
private static final String MSG_REVERSED_COMPLETE_EVENT = "rm.audit.revered-complete-event";
|
|
||||||
private static final String MSG_TRANSFERRED_ITEM = "rm.audit.transferred-item";
|
|
||||||
private static final String MSG_COMPLETED_TRANSFER = "rm.audit.completed-transfer";
|
|
||||||
private static final String MSG_ACCESSION = "rm.audit.accession";
|
|
||||||
private static final String MSG_COMPLETED_ACCESSION = "rm.audit.copmleted-accession";
|
|
||||||
private static final String MSG_SCANNED_RECORD = "rm.audit.scanned-record";
|
|
||||||
private static final String MSG_PDF_RECORD = "rm.audit.pdf-record";
|
|
||||||
private static final String MSG_PHOTO_RECORD = "rm.audit.photo-record";
|
|
||||||
private static final String MSG_WEB_RECORD = "rm.audit.web-record";
|
|
||||||
private static final String MSG_TRAIL_FILE_FAIL = "rm.audit.trail-file-fail";
|
private static final String MSG_TRAIL_FILE_FAIL = "rm.audit.trail-file-fail";
|
||||||
private static final String MSG_AUDIT_REPORT = "rm.audit.audit-report";
|
private static final String MSG_AUDIT_REPORT = "rm.audit.audit-report";
|
||||||
private static final String MSG_CREATE_DISPOSITION_SCHEDULE = "rm.audit.create-disposition-schedule";
|
|
||||||
private static final String MSG_UNFREEZE = "rm.audit.unfreeze";
|
|
||||||
private static final String MSG_REJECT_RECORD = "rm.audit.reject-record";
|
|
||||||
|
|
||||||
/** Logger */
|
/** Logger */
|
||||||
private static Log logger = LogFactory.getLog(RecordsManagementAuditServiceImpl.class);
|
private static Log logger = LogFactory.getLog(RecordsManagementAuditServiceImpl.class);
|
||||||
@@ -157,7 +129,9 @@ public class RecordsManagementAuditServiceImpl
|
|||||||
private boolean shutdown = false;
|
private boolean shutdown = false;
|
||||||
|
|
||||||
private RMAuditTxnListener txnListener;
|
private RMAuditTxnListener txnListener;
|
||||||
private Map<String, AuditEvent> auditEvents;
|
|
||||||
|
/** Registered and initialised records management auditEvents */
|
||||||
|
private Map<String, AuditEvent> auditEvents = new HashMap<String, AuditEvent>();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the component used to bind to behaviour callbacks
|
* Set the component used to bind to behaviour callbacks
|
||||||
@@ -239,6 +213,17 @@ public class RecordsManagementAuditServiceImpl
|
|||||||
this.filePlanService = filePlanService;
|
this.filePlanService = filePlanService;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see org.alfresco.module.org_alfresco_module_rm.RecordsManagementAuditService#register(org.alfresco.module.org_alfresco_module_rm.RecordsManagementAction)
|
||||||
|
*/
|
||||||
|
public void register(RecordsManagementAction rmAction)
|
||||||
|
{
|
||||||
|
if (this.auditEvents.containsKey(rmAction.getName()) == false)
|
||||||
|
{
|
||||||
|
this.auditEvents.put(rmAction.getName(), new AuditEvent(rmAction.getName(), rmAction.getLabel()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Checks that all necessary properties have been set.
|
* Checks that all necessary properties have been set.
|
||||||
*/
|
*/
|
||||||
@@ -261,8 +246,6 @@ public class RecordsManagementAuditServiceImpl
|
|||||||
|
|
||||||
protected void initAuditEvents()
|
protected void initAuditEvents()
|
||||||
{
|
{
|
||||||
// TODO: make this map configurable and localisable.
|
|
||||||
this.auditEvents = new HashMap<String, AuditEvent>(32);
|
|
||||||
|
|
||||||
this.auditEvents.put(RM_AUDIT_EVENT_UPDATE_RM_OBJECT,
|
this.auditEvents.put(RM_AUDIT_EVENT_UPDATE_RM_OBJECT,
|
||||||
new AuditEvent(RM_AUDIT_EVENT_UPDATE_RM_OBJECT, MSG_UPDATED_METADATA));
|
new AuditEvent(RM_AUDIT_EVENT_UPDATE_RM_OBJECT, MSG_UPDATED_METADATA));
|
||||||
@@ -275,63 +258,6 @@ public class RecordsManagementAuditServiceImpl
|
|||||||
this.auditEvents.put(RM_AUDIT_EVENT_LOGIN_FAILURE,
|
this.auditEvents.put(RM_AUDIT_EVENT_LOGIN_FAILURE,
|
||||||
new AuditEvent(RM_AUDIT_EVENT_LOGIN_FAILURE, MSG_LOGIN_FAILED));
|
new AuditEvent(RM_AUDIT_EVENT_LOGIN_FAILURE, MSG_LOGIN_FAILED));
|
||||||
|
|
||||||
this.auditEvents.put("reviewed",
|
|
||||||
new AuditEvent("reviewed", MSG_REVIEWED));
|
|
||||||
this.auditEvents.put("cutoff",
|
|
||||||
new AuditEvent("cutoff", MSG_CUT_OFF));
|
|
||||||
this.auditEvents.put("unCutoff",
|
|
||||||
new AuditEvent("unCutoff", MSG_REVERSED_CUT_OFF));
|
|
||||||
this.auditEvents.put("destroy",
|
|
||||||
new AuditEvent("destroy", MSG_DESTROYED_ITEM));
|
|
||||||
this.auditEvents.put("openRecordFolder",
|
|
||||||
new AuditEvent("openRecordFolder", MSG_OPENED_RECORD_FOLDER));
|
|
||||||
this.auditEvents.put("closeRecordFolder",
|
|
||||||
new AuditEvent("closeRecordFolder", MSG_CLOSED_RECORD_FOLDER));
|
|
||||||
this.auditEvents.put("declareRecord",
|
|
||||||
new AuditEvent("declareRecord", MSG_DECLARED_RECORD));
|
|
||||||
this.auditEvents.put("undeclareRecord",
|
|
||||||
new AuditEvent("undeclareRecord", MSG_UNDECLARED_RECORD));
|
|
||||||
this.auditEvents.put("freeze",
|
|
||||||
new AuditEvent("freeze", MSG_FROZE_ITEM));
|
|
||||||
this.auditEvents.put("relinquishHold",
|
|
||||||
new AuditEvent("relinquishHold", MSG_RELINQUISED_HOLD));
|
|
||||||
this.auditEvents.put("editHoldReason",
|
|
||||||
new AuditEvent("editHoldReason", MSG_UPDATED_HOLD_REASON));
|
|
||||||
this.auditEvents.put("editReviewAsOfDate",
|
|
||||||
new AuditEvent("editReviewAsOfDate", MSG_UPDATED_REVIEW_AS_OF_DATE));
|
|
||||||
this.auditEvents.put("editDispositionActionAsOfDate",
|
|
||||||
new AuditEvent("editDispositionActionAsOfDate", MSG_UPDATED_DISPOSITION_AS_OF_DATE));
|
|
||||||
this.auditEvents.put("broadcastVitalRecordDefinition",
|
|
||||||
new AuditEvent("broadcastVitalRecordDefinition", MSG_UPDATED_VITAL_RECORD_DEFINITION));
|
|
||||||
this.auditEvents.put("broadcastDispositionActionDefinitionUpdate",
|
|
||||||
new AuditEvent("broadcastDispositionActionDefinitionUpdate", MSG_UPDATED_DISPOSITOIN_ACTION_DEFINITION));
|
|
||||||
this.auditEvents.put("completeEvent",
|
|
||||||
new AuditEvent("completeEvent", MSG_COMPELTED_EVENT));
|
|
||||||
this.auditEvents.put("undoEvent",
|
|
||||||
new AuditEvent("undoEvent", MSG_REVERSED_COMPLETE_EVENT));
|
|
||||||
this.auditEvents.put("transfer",
|
|
||||||
new AuditEvent("transfer", MSG_TRANSFERRED_ITEM));
|
|
||||||
this.auditEvents.put("transferComplete",
|
|
||||||
new AuditEvent("transferComplete", MSG_COMPLETED_TRANSFER));
|
|
||||||
this.auditEvents.put("accession",
|
|
||||||
new AuditEvent("accession", MSG_ACCESSION));
|
|
||||||
this.auditEvents.put("accessionComplete",
|
|
||||||
new AuditEvent("accessionComplete", MSG_COMPLETED_ACCESSION));
|
|
||||||
this.auditEvents.put("applyScannedRecord",
|
|
||||||
new AuditEvent("applyScannedRecord", MSG_SCANNED_RECORD));
|
|
||||||
this.auditEvents.put("applyPdfRecord",
|
|
||||||
new AuditEvent("applyPdfRecord", MSG_PDF_RECORD));
|
|
||||||
this.auditEvents.put("applyDigitalPhotographRecord",
|
|
||||||
new AuditEvent("applyDigitalPhotographRecord", MSG_PHOTO_RECORD));
|
|
||||||
this.auditEvents.put("applyWebRecord",
|
|
||||||
new AuditEvent("applyWebRecord", MSG_WEB_RECORD));
|
|
||||||
this.auditEvents.put("createDispositionSchedule",
|
|
||||||
new AuditEvent("createDispositionSchedule", MSG_CREATE_DISPOSITION_SCHEDULE));
|
|
||||||
this.auditEvents.put("unfreeze",
|
|
||||||
new AuditEvent("unfreeze", MSG_UNFREEZE));
|
|
||||||
this.auditEvents.put("reject",
|
|
||||||
new AuditEvent("reject", MSG_REJECT_RECORD));
|
|
||||||
|
|
||||||
// Added for DOD compliance
|
// Added for DOD compliance
|
||||||
this.auditEvents.put("createPerson",
|
this.auditEvents.put("createPerson",
|
||||||
new AuditEvent("createPerson", "User Created"));
|
new AuditEvent("createPerson", "User Created"));
|
||||||
|
@@ -20,6 +20,7 @@ package org.alfresco.module.org_alfresco_module_rm.capability;
|
|||||||
|
|
||||||
import org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementAction;
|
import org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementAction;
|
||||||
import org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementActionService;
|
import org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementActionService;
|
||||||
|
import org.alfresco.module.org_alfresco_module_rm.audit.RecordsManagementAuditService;
|
||||||
import org.alfresco.repo.action.RuntimeActionService;
|
import org.alfresco.repo.action.RuntimeActionService;
|
||||||
import org.alfresco.repo.security.authentication.AuthenticationUtil;
|
import org.alfresco.repo.security.authentication.AuthenticationUtil;
|
||||||
import org.springframework.aop.framework.ProxyFactoryBean;
|
import org.springframework.aop.framework.ProxyFactoryBean;
|
||||||
@@ -32,6 +33,8 @@ public class RMActionProxyFactoryBean extends ProxyFactoryBean
|
|||||||
|
|
||||||
private RecordsManagementActionService recordsManagementActionService;
|
private RecordsManagementActionService recordsManagementActionService;
|
||||||
|
|
||||||
|
private RecordsManagementAuditService recordsManagementAuditService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set action service
|
* Set action service
|
||||||
*
|
*
|
||||||
@@ -52,6 +55,16 @@ public class RMActionProxyFactoryBean extends ProxyFactoryBean
|
|||||||
this.recordsManagementActionService = recordsManagementActionService;
|
this.recordsManagementActionService = recordsManagementActionService;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set records management service
|
||||||
|
*
|
||||||
|
* @param recordsManagementAuditService
|
||||||
|
*/
|
||||||
|
public void setRecordsManagementAuditService(RecordsManagementAuditService recordsManagementAuditService)
|
||||||
|
{
|
||||||
|
this.recordsManagementAuditService = recordsManagementAuditService;
|
||||||
|
}
|
||||||
|
|
||||||
public void registerAction()
|
public void registerAction()
|
||||||
{
|
{
|
||||||
AuthenticationUtil.runAs(new AuthenticationUtil.RunAsWork<Void>()
|
AuthenticationUtil.runAs(new AuthenticationUtil.RunAsWork<Void>()
|
||||||
@@ -63,6 +76,7 @@ public class RMActionProxyFactoryBean extends ProxyFactoryBean
|
|||||||
// runtimeActionService.registerActionExecuter((ActionExecuter) getObject());
|
// runtimeActionService.registerActionExecuter((ActionExecuter) getObject());
|
||||||
// }
|
// }
|
||||||
recordsManagementActionService.register((RecordsManagementAction) getObject());
|
recordsManagementActionService.register((RecordsManagementAction) getObject());
|
||||||
|
recordsManagementAuditService.register((RecordsManagementAction) getObject());
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}, AuthenticationUtil.getSystemUserName());
|
}, AuthenticationUtil.getSystemUserName());
|
||||||
|
Reference in New Issue
Block a user