diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/messages/actions.properties b/rm-server/config/alfresco/module/org_alfresco_module_rm/messages/actions.properties
index aa6200f4bf..207b7db780 100644
--- a/rm-server/config/alfresco/module/org_alfresco_module_rm/messages/actions.properties
+++ b/rm-server/config/alfresco/module/org_alfresco_module_rm/messages/actions.properties
@@ -97,6 +97,43 @@ sendEmail.description=Send an email
setPropertyValue.title=Set 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
rm-ac-is-kind-kinds.record_category=Record Category
rm-ac-is-kind-kinds.record_folder=Record Folder
diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-action-context.xml b/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-action-context.xml
index 84b17616f8..ff2fda6a24 100644
--- a/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-action-context.xml
+++ b/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-action-context.xml
@@ -145,6 +145,7 @@
abstract="true">
+
org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementAction
@@ -852,7 +853,7 @@
-
+
@@ -888,7 +889,7 @@
-
+
@@ -905,7 +906,7 @@
-
+
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/audit/RecordsManagementAuditService.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/audit/RecordsManagementAuditService.java
index 99460c6401..1344476983 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/audit/RecordsManagementAuditService.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/audit/RecordsManagementAuditService.java
@@ -208,4 +208,11 @@ public interface RecordsManagementAuditService
* @return List of audit events
*/
List getAuditEvents();
+
+ /**
+ * Register records management action
+ *
+ * @param rmAction records management action
+ */
+ void register(RecordsManagementAction rmAction);
}
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/audit/RecordsManagementAuditServiceImpl.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/audit/RecordsManagementAuditServiceImpl.java
index c137fc89d9..8c8a1a5991 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/audit/RecordsManagementAuditServiceImpl.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/audit/RecordsManagementAuditServiceImpl.java
@@ -50,9 +50,9 @@ import org.alfresco.repo.policy.JavaBehaviour;
import org.alfresco.repo.policy.PolicyComponent;
import org.alfresco.repo.transaction.AlfrescoTransactionSupport;
import org.alfresco.repo.transaction.RetryingTransactionHelper;
+import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback;
import org.alfresco.repo.transaction.TransactionListenerAdapter;
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.AuditService;
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_LOGIN_SUCCEEDED = "rm.audit.login-succeeded";
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_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 */
private static Log logger = LogFactory.getLog(RecordsManagementAuditServiceImpl.class);
@@ -157,7 +129,9 @@ public class RecordsManagementAuditServiceImpl
private boolean shutdown = false;
private RMAuditTxnListener txnListener;
- private Map auditEvents;
+
+ /** Registered and initialised records management auditEvents */
+ private Map auditEvents = new HashMap();
/**
* Set the component used to bind to behaviour callbacks
@@ -239,6 +213,17 @@ public class RecordsManagementAuditServiceImpl
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.
*/
@@ -261,8 +246,6 @@ public class RecordsManagementAuditServiceImpl
protected void initAuditEvents()
{
- // TODO: make this map configurable and localisable.
- this.auditEvents = new HashMap(32);
this.auditEvents.put(RM_AUDIT_EVENT_UPDATE_RM_OBJECT,
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,
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
this.auditEvents.put("createPerson",
new AuditEvent("createPerson", "User Created"));
diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/RMActionProxyFactoryBean.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/RMActionProxyFactoryBean.java
index c108110359..1f8a9b4b9a 100644
--- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/RMActionProxyFactoryBean.java
+++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/capability/RMActionProxyFactoryBean.java
@@ -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.RecordsManagementActionService;
+import org.alfresco.module.org_alfresco_module_rm.audit.RecordsManagementAuditService;
import org.alfresco.repo.action.RuntimeActionService;
import org.alfresco.repo.security.authentication.AuthenticationUtil;
import org.springframework.aop.framework.ProxyFactoryBean;
@@ -32,6 +33,8 @@ public class RMActionProxyFactoryBean extends ProxyFactoryBean
private RecordsManagementActionService recordsManagementActionService;
+ private RecordsManagementAuditService recordsManagementAuditService;
+
/**
* Set action service
*
@@ -52,6 +55,16 @@ public class RMActionProxyFactoryBean extends ProxyFactoryBean
this.recordsManagementActionService = recordsManagementActionService;
}
+ /**
+ * Set records management service
+ *
+ * @param recordsManagementAuditService
+ */
+ public void setRecordsManagementAuditService(RecordsManagementAuditService recordsManagementAuditService)
+ {
+ this.recordsManagementAuditService = recordsManagementAuditService;
+ }
+
public void registerAction()
{
AuthenticationUtil.runAs(new AuthenticationUtil.RunAsWork()
@@ -63,6 +76,7 @@ public class RMActionProxyFactoryBean extends ProxyFactoryBean
// runtimeActionService.registerActionExecuter((ActionExecuter) getObject());
// }
recordsManagementActionService.register((RecordsManagementAction) getObject());
+ recordsManagementAuditService.register((RecordsManagementAction) getObject());
return null;
}
}, AuthenticationUtil.getSystemUserName());