RM-581 (A user will receive notification of rejected records)

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/modules/recordsmanagement/HEAD@46138 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Tuna Aksoy
2013-02-01 14:36:56 +00:00
parent d08b441438
commit fb2a90ff29
7 changed files with 441 additions and 256 deletions

View File

@@ -1,28 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<view:view xmlns:view="http://www.alfresco.org/view/repository/1.0"
xmlns:nt="http://www.jcp.org/jcr/nt/1.0"
xmlns:alf="http://www.alfresco.org"
xmlns:d="http://www.alfresco.org/model/dictionary/1.0"
xmlns:act="http://www.alfresco.org/model/action/1.0"
xmlns:wf="http://www.alfresco.org/model/workflow/1.0"
xmlns:app="http://www.alfresco.org/model/application/1.0"
xmlns:usr="http://www.alfresco.org/model/user/1.0"
xmlns:ver="http://www.alfresco.org/model/versionstore/1.0"
xmlns:cm="http://www.alfresco.org/model/content/1.0"
xmlns:sv="http://www.jcp.org/jcr/sv/1.0"
xmlns:mix="http://www.jcp.org/jcr/mix/1.0"
xmlns:jcr="http://www.jcp.org/jcr/1.0"
xmlns:sys="http://www.alfresco.org/model/system/1.0"
xmlns:rule="http://www.alfresco.org/model/rule/1.0"
xmlns:fm="http://www.alfresco.org/model/forum/1.0"
xmlns:bpm="http://www.alfresco.org/model/bpm/1.0"
<view:view xmlns:view="http://www.alfresco.org/view/repository/1.0"
xmlns:nt="http://www.jcp.org/jcr/nt/1.0"
xmlns:alf="http://www.alfresco.org"
xmlns:d="http://www.alfresco.org/model/dictionary/1.0"
xmlns:act="http://www.alfresco.org/model/action/1.0"
xmlns:wf="http://www.alfresco.org/model/workflow/1.0"
xmlns:app="http://www.alfresco.org/model/application/1.0"
xmlns:usr="http://www.alfresco.org/model/user/1.0"
xmlns:ver="http://www.alfresco.org/model/versionstore/1.0"
xmlns:cm="http://www.alfresco.org/model/content/1.0"
xmlns:sv="http://www.jcp.org/jcr/sv/1.0"
xmlns:mix="http://www.jcp.org/jcr/mix/1.0"
xmlns:jcr="http://www.jcp.org/jcr/1.0"
xmlns:sys="http://www.alfresco.org/model/system/1.0"
xmlns:rule="http://www.alfresco.org/model/rule/1.0"
xmlns:fm="http://www.alfresco.org/model/forum/1.0"
xmlns:bpm="http://www.alfresco.org/model/bpm/1.0"
xmlns:rma="http://www.alfresco.org/model/recordsmanagement/1.0"
xmlns:custom="custom.model"
xmlns:custom="custom.model"
xmlns="" >
<cm:folder view:childName="cm:records_management">
<view:properties>
<view:properties>
<sys:store-protocol>workspace</sys:store-protocol>
<sys:store-identifier>SpacesStore</sys:store-identifier>
<sys:node-uuid>rm_config_folder</sys:node-uuid>
@@ -30,15 +30,15 @@
<cm:title>Records Management</cm:title>
<cm:description>Configuration information for the Records Management application.</cm:description>
</view:properties>
<view:associations>
<cm:contains>
<cm:content view:childName="cm:rm_event_config.json">
<view:aspects>
<cm:titled></cm:titled>
</view:aspects>
<view:properties>
<view:properties>
<sys:store-protocol>workspace</sys:store-protocol>
<sys:store-identifier>SpacesStore</sys:store-identifier>
<sys:node-uuid>rm_event_config</sys:node-uuid>
@@ -49,11 +49,11 @@
</view:properties>
</cm:content>
<cm:dictionaryModel view:childName="cm:recordsCustomModel.xml">
<cm:dictionaryModel view:childName="cm:recordsCustomModel.xml">
<view:aspects>
<cm:titled></cm:titled>
</view:aspects>
<view:properties>
<view:properties>
<sys:store-protocol>workspace</sys:store-protocol>
<sys:store-identifier>SpacesStore</sys:store-identifier>
<sys:node-uuid>records_management_custom_model</sys:node-uuid>
@@ -61,118 +61,133 @@
<cm:content>contentUrl=classpath:alfresco/module/org_alfresco_module_rm/bootstrap/content/recordsCustomModel.xml|mimetype=text/plain|encoding=UTF-8</cm:content>
<cm:title>recordsCustomModel.xml</cm:title>
<cm:name>recordsCustomModel.xml</cm:name>
<cm:modelName>{http://www.alfresco.org/model/rmcustom/1.0}rmcustom</cm:modelName>
<cm:modelDescription>Records Management Custom Model</cm:modelDescription>
<cm:modelAuthor>Alfresco</cm:modelAuthor>
<cm:modelVersion>1.0</cm:modelVersion>
<cm:modelActive>true</cm:modelActive>
</view:properties>
</cm:dictionaryModel>
<cm:folder view:childName="cm:records_management_scripts">
<view:properties>
<sys:store-protocol>workspace</sys:store-protocol>
<sys:store-identifier>SpacesStore</sys:store-identifier>
<sys:node-uuid>rm_scripts</sys:node-uuid>
<cm:name>Records Management Scripts</cm:name>
<cm:title>Records Management Scripts</cm:title>
<cm:description>Scripts intended for execution in response to RM events.</cm:description>
</view:properties>
<view:associations>
<cm:contains>
<!-- TODO Will likely remove this script. Here for test purposes.
Or perhaps replace it with a product-ready script -->
<cm:content view:childName="cm:rma_isClosed.js">
<view:aspects>
<cm:titled></cm:titled>
</view:aspects>
<view:properties>
<sys:store-protocol>workspace</sys:store-protocol>
<sys:store-identifier>SpacesStore</sys:store-identifier>
<cm:description>Records management sample script.</cm:description>
<cm:content>contentUrl=classpath:alfresco/module/org_alfresco_module_rm/bootstrap/content/rma_isClosed.js|mimetype=text/javascript|encoding=UTF-8</cm:content>
<cm:title>rma_isClosed.js</cm:title>
<cm:name>rma_isClosed.js</cm:name>
</view:properties>
</cm:content>
<cm:content view:childName="cm:onCreate_supersedes.js">
<view:aspects>
<cm:titled></cm:titled>
</view:aspects>
<view:properties>
<sys:store-protocol>workspace</sys:store-protocol>
<sys:store-identifier>SpacesStore</sys:store-identifier>
<cm:description>Records management sample script.</cm:description>
<cm:content>contentUrl=classpath:alfresco/module/org_alfresco_module_rm/bootstrap/content/onCreate_supersedes.js|mimetype=text/javascript|encoding=UTF-8</cm:content>
<cm:title>onCreate_supersedes.js</cm:title>
<cm:name>onCreate_supersedes.js</cm:name>
</view:properties>
</cm:content>
</cm:contains>
</view:associations>
</cm:folder>
<cm:folder view:childName="cm:records_management_email_templates">
<view:properties>
<sys:store-protocol>workspace</sys:store-protocol>
<sys:store-identifier>SpacesStore</sys:store-identifier>
<sys:node-uuid>records_management_email_templates</sys:node-uuid>
<cm:name>Records Management Email Templates</cm:name>
<cm:title>Records Management Email Templates</cm:title>
<cm:description>Email templates for records management.</cm:description>
</view:properties>
<view:associations>
<cm:contains>
<cm:content
view:childName="cm:notify-records-due-for-review-email.ftl">
<view:aspects>
<cm:titled></cm:titled>
<cm:author></cm:author>
<app:inlineeditable></app:inlineeditable>
<cm:versionable></cm:versionable>
</view:aspects>
<view:properties>
<app:editInline>
true
</app:editInline>
<cm:description>Email template for notify records due for review job.</cm:description>
<cm:content>contentUrl=classpath:alfresco/module/org_alfresco_module_rm/bootstrap/content/notify-records-due-for-review-email.ftl|mimetype=text/plain|size=|encoding=UTF-8|locale=en_US_</cm:content>
<cm:title>notify-records-due-for-review-email.ftl</cm:title>
<cm:author></cm:author>
<cm:name>notify-records-due-for-review-email.ftl</cm:name>
<cm:lastPatchUpdate>org_alfresco_module_rm_notificationTemplatePatch</cm:lastPatchUpdate>
</view:properties>
<view:associations></view:associations>
</cm:content>
<cm:content view:childName="cm:record-superseded-email.ftl">
<view:aspects>
<cm:titled></cm:titled>
<cm:author></cm:author>
<app:inlineeditable></app:inlineeditable>
<cm:versionable></cm:versionable>
</view:aspects>
<view:properties>
<sys:store-protocol>workspace</sys:store-protocol>
<sys:store-identifier>SpacesStore</sys:store-identifier>
<sys:node-uuid>record_superseded_template</sys:node-uuid>
<cm:description>Record superseded email template.</cm:description>
<cm:content>contentUrl=classpath:alfresco/module/org_alfresco_module_rm/bootstrap/content/record-superseded-email.ftl|mimetype=text/plain|encoding=UTF-8</cm:content>
<cm:title>record-superseded-email.ftl</cm:title>
<cm:name>record-superseded-email.ftl</cm:name>
<cm:lastPatchUpdate>org_alfresco_module_rm_notificationTemplatePatch</cm:lastPatchUpdate>
</view:properties>
</cm:content>
</cm:contains>
</view:associations>
</cm:folder>
<cm:modelName>{http://www.alfresco.org/model/rmcustom/1.0}rmcustom</cm:modelName>
<cm:modelDescription>Records Management Custom Model</cm:modelDescription>
<cm:modelAuthor>Alfresco</cm:modelAuthor>
<cm:modelVersion>1.0</cm:modelVersion>
<cm:modelActive>true</cm:modelActive>
</view:properties>
</cm:dictionaryModel>
<cm:folder view:childName="cm:records_management_scripts">
<view:properties>
<sys:store-protocol>workspace</sys:store-protocol>
<sys:store-identifier>SpacesStore</sys:store-identifier>
<sys:node-uuid>rm_scripts</sys:node-uuid>
<cm:name>Records Management Scripts</cm:name>
<cm:title>Records Management Scripts</cm:title>
<cm:description>Scripts intended for execution in response to RM events.</cm:description>
</view:properties>
<view:associations>
<cm:contains>
<!-- TODO Will likely remove this script. Here for test purposes.
Or perhaps replace it with a product-ready script -->
<cm:content view:childName="cm:rma_isClosed.js">
<view:aspects>
<cm:titled></cm:titled>
</view:aspects>
<view:properties>
<sys:store-protocol>workspace</sys:store-protocol>
<sys:store-identifier>SpacesStore</sys:store-identifier>
<cm:description>Records management sample script.</cm:description>
<cm:content>contentUrl=classpath:alfresco/module/org_alfresco_module_rm/bootstrap/content/rma_isClosed.js|mimetype=text/javascript|encoding=UTF-8</cm:content>
<cm:title>rma_isClosed.js</cm:title>
<cm:name>rma_isClosed.js</cm:name>
</view:properties>
</cm:content>
<cm:content view:childName="cm:onCreate_supersedes.js">
<view:aspects>
<cm:titled></cm:titled>
</view:aspects>
<view:properties>
<sys:store-protocol>workspace</sys:store-protocol>
<sys:store-identifier>SpacesStore</sys:store-identifier>
<cm:description>Records management sample script.</cm:description>
<cm:content>contentUrl=classpath:alfresco/module/org_alfresco_module_rm/bootstrap/content/onCreate_supersedes.js|mimetype=text/javascript|encoding=UTF-8</cm:content>
<cm:title>onCreate_supersedes.js</cm:title>
<cm:name>onCreate_supersedes.js</cm:name>
</view:properties>
</cm:content>
</cm:contains>
</view:associations>
</cm:folder>
<cm:folder view:childName="cm:records_management_email_templates">
<view:properties>
<sys:store-protocol>workspace</sys:store-protocol>
<sys:store-identifier>SpacesStore</sys:store-identifier>
<sys:node-uuid>records_management_email_templates</sys:node-uuid>
<cm:name>Records Management Email Templates</cm:name>
<cm:title>Records Management Email Templates</cm:title>
<cm:description>Email templates for records management.</cm:description>
</view:properties>
<view:associations>
<cm:contains>
<cm:content
view:childName="cm:notify-records-due-for-review-email.ftl">
<view:aspects>
<cm:titled></cm:titled>
<cm:author></cm:author>
<app:inlineeditable></app:inlineeditable>
<cm:versionable></cm:versionable>
</view:aspects>
<view:properties>
<app:editInline>
true
</app:editInline>
<cm:description>Email template for notify records due for review job.</cm:description>
<cm:content>contentUrl=classpath:alfresco/module/org_alfresco_module_rm/bootstrap/content/notify-records-due-for-review-email.ftl|mimetype=text/plain|size=|encoding=UTF-8|locale=en_US_</cm:content>
<cm:title>notify-records-due-for-review-email.ftl</cm:title>
<cm:author></cm:author>
<cm:name>notify-records-due-for-review-email.ftl</cm:name>
<cm:lastPatchUpdate>org_alfresco_module_rm_notificationTemplatePatch</cm:lastPatchUpdate>
</view:properties>
<view:associations></view:associations>
</cm:content>
<cm:content view:childName="cm:record-superseded-email.ftl">
<view:aspects>
<cm:titled></cm:titled>
<cm:author></cm:author>
<app:inlineeditable></app:inlineeditable>
<cm:versionable></cm:versionable>
</view:aspects>
<view:properties>
<sys:store-protocol>workspace</sys:store-protocol>
<sys:store-identifier>SpacesStore</sys:store-identifier>
<sys:node-uuid>record_superseded_template</sys:node-uuid>
<cm:description>Record superseded email template.</cm:description>
<cm:content>contentUrl=classpath:alfresco/module/org_alfresco_module_rm/bootstrap/content/record-superseded-email.ftl|mimetype=text/plain|encoding=UTF-8</cm:content>
<cm:title>record-superseded-email.ftl</cm:title>
<cm:name>record-superseded-email.ftl</cm:name>
<cm:lastPatchUpdate>org_alfresco_module_rm_notificationTemplatePatch</cm:lastPatchUpdate>
</view:properties>
</cm:content>
<cm:content view:childName="cm:record-rejected-email.ftl">
<view:aspects>
<cm:titled></cm:titled>
<cm:author></cm:author>
<app:inlineeditable></app:inlineeditable>
<cm:versionable></cm:versionable>
</view:aspects>
<view:properties>
<sys:store-protocol>workspace</sys:store-protocol>
<sys:store-identifier>SpacesStore</sys:store-identifier>
<sys:node-uuid>record_rejected_template</sys:node-uuid>
<cm:description>Record rejected email template.</cm:description>
<cm:content>contentUrl=classpath:alfresco/module/org_alfresco_module_rm/bootstrap/content/record-rejected-email.ftl|mimetype=text/plain|encoding=UTF-8</cm:content>
<cm:title>record-rejected-email.ftl</cm:title>
<cm:name>record-rejected-email.ftl</cm:name>
<cm:lastPatchUpdate>org_alfresco_module_rm_notificationTemplatePatch</cm:lastPatchUpdate>
</view:properties>
</cm:content>
</cm:contains>
</view:associations>
</cm:folder>
</cm:contains>
</view:associations>
</cm:folder>
</view:view>

View File

@@ -0,0 +1,120 @@
<html>
<head>
<style type="text/css"><!--
body
{
font-family: Arial, sans-serif;
font-size: 14px;
color: #4c4c4c;
}
a, a:visited
{
color: #0072cf;
}
--></style>
</head>
<body bgcolor="#dddddd">
<table width="100%" cellpadding="20" cellspacing="0" border="0" bgcolor="#dddddd">
<tr>
<td width="100%" align="center">
<table width="70%" cellpadding="0" cellspacing="0" bgcolor="white" style="background-color: white; border: 1px solid #aaaaaa;">
<tr>
<td width="100%">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td style="padding: 10px 30px 0px;">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td>
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td>
<img src="${shareUrl}/res/components/images/task-64.png" alt="" width="64" height="64" border="0" style="padding-right: 20px;" />
</td>
<td>
<div style="font-size: 22px; padding-bottom: 4px;">
Record has been rejected
</div>
<div style="font-size: 13px;">
${args.rejectDate?datetime?string.full}
</div>
</td>
</tr>
</table>
<div style="font-size: 14px; margin: 12px 0px 24px 0px; padding-top: 10px; border-top: 1px solid #aaaaaa;">
<p>Hello ${args.userName},</p>
<p>${args.rejectedPerson} has rejected the following record with this reason:</p>
<p>${args.rejectReason}</p>
<table cellpadding="0" callspacing="0" border="0" bgcolor="#eeeeee" style="padding:10px; border: 1px solid #aaaaaa;">
<tr>
<td>
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td valign="top">
<img src="${shareUrl}/res/rm/components/documentlibrary/images/record-64.png" alt="" width="64" height="64" border="0" style="padding-right: 10px;" />
</td>
<td>
<table cellpadding="2" cellspacing="0" border="0">
<tr>
<td><b>${args.record.properties["rma:identifier"]!} ${args.record.name}</b></td>
</tr>
<tr>
<td>Click on this link to view the record:</td>
</tr>
<tr>
<td>
<a href="${shareUrl}/page/site/${args.site}/document-details?nodeRef=${args.record.storeType}://${args.record.storeId}/${args.record.id}">
${shareUrl}/page/site/${args.site}/document-details?nodeRef=${args.record.storeType}://${args.record.storeId}/${args.record.id}</a>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
<tr><td><div style="border-top: 1px solid #aaaaaa; margin:12px;"></div></td></tr>
</table>
<p>Sincerely,<br />
Alfresco ${productName!""}</p>
</div>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td>
<div style="border-top: 1px solid #aaaaaa;">&nbsp;</div>
</td>
</tr>
<tr>
<td style="padding: 0px 30px; font-size: 13px;">
To find out more about Alfresco ${productName!""} visit <a href="http://www.alfresco.com">http://www.alfresco.com</a>
</td>
</tr>
<tr>
<td>
<div style="border-bottom: 1px solid #aaaaaa;">&nbsp;</div>
</td>
</tr>
<tr>
<td style="padding: 10px 30px;">
<img src="${shareUrl}/themes/default/images/app-logo.png" alt="" width="117" height="48" border="0" />
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</body>
</html>

View File

@@ -1,2 +1,3 @@
notification.dueforreview.subject=Records Due For Review Notification
notification.superseded.subject=Record Superseded Notification
notification.superseded.subject=Record Superseded Notification
notification.rejected.subject=Record Rejected Notification

View File

@@ -1101,7 +1101,7 @@
<property name="policyComponent" ref="policyComponent" />
<property name="dispositionService" ref="DispositionService" />
<property name="filePlanService" ref="FilePlanService" />
<property name="notificationService" ref="NotificationService"/>
<property name="notificationHelper" ref="recordsManagementNotificationHelper"/>
</bean>
<bean id="RecordService" class="org.springframework.aop.framework.ProxyFactoryBean">