This commit is contained in:
Roy Wetherall
2012-05-01 06:55:15 +00:00
505 changed files with 87002 additions and 0 deletions

53
ReadMe.txt Normal file
View File

@@ -0,0 +1,53 @@
== Alfresco Records Management - Development Environment Setup ==
Prerequisites
- Gradle 1.0 milestone 8a (optional unless native gradle support is required)
- Alfresco Repository 4.0.1 (or higher). Specifically you need the alfresco.war and share.war files.
- Any prerequisties required for an Alfresco installation, including Java 1.5, Tomcat and a suitable database.
NOTE: throughout these instructions we will use the 'gradlew' wrapper command. This wrapper command downloads the required Gradle libraries automatically. Should you prefer to use the native 'gradle' command instead you will need to install Gradle manually.
Initial Setup
- Checkout Records Management code from https://svn.alfresco.com/repos/alfresco-enterprise/modules/recordsmanagement/HEAD
Note: the RM branch structure reflects the main repository branch structure, so HEAD is the current development branch and BRACHES contains the release branches.
- Place the alfresco.war in the root of the rm-server directory and place the share.war in the root of the rm-share directory.
Note: building BRACHES/V4.0 will provide compatiable wars, alternatively a compatible build can be retrieved from bamboo.alfresco.com
- Run "gradlew amp" in root directory. This will unpack the dependancies, build the RM source and finally assemble the RM amps.
Note: the first execution of this task may take serveral minutes, because it will unpack the required build dependancies from the alfresco and share WAR. It will also pull any external dependancies from Maven or
- You will not find rm-server\build\dist\alfresco-rm-2.0.amp and rm-share\build\dist\alfresco-rm-share-2.0.amp ahve been built.
Using Eclipse
- Start Eclipse in the usual way.
Note: make sure the WAR dependancies have been exploded before opening Eclispe.
- Import projects found in rm-server and rm-share directories.
Deploying the RM AMPs
- Set the envoronment variables TOMCAT_HOME and APP_TOMCAT_HOME to the home directory of the repository and share Tomcat instances respectively.
NOTE: these can be the same tomcat instance, but it is recommended that two are used.
- Configure your repository Tomcat so that your repository.properties settings will be successfully picked up when Alfresco is started.
- Run "gradlew installAmp" in the root directory. This will use the MMT to apply the RM AMPs to the Alfresco and Share WARs respectively. The modified WARs will then be copied to the set Tomcat instances, cleaning any exisiting exploded WARs.
- Start Tomcat(s).
For users of the Alfresco DevEnv
- Create a normal project using "create-project".
- Manually check out RM code into the "code" directory as described above. Don't use the checkout script provided.
- The devEnv will automatically set the TOMCAT_HOME and APP_TOMCAT_HOME environment variables to point to the Tomcat instances created by the use-tomcat6 and use-app-tomcat6 scipts. Magic!
- You can use the dev-context.xml generated for you to configure the repository. Place it in <TOMCAT_HOME>/shared/alfresco/extension.
Summary Of Available Gradle Tasks
Note: All these tasks can be executed in the root directory or in either of the sub-project directories.
Note: Use the command "gradle <taskName>" when executing.
Note: The RM Gradle scripts import the standard "Java" package so those associated standard tasks are available, for example "jar", "compileJava", "clean", etc
- explodeDeps : checks for existance of the projects dependant WAR (either alfresco.war or share.war). If not already exploded, unpacks the required depedancies from the WAR files.
- cleanDeps : cleans the projects exploded dependancies.
- amp : builds the projects AMP and places it in build/dist.
- installAmp : installs the AMP into a copy of the projects dependant WAR using the MMT.
NOTE: the installed WAR can be found in build/dist.
- deployAmp : depolys the project AMP to the configured Tomcat instance.

293
build.gradle Normal file
View File

@@ -0,0 +1,293 @@
buildscript {
repositories {
flatDir {
dirs 'mmt'
}
}
dependencies {
classpath fileTree(dir: 'mmt', include: '*.jar')
}
}
task wrapper(type: Wrapper) {
gradleVersion = '1.0-milestone-8'
}
task packageBuild (dependsOn: [':rm-server:amp', ':rm-share:amp']) << {
distDir = file('dist')
if (distDir.exists() == false) {
distDir.mkdirs();
}
packageBaseName = "${groupid}-${packageName}-${version}-${build}"
packageZipFile = "${packageBaseName}.zip"
alfrescoAmp = "${project(':rm-server').name}/${project(':rm-server').buildDistDir}/${project(':rm-server').ampFile}"
shareAmp = "${project(':rm-share').name}/${project(':rm-share').buildDistDir}/${project(':rm-share').ampFile}"
ant.zip(destfile: "${distDir}/${packageZipFile}", update: 'true') {
ant.zipfileset(file: "${alfrescoAmp}")
ant.zipfileset(file: "${shareAmp}")
}
}
/** Subproject configuration */
subprojects {
apply plugin: 'java'
sourceCompatibility = 1.6
targetCompatibility = 1.6
explodedDepsDir = 'explodedDeps'
explodedLibsDir = "${explodedDepsDir}/lib"
explodedConfigDir = "${explodedDepsDir}/config"
buildDistDir = 'build/dist'
buildLibDir = 'build/libs'
sourceJavaDir = 'source/java'
sourceWebDir = 'source/web'
testJavaDir = 'test/java'
testResourceDir = 'test/resource'
configDir = 'config'
configModuleDir = "config/alfresco/module/${moduleid}"
moduleProperties = 'module.properties'
fileMapping = 'file-mapping.properties'
baseName = "${groupid}-${appName}-${version}-${build}"
jarFile = "${baseName}.jar"
ampFile = "${baseName}.amp"
tomcatRoot = System.getenv(tomcatEnv)
jarFilePath = "${buildLibDir}/${jarFile}"
sourceSets {
main {
java {
srcDir sourceJavaDir
}
}
test {
java {
srcDir testJavaDir
}
resources {
srcDir testResourceDir
}
}
}
repositories {
flatDir {
dirs explodedLibsDir
}
mavenCentral()
}
dependencies {
compile fileTree(dir: explodedLibsDir, include: '*.jar')
}
/** --- Compile tasks --- */
// make sure that the dependancies have been unpacked before compiling the Java
compileJava.doFirst {
explodeDeps.execute()
}
jar.archiveName = jarFile
/** --- Dependancy tasks --- */
task explodeDeps << {
explodedDir = file(explodedDepsDir)
explodedLibDir = file(explodedLibsDir)
explodedConfigDir = file("${explodedDepsDir}/config")
warFileObj = file(warFile)
if (warFileObj.exists() == true) {
logger.lifecycle "${warFile} was found. Checking dependancies ..."
if (explodedDir.exists() == false) {
println(" ... creating destination dir ${explodedDir}")
explodedDir.mkdir()
}
if (isUnpacked(explodedLibDir) == false) {
println(" ... unpacking libs into ${explodedLibDir}")
ant.unzip(src: warFileObj, dest: explodedLibDir) {
ant.patternset {
ant.include(name: 'WEB-INF/lib/*.jar')
}
ant.mapper(type: 'flatten')
}
}
if (isUnpacked(explodedConfigDir) == false) {
println(" ... unpacking config into ${explodedConfigDir}")
ant.unzip(src: warFileObj, dest: explodedDir) {
ant.patternset {
ant.include(name: 'WEB-INF/classes/**/*')
}
}
copy {
from "${explodedDir}/WEB-INF/classes"
into explodedConfigDir
}
// TODO understand why this doesn't delete the folder as expected
ant.delete(includeEmptyDirs: 'true') {
ant.fileset(dir: "${explodedDir}/WEB-INF", includes: '**/*')
}
}
}
else {
logger.error "Dependant WAR file ${warFile} can not be found. Please place it in ${warFileObj.getPath()} to continue."
throw new TaskInstantiationException("Dependant WAR file ${warFile} can not be found. Please place it in ${warFileObj.getPath()} to continue.")
}
}
task cleanDeps << {
ant.delete(includeEmptyDirs: 'true') {
ant.fileset(dir: explodedDepsDir, includes: '**/*')
}
}
/** --- AMP tasks --- */
task copyWar(type: Copy) {
from warFile
into buildDistDir
}
task amp(dependsOn: 'jar') << {
def jarFileObj = file(jarFilePath)
def configDirObj = file(configDir)
def sourceWebObj = file(sourceWebDir)
// assemble the AMP file
ant.zip(destfile: "${buildDistDir}/${ampFile}", update: 'true') {
ant.zipfileset(file: "${configModuleDir}/${moduleProperties}")
ant.zipfileset(file: "${configModuleDir}/${fileMapping}")
if (jarFileObj.exists()) {
logger.info("Adding ${jarFilePath} to ${ampFile} in /lib")
ant.zipfileset(file: jarFilePath, prefix: 'lib')
}
if (configDirObj.exists() == true) {
logger.info("Adding ${configDir} to ${ampFile} in /config")
ant.zipfileset(dir: configDir, prefix: 'config') {
ant.exclude(name: '**/' + moduleProperties)
ant.exclude(name: '**/' + fileMapping)
}
}
if (sourceWebObj.exists() == true) {
logger.info("Adding ${sourceWebDir} to ${ampFile} in /web")
ant.zipfileset(dir: sourceWebDir, prefix: 'web')
}
}
}
task deployExploded(dependsOn: 'jar') << {
def jarFileObj = file(jarFilePath)
def configDirObj = file(configDir)
def sourceWebObj = file(sourceWebDir)
explodedWebAppDir = new File("${tomcatRoot}/webapps/${webAppName}")
if (explodedWebAppDir.exists() == true) {
// copy module properties
// TODO but not so important for now
// copy jars
if (jarFileObj.exists()) {
copy {
from jarFilePath
into "${explodedWebAppDir}/WEB-INF/lib"
}
}
// copy config
if (configDirObj.exists() == true) {
copy {
from(configDir) {
exclude "**/${moduleProperties}"
exclude "**/${fileMapping}"
}
into "${explodedWebAppDir}/WEB-INF/classes"
}
}
// copy web
if (sourceWebObj.exists() == true) {
copy {
from sourceWebObj
into "${explodedWebAppDir}"
}
}
}
else {
println "Exploded webapp directory ${explodedWebAppDir} does not exist."
}
}
task installAmp(dependsOn: ['amp', 'copyWar']) << {
def warFileLocation = file("${buildDistDir}/${warFile}")
def ampFileLocation = file("${buildDistDir}/${ampFile}")
mmt = new org.alfresco.repo.module.tool.ModuleManagementTool()
mmt.setVerbose(true)
mmt.installModule(ampFileLocation.getPath(), warFileLocation.getPath(), false, true, false)
}
task cleanDeploy(type: Delete) {
delete "${tomcatRoot}/webapps/${webAppName}", "${tomcatRoot}/webapps/${warFile}"
}
task deployAmp(dependsOn: ['cleanDeploy', 'installAmp']) << {
tomcatRootDir = new File(tomcatRoot)
if (tomcatRootDir.exists() == true) {
// copy war
copy {
from "${buildDistDir}/${warFile}"
into "${tomcatRoot}/webapps"
}
}
else {
println "Tomcat root directory ${tomcatRoot} does not exist."
}
}
}
/** Utility function - indicates wether the provided dir is unpacked (ie exists and has some contents) */
Boolean isUnpacked(dir) {
if (dir.exists() == true && dir.list().length > 0) {
return true
}
else {
return false
}
}

4
gradle.properties Normal file
View File

@@ -0,0 +1,4 @@
groupid=alfresco
packageName=rm
version=2.0.0
build=1

BIN
gradle/wrapper/gradle-wrapper.jar vendored Normal file

Binary file not shown.

View File

@@ -0,0 +1,6 @@
#Wed Apr 04 12:27:15 EST 2012
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=http\://services.gradle.org/distributions/gradle-1.0-milestone-8-bin.zip

164
gradlew vendored Normal file
View File

@@ -0,0 +1,164 @@
#!/bin/bash
##############################################################################
##
## Gradle start up script for UN*X
##
##############################################################################
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS=""
APP_NAME="Gradle"
APP_BASE_NAME=`basename "$0"`
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD="maximum"
warn ( ) {
echo "$*"
}
die ( ) {
echo
echo "$*"
echo
exit 1
}
# OS specific support (must be 'true' or 'false').
cygwin=false
msys=false
darwin=false
case "`uname`" in
CYGWIN* )
cygwin=true
;;
Darwin* )
darwin=true
;;
MINGW* )
msys=true
;;
esac
# For Cygwin, ensure paths are in UNIX format before anything is touched.
if $cygwin ; then
[ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
fi
# Attempt to set APP_HOME
# Resolve links: $0 may be a link
PRG="$0"
# Need this for relative symlinks.
while [ -h "$PRG" ] ; do
ls=`ls -ld "$PRG"`
link=`expr "$ls" : '.*-> \(.*\)$'`
if expr "$link" : '/.*' > /dev/null; then
PRG="$link"
else
PRG=`dirname "$PRG"`"/$link"
fi
done
SAVED="`pwd`"
cd "`dirname \"$PRG\"`/"
APP_HOME="`pwd -P`"
cd "$SAVED"
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
# Determine the Java command to use to start the JVM.
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD="$JAVA_HOME/jre/sh/java"
else
JAVACMD="$JAVA_HOME/bin/java"
fi
if [ ! -x "$JAVACMD" ] ; then
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
else
JAVACMD="java"
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
# Increase the maximum file descriptors if we can.
if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
MAX_FD_LIMIT=`ulimit -H -n`
if [ $? -eq 0 ] ; then
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
MAX_FD="$MAX_FD_LIMIT"
fi
ulimit -n $MAX_FD
if [ $? -ne 0 ] ; then
warn "Could not set maximum file descriptor limit: $MAX_FD"
fi
else
warn "Could not query businessSystem maximum file descriptor limit: $MAX_FD_LIMIT"
fi
fi
# For Darwin, add options to specify how the application appears in the dock
if $darwin; then
JAVA_OPTS="$JAVA_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
fi
# For Cygwin, switch paths to Windows format before running java
if $cygwin ; then
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
# We build the pattern for arguments to be converted via cygpath
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
SEP=""
for dir in $ROOTDIRSRAW ; do
ROOTDIRS="$ROOTDIRS$SEP$dir"
SEP="|"
done
OURCYGPATTERN="(^($ROOTDIRS))"
# Add a user-defined pattern to the cygpath arguments
if [ "$GRADLE_CYGPATTERN" != "" ] ; then
OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
fi
# Now convert the arguments - kludge to limit ourselves to /bin/sh
i=0
for arg in "$@" ; do
CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
else
eval `echo args$i`="\"$arg\""
fi
i=$((i+1))
done
case $i in
(0) set -- ;;
(1) set -- "$args0" ;;
(2) set -- "$args0" "$args1" ;;
(3) set -- "$args0" "$args1" "$args2" ;;
(4) set -- "$args0" "$args1" "$args2" "$args3" ;;
(5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
(6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
(7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
(8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
(9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
esac
fi
# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
function splitJvmOpts() {
JVM_OPTS=("$@")
}
eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"

90
gradlew.bat vendored Normal file
View File

@@ -0,0 +1,90 @@
@if "%DEBUG%" == "" @echo off
@rem ##########################################################################
@rem
@rem Gradle startup script for Windows
@rem
@rem ##########################################################################
@rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocal
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS=
set DIRNAME=%~dp0
if "%DIRNAME%" == "" set DIRNAME=.
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome
set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if "%ERRORLEVEL%" == "0" goto init
echo.
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
:findJavaFromJavaHome
set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
if exist "%JAVA_EXE%" goto init
echo.
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
:init
@rem Get command-line arguments, handling Windowz variants
if not "%OS%" == "Windows_NT" goto win9xME_args
if "%@eval[2+2]" == "4" goto 4NT_args
:win9xME_args
@rem Slurp the command line arguments.
set CMD_LINE_ARGS=
set _SKIP=2
:win9xME_args_slurp
if "x%~1" == "x" goto execute
set CMD_LINE_ARGS=%*
goto execute
:4NT_args
@rem Get arguments from the 4NT Shell from JP Software
set CMD_LINE_ARGS=%$
:execute
@rem Setup the command line
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
@rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
:end
@rem End local scope for the variables with windows NT shell
if "%ERRORLEVEL%"=="0" goto mainEnd
:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
exit /b 1
:mainEnd
if "%OS%"=="Windows_NT" endlocal
:omega

BIN
mmt/alfresco-mmt-main.jar Normal file

Binary file not shown.

BIN
mmt/jug-asl-2.0.0.jar Normal file

Binary file not shown.

BIN
mmt/truezip.jar Normal file

Binary file not shown.

283
rm-server/.classpath Normal file
View File

@@ -0,0 +1,283 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="source/java"/>
<classpathentry kind="src" path="test/java"/>
<classpathentry kind="src" path="test/resources"/>
<classpathentry kind="src" path="explodedDeps/config"/>
<classpathentry kind="src" path="config"/>
<classpathentry exported="true" kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry exported="true" kind="lib" path="C:/Users/royw/.gradle/caches/artifacts-8/filestore/javax.servlet/servlet-api/2.5/jar/5959582d97d8b61f4d154ca9e495aafd16726e34/servlet-api-2.5.jar" sourcepath="C:/Users/royw/.gradle/caches/artifacts-8/filestore/javax.servlet/servlet-api/2.5/source/21599814ad9a605b86f3e6381571beccd861a32/servlet-api-2.5-sources.jar"/>
<classpathentry exported="true" kind="lib" path="C:/Users/royw/.gradle/caches/artifacts-8/filestore/org.springframework/spring-test/2.5/jar/af084e37cf532fbdd15da44e400930d0f8fbf52f/spring-test-2.5.jar" sourcepath="C:/Users/royw/.gradle/caches/artifacts-8/filestore/org.springframework/spring-test/2.5/source/a2bbfbf1ac87047202c49c8da06bdb48eaf6ffe0/spring-test-2.5-sources.jar"/>
<classpathentry exported="true" kind="lib" path="C:/Users/royw/.gradle/caches/artifacts-8/filestore/commons-logging/commons-logging/1.1/jar/ba24d5de831911b684c92cd289ed5ff826271824/commons-logging-1.1.jar" sourcepath="C:/Users/royw/.gradle/caches/artifacts-8/filestore/commons-logging/commons-logging/1.1/source/5c2bd34c9a05067c72dcf08cd248630561a9c852/commons-logging-1.1-sources.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/abdera-client-0.4.0-incubating.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/abdera-core-0.4.0-incubating.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/abdera-extensions-json-0.4.0-incubating.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/abdera-i18n-0.4.0-incubating.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/abdera-parser-0.4.0-incubating.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/acegi-security-0.8.2_patched.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/activation-1.1.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/activiti-engine-5.7.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/activiti-spring-5.7.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/addressing-1.0.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/alfresco-core-4.0.d.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/alfresco-data-model-4.0.d.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/alfresco-deployment-4.0.d.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/alfresco-jlan-embed-4.0.d.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/alfresco-mbeans-4.0.d.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/alfresco-opencmis-extension-0.2.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/alfresco-remote-api-4.0.d.jar" sourcepath="C:/mywork/projects/v4/code/root/projects/remote-api/source/java"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/alfresco-repository-4.0.d.jar" sourcepath="C:/mywork/projects/v4/code/root/projects/repository/source/java"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/alfresco-wdr-deployment.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/alfresco-web-client-4.0.d.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/alfresco-web-framework-commons-4.0.d.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/ant-1.7.1.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/antlr-3.3-complete.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/aopalliance.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/apache-mime4j-0.6.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/apache-solr-solrj-1.4.1.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/asm-3.1.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/avalon-framework-4.2.0.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/axiom-api-1.2.5.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/axiom-impl-1.2.5.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/axis-1.4.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/batik-all-1.6.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/bcel.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/bcmail-jdk15-1.45.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/bcprov-jdk15-1.45.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/bliki-3.0.2.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/boilerpipe-1.1.0.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/bsf-2.4.0.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/bsh-1.3.0.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/cglib-2.2.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/chemistry-abdera-0.1-incubating-SNAPSHOT.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/chemistry-opencmis-client-api-0.6.0.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/chemistry-opencmis-client-bindings-0.6.0.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/chemistry-opencmis-client-impl-0.6.0.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/chemistry-opencmis-commons-api-0.6.0.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/chemistry-opencmis-commons-impl-0.6.0.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/chemistry-opencmis-server-bindings-0.6.0.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/chemistry-opencmis-server-support-0.6.0.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/chemistry-opencmis-test-browser-0.6.0.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/chemistry-opencmis-test-tck-0.6.0.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/chemistry-tck-atompub-0.1-incubating-SNAPSHOT.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/chiba-1.3.0-patched.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/commons-beanutils-1.7.0.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/commons-codec-1.4.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/commons-collections-3.1.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/commons-compress-1.1.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/commons-csv-20110211.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/commons-dbcp-1.4-patched.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/commons-digester-1.6.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/commons-discovery-0.2.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/commons-el.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/commons-fileupload-1.2.1.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/commons-httpclient-3.1.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/commons-io-1.4.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/commons-jxpath-1.2.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/commons-lang-2.6.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/commons-logging-1.1.1.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/commons-modeler.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/commons-net-2.2.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/commons-pool-1.5.5.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/commons-validator-1.4.0.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/concurrentlinkedhashmap-lru-1.2.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/cxf-2.2.2-patched.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/dom4j-1.6.1.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/drew-image-metadata-extractor-2.4.0-beta-1.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/ehcache-core-2.0.0.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/facebook_070716.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/FastInfoset-1.2.2.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/fontbox-1.6.0.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/fop-0.94.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/freemarker-2.3.18-patched.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/gdata-analytics-2.1.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/gdata-analytics-meta-2.1.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/gdata-appsforyourdomain-1.0.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/gdata-appsforyourdomain-meta-1.0.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/gdata-base-1.0.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/gdata-blogger-2.0.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/gdata-blogger-meta-2.0.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/gdata-books-1.0.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/gdata-books-meta-1.0.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/gdata-calendar-2.0.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/gdata-calendar-meta-2.0.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/gdata-client-1.0.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/gdata-client-meta-1.0.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/gdata-codesearch-2.0.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/gdata-codesearch-meta-2.0.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/gdata-contacts-3.0.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/gdata-contacts-meta-3.0.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/gdata-core-1.0.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/gdata-docs-3.0.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/gdata-docs-meta-3.0.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/gdata-finance-2.0.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/gdata-finance-meta-2.0.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/gdata-gtt-2.0.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/gdata-gtt-meta-2.0.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/gdata-health-2.0.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/gdata-health-meta-2.0.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/gdata-maps-2.0.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/gdata-maps-meta-2.0.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/gdata-media-1.0.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/gdata-photos-2.0.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/gdata-photos-meta-2.0.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/gdata-projecthosting-2.1.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/gdata-projecthosting-meta-2.1.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/gdata-sidewiki-2.0.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/gdata-sidewiki-meta-2.0.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/gdata-sites-2.0.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/gdata-sites-meta-2.0.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/gdata-spreadsheet-3.0.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/gdata-spreadsheet-meta-3.0.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/gdata-webmastertools-2.0.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/gdata-webmastertools-meta-2.0.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/gdata-youtube-2.0.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/gdata-youtube-meta-2.0.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/geronimo-activation_1.1_spec-1.0.2.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/geronimo-annotation_1.0_spec-1.1.1.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/geronimo-jaxws_2.1_spec-1.0.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/geronimo-stax-api_1.0_spec-1.0.1.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/geronimo-ws-metadata_2.0_spec-1.1.2.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/google-collect-1.0.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/greenmail-1.3-patched.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/groovy-1.7.5.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/guessencoding-1.0.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/hazelcast-1.9.4.6.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/hazelcast-spring-1.9.4.6.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/hibernate-3.2.6-patched.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/hrtlib.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/htmlparser-1.6.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/httpclient-4.1.1.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/httpclient-cache-4.1.1.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/httpcore-4.1.3.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/icu4j_3_6_1.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/isoparser-1.0-beta-5.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/jackson-core-asl-1.8.3.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/jackson-mapper-asl-1.8.3.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/jakarta-oro-2.0.8.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/javassist-3.6.0.GA.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/jaxb-api-2.1.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/jaxb-impl-2.1.11.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/jaxb-xjc-2.1.7.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/jaxen-1.1-beta-8.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/jaxrpc.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/jaxws-api-2.1.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/jaxws-rt-2.1.7.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/jbpm-identity-3.3.1.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/jbpm-jpdl-3.3.1.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/jcr-1.0.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/jempbox-1.6.0.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/jgroups-2.11.1.Final.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/jibx-bind.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/jibx-run.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/jid3lib-0.5.4.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/JMagick.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/joda-time-1.2.1.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/jooconverter-2.1.0.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/JSlideShare-0.6.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/json-simple-1.1.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/json.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/jsr107cache-1.0.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/jsr181-api-1.0-MR1.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/jsr250-api-1.0.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/jstl-1.1.0.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/jta.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/jtds-1.2.5.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/jug-asl-2.0.0.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/junit-4.8.1.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/jut.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/jutf7-1.0.0.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/livetribe-jsr223-2.0.6.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/log4j-1.2.15.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/lucene-analyzers-2.4.1.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/lucene-core-2.4.1.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/lucene-regex-2.4.1.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/lucene-snowball-2.4.1.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/mail.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/mimepull-1.3.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/mockito-all-1.8.0.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/mybatis-3.0.4-patched.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/mybatis-spring-1.0.1.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/myfaces-api-1.1.8.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/myfaces-impl-1.1.8.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/neethi-2.0.4.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/netcdf-4.2.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/odmg-3.0.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/ooxml-schemas-1.1.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/openoffice-juh-3.1.0.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/openoffice-jurt-3.1.0.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/openoffice-ridl-3.1.0.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/openoffice-sandbox-2.0.3.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/openoffice-unoil-3.1.0.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/opensaml-1.0.1.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/org.springframework.aop-3.0.5.RELEASE.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/org.springframework.asm-3.0.5.RELEASE.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/org.springframework.beans-3.0.5.RELEASE.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/org.springframework.context-3.0.5.RELEASE.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/org.springframework.context.support-3.0.5.RELEASE.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/org.springframework.core-3.0.5.RELEASE.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/org.springframework.expression-3.0.5.RELEASE.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/org.springframework.jdbc-3.0.5.RELEASE.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/org.springframework.orm-3.0.5.RELEASE.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/org.springframework.transaction-3.0.5.RELEASE.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/org.springframework.web-3.0.5.RELEASE.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/org.springframework.web.servlet-3.0.5.RELEASE.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/pdfbox-1.6.0.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/PDFRenderer-0.9.1.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/poi-3.8-beta6-20120124.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/poi-ooxml-3.8-beta6-20120124.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/poi-scratchpad-3.8-beta6-20120124.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/quartz-1.8.3-patched.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/resolver-20050927.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/rhino-js-1.6R7.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/rome-0.9.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/saxpath.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/scannotation-1.0.2.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/shale-test-1.0.4.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/slf4j-api-1.5.11.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/slf4j-log4j12-1.5.11.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/spring-cmis-framework-1.0.0.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/spring-security-core-3.1.0.RC2.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/spring-social-core-1.0.0.RC1.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/spring-social-facebook-1.0.0.RC1.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/spring-social-facebook-web-1.0.0.RC1.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/spring-social-linkedin-1.0.0.BUILD-SNAPSHOT.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/spring-social-test-1.0.0.RC1.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/spring-social-twitter-1.0.0.RC1.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/spring-social-web-1.0.0.RC1.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/spring-surf-1.0.0.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/spring-surf-api-1.0.0.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/spring-surf-core-1.0.0.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/spring-surf-core-configservice-1.0.0.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/spring-webscripts-1.0.0.jar" sourcepath="C:/mywork/projects/v4/code/root/projects/3rd-party/src/spring-webscripts-1.0.0-sources.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/spring-webscripts-api-1.0.0.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/springmodules-jbpm31.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/standard.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/stax-api-1.0.1.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/stax-ex-1.2.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/stax-utils-20060502.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/streambuffer-0.9.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/subethasmtp-3.1.6.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/tagsoup-1.2.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/tika-core-1.1-20120208.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/tika-parsers-1.1-20120208.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/truezip.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/urlrewritefilter-3.1.0.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/vorbis-java-core-0.1.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/vorbis-java-tika-0.1.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/wsdl4j-1.6.2.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/wss4j-1.5.4-patched.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/wstx-asl-3.2.4.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/xercesImpl-2.8.0.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/xml-resolver-1.2.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/xmlbeans-2.3.0.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/xmlgraphics-commons-1.2.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/xmlrpc.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/XmlSchema-1.4.5.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/xmlsec-1.4.1.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/xpp3-1.1.3_8.jar"/>
<classpathentry exported="true" kind="lib" path="C:/mywork/projects/rmhead/code/rm-server/explodedDeps/lib/xstream-1.2.2.jar"/>
<classpathentry kind="lib" path="libs/spring-webscripts-1.0.0-tests.jar"/>
<classpathentry kind="lib" path="libs/postgresql-9.0-801.jdbc4.jar"/>
<classpathentry kind="output" path="build/classes"/>
</classpath>

16
rm-server/.project Normal file
View File

@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>rm-server</name>
<comment/>
<projects/>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments/>
</buildCommand>
</buildSpec>
<linkedResources/>
</projectDescription>

View File

@@ -0,0 +1,12 @@
#Fri Mar 23 15:41:37 EST 2012
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
org.eclipse.jdt.core.compiler.compliance=1.6
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.source=1.6

23
rm-server/build.gradle Normal file
View File

@@ -0,0 +1,23 @@
dependencies {
compile fileTree(dir: 'libs', include: '*.jar')
compile 'javax.servlet:servlet-api:2.5'
testCompile 'org.springframework:spring-test:2.5'
testRuntime files(explodedConfigDir)
testRuntime files(configDir)
}
test {
//makes the standard streams (err and out) visible at console when running tests
testLogging.showStandardStreams = true
//tweaking memory settings for the forked vm that runs tests
jvmArgs '-Xms256M', '-Xmx1024M', '-XX:MaxPermSize=256M'
//listening to test execution events
beforeTest { descriptor ->
logger.lifecycle("Running test: " + descriptor)
}
}

View File

@@ -0,0 +1,19 @@
# Enable ghosting of records on deletion
rm.ghosting.enabled=true
# Notification configuration
rm.notification.role=RecordsManager
# NOTE: the notification subject can now be set within the usual I18N property files per notification template
#
# Turn off imap server attachments if we are using RM.
# TODO : Longer term needs to have a query based, dynamic
# exclusion for RM sites.
#
imap.server.attachments.extraction.enabled=false
#
# Enable auditing
#
audit.enabled=true
audit.rm.enabled=true

View File

@@ -0,0 +1,90 @@
<?xml version='1.0' encoding='UTF-8'?>
<!-- Default Audit Configuration -->
<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 alfresco-audit-3.2.xsd"
>
<DataExtractors>
<DataExtractor name="simpleValue" registeredName="auditModel.extractor.simpleValue"/>
<DataExtractor name="nullValue" registeredName="auditModel.extractor.nullValue"/>
<DataExtractor name="nodeName" registeredName="auditModel.extractor.nodeName"/>
<DataExtractor name="nodeType" registeredName="auditModel.extractor.nodeType"/>
<DataExtractor name="userRoles" registeredName="org_alfresco_module_rm_userRolesExtractor"/>
<DataExtractor name="namePath" registeredName="org_alfresco_module_rm_namePathExtractor"/>
<DataExtractor name="nodeRefPath" registeredName="org_alfresco_module_rm_nodeRefPathExtractor"/>
<DataExtractor name="nodeIdentifier" registeredName="org_alfresco_module_rm_identifierExtractor"/>
</DataExtractors>
<DataGenerators>
<DataGenerator name="personFullName" registeredName="auditModel.generator.personFullName"/>
</DataGenerators>
<PathMappings>
<PathMap source="/RM" target="/RM"/>
<!-- Force the fullName generator to trigger -->
<PathMap source="/RM/event/node" target="/RM/event/person"/>
<PathMap source="/alfresco-api/post/AuthenticationService/authenticate" target="/RM/login"/>
</PathMappings>
<Application name="RM" key="RM">
<AuditPath key="event">
<!-- Record user details -->
<AuditPath key="person">
<RecordValue key="roles" dataExtractor="userRoles"/>
<GenerateValue key="fullName" dataGenerator="personFullName"/>
</AuditPath>
<!-- Record a description of the event -->
<AuditPath key="name">
<RecordValue key="value" dataExtractor="simpleValue"/>
</AuditPath>
<!-- Record the node's details -->
<AuditPath key="node">
<RecordValue key="noderef" dataExtractor="simpleValue"/>
<RecordValue key="name" dataExtractor="nodeName"/>
<RecordValue key="type" dataExtractor="nodeType"/>
<RecordValue key="namePath" dataExtractor="namePath"/>
<RecordValue key="nodeRefPath" dataExtractor="nodeRefPath"/>
<RecordValue key="identifier" dataExtractor="nodeIdentifier"/>
<AuditPath key="changes">
<AuditPath key="before">
<RecordValue key="value" dataExtractor="simpleValue"/>
</AuditPath>
<AuditPath key="after">
<RecordValue key="value" dataExtractor="simpleValue"/>
</AuditPath>
</AuditPath>
</AuditPath>
<!--
RM action parameters
* Keyed by action name to be more selective
* Only record the parameters if they are of interest
-->
<!-- A test action -->
<AuditPath key="testAction">
<AuditPath key="parameters">
<AuditPath key="testActionParam">
<RecordValue key="value" dataExtractor="simpleValue"/>
</AuditPath>
</AuditPath>
</AuditPath>
</AuditPath>
<AuditPath key="login">
<AuditPath key="args">
<AuditPath key="userName">
<RecordValue key="value" dataExtractor="simpleValue"/>
</AuditPath>
</AuditPath>
<AuditPath key="no-error">
<GenerateValue key="fullName" dataGenerator="personFullName"/>
</AuditPath>
<AuditPath key="error">
<RecordValue key="value" dataExtractor="nullValue"/>
</AuditPath>
</AuditPath>
</Application>
</Audit>

View File

@@ -0,0 +1,177 @@
<?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"
xmlns:rma="http://www.alfresco.org/model/recordsmanagement/1.0"
xmlns:custom="custom.model"
xmlns="" >
<cm:folder view:childName="cm:records_management">
<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>
<cm:name>Records Management</cm:name>
<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>
<sys:store-protocol>workspace</sys:store-protocol>
<sys:store-identifier>SpacesStore</sys:store-identifier>
<sys:node-uuid>rm_event_config</sys:node-uuid>
<cm:description>Records management event configuration.</cm:description>
<cm:content>contentUrl=classpath:alfresco/module/org_alfresco_module_rm/bootstrap/content/rmEventConfigBootstrap.json|mimetype=text/plain|encoding=UTF-8</cm:content>
<cm:title>rm_event_config.json</cm:title>
<cm:name>rm_event_config.json</cm:name>
</view:properties>
</cm:content>
<cm:dictionaryModel view:childName="cm:recordsCustomModel.xml">
<view:aspects>
<cm:titled></cm:titled>
</view:aspects>
<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>
<cm:description>Records Management Custom Model</cm:description>
<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}rmc</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:contains>
</view:associations>
</cm:folder>
</view:view>

View File

@@ -0,0 +1,124 @@
<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;">
Records due for review.
</div>
<div style="font-size: 13px;">
${date?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>Hi,</p>
<p>The following records are now due for review:</p>
<#if (args.records)??>
<table cellpadding="0" callspacing="0" border="0" bgcolor="#eeeeee" style="padding:10px; border: 1px solid #aaaaaa;">
<#list args.records as record>
<tr>
<td>
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td valign="top">
<img src="${shareUrl}/res/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>${record.properties["rma:identifier"]!} ${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=${record.storeType}://${record.storeId}/${record.id}">
${shareUrl}/page/site/${args.site}/document-details?nodeRef=${record.storeType}://${record.storeId}/${record.id}</a>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
<#if record_has_next>
<tr><td><div style="border-top: 1px solid #aaaaaa; margin:12px;"></div></td></tr>
</#if>
</#list>
</table>
</#if>
<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

@@ -0,0 +1,15 @@
/**
* Main entrypoint for script.
*
* @method main
*/
function main()
{
// Log debug message
logger.log("Record " + node.name + " has been superseded. Sending notification");
// Send notification
rmService.sendSupersededNotification(node);
}
main();

View File

@@ -0,0 +1,118 @@
<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;">
Superseded record.
</div>
<div style="font-size: 13px;">
${date?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>Hi,</p>
<p>The following record been superseded:</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/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

@@ -0,0 +1,159 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Definition of Records Management Model -->
<!-- Note: the rmc: namespace is defined further on in the document -->
<model name="rmc:rmcustom" xmlns="http://www.alfresco.org/model/dictionary/1.0">
<!-- Meta-data about the model -->
<description>Records Management Custom Model</description>
<author>Alfresco</author>
<version>1.0</version>
<!-- Imports are required to allow references to definitions in other models -->
<imports>
<!-- Import Alfresco Records Management Definitions -->
<import uri="http://www.alfresco.org/model/recordsmanagement/1.0" prefix="rma"/>
<!-- Import Alfresco Dictionary Definitions -->
<import uri="http://www.alfresco.org/model/dictionary/1.0" prefix="d"/>
<!-- Import Alfresco Content Domain Model Definitions -->
<import uri="http://www.alfresco.org/model/content/1.0" prefix="cm"/>
<!-- Import Alfresco Content Domain Model Definitions -->
<import uri="http://www.alfresco.org/model/system/1.0" prefix="sys" />
</imports>
<!-- Records Management Custom Models Namespace -->
<namespaces>
<namespace uri="http://www.alfresco.org/model/rmcustom/1.0" prefix="rmc"/>
</namespaces>
<constraints>
<!-- Note: intentionally empty list of values - allowed values can be added/updated dynamically -->
<constraint name="rmc:smList" type="org.alfresco.module.org_alfresco_module_rm.caveat.RMListOfValuesConstraint">
<title>Supplemental Markings</title>
<parameter name="allowedValues">
<list>
</list>
</parameter>
<parameter name="caseSensitive"><value>true</value></parameter>
</constraint>
<!-- Note: intentionally empty list of values - allowed values can be added/updated dynamically -->
<constraint name="rmc:tlList" type="org.alfresco.module.org_alfresco_module_rm.caveat.RMListOfValuesConstraint">
<title>Transfer Locations</title>
<parameter name="allowedValues">
<list>
</list>
</parameter>
<parameter name="caseSensitive"><value>true</value></parameter>
</constraint>
</constraints>
<aspects>
<aspect name="rmc:customSupplementalMarkingList">
<properties>
<property name="rmc:supplementalMarkingList">
<title>Supplemental Marking List</title>
<type>d:text</type>
<mandatory>false</mandatory>
<multiple>true</multiple>
<constraints>
<constraint ref="rmc:smList"/>
</constraints>
</property>
</properties>
</aspect>
<aspect name="rmc:customAssocs">
<title>Records Management Custom Associations</title>
<associations>
<child-association name="rmc:supersedes">
<title>SupersededBy__Supersedes</title>
<source>
<mandatory>false</mandatory>
<many>true</many>
</source>
<target>
<class>rma:record</class>
<mandatory>false</mandatory>
<many>true</many>
</target>
</child-association>
<child-association name="rmc:obsoletes">
<title>ObsoletedBy__Obsoletes</title>
<source>
<mandatory>false</mandatory>
<many>true</many>
</source>
<target>
<class>rma:record</class>
<mandatory>false</mandatory>
<many>true</many>
</target>
</child-association>
<child-association name="rmc:versions">
<title>VersionedBy__Versions</title>
<source>
<mandatory>false</mandatory>
<many>true</many>
</source>
<target>
<class>rma:record</class>
<mandatory>false</mandatory>
<many>true</many>
</target>
</child-association>
<child-association name="rmc:supports">
<title>Supporting Documentation__Supported Documentation</title>
<source>
<mandatory>false</mandatory>
<many>true</many>
</source>
<target>
<class>rma:record</class>
<mandatory>false</mandatory>
<many>true</many>
</target>
</child-association>
<association name="rmc:crossreference">
<title>Cross-Reference</title>
<source>
<mandatory>false</mandatory>
<many>true</many>
</source>
<target>
<class>rma:record</class>
<mandatory>false</mandatory>
<many>true</many>
</target>
</association>
<association name="rmc:rendition">
<title>Rendition</title>
<source>
<mandatory>false</mandatory>
<many>true</many>
</source>
<target>
<class>rma:record</class>
<mandatory>false</mandatory>
<many>true</many>
</target>
</association>
</associations>
</aspect>
</aspects>
</model>

View File

@@ -0,0 +1,71 @@
{
"events" :
[
{
"eventType" : "rmEventType.simple",
"eventName" : "case_closed",
"eventDisplayLabel" : "Case Closed"
},
{
"eventType" : "rmEventType.simple",
"eventName" : "abolished",
"eventDisplayLabel" : "Abolished"
},
{
"eventType" : "rmEventType.simple",
"eventName" : "re_designated",
"eventDisplayLabel" : "Redesignated"
},
{
"eventType" : "rmEventType.simple",
"eventName" : "no_longer_needed",
"eventDisplayLabel" : "No longer needed"
},
{
"eventType" : "rmEventType.superseded",
"eventName" : "superseded",
"eventDisplayLabel" : "Superseded"
},
{
"eventType" : "rmEventType.simple",
"eventName" : "study_complete",
"eventDisplayLabel" : "Study Complete"
},
{
"eventType" : "rmEventType.simple",
"eventName" : "training_complete",
"eventDisplayLabel" : "Training Complete"
},
{
"eventType" : "rmEventType.crossReferencedRecordTransfered",
"eventName" : "related_record_trasfered_inactive_storage",
"eventDisplayLabel" : "Related Record Transfered To Inactive Storage"
},
{
"eventType" : "rmEventType.obsolete",
"eventName" : "obsolete",
"eventDisplayLabel" : "Obsolete"
},
{
"eventType" : "rmEventType.simple",
"eventName" : "all_allowances_granted_are_terminated",
"eventDisplayLabel" : "All Allowances Granted Are Terminated"
},
{
"eventType" : "rmEventType.simple",
"eventName" : "WGI_action_complete",
"eventDisplayLabel" : "WGI action complete"
},
{
"eventType" : "rmEventType.simple",
"eventName" : "separation",
"eventDisplayLabel" : "Separation"
},
{
"eventType" : "rmEventType.simple",
"eventName" : "case_complete",
"eventDisplayLabel" : "Case Complete"
}
]
}

View File

@@ -0,0 +1,12 @@
/**
* Main entrypoint for script.
* This sample script simply echoes the name of the node with the changed property.
*
* @method main
*/
function main()
{
logger.log("Sample RM script. No-op run on node " + node.name);
}
main();

View File

@@ -0,0 +1,20 @@
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://www.springframework.org/dtd/spring-beans.dtd'>
<beans>
<!-- Bootstrap Records Management Models -->
<bean id="org_alfresco_module_dod5015_dod5015dictionaryBootstrap" parent="dictionaryModelBootstrap" depends-on="dictionaryBootstrap">
<property name="models">
<list>
<value>alfresco/module/org_alfresco_module_rm/dod5015/dod5015Model.xml</value>
</list>
</property>
<property name="labels">
<list>
<value>alfresco/module/org_alfresco_module_rm/dod5015/dod5015-model</value>
</list>
</property>
</bean>
</beans>

View File

@@ -0,0 +1,82 @@
dod_dod5015.description=DOD5015 Content Model
dod_dod5015.type.dod_filePlan.title=File Plan
dod_dod5015.type.dod_filePlan.description=File Plan
dod_dod5015.type.dod_recordSeries.title=Record Series
dod_dod5015.type.dod_recordSeries.description=Record Series
dod_dod5015.type.dod_recordCategory.title=Record Category
dod_dod5015.type.dod_recordCategory.description=Record Category
dod_dod5015.aspect.dod_scannedRecord.title=Scanned Record
dod_dod5015.aspect.dod_scannedRecord.description=Scanned Record
dod_dod5015.property.dod_scannedFormat.title=Image Format
dod_dod5015.property.dod_scannedFormat.description=Image Format
dod_dod5015.property.dod_scannedFormatVersion.title=Image Format and Version
dod_dod5015.property.dod_scannedFormatVersion.description=Image Format and Version
dod_dod5015.property.dod_resolutionX.title=Image Resolution X
dod_dod5015.property.dod_resolutionX.description=Image Resolution X
dod_dod5015.property.dod_resolutionY.title=Image Resolution Y
dod_dod5015.property.dod_resolutionY.description=Image Resolution Y
dod_dod5015.property.dod_scannedBitDepth.title=Scanned Bit Depth
dod_dod5015.property.dod_scannedBitDepth.description=Scanned Bit Depth
dod_dod5015.aspect.dod_pdfRecord.title=PDF Record
dod_dod5015.aspect.dod_pdfRecord.description=PDF Record
dod_dod5015.property.dod_producingApplication.title=Producing Application
dod_dod5015.property.dod_producingApplication.description=Producing Application
dod_dod5015.property.dod_producingApplicationVersion.title=Producing Application Version
dod_dod5015.property.dod_producingApplicationVersion.description=Producing Application Version
dod_dod5015.property.dod_pdfVersion.title=PDF Version
dod_dod5015.property.dod_pdfVersion.description=PDF Version
dod_dod5015.property.dod_creatingApplication.title=Creating Application
dod_dod5015.property.dod_creatingApplication.description=Creating Application
dod_dod5015.property.dod_documentSecuritySettings.title=Document Security Settings
dod_dod5015.property.dod_documentSecuritySettings.description=Document Security Settings
dod_dod5015.aspect.dod_digitalPhotographRecord.title=Digital Photograph Record
dod_dod5015.aspect.dod_digitalPhotographRecord.description=Digital Photograph Record
dod_dod5015.property.dod_caption.title=Caption
dod_dod5015.property.dod_caption.description=Caption
dod_dod5015.property.dod_photographer.title=Photographer
dod_dod5015.property.dod_photographer.description=Photographer
dod_dod5015.property.dod_copyright.title=Copyright
dod_dod5015.property.dod_copyright.description=Copyright
dod_dod5015.property.dod_bitDepth.title=Bit Depth
dod_dod5015.property.dod_bitDepth.description=Bit Depth
dod_dod5015.property.dod_imageSizeX.title=Image Size X
dod_dod5015.property.dod_imageSizeX.description=Image Size X
dod_dod5015.property.dod_imageSizeY.title=Image Size Y
dod_dod5015.property.dod_imageSizeY.description=Image Size Y
dod_dod5015.property.dod_imageSource.title=Image Source
dod_dod5015.property.dod_imageSource.description=Image Source
dod_dod5015.property.dod_compression.title=Compression
dod_dod5015.property.dod_compression.description=Compression
dod_dod5015.property.dod_iccIcmProfile.title=ICC/ICM Profile
dod_dod5015.property.dod_iccIcmProfile.description=ICC/ICM Profile
dod_dod5015.property.dod_exifInformation.title=EXIF Information
dod_dod5015.property.dod_exifInformation.description=EXIF Information
dod_dod5015.aspect.dod_webRecord.title=Web Record
dod_dod5015.aspect.dod_webRecord.description=Web Record
dod_dod5015.property.dod_webFileName.title=Web File Name
dod_dod5015.property.dod_webFileName.description=Web File Name
dod_dod5015.property.dod_webPlatform.title=Web Platform
dod_dod5015.property.dod_webPlatform.description=Web Platform
dod_dod5015.property.dod_webSiteName.title=Web Site Name
dod_dod5015.property.dod_webSiteName.description=Web Site Name
dod_dod5015.property.dod_webSiteURL.title=Web Site URL
dod_dod5015.property.dod_webSiteURL.description=Web Site URL
dod_dod5015.property.dod_captureMethod.title=Capture Method
dod_dod5015.property.dod_captureMethod.description=Capture Method
dod_dod5015.property.dod_captureDate.title=Capture Date
dod_dod5015.property.dod_captureDate.description=Capture Date
dod_dod5015.property.dod_contact.title=Contact
dod_dod5015.property.dod_contact.description=Contact
dod_dod5015.property.dod_contentManagementSystem.title=Content Management System
dod_dod5015.property.dod_contentManagementSystem.description=Content Management System
dod_dod5015.aspect.dod_ghosted.title=Ghosted Record
dod_dod5015.aspect.dod_ghosted.description=Ghosted Record

View File

@@ -0,0 +1,344 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Definition of DOD 5015 Model -->
<model name="dod:dod5015" xmlns="http://www.alfresco.org/model/dictionary/1.0">
<!-- Meta-data about the model -->
<description>DOD 5015 Model</description>
<author>Roy Wetherall</author>
<version>1.0</version>
<!-- Imports are required to allow references to definitions in other models -->
<imports>
<!-- Import Alfresco Dictionary Definitions -->
<import uri="http://www.alfresco.org/model/dictionary/1.0" prefix="d"/>
<!-- Import Alfresco Content Domain Model Definitions -->
<import uri="http://www.alfresco.org/model/content/1.0" prefix="cm"/>
<!-- Import Alfresco Content Domain Model Definitions -->
<import uri="http://www.alfresco.org/model/system/1.0" prefix="sys" />
<!-- Import Alfresco Records Management Model Definitions -->
<import uri="http://www.alfresco.org/model/recordsmanagement/1.0" prefix="rma" />
</imports>
<!-- Records Management Namespace -->
<namespaces>
<namespace uri="http://www.alfresco.org/model/dod5015/1.0" prefix="dod"/>
</namespaces>
<constraints>
<constraint name="dod:imageFormatList" type="LIST">
<title>Image Formats</title>
<parameter name="allowedValues">
<list>
<value>Binary Image Interchange Format (BIIF)</value>
<value>GIF 89a</value>
<value>Graphic Image Format (GIF) 87a</value>
<value>Joint Photographic Experts Group (JPEG) (all versions)</value>
<value>Portable Network Graphics (PNG) 1.0</value>
<value>Tagged Image Interchange Format (TIFF) 4.0</value>
<value>TIFF 5.0</value>
<value>TIFF 6.0</value>
</list>
</parameter>
<parameter name="caseSensitive"><value>true</value></parameter>
</constraint>
</constraints>
<types>
<!-- Deprecated since 2.0 -->
<type name="dod:recordSeries">
<title>Record Series</title>
<parent>rma:recordCategory</parent>
</type>
</types>
<aspects>
<aspect name="dod:scannedRecord">
<title>Scanned Record</title>
<parent>rma:recordMetaData</parent>
<properties>
<property name="dod:scannedFormat">
<title>Image Format</title>
<type>d:text</type>
<index enabled="true">
<atomic>true</atomic>
<stored>false</stored>
<tokenised>false</tokenised>
</index>
</property>
<property name="dod:scannedFormatVersion">
<title>Image Format and Version</title>
<type>d:text</type>
<mandatory>true</mandatory>
<index enabled="true">
<atomic>true</atomic>
<stored>false</stored>
<tokenised>false</tokenised>
</index>
<constraints>
<constraint ref="dod:imageFormatList" />
</constraints>
</property>
<property name="dod:resolutionX">
<title>Image Resolution X</title>
<type>d:int</type>
<mandatory>true</mandatory>
</property>
<property name="dod:resolutionY">
<title>Image Resolution Y</title>
<type>d:int</type>
<mandatory>true</mandatory>
</property>
<property name="dod:scannedBitDepth">
<title>Scanned Bit Depth</title>
<type>d:int</type>
<mandatory>false</mandatory>
</property>
</properties>
<mandatory-aspects>
<aspect>rma:filePlanComponent</aspect>
</mandatory-aspects>
</aspect>
<aspect name="dod:pdfRecord">
<title>PDF Record</title>
<parent>rma:recordMetaData</parent>
<properties>
<property name="dod:producingApplication">
<title>Producing Application</title>
<type>d:text</type>
<mandatory>true</mandatory>
<index enabled="true">
<atomic>true</atomic>
<stored>false</stored>
<tokenised>false</tokenised>
</index>
</property>
<property name="dod:producingApplicationVersion">
<title>Producing Application Version</title>
<type>d:text</type>
<mandatory>true</mandatory>
</property>
<property name="dod:pdfVersion">
<title>PDF Version</title>
<type>d:text</type>
<mandatory>true</mandatory>
<index enabled="true">
<atomic>true</atomic>
<stored>false</stored>
<tokenised>false</tokenised>
</index>
</property>
<property name="dod:creatingApplication">
<title>Creating Application</title>
<type>d:text</type>
<mandatory>false</mandatory>
<index enabled="true">
<atomic>true</atomic>
<stored>false</stored>
<tokenised>false</tokenised>
</index>
</property>
<property name="dod:documentSecuritySettings">
<title>Document Security Settings</title>
<type>d:text</type>
<mandatory>false</mandatory>
<index enabled="true">
<atomic>true</atomic>
<stored>false</stored>
<tokenised>false</tokenised>
</index>
</property>
</properties>
<mandatory-aspects>
<aspect>rma:filePlanComponent</aspect>
</mandatory-aspects>
</aspect>
<aspect name="dod:digitalPhotographRecord">
<title>Digital Photograph Record</title>
<parent>rma:recordMetaData</parent>
<properties>
<property name="dod:caption">
<title>Caption</title>
<type>d:text</type>
<mandatory>true</mandatory>
</property>
<property name="dod:photographer">
<title>Photographer</title>
<type>d:text</type>
<mandatory>false</mandatory>
<index enabled="true">
<atomic>true</atomic>
<stored>false</stored>
<tokenised>false</tokenised>
</index>
</property>
<property name="dod:copyright">
<title>Copyright</title>
<type>d:text</type>
<mandatory>false</mandatory>
<index enabled="true">
<atomic>true</atomic>
<stored>false</stored>
<tokenised>false</tokenised>
</index>
</property>
<property name="dod:bitDepth">
<title>Bit Depth</title>
<type>d:text</type>
<mandatory>false</mandatory>
<index enabled="true">
<atomic>true</atomic>
<stored>false</stored>
<tokenised>false</tokenised>
</index>
</property>
<property name="dod:imageSizeX">
<title>Image Size X</title>
<type>d:int</type>
<mandatory>false</mandatory>
</property>
<property name="dod:imageSizeY">
<title>Image Size Y</title>
<type>d:int</type>
<mandatory>false</mandatory>
</property>
<property name="dod:imageSource">
<title>Image Source</title>
<type>d:text</type>
<mandatory>false</mandatory>
<index enabled="true">
<atomic>true</atomic>
<stored>false</stored>
<tokenised>false</tokenised>
</index>
</property>
<property name="dod:compression">
<title>Compression</title>
<type>d:text</type>
<mandatory>false</mandatory>
<index enabled="true">
<atomic>true</atomic>
<stored>false</stored>
<tokenised>false</tokenised>
</index>
</property>
<property name="dod:iccIcmProfile">
<title>ICC/ICM Profile</title>
<type>d:text</type>
<mandatory>false</mandatory>
<index enabled="true">
<atomic>true</atomic>
<stored>false</stored>
<tokenised>false</tokenised>
</index>
</property>
<property name="dod:exifInformation">
<title>EXIF Information</title>
<type>d:text</type>
<mandatory>false</mandatory>
<index enabled="true">
<atomic>true</atomic>
<stored>false</stored>
<tokenised>false</tokenised>
</index>
</property>
</properties>
<mandatory-aspects>
<aspect>rma:filePlanComponent</aspect>
</mandatory-aspects>
</aspect>
<aspect name="dod:webRecord">
<title>Web Record</title>
<parent>rma:recordMetaData</parent>
<properties>
<property name="dod:webFileName">
<title>Web File Name</title>
<type>d:text</type>
<mandatory>true</mandatory>
<index enabled="true">
<atomic>true</atomic>
<stored>false</stored>
<tokenised>false</tokenised>
</index>
</property>
<property name="dod:webPlatform">
<title>Web Platform</title>
<type>d:text</type>
<mandatory>true</mandatory>
<index enabled="true">
<atomic>true</atomic>
<stored>false</stored>
<tokenised>false</tokenised>
</index>
</property>
<property name="dod:webSiteName">
<title>Web Site Name</title>
<type>d:text</type>
<mandatory>true</mandatory>
<index enabled="true">
<atomic>true</atomic>
<stored>false</stored>
<tokenised>false</tokenised>
</index>
</property>
<property name="dod:webSiteURL">
<title>Web Site URL</title>
<type>d:text</type>
<mandatory>true</mandatory>
<index enabled="true">
<atomic>true</atomic>
<stored>false</stored>
<tokenised>false</tokenised>
</index>
</property>
<property name="dod:captureMethod">
<title>Capture Method</title>
<type>d:text</type>
<mandatory>true</mandatory>
<index enabled="true">
<atomic>true</atomic>
<stored>false</stored>
<tokenised>false</tokenised>
</index>
</property>
<property name="dod:captureDate">
<title>Capture Date</title>
<type>d:date</type>
<mandatory>true</mandatory>
</property>
<property name="dod:contact">
<title>Contact</title>
<type>d:text</type>
<mandatory>true</mandatory>
<index enabled="true">
<atomic>true</atomic>
<stored>false</stored>
<tokenised>false</tokenised>
</index>
</property>
<property name="dod:contentManagementSystem">
<title>Content Management System</title>
<type>d:text</type>
<mandatory>false</mandatory>
<index enabled="true">
<atomic>true</atomic>
<stored>false</stored>
<tokenised>false</tokenised>
</index>
</property>
</properties>
<mandatory-aspects>
<aspect>rma:filePlanComponent</aspect>
</mandatory-aspects>
</aspect>
</aspects>
</model>

View File

@@ -0,0 +1 @@
log4j.logger.org.alfresco.module.org_alfresco_module_rm.caveat=warn

View File

@@ -0,0 +1,37 @@
rm.action.not-defined=The records management action {0} has not been defined.
rm.action.no-implicit-noderef=Unable to execute the records management action, because the action {0} implementation does not provide an implicit nodeRef.
rm.action.record-not-declared=Unable to execute disposition action {0}, because the record is not declared. (actionedUponNodeRef={1})
rm.action.expected-record-level=Unable to execute disposition action {0}, because disposition is expected at the record level and this node is not a record. (actionedUponNodeRef={1})
rm.action.not-all-records-declared=Unable to execute disposition action {0}, because not all the records in the record are declared. (actionedUponNodeRef={1})
rm.action.not-eligible=Unable to execute disposition action {0}, because the next disposition action on the record or record folder is not eligible. (actionedUponNodeRef={1})
rm.action.no-disposition-instructions=Unable to find disposition instructions for node. Can not execute disposition action {0}. (nodeRef={1})
rm.action.no-disposition-lisfecycle-set=Unable to execute disposition action {0}, because node does not have a disposition life-cycle set. (nodeRef={1})
rm.action.next-disp-not-set=Unable to execute disposition action {0}, because the next disposition action is not set. (nodeRef={1})
rm.action.not-next-disp=Unable to execute disposition action {0}, because this is not the next disposition action for this record or record folder. (nodeRef={1})
rm.action.not-record-folder=Unable to execute disposition action {0}, because disposition is expected at the record folder level and this node is not a record folder. (nodeRef={1})
rm.action.actioned-upon-not-record=Can not execute action {0}, because the actioned upon node is not a Record. (filePlanComponet={1})
rm.action.custom-aspect-not-recognised=The custom type can not be applied, because is it not recognised. (customAspect={0})
rm.action.close-record-folder-not-folder=Unable to close record folder, because the node is not a record folder. (nodeRef={0})
rm.action.event-no-disp-lc=The event {0} can not be completed, because it is not defined on the disposition lifecycle.
rm.action.undeclared-only-records=Only records can be undeclared. (nodeRef={0})
rm.action.no-declare-mand-prop=Can not declare record, because not all the records mandatory properties have been set.
rm.action.ghosted-prop-update=The content properties of a previously destroyed record can not be updated.
rm.action.valid-date-disp-asof=A valid date must be specified when setting the disposition action as of date.
rm.action.disp-asof-lifecycle-applied=It is invalid to edit the disposition as of date of a record or record folder which has a lifecycle applied.
rm.action.hold-edit-reason-none=Can not edit hold reason, because no reason has been given.
rm.action.hold-edit-type=Can not edit hold reason, because actioned upon node is not of type {0}. (nodeRef={1})
rm.action.specify-avlid-date=Must specify a valid date when setting the review as of date.
rm.action.review-details-only=Can only edit the review details of vital records.
rm.action.freeze-no-reason=Can not freeze a record without a reason.
rm.action.freeze-only-records-folders=Can only freeze records or record folders.
rm.action.no-open-record-folder=Unable to open record folder, because node is not a record folder. (actionedUponNodeRef={0})
rm.action.not-hold-type=Can not relinquish hold, because node is not of type {0}. (actionedUponNodeRef={1})
rm.action.no-read-mime-message=Unable to read mime message, because {0}.
rm.action.email-declared=Can not split email, because record has already been declared. (actionedUponNodeRef={0})
rm.action.email-not-record=Can no split email, because node is not a record. (actionedUponNodeRef={0})
rm.action.email-create-child-assoc=Unable to create custom child association.
rm.action.node-already-transfer=Node is already being transfered.
rm.action.node-not-transfer=Node is not a transfer object.
rm.action.undo-not-last=Can not undo cut off, because last disposition action was not cut off.
rm.action.records_only_undeclared=Only records can be undeclared.
rm.action.event-not-undone=The event {0} can not be undone, because it is not defined on the disposition lifecycle.

View File

@@ -0,0 +1,21 @@
rm.admin.service-not-init=The customisation service has not been initialised.
rm.admin.not-customisable=The class {0} is not customisable.
rm.admin.invalid-custom-aspect=Unable to find custom aspect {0} for customisable class {1}.
rm.admin.property-already-exists=Property {0} already exists.
rm.admin.cannot-apply-constraint=Cannot apply constraint {0} to property {1} with datatype {2}. (expected: dataType = TEXT)
rm.admin.prop-exist=Can not find custom property {0}.
rm.admin.custom-prop-exist=Custom model does not contain property {0}.
rm.admin.unknown-aspect=Unknown aspect {0}.
rm.admin.ref-exist= Can not find custom reference {0}.
rm.admin.ref-label-in-use=Reference label {0} is already in use.
rm.admin.assoc-exists=Association {0} already exists.
rm.admin.child-assoc-exists=Child association {0} already exists.
rm.admin.cannot-find-assoc-def=Can not find association definition {0}.
rm.admin.constraint-exists=Constraint {0} already exists.
rm.admin.contraint-cannot-find=Can not find definition for constraint {0}.
rm.admin.unexpected_type_constraint=Unexpected type {0} for constraint {1}, expected {2}.
rm.admin.custom-model-not-found=Custom model {0} can not be found.
rm.admin.custom-model-no-content=Custom model has no content. (nodeRef={0})
rm.admin.error-write-custom-model=Error writing custom model content. (nodeRef={0}).
rm.admin.error-client-id=Error generating QName, because client id is already in use. (clientid={0})
rm.admin.error-split-id=Unable to split id {0}, because separator {1} is not present.

View File

@@ -0,0 +1,34 @@
rm.audit.updated-metadata=Updated Metadata
rm.audit.created-object=Created Object
rm.audit.delte-object=Delete Object
rm.audit.login-succeeded=Login Succeeded
rm.audit.login-failed=Login Failed
rm.audit.filed-record=Filed Record
rm.audit.reviewed=Reviewed
rm.audit.cut-off=Cut Off
rm.audit.reversed-cut-off=Reversed Cut Off
rm.audit.destroyed-item=Destroyed Item
rm.audit.opened-record-folder=Opened Record Folder
rm.audit.closed-record-folder=Closed Record Folder
rm.audit.setup-recorder-folder=Setup Recorder Folder
rm.audit.declared-record=Declared Record
rm.audit.undeclared-record=Undeclared Record
rm.audit.froze-item=Froze Item
rm.audit.relinquised-hold=Relinquished Hold
rm.audit.updated-hold-reason=Updated Hold Reason
rm.audit.updated-review-as-of-date=Updated Review As Of Date
rm.audit.updated-disposition-as-of-date=Updated Disposition As Of Date
rm.audit.updated-vital-record-definition=Updated Vital Record Definition
rm.audit.updated-disposition-action-definition=Updated Disposition Action Definition
rm.audit.completed-event=Completed Event
rm.audit.revered-complete-event=Reversed Completed Event
rm.audit.transferred-item=Transferred Item
rm.audit.completed-transfer=Completed Transfer
rm.audit.accession=Accession
rm.audit.copmleted-accession=Completed Accession
rm.audit.scanned-record=Set Record As A Scanned Record
rm.audit.pdf-record=Set Record As PDF A Record
rm.audit.photo-record=Set Record As A Digital Photographic Record
rm.audit.web-record=Set Record As A Web Record
rm.audit.trail-file-fail=Failed to generate audit trail file.
rm.audit.audit-report=Audit Report

View File

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

View File

@@ -0,0 +1,17 @@
rm.service.error-add-content-container=Content can not be added to a record container. Please use record folders to file content.
rm.service.update-disposition-action-def=Can not update the disposition action definition, because an update is being published.
rm.service.set-id=The identifier property value of the object {0} can not be set, because it is read only.
rm.service.path-node=Unable to get path for node. (nodeRef={0})
rm.service.invalid-rm-node=Invalid records management node, because aspect {0} is not present.
rm.service.no-root=Unable to find records management root.
rm.service.dup-root=Can not create the records management root, because there is already a records management root in this hierarchy.
rm.service.root-type=Can not create the records management root, because type {0} is not a sub-type of rm:recordsManagementRootContainer.
rm.service.container-parent-type=Can not create records management container, because parent was not sub-type of rm:recordsManagement (parentType={0})
rm.service.container-type=Can not create records management container, because type {0} is not a sub-type of rm:recordsManagementContainer.
rm.service.container-expected=Node reference to a rm:recordsManagementContainer node expected.
rm.service.record-folder-expected=Node reference to a rm:recordFolder node expected.
rm.service.parent-record-folder-root=Can not create a record folder, because the parent is a records management root.
rm.service.parent-record-folder-type=Can not create record folder, because parent was not sub-type of rm:recordsManagementContainer. (parentType={0})
rm.service.record-folder-type=Can not create record folder, because provided type is not a sub-type of rm:recordFolder. (type={0})
rm.service.not-record=The node {0} is not a record.
rm.service.vital-def-missing=Vital record definition aspect is not present on node. (nodeRef={0})

View File

@@ -0,0 +1,273 @@
rma_recordsmanagement.description=Records Management Content Model
rma_recordsmanagement.type.rma_rmsite.title=Records Management Site
rma_recordsmanagement.type.rma_rmsite.description=Specialised Site for Records Management
rma_recordsmanagement.type.rma_caveatConfig.title=Caveat Config
rma_recordsmanagement.type.rma_caveatConfig.decription=Caveat Config
rma_recordsmanagement.type.rma_emailConfig.title=EMail Configuration
rma_recordsmanagement.type.rma_emailConfig.decription=Email Configuration
rma_recordsmanagement.type.rma_recordsManagementContainer.title=Records Management Container
rma_recordsmanagement.type.rma_recordsManagementContainer.decription=Records Management Container
rma_recordsmanagement.type.rma_recordsManagementRootContainer.title=Records Management Root Container
rma_recordsmanagement.type.rma_recordsManagementRootContainer.decription=Records Management Root Container
rma_recordsmanagement.type.rma_dispositionSchedule.title=Disposition Schedule
rma_recordsmanagement.type.rma_dispositionSchedule.decription=Disposition Schedule
rma_recordsmanagement.property.rma_dispositionAuthority.title=Disposition Authority
rma_recordsmanagement.property.rma_dispositionAuthority.decription=Disposition Authority
rma_recordsmanagement.property.rma_dispositionInstructions.title=Disposition Instructions
rma_recordsmanagement.property.rma_dispositionInstructions.decription=Disposition Instructions
rma_recordsmanagement.property.rma_recordLevelDisposition.title=Record Level Disposition
rma_recordsmanagement.property.rma_recordLevelDisposition.decription=Record Level Disposition
rma_recordsmanagement.association.rma_dispositionActionDefinitions.title=Disposition Actions
rma_recordsmanagement.association.rma_dispositionActionDefinitions.decription=Disposition Actions
rma_recordsmanagement.type.rma_dispositionActionDefinition.title=Disposition Action Definition
rma_recordsmanagement.type.rma_dispositionActionDefinition.decription=Disposition Action Definition
rma_recordsmanagement.property.rma_dispositionActionName.title=Disposition Action Name
rma_recordsmanagement.property.rma_dispositionActionName.decription=Disposition Action Name
rma_recordsmanagement.property.rma_dispositionDescription.title=Disposition Description
rma_recordsmanagement.property.rma_dispositionDescription.decription=Disposition Description
rma_recordsmanagement.property.rma_dispositionLocation.title=Disposition Location
rma_recordsmanagement.property.rma_dispositionLocation.decription=Disposition Location
rma_recordsmanagement.property.rma_dispositionPeriod.title=Disposition Period
rma_recordsmanagement.property.rma_dispositionPeriod.decription=Disposition Period
rma_recordsmanagement.property.rma_dispositionPeriodProperty.title=Disposition Period Property
rma_recordsmanagement.property.rma_dispositionPeriodProperty.decription=Disposition Period Property
rma_recordsmanagement.property.rma_dispositionEvent.title=Disposition Event
rma_recordsmanagement.property.rma_dispositionEvent.decription=Disposition Event
rma_recordsmanagement.property.rma_dispositionEventCombination.title=Disposition Event Combination
rma_recordsmanagement.property.rma_dispositionEventCombination.decription=Disposition Event Combination
rma_recordsmanagement.type.rma_recordFolder.title=Record Folder
rma_recordsmanagement.type.rma_recordFolder.decription=Record Folder
rma_recordsmanagement.property.rma_isClosed.title=Record
rma_recordsmanagement.property.rma_isClosed.decription=Record
rma_recordsmanagement.type.rma_nonElectronicDocument.title=Non-Electronic Document
rma_recordsmanagement.type.rma_nonElectronicDocument.decription=Non-Electronic Document
rma_recordsmanagement.property.rma_physicalSize.title=Physical Size
rma_recordsmanagement.property.rma_physicalSize.decription=The size of the document measured in linear meters
rma_recordsmanagement.property.rma_numberOfCopies.title=Number Of Copies
rma_recordsmanagement.property.rma_numberOfCopies.description=The number of copies of the document
rma_recordsmanagement.property.rma_storageLocation.title=Storage Location
rma_recordsmanagement.property.rma_storageLocation.decription=The physical storage location of the record.
rma_recordsmanagement.property.rma_shelf.title=Shelf
rma_recordsmanagement.property.rma_shelf.decription=The shelf the record resides on.
rma_recordsmanagement.property.rma_box.title=Box
rma_recordsmanagement.property.rma_box.description=The box the record resides in.
rma_recordsmanagement.property.rma_file.title=File
rma_recordsmanagement.property.rma_file.decription=The file the record resides in.
rma_recordsmanagement.type.rma_dispositionAction.title=Disposition Action
rma_recordsmanagement.type.rma_dispositionAction.decription=Disposition Action
rma_recordsmanagement.property.rma_dispositionActionId.title=Disposition Action Id
rma_recordsmanagement.property.rma_dispositionActionId.decription=Disposition Action Id
rma_recordsmanagement.property.rma_dispositionAction.title=Disposition Action
rma_recordsmanagement.property.rma_dispositionAction.decription=Disposition Action
rma_recordsmanagement.property.rma_dispositionAsOf.title=Disposition Action
rma_recordsmanagement.property.rma_dispositionAsOf.decription=Disposition Action
rma_recordsmanagement.property.rma_dispositionEventsEligible.title=Disposition Events Eligible
rma_recordsmanagement.property.rma_dispositionEventsEligible.decription=Disposition Events Eligible
rma_recordsmanagement.property.rma_dispositionActionStartedAt.title=Disposition Action Started At
rma_recordsmanagement.property.rma_dispositionActionStartedAt.decription=Disposition Action Started At
rma_recordsmanagement.property.rma_dispositionActionStartedBy.title=Disposition Action Started By
rma_recordsmanagement.property.rma_dispositionActionStartedBy.decription=Disposition Action Started By
rma_recordsmanagement.property.rma_dispositionActionCompletedAt.title=Disposition Action Completed At
rma_recordsmanagement.property.rma_dispositionActionCompletedAt.decription=Disposition Action Completed At
rma_recordsmanagement.property.rma_dispositionActionCompletedBy.title=Disposition Action Copmleted By
rma_recordsmanagement.property.rma_dispositionActionCompletedBy.decription=Disposition Action Copmleted By
rma_recordsmanagement.association.rma_eventExecutions.title=Event executions
rma_recordsmanagement.association.rma_eventExecutions.decription=Event executions
rma_recordsmanagement.type.rma_eventExecution.title=Event Execution
rma_recordsmanagement.type.rma_eventExecution.decription=Event Execution
rma_recordsmanagement.property.rma_eventExecutionName.title=Event Name
rma_recordsmanagement.property.rma_eventExecutionName.decription=Event Name
rma_recordsmanagement.property.rma_eventExecutionAutomatic.title=Event automatic
rma_recordsmanagement.property.rma_eventExecutionAutomatic.decription=Event automatic
rma_recordsmanagement.property.rma_eventExecutionComplete.title=Event complete
rma_recordsmanagement.property.rma_eventExecutionComplete.decription=Event complete
rma_recordsmanagement.property.rma_eventExecutionCompletedBy.title=Event completed by
rma_recordsmanagement.property.rma_eventExecutionCompletedBy.decription=Event completed by
rma_recordsmanagement.property.rma_eventExecutionCompletedAt.title=Event completed at
rma_recordsmanagement.property.rma_eventExecutionCompletedAt.decription=Event completed at
rma_recordsmanagement.type.rma_hold.title=Hold
rma_recordsmanagement.type.rma_hold.decription=Hold
rma_recordsmanagement.property.rma_holdReason.title=Hold Reason
rma_recordsmanagement.property.rma_holdReason.decription=Hold Reason
rma_recordsmanagement.association.rma_frozenRecords.title=Frozen Records
rma_recordsmanagement.association.rma_frozenRecords.decription=Frozen Records
rma_recordsmanagement.type.rma_transfer.title=Transfer
rma_recordsmanagement.type.rma_transfer.decription=Transfer
rma_recordsmanagement.property.rma_transferAccessionIndicator.title=Transfer Accession Indicator
rma_recordsmanagement.property.rma_transferAccessionIndicator.decription=Transfer Accession Indicator
rma_recordsmanagement.property.rma_transferPDFIndicator.title=Transfer PDF Indicator
rma_recordsmanagement.property.rma_transferPDFIndicator.decription=Transfer PDF Indicator
rma_recordsmanagement.property.rma_transferLocation.title=Transfer PDF
rma_recordsmanagement.property.rma_transferLocation.decription=Transfer PDF
rma_recordsmanagement.association.rma_transferred.title=Transferred
rma_recordsmanagement.association.rma_transferred.decription=Transferred
rma_recordsmanagement.aspect.rma_filePlanComponent.title=File Plan Component
rma_recordsmanagement.aspect.rma_filePlanComponent.decription=File Plan Component
rma_recordsmanagement.property.rma_rootNodeRef.title=Root node
rma_recordsmanagement.property.rma_rootNodeRef.decription=Root node
rma_recordsmanagement.aspect.rma_recordsManagementRoot.title=Records Management Root
rma_recordsmanagement.aspect.rma_recordsManagementRoot.decription=Records Management Root
rma_recordsmanagement.association.rma_holds.title=Holds
rma_recordsmanagement.association.rma_holds.decription=Holds
rma_recordsmanagement.association.rma_transfers.title=Transfers
rma_recordsmanagement.association.rma_transfers.decription=Transfers
rma_recordsmanagement.aspect.rma_declaredRecord.title=Declared Record
rma_recordsmanagement.aspect.rma_declaredRecord.decription=Declared Record
rma_recordsmanagement.property.rma_declaredAt.title=Date Declared
rma_recordsmanagement.property.rma_declaredAt.decription=Date Declared
rma_recordsmanagement.property.rma_declaredBy.title=Declared By
rma_recordsmanagement.property.rma_declaredBy.decription=Declared By
rma_recordsmanagement.aspect.rma_recordComponentIdentifier.title=Record component identifier
rma_recordsmanagement.aspect.rma_recordComponentIdentifier.decription=Record component identifier
rma_recordsmanagement.property.rma_identifier.title=Identifier
rma_recordsmanagement.property.rma_identifier.decription=Unique record identifier
rma_recordsmanagement.property.rma_dbUniquenessId.title=Database uniqueness
rma_recordsmanagement.property.rma_dbUniquenessId.decription=Database uniqueness
rma_recordsmanagement.aspect.rma_vitalRecordDefinition.title=Vital Record Definition
rma_recordsmanagement.aspect.rma_vitalRecordDefinition.decription=Vital Record Definition
rma_recordsmanagement.property.rma_reviewPeriod.title=Review Period
rma_recordsmanagement.property.rma_reviewPeriod.decription=Review Period
rma_recordsmanagement.property.rma_vitalRecordIndicator.title=Vital Record Indicator
rma_recordsmanagement.property.rma_vitalRecordIndicator.decription=Vital Record Indicator
rma_recordsmanagement.aspect.rma_record.title=Record
rma_recordsmanagement.aspect.rma_record.decription=Record
rma_recordsmanagement.property.rma_dateFiled.title=Date Filed
rma_recordsmanagement.property.rma_dateFiled.decription=Date Filed
rma_recordsmanagement.property.rma_publicationDate.title=Publication Date
rma_recordsmanagement.property.rma_publicationDate.decription=Publication Date
rma_recordsmanagement.property.rma_originator.title=Originator
rma_recordsmanagement.property.rma_originator.decription=Originator
rma_recordsmanagement.property.rma_originatingOrganization.title=Originating Organization
rma_recordsmanagement.property.rma_originatingOrganization.decription=Originating Organization
rma_recordsmanagement.property.rma_mediaType.title=Media Type
rma_recordsmanagement.property.rma_mediaType.decription=Media Type
rma_recordsmanagement.property.rma_format.title=Format
rma_recordsmanagement.property.rma_format.decription=Format
rma_recordsmanagement.property.rma_dateReceived.title=Date Received
rma_recordsmanagement.property.rma_dateReceived.decription=Date Received
rma_recordsmanagement.property.rma_address.title=Addressee
rma_recordsmanagement.property.rma_address.decription=Addressee
rma_recordsmanagement.property.rma_otherAddress.title=Other Addressee
rma_recordsmanagement.property.rma_otherAddress.decription=Other Addressee
rma_recordsmanagement.aspect.rma_recordMetaData.title=Record Meta-data
rma_recordsmanagement.aspect.rma_recordMetaData.description=Marker aspect for record meta-data
rma_recordsmanagement.aspect.rma_commonRecordDetails.title=Common Records Details
rma_recordsmanagement.aspect.rma_commonRecordDetails.description=Meta-data common to all record types
rma_recordsmanagement.property.rma_location.title=Location
rma_recordsmanagement.property.rma_location.decription=Location
rma_recordsmanagement.aspect.rma_vitalRecord.title=Vital Record
rma_recordsmanagement.aspect.rma_vitalRecord.decription=Vital Record
rma_recordsmanagement.property.rma_reviewAsOf.title=Next Review
rma_recordsmanagement.property.rma_reviewAsOf.decription=Next Review
rma_recordsmanagement.property.rma_notificationIssued.title=Indicates n that this record is due for review has been issued
rma_recordsmanagement.property.rma_notificationIssued.decription=Indicates n that this record is due for review has been issued
rma_recordsmanagement.aspect.rma_scheduled.title=Scheduled
rma_recordsmanagement.aspect.rma_scheduled.decription=Scheduled
rma_recordsmanagement.association.rma_dispositionSchedule.title=Disposition Schedule
rma_recordsmanagement.association.rma_dispositionSchedule.decription=Disposition Schedule
rma_recordsmanagement.aspect.rma_dispositionLifecycle.title=Disposition Lifecycle
rma_recordsmanagement.aspect.rma_dispositionLifecycle.decription=Disposition Lifecycle
rma_recordsmanagement.association.rma_nextDispositionAction.title=Next disposition action
rma_recordsmanagement.association.rma_nextDispositionAction.decription=Next disposition action
rma_recordsmanagement.association.rma_dispositionActionHistory.title=Disposition Action History
rma_recordsmanagement.association.rma_dispositionActionHistory.decription=Disposition Action History
rma_recordsmanagement.aspect.rma_cutOff.title=Cut Off
rma_recordsmanagement.aspect.rma_cutOff.decription=Cut Off
rma_recordsmanagement.property.rma_cutOffDate.title=Cut Off Date
rma_recordsmanagement.property.rma_cutOffDate.decription=Cut Off Date
rma_recordsmanagement.aspect.rma_transferred.title=Transferred
rma_recordsmanagement.aspect.rma_transferred.decription=Transferred
rma_recordsmanagement.aspect.rma_ascended.title=Ascended
rma_recordsmanagement.aspect.rma_ascended.decription=Ascended
rma_recordsmanagement.aspect.rma_frozen.title=Frozen
rma_recordsmanagement.aspect.rma_frozen.decription=Frozen
rma_recordsmanagement.property.rma_frozenAt.title=Frozen At
rma_recordsmanagement.property.rma_frozenAt.decription=Frozen At
rma_recordsmanagement.property.rma_frozenBy.title=Frozen By
rma_recordsmanagement.property.rma_frozenBy.decription=Frozen By
rma_recordsmanagement.aspect.rma_caveatConfigRoot.title=Caveat Configuration Root
rma_recordsmanagement.aspect.rma_caveatConfigRoot.decription=Caveat Configuration Root
rma_recordsmanagement.association.rma_caveatConfigAssoc.title=Caveat Configuration
rma_recordsmanagement.association.rma_caveatConfigAssoc.description=Caveat Configuration
rma_recordsmanagement.aspect.rma_emailConfigRoot.title=EmMil Config Root
rma_recordsmanagement.aspect.rma_emailConfigRoot.decription=EMail Config Root
rma_recordsmanagement.association.rma_emailConfigAssoc.title=EMail Configuration
rma_recordsmanagement.association.rma_emailConfigAssoc.description=EMail Configuration
rma_recordsmanagement.aspect.rma_recordSearch.title=Record Search
rma_recordsmanagement.aspect.rma_recordSearch.decription=Rolled up search information to support Records Management search
rma_recordsmanagement.property.rma_recordSearchHasDispositionSchedule.title=Has Disposition Schedule
rma_recordsmanagement.property.rma_recordSearchHasDispositionSchedule.description=Indicates whether the item has an associated disposition schedule
rma_recordsmanagement.property.rma_recordSearchDispositionActionName.title=Disposition Action Name
rma_recordsmanagement.property.rma_recordSearchDispositionActionName.description=The name of the next disposition action
rma_recordsmanagement.property.rma_recordSearchDispositionActionAsOf.title=Disposition Action Of
rma_recordsmanagement.property.rma_recordSearchDispositionActionAsOf.description=The date at which the next disposation action becomes eligible
rma_recordsmanagement.property.rma_recordSearchDispositionPeriod.title=Disposition Period
rma_recordsmanagement.property.rma_recordSearchDispositionPeriod.description=Disposition Period
rma_recordsmanagement.property.rma_recordSearchDispositionPeriodExpression.title=Disposition Period Expression
rma_recordsmanagement.property.rma_recordSearchDispositionPeriodExpression.description=Disposition Period Expression
rma_recordsmanagement.property.rma_recordSearchDispositionEventsEligible.title=Disposition Events Eligible
rma_recordsmanagement.property.rma_recordSearchDispositionEventsEligible.description=Disposition Events Eligible
rma_recordsmanagement.property.rma_recordSearchDispositionEvents.title=Disposition Events
rma_recordsmanagement.property.rma_recordSearchDispositionEvents.description=Disposition Events
rma_recordsmanagement.property.rma_recordSearchDispositionAuthority.title=Disposition Authority
rma_recordsmanagement.property.rma_recordSearchDispositionAuthority.description=Disposition Authority
rma_recordsmanagement.property.rma_recordSearchDispositionInstructions.title=Disposition Instructions
rma_recordsmanagement.property.rma_recordSearchDispositionInstructions.description=Disposition Instructions
rma_recordsmanagement.property.rma_recordSearchHoldReason.title=Hold Reason
rma_recordsmanagement.property.rma_recordSearchHoldReason.description=Hold Reason
rma_recordsmanagement.property.rma_recordSearchVitalRecordReviewPeriod.title=Vital Record Review Period
rma_recordsmanagement.property.rma_recordSearchVitalRecordReviewPeriod.description=Vital Record Review Period
rma_recordsmanagement.property.rma_recordSearchVitalRecordReviewPeriodExpression.title=Review Period Expression
rma_recordsmanagement.property.rma_recordSearchVitalRecordReviewPeriodExpression.description=Review Period Expression
rma_recordsmanagement.aspect.rma_versionedRecord.title=Versioned Record
rma_recordsmanagement.aspect.rma_versionedRecord.decription=Versioned Record
rma_recordsmanagement.aspect.rma_unpublishedUpdate.title=Unpublished Update
rma_recordsmanagement.aspect.rma_unpublishedUpdate.decription=Unpublished Update
rma_recordsmanagement.property.rma_unpublishedUpdate.title=Unpublished Update
rma_recordsmanagement.property.rma_unpublishedUpdate.description=Indicates whether there is an unpublished update
rma_recordsmanagement.property.rma_updateTo.title=Update To
rma_recordsmanagement.property.rma_updateTo.description=Destination of the update
rma_recordsmanagement.property.rma_updatedProperties.title=Updated Properties
rma_recordsmanagement.property.rma_updatedProperties.description=The updated properties
rma_recordsmanagement.property.rma_publishInProgress.title=Publish In Progress
rma_recordsmanagement.property.rma_publishInProgress.description=Indicates whether a publish is currently in progress

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,490 @@
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE permissions>
<!-- PUBLIC '-//ALFRECSO//DTD PERMISSIONS//EN' 'permissionSchema.dtd' -->
<permissions>
<!-- Namespaces used in type references -->
<namespaces>
<namespace uri="http://www.alfresco.org/model/system/1.0" prefix="sys"/>
<namespace uri="http://www.alfresco.org/model/content/1.0" prefix="cm"/>
<namespace uri="http://www.alfresco.org/model/recordsmanagement/1.0" prefix="rma"/>
</namespaces>
<permissionSet expose="selected" type="rma:filePlanComponent">
<permissionGroup name="User" allowFullControl="false" expose="true">
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="DeclareRecords"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="ViewRecords"/>
</permissionGroup>
<permissionGroup name="PowerUser" allowFullControl="false" expose="true">
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="DeclareRecords"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="ViewRecords"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="CreateModifyDestroyFolders"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="EditRecordMetadata"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="EditNonRecordMetadata"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="AddModifyEventDates"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="CloseFolders"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="DeclareRecordsInClosedFolders"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="ReOpenFolders"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="CycleVitalRecords"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="PlanningReviewCycles"/>
</permissionGroup>
<permissionGroup name="SecurityOfficer" allowFullControl="false" expose="true">
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="DeclareRecords"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="ViewRecords"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="CreateModifyDestroyFolders"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="EditRecordMetadata"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="EditNonRecordMetadata"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="AddModifyEventDates"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="CloseFolders"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="DeclareRecordsInClosedFolders"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="ReOpenFolders"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="CycleVitalRecords"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="PlanningReviewCycles"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="UpdateClassificationDates"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="CreateModifyDestroyClassificationGuides"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="UpgradeDowngradeAndDeclassifyRecords"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="UpdateExemptionCategories"/>
</permissionGroup>
<permissionGroup name="RecordsManager" allowFullControl="false" expose="true">
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="DeclareRecords"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="ViewRecords"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="CreateModifyDestroyFolders"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="EditRecordMetadata"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="EditNonRecordMetadata"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="AddModifyEventDates"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="CloseFolders"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="DeclareRecordsInClosedFolders"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="ReOpenFolders"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="CycleVitalRecords"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="PlanningReviewCycles"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="UpdateTriggerDates"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="CreateModifyDestroyEvents"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="ManageAccessRights"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="MoveRecords"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="ChangeOrDeleteReferences"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="DeleteLinks"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="EditDeclaredRecordMetadata"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="ManuallyChangeDispositionDates"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="ApproveRecordsScheduledForCutoff"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="CreateModifyRecordsInCutoffFolders"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="ExtendRetentionPeriodOrFreeze"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="Unfreeze"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="ViewUpdateReasonsForFreeze"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="DestroyRecordsScheduledForDestruction"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="DestroyRecords"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="UpdateVitalRecordCycleInformation"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="UndeclareRecords"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="DeclareAuditAsRecord"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="DeleteAudit"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="CreateModifyDestroyTimeframes"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="AuthorizeNominatedTransfers"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="EditSelectionLists"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="AuthorizeAllTransfers"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="CreateModifyDestroyFileplanMetadata"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="CreateAndAssociateSelectionLists"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="AttachRulesToMetadataProperties"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="CreateModifyDestroyFileplanTypes"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="CreateModifyDestroyRecordTypes"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="MakeOptionalParametersMandatory"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="MapEmailMetadata"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="DeleteRecords"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="TriggerAnEvent"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="CreateModifyDestroyRoles"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="CreateModifyDestroyUsersAndGroups"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="PasswordControl"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="EnableDisableAuditByTypes"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="SelectAuditMetadata"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="DisplayRightsReport"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="AccessAudit"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="ExportAudit"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="CreateModifyDestroyReferenceTypes"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="UpdateClassificationDates"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="CreateModifyDestroyClassificationGuides"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="UpgradeDowngradeAndDeclassifyRecords"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="UpdateExemptionCategories"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="MapClassificationGuideMetadata"/>
</permissionGroup>
<!-- An RM administrator does not have admin rights to the full DM repo -->
<!-- On no account should allowFullControl="true" be set here -->
<!-- In addition, the admin role is editable and may not have all permissions - as defined -->
<!-- RM roles do not have any DM rights; they do not need them within the RM type structure -->
<permissionGroup name="Administrator" allowFullControl="false" expose="true">
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="DeclareRecords"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="ViewRecords"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="CreateModifyDestroyFolders"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="EditRecordMetadata"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="EditNonRecordMetadata"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="AddModifyEventDates"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="CloseFolders"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="DeclareRecordsInClosedFolders"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="ReOpenFolders"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="CycleVitalRecords"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="PlanningReviewCycles"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="UpdateTriggerDates"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="CreateModifyDestroyEvents"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="ManageAccessRights"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="MoveRecords"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="ChangeOrDeleteReferences"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="DeleteLinks"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="EditDeclaredRecordMetadata"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="ManuallyChangeDispositionDates"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="ApproveRecordsScheduledForCutoff"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="CreateModifyRecordsInCutoffFolders"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="ExtendRetentionPeriodOrFreeze"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="Unfreeze"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="ViewUpdateReasonsForFreeze"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="DestroyRecordsScheduledForDestruction"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="DestroyRecords"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="UpdateVitalRecordCycleInformation"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="UndeclareRecords"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="DeclareAuditAsRecord"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="DeleteAudit"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="CreateModifyDestroyTimeframes"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="AuthorizeNominatedTransfers"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="EditSelectionLists"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="AuthorizeAllTransfers"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="CreateModifyDestroyFileplanMetadata"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="CreateAndAssociateSelectionLists"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="AttachRulesToMetadataProperties"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="CreateModifyDestroyFileplanTypes"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="CreateModifyDestroyRecordTypes"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="MakeOptionalParametersMandatory"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="MapEmailMetadata"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="DeleteRecords"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="TriggerAnEvent"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="CreateModifyDestroyRoles"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="CreateModifyDestroyUsersAndGroups"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="PasswordControl"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="EnableDisableAuditByTypes"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="SelectAuditMetadata"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="DisplayRightsReport"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="AccessAudit"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="ExportAudit"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="CreateModifyDestroyReferenceTypes"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="UpdateClassificationDates"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="CreateModifyDestroyClassificationGuides"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="UpgradeDowngradeAndDeclassifyRecords"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="UpdateExemptionCategories"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="MapClassificationGuideMetadata"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="ManageAccessControls"/>
<!-- Administrator has filing rights to all records - no other role does -->
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="Filing"/>
</permissionGroup>
<permissionGroup name="Filing" allowFullControl="false" expose="true">
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="ReadRecords"/>
<includePermissionGroup type="rma:filePlanComponent" permissionGroup="FileRecords"/>
</permissionGroup>
<permissionGroup name="ReadRecords" expose="false" allowFullControl="false"/>
<permissionGroup name="FileRecords" expose="false" allowFullControl="false"/>
<permissionGroup name="DeclareRecords" expose="false" allowFullControl="false"/>
<permissionGroup name="ViewRecords" expose="false" allowFullControl="false"/>
<permissionGroup name="CreateModifyDestroyFolders" expose="false" allowFullControl="false"/>
<permissionGroup name="EditRecordMetadata" expose="false" allowFullControl="false"/>
<permissionGroup name="EditNonRecordMetadata" expose="false" allowFullControl="false"/>
<permissionGroup name="AddModifyEventDates" expose="false" allowFullControl="false"/>
<permissionGroup name="CloseFolders" expose="false" allowFullControl="false"/>
<permissionGroup name="DeclareRecordsInClosedFolders" expose="false" allowFullControl="false"/>
<permissionGroup name="ReOpenFolders" expose="false" allowFullControl="false"/>
<permissionGroup name="CycleVitalRecords" expose="false" allowFullControl="false"/>
<permissionGroup name="PlanningReviewCycles" expose="false" allowFullControl="false"/>
<permissionGroup name="UpdateTriggerDates" expose="false" allowFullControl="false"/>
<permissionGroup name="CreateModifyDestroyEvents" expose="false" allowFullControl="false"/>
<permissionGroup name="ManageAccessRights" expose="false" allowFullControl="false"/>
<permissionGroup name="MoveRecords" expose="false" allowFullControl="false"/>
<permissionGroup name="ChangeOrDeleteReferences" expose="false" allowFullControl="false"/>
<permissionGroup name="DeleteLinks" expose="false" allowFullControl="false"/>
<permissionGroup name="EditDeclaredRecordMetadata" expose="false" allowFullControl="false"/>
<permissionGroup name="ManuallyChangeDispositionDates" expose="false" allowFullControl="false"/>
<permissionGroup name="ApproveRecordsScheduledForCutoff" expose="false" allowFullControl="false"/>
<permissionGroup name="CreateModifyRecordsInCutoffFolders" expose="false" allowFullControl="false"/>
<permissionGroup name="ExtendRetentionPeriodOrFreeze" expose="false" allowFullControl="false"/>
<permissionGroup name="Unfreeze" expose="false" allowFullControl="false"/>
<permissionGroup name="ViewUpdateReasonsForFreeze" expose="false" allowFullControl="false"/>
<permissionGroup name="DestroyRecordsScheduledForDestruction" expose="false" allowFullControl="false"/>
<permissionGroup name="DestroyRecords" expose="false" allowFullControl="false"/>
<permissionGroup name="UpdateVitalRecordCycleInformation" expose="false" allowFullControl="false"/>
<permissionGroup name="UndeclareRecords" expose="false" allowFullControl="false"/>
<permissionGroup name="DeclareAuditAsRecord" expose="false" allowFullControl="false"/>
<permissionGroup name="DeleteAudit" expose="false" allowFullControl="false"/>
<permissionGroup name="CreateModifyDestroyTimeframes" expose="false" allowFullControl="false"/>
<!-- There may be more permissions related to transfers. AuthorizeNominatedTransfers only applies to NARA -->
<permissionGroup name="AuthorizeNominatedTransfers" expose="false" allowFullControl="false"/>
<permissionGroup name="EditSelectionLists" expose="false" allowFullControl="false"/>
<permissionGroup name="AuthorizeAllTransfers" expose="false" allowFullControl="false"/>
<permissionGroup name="CreateModifyDestroyFileplanMetadata" expose="false" allowFullControl="false"/>
<permissionGroup name="CreateAndAssociateSelectionLists" expose="false" allowFullControl="false"/>
<permissionGroup name="AttachRulesToMetadataProperties" expose="false" allowFullControl="false"/>
<permissionGroup name="CreateModifyDestroyFileplanTypes" expose="false" allowFullControl="false"/>
<permissionGroup name="CreateModifyDestroyRecordTypes" expose="false" allowFullControl="false"/>
<permissionGroup name="MakeOptionalParametersMandatory" expose="false" allowFullControl="false"/>
<permissionGroup name="MapEmailMetadata" expose="false" allowFullControl="false"/>
<permissionGroup name="DeleteRecords" expose="false" allowFullControl="false"/>
<permissionGroup name="TriggerAnEvent" expose="false" allowFullControl="false"/>
<permissionGroup name="CreateModifyDestroyRoles" expose="false" allowFullControl="false"/>
<permissionGroup name="CreateModifyDestroyUsersAndGroups" expose="false" allowFullControl="false"/>
<permissionGroup name="PasswordControl" expose="false" allowFullControl="false"/>
<permissionGroup name="EnableDisableAuditByTypes" expose="false" allowFullControl="false"/>
<permissionGroup name="SelectAuditMetadata" expose="false" allowFullControl="false"/>
<permissionGroup name="DisplayRightsReport" expose="false" allowFullControl="false"/>
<permissionGroup name="AccessAudit" expose="false" allowFullControl="false"/>
<permissionGroup name="ExportAudit" expose="false" allowFullControl="false"/>
<permissionGroup name="CreateModifyDestroyReferenceTypes" expose="false" allowFullControl="false"/>
<permissionGroup name="UpdateClassificationDates" expose="false" allowFullControl="false"/>
<permissionGroup name="CreateModifyDestroyClassificationGuides" expose="false" allowFullControl="false"/>
<permissionGroup name="UpgradeDowngradeAndDeclassifyRecords" expose="false" allowFullControl="false"/>
<permissionGroup name="UpdateExemptionCategories" expose="false" allowFullControl="false"/>
<permissionGroup name="MapClassificationGuideMetadata" expose="false" allowFullControl="false"/>
<permissionGroup name="ManageAccessControls" expose="false" allowFullControl="false"/>
<permission name="_ReadRecords" expose="false">
<grantedToGroup permissionGroup="ReadRecords"/>
</permission>
<permission name="_FileRecords" expose="false">
<grantedToGroup permissionGroup="FileRecords"/>
</permission>
<permission name="_DeclareRecords" expose="false">
<grantedToGroup permissionGroup="DeclareRecords"/>
</permission>
<permission name="_ViewRecords" expose="false">
<grantedToGroup permissionGroup="ViewRecords"/>
</permission>
<permission name="_CreateModifyDestroyFolders" expose="false">
<grantedToGroup permissionGroup="CreateModifyDestroyFolders"/>
</permission>
<permission name="_EditRecordMetadata" expose="false">
<grantedToGroup permissionGroup="EditRecordMetadata"/>
</permission>
<permission name="_EditNonRecordMetadata" expose="false">
<grantedToGroup permissionGroup="EditNonRecordMetadata"/>
</permission>
<permission name="_AddModifyEventDates" expose="false">
<grantedToGroup permissionGroup="AddModifyEventDates"/>
</permission>
<permission name="_CloseFolders" expose="false">
<grantedToGroup permissionGroup="CloseFolders"/>
</permission>
<permission name="_DeclareRecordsInClosedFolders" expose="false">
<grantedToGroup permissionGroup="DeclareRecordsInClosedFolders"/>
</permission>
<permission name="_ReOpenFolders" expose="false">
<grantedToGroup permissionGroup="ReOpenFolders"/>
</permission>
<permission name="_CycleVitalRecords" expose="false">
<grantedToGroup permissionGroup="CycleVitalRecords"/>
</permission>
<permission name="_PlanningReviewCycles" expose="false">
<grantedToGroup permissionGroup="PlanningReviewCycles"/>
</permission>
<permission name="_UpdateTriggerDates" expose="false">
<grantedToGroup permissionGroup="UpdateTriggerDates"/>
</permission>
<permission name="_CreateModifyDestroyEvents" expose="false">
<grantedToGroup permissionGroup="CreateModifyDestroyEvents"/>
</permission>
<permission name="_ManageAccessRights" expose="false">
<grantedToGroup permissionGroup="ManageAccessRights"/>
</permission>
<permission name="_MoveRecords" expose="false">
<grantedToGroup permissionGroup="MoveRecords"/>
</permission>
<permission name="_ChangeOrDeleteReferences" expose="false">
<grantedToGroup permissionGroup="ChangeOrDeleteReferences"/>
</permission>
<permission name="_DeleteLinks" expose="false">
<grantedToGroup permissionGroup="DeleteLinks"/>
</permission>
<permission name="_EditDeclaredRecordMetadata" expose="false">
<grantedToGroup permissionGroup="EditDeclaredRecordMetadata"/>
</permission>
<permission name="_ManuallyChangeDispositionDates" expose="false">
<grantedToGroup permissionGroup="ManuallyChangeDispositionDates"/>
</permission>
<permission name="_ApproveRecordsScheduledForCutoff" expose="false">
<grantedToGroup permissionGroup="ApproveRecordsScheduledForCutoff"/>
</permission>
<permission name="_CreateModifyRecordsInCutoffFolders" expose="false">
<grantedToGroup permissionGroup="CreateModifyRecordsInCutoffFolders"/>
</permission>
<permission name="_ExtendRetentionPeriodOrFreeze" expose="false">
<grantedToGroup permissionGroup="ExtendRetentionPeriodOrFreeze"/>
</permission>
<permission name="_Unfreeze" expose="false">
<grantedToGroup permissionGroup="Unfreeze"/>
</permission>
<permission name="_ViewUpdateReasonsForFreeze" expose="false">
<grantedToGroup permissionGroup="ViewUpdateReasonsForFreeze"/>
</permission>
<permission name="_DestroyRecordsScheduledForDestruction" expose="false">
<grantedToGroup permissionGroup="DestroyRecordsScheduledForDestruction"/>
</permission>
<permission name="_DestroyRecords" expose="false">
<grantedToGroup permissionGroup="DestroyRecords"/>
</permission>
<permission name="_UpdateVitalRecordCycleInformation" expose="false">
<grantedToGroup permissionGroup="UpdateVitalRecordCycleInformation"/>
</permission>
<permission name="_UndeclareRecords" expose="false">
<grantedToGroup permissionGroup="UndeclareRecords"/>
</permission>
<permission name="_DeclareAuditAsRecord" expose="false">
<grantedToGroup permissionGroup="DeclareAuditAsRecord"/>
</permission>
<permission name="_DeleteAudit" expose="false">
<grantedToGroup permissionGroup="DeleteAudit"/>
</permission>
<permission name="_CreateModifyDestroyTimeframes" expose="false">
<grantedToGroup permissionGroup="CreateModifyDestroyTimeframes"/>
</permission>
<permission name="_AuthorizeNominatedTransfers" expose="false">
<grantedToGroup permissionGroup="AuthorizeNominatedTransfers"/>
</permission>
<permission name="_EditSelectionLists" expose="false">
<grantedToGroup permissionGroup="EditSelectionLists"/>
</permission>
<permission name="_AuthorizeAllTransfers" expose="false">
<grantedToGroup permissionGroup="AuthorizeAllTransfers"/>
</permission>
<permission name="_CreateModifyDestroyFileplanMetadata" expose="false">
<grantedToGroup permissionGroup="CreateModifyDestroyFileplanMetadata"/>
</permission>
<permission name="_CreateAndAssociateSelectionLists" expose="false">
<grantedToGroup permissionGroup="CreateAndAssociateSelectionLists"/>
</permission>
<permission name="_AttachRulesToMetadataProperties" expose="false">
<grantedToGroup permissionGroup="AttachRulesToMetadataProperties"/>
</permission>
<permission name="_CreateModifyDestroyFileplanTypes" expose="false">
<grantedToGroup permissionGroup="CreateModifyDestroyFileplanTypes"/>
</permission>
<permission name="_CreateModifyDestroyRecordTypes" expose="false">
<grantedToGroup permissionGroup="CreateModifyDestroyRecordTypes"/>
</permission>
<permission name="_MakeOptionalParametersMandatory" expose="false">
<grantedToGroup permissionGroup="MakeOptionalParametersMandatory"/>
</permission>
<permission name="_MapEmailMetadata" expose="false">
<grantedToGroup permissionGroup="MapEmailMetadata"/>
</permission>
<permission name="_DeleteRecords" expose="false">
<grantedToGroup permissionGroup="DeleteRecords"/>
</permission>
<permission name="_TriggerAnEvent" expose="false">
<grantedToGroup permissionGroup="TriggerAnEvent"/>
</permission>
<permission name="_CreateModifyDestroyRoles" expose="false">
<grantedToGroup permissionGroup="CreateModifyDestroyRoles"/>
</permission>
<permission name="_CreateModifyDestroyUsersAndGroups" expose="false">
<grantedToGroup permissionGroup="CreateModifyDestroyUsersAndGroups"/>
</permission>
<permission name="_PasswordControl" expose="false">
<grantedToGroup permissionGroup="PasswordControl"/>
</permission>
<permission name="_EnableDisableAuditByTypes" expose="false">
<grantedToGroup permissionGroup="EnableDisableAuditByTypes"/>
</permission>
<permission name="_SelectAuditMetadata" expose="false">
<grantedToGroup permissionGroup="SelectAuditMetadata"/>
</permission>
<permission name="_DisplayRightsReport" expose="false">
<grantedToGroup permissionGroup="DisplayRightsReport"/>
</permission>
<permission name="_AccessAudit" expose="false">
<grantedToGroup permissionGroup="AccessAudit"/>
</permission>
<permission name="_ExportAudit" expose="false">
<grantedToGroup permissionGroup="ExportAudit"/>
</permission>
<permission name="_CreateModifyDestroyReferenceTypes" expose="false">
<grantedToGroup permissionGroup="CreateModifyDestroyReferenceTypes"/>
</permission>
<permission name="_UpdateClassificationDates" expose="false">
<grantedToGroup permissionGroup="UpdateClassificationDates"/>
</permission>
<permission name="_CreateModifyDestroyClassificationGuides" expose="false">
<grantedToGroup permissionGroup="CreateModifyDestroyClassificationGuides"/>
</permission>
<permission name="_UpgradeDowngradeAndDeclassifyRecords" expose="false">
<grantedToGroup permissionGroup="UpgradeDowngradeAndDeclassifyRecords"/>
</permission>
<permission name="_UpdateExemptionCategories" expose="false">
<grantedToGroup permissionGroup="UpdateExemptionCategories"/>
</permission>
<permission name="_MapClassificationGuideMetadata" expose="false">
<grantedToGroup permissionGroup="MapClassificationGuideMetadata"/>
</permission>
<permission name="_ManageAccessControls" expose="false">
<grantedToGroup permissionGroup="ManageAccessControls"/>
</permission>
</permissionSet>
</permissions>

View File

@@ -0,0 +1,219 @@
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://www.springframework.org/dtd/spring-beans.dtd'>
<beans>
<!-- Bootstrap records management data -->
<bean id="org_alfresco_module_rm_bootstrapData"
class="org.alfresco.repo.module.ImporterModuleComponent"
parent="module.baseComponent">
<property name="moduleId" value="org_alfresco_module_rm"/>
<property name="name" value="org_alfresco_module_rm_bootstrapData"/>
<property name="description" value="Bootstrap records management data"/>
<property name="sinceVersion" value="1.0"/>
<property name="appliesFromVersion" value="1.0"/>
<!-- Data properties -->
<property name="importer" ref="spacesBootstrap"/>
<property name="bootstrapViews">
<list>
<props>
<prop key="path">/${spaces.company_home.childname}/${spaces.dictionary.childname}</prop>
<prop key="location">alfresco/module/org_alfresco_module_rm/bootstrap/RMDataDictionaryBootstrap.xml</prop>
</props>
</list>
</property>
</bean>
<!-- Bootstap the message property files -->
<bean id="org_alfresco_module_rm_resourceBundles" class="org.alfresco.i18n.ResourceBundleBootstrapComponent">
<property name="resourceBundles">
<list>
<value>alfresco.module.org_alfresco_module_rm.messages.notification-service</value>
<value>alfresco.module.org_alfresco_module_rm.messages.admin-service</value>
<value>alfresco.module.org_alfresco_module_rm.messages.records-management-service</value>
<value>alfresco.module.org_alfresco_module_rm.messages.action-service</value>
<value>alfresco.module.org_alfresco_module_rm.messages.audit-service</value>
</list>
</property>
</bean>
<import resource="classpath:alfresco/module/org_alfresco_module_rm/rm-model-context.xml"/>
<!-- Load audit config -->
<bean id="org_alfresco_module_rm_userRolesExtractor" class="org.alfresco.module.org_alfresco_module_rm.audit.AuthenticatedUserRolesDataExtractor">
<property name="registry" ref="auditModel.extractorRegistry" />
<property name="nodeService" ref="nodeService" />
<property name="rmService" ref="recordsManagementService" />
<property name="rmSecurityService" ref="recordsManagementSecurityService" />
</bean>
<bean id="org_alfresco_module_rm_namePathExtractor" class="org.alfresco.module.org_alfresco_module_rm.audit.FilePlanNamePathDataExtractor">
<property name="registry" ref="auditModel.extractorRegistry" />
<property name="nodeService" ref="nodeService" />
<property name="rmService" ref="recordsManagementService" />
</bean>
<bean id="org_alfresco_module_rm_nodeRefPathExtractor" class="org.alfresco.module.org_alfresco_module_rm.audit.FilePlanNodeRefPathDataExtractor">
<property name="registry" ref="auditModel.extractorRegistry" />
<property name="nodeService" ref="nodeService" />
<property name="rmService" ref="recordsManagementService" />
</bean>
<bean id="org_alfresco_module_rm_identifierExtractor" class="org.alfresco.module.org_alfresco_module_rm.audit.FilePlanIdentifierDataExtractor">
<property name="registry" ref="auditModel.extractorRegistry" />
<property name="nodeService" ref="nodeService" />
</bean>
<!-- Bootstrap the permission model -->
<bean id="org_alfresco_module_rm_permissionBootstrap" parent="permissionModelBootstrap">
<property name="model" value="alfresco/module/org_alfresco_module_rm/model/recordsPermissionModel.xml"/>
</bean>
<!-- Import fixed permission definitions for RM -->
<import resource="classpath:alfresco/module/org_alfresco_module_rm/rm-public-services-security-context.xml"/>
<!-- Import the RM service's -->
<import resource="classpath:alfresco/module/org_alfresco_module_rm/rm-service-context.xml"/>
<!-- Import DOD 5015 -->
<import resource="classpath:alfresco/module/org_alfresco_module_rm/dod5015/dod5015-context.xml"/>
<!-- Import the RM identifier service's -->
<import resource="classpath:alfresco/module/org_alfresco_module_rm/rm-id-context.xml"/>
<!-- Import capabilities -->
<import resource="classpath:alfresco/module/org_alfresco_module_rm/rm-capabilities-context.xml"/>
<!-- Import the RM action's -->
<import resource="classpath:alfresco/module/org_alfresco_module_rm/rm-action-context.xml"/>
<!-- Import the RM module patches -->
<import resource="classpath:alfresco/module/org_alfresco_module_rm/rm-patch-context.xml"/>
<!-- Import RM UI evaluators -->
<import resource="classpath:alfresco/module/org_alfresco_module_rm/rm-ui-evaluators-context.xml"/>
<!-- RM Script API -->
<bean id="scriptRecordsManagementService" parent="baseJavaScriptExtension" class="org.alfresco.module.org_alfresco_module_rm.jscript.ScriptRecordsManagmentService">
<property name="extensionName">
<value>rmService</value>
</property>
<property name="recordsManagementServiceRegistry" ref="RecordsManagementServiceRegistry"/>
<property name="notificationHelper" ref="recordsManagementNotificationHelper"/>
</bean>
<!-- Event types -->
<bean id="rmEventResourceBundles" class="org.alfresco.i18n.ResourceBundleBootstrapComponent">
<property name="resourceBundles">
<list>
<value>alfresco.module.org_alfresco_module_rm.rm-events</value>
</list>
</property>
</bean>
<bean id="rmEventType" init-method="init" abstract="true">
<property name="recordsManagementEventService" ref="recordsManagementEventService"/>
</bean>
<bean id="rmEventType.simple" class="org.alfresco.module.org_alfresco_module_rm.event.SimpleRecordsManagementEventTypeImpl" parent="rmEventType"/>
<bean id="rmEventType.superseded" class="org.alfresco.module.org_alfresco_module_rm.event.OnReferenceCreateEventType" parent="rmEventType">
<property name="referenceName" value="{http://www.alfresco.org/model/rmcustom/1.0}supersedes"/>
<property name="recordsManagementService" ref="recordsManagementService"/>
<property name="dispositionService" ref="dispositionService"/>
<property name="recordsManagementActionService" ref="recordsManagementActionService"/>
<property name="policyComponent" ref="policyComponent"/>
</bean>
<bean id="rmEventType.obsolete" class="org.alfresco.module.org_alfresco_module_rm.event.OnReferenceCreateEventType" parent="rmEventType">
<property name="referenceName" value="{http://www.alfresco.org/model/rmcustom/1.0}obsoletes"/>
<property name="recordsManagementService" ref="recordsManagementService"/>
<property name="dispositionService" ref="dispositionService"/>
<property name="recordsManagementActionService" ref="recordsManagementActionService"/>
<property name="policyComponent" ref="policyComponent"/>
</bean>
<bean id="rmEventType.crossReferencedRecordTransfered" class="org.alfresco.module.org_alfresco_module_rm.event.OnReferencedRecordActionedUpon" parent="rmEventType">
<property name="referenceName" value="{http://www.alfresco.org/model/rmcustom/1.0}crossreference"/>
<property name="actionName" value="transferComplete"/>
<property name="nodeService" ref="nodeService"/>
<property name="recordsManagementService" ref="recordsManagementService"/>
<property name="dispositionService" ref="dispositionService"/>
<property name="recordsManagementAdminService" ref="recordsManagementAdminService"/>
<property name="recordsManagementActionService" ref="recordsManagementActionService"/>
<property name="policyComponent" ref="policyComponent"/>
</bean>
<!-- Job context -->
<import resource="classpath:alfresco/module/org_alfresco_module_rm/rm-job-context.xml"/>
<bean id="RecordsManagementBootstrap" class="org.alfresco.module.org_alfresco_module_rm.RecordsManagementBootstrap">
<property name="transactionService" ref="transactionService"/>
<!-- init caveatConfig behaviours -->
<property name="caveatConfigService" ref="caveatConfigService"/>
<property name="customEmailMappingService" ref="customEmailMappingService"/>
<property name="recordsManagementAdminService" ref="RecordsManagementAdminService"/>
</bean>
<!-- Java script interface for rm caveat config-->
<bean id="rmConfigServiceScript" parent="baseJavaScriptExtension" class="org.alfresco.module.org_alfresco_module_rm.caveat.ScriptRMCaveatConfigService">
<property name="extensionName">
<value>caveatConfig</value>
</property>
<property name="caveatConfigService" ref="caveatConfigService"/>
<property name="authorityService" ref="authorityService"/>
</bean>
<!-- Form Processor Filters to process RM nodes and types -->
<bean id="rmNodeFormFilter" parent="baseFormFilter"
class="org.alfresco.module.org_alfresco_module_rm.forms.RecordsManagementNodeFormFilter">
<property name="filterRegistry" ref="nodeFilterRegistry" />
<property name="namespaceService" ref="NamespaceService"/>
<property name="nodeService" ref="nodeService"/>
<property name="dictionaryService" ref="DictionaryService" />
<property name="recordsManagementServiceRegistry" ref="RecordsManagementServiceRegistry" />
<property name="recordsManagementService" ref="recordsManagementService"/>
<property name="dispositionService" ref="dispositionService"/>
<property name="recordsManagementAdminService" ref="recordsManagementAdminService"/>
</bean>
<bean id="rmTypeFormFilter" parent="baseFormFilter"
class="org.alfresco.module.org_alfresco_module_rm.forms.RecordsManagementTypeFormFilter">
<property name="filterRegistry" ref="typeFilterRegistry" />
<property name="namespaceService" ref="NamespaceService"/>
<property name="nodeService" ref="NodeService"/>
<property name="recordsManagementServiceRegistry" ref="RecordsManagementServiceRegistry" />
<property name="recordsManagementService" ref="recordsManagementService"/>
<property name="recordsManagementAdminService" ref="recordsManagementAdminService"/>
<property name="identifierService" ref="recordsManagementIdentifierService"/>
</bean>
<!-- Override email extractor implementation -->
<bean id="extracter.RFC822"
class="org.alfresco.module.org_alfresco_module_rm.email.RFC822MetadataExtracter"
parent="baseMetadataExtracter" >
<property name="nodeService" ref="nodeService"/>
<property name="supportedDateFormats">
<list>
<value>EEE, d MMM yyyy HH:mm:ss Z</value>
<value>EEE, d MMM yy HH:mm:ss Z</value>
</list>
</property>
</bean>
<!-- Prevent ghosted records being renditioned -->
<bean id="noRenditionsForGhosts" parent="baseRenditionPreventionClass">
<constructor-arg value="rma:ghosted"/>
</bean>
<!-- Import the RM webscript's -->
<import resource="classpath:alfresco/module/org_alfresco_module_rm/rm-webscript-context.xml"/>
</beans>

View File

@@ -0,0 +1,11 @@
# Alfresco Records Management Module
module.id=org_alfresco_module_rm
# 23/02/2012 - Renamed
module.aliases=org_alfresco_module_dod5015
module.title=Records Management
module.description=Alfresco Record Management Extension
module.version=2.0
module.repo.version.min=4.0

View File

@@ -0,0 +1,811 @@
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://www.springframework.org/dtd/spring-beans.dtd'>
<beans>
<!-- I18N -->
<bean id="rmActionResourceBundles" class="org.alfresco.i18n.ResourceBundleBootstrapComponent">
<property name="resourceBundles">
<list>
<value>alfresco.module.org_alfresco_module_rm.rm-actions</value>
</list>
</property>
</bean>
<!-- Actions -->
<bean id="rmAction" parent="action-executer" abstract="true">
<property name="namespaceService" ref="namespaceService"/>
<property name="transactionService" ref="transactionService"/>
<property name="nodeService" ref="nodeService"/>
<property name="contentService" ref="contentService"/>
<property name="dictionaryService" ref="dictionaryService"/>
<property name="actionService" ref="actionService"/>
<property name="recordsManagementAuditService" ref="recordsManagementAuditService"/>
<property name="recordsManagementAdminService" ref="recordsManagementAdminService"/>
<property name="recordsManagementActionService" ref="recordsManagementActionService"/>
<property name="recordsManagementService" ref="recordsManagementService"/>
<property name="dispositionService" ref="dispositionService"/>
<property name="vitalRecordService" ref="vitalRecordService"/>
<property name="recordsManagementEventService" ref="recordsManagementEventService"/>
<property name="publicAction" value="false"/>
<property name="ownableService" ref="ownableService"/>
</bean>
<bean id="rmProxyAction" init-method="registerAction" abstract="true">
<property name="runtimeActionService" ref="actionService"/>
<property name="recordsManagementActionService" ref="recordsManagementActionService"/>
<property name="proxyInterfaces">
<list>
<value>org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementAction</value>
<value>org.alfresco.repo.action.executer.ActionExecuter</value>
</list>
</property>
</bean>
<bean id="actionSecurity" abstract="true">
<property name="authenticationManager">
<ref bean="authenticationManager"/>
</property>
<property name="accessDecisionManager">
<ref bean="accessDecisionManager"/>
</property>
<property name="afterInvocationManager">
<ref bean="afterInvocationManager"/>
</property>
</bean>
<bean id="actionProxy" abstract="true">
</bean>
<!-- file action -->
<!-- Bound to policy: allow -->
<bean id="file_proxy" class="org.alfresco.module.org_alfresco_module_rm.capability.RMActionProxyFactoryBean" parent="rmProxyAction" init-method="registerAction">
<property name="target">
<ref bean="file"/>
</property>
<property name="interceptorNames">
<list>
<idref bean="file_security"/>
</list>
</property>
</bean>
<bean id="file_security" class="org.alfresco.repo.security.permissions.impl.acegi.MethodSecurityInterceptor" parent="actionSecurity">
<property name="objectDefinitionSource">
<value>
org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementAction.execute=RM_ALLOW
org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementAction.*=RM_ALLOW
org.alfresco.repo.action.executer.ActionExecuter.*=RM_ALLOW
</value>
</property>
</bean>
<!-- disable normal registration - the proxy will do it so the proxy is registered -->
<bean id="file" class="org.alfresco.module.org_alfresco_module_rm.action.impl.FileAction" parent="rmAction" depends-on="rmFileRecordsCapability">
<property name="capability" ref="rmFileRecordsCapability"/>
</bean>
<!-- Cutoff action -->
<bean id="cutoff_proxy" class="org.alfresco.module.org_alfresco_module_rm.capability.RMActionProxyFactoryBean" parent="rmProxyAction" init-method="registerAction">
<property name="target">
<ref bean="cutoff"/>
</property>
<property name="interceptorNames">
<list>
<idref bean="cutoff_security"/>
</list>
</property>
</bean>
<bean id="cutoff_security" class="org.alfresco.repo.security.permissions.impl.acegi.MethodSecurityInterceptor" parent="actionSecurity">
<property name="objectDefinitionSource">
<value>
org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementAction.execute=RM_CAP.0.rma:filePlanComponent.ApproveRecordsScheduledForCutoff
org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementAction.*=RM_ALLOW
org.alfresco.repo.action.executer.ActionExecuter.*=RM_ALLOW
</value>
</property>
</bean>
<bean id="cutoff" class="org.alfresco.module.org_alfresco_module_rm.action.impl.CutOffAction" parent="rmAction" depends-on="rmApproveRecordsScheduledForCutoffCapability">
<property name="capability" ref="rmApproveRecordsScheduledForCutoffCapability"/>
</bean>
<!-- UnCutoff action -->
<bean id="unCutoff_proxy" class="org.alfresco.module.org_alfresco_module_rm.capability.RMActionProxyFactoryBean" parent="rmProxyAction" init-method="registerAction">
<property name="target">
<ref bean="unCutoff"/>
</property>
<property name="interceptorNames">
<list>
<idref bean="unCutoff_security"/>
</list>
</property>
</bean>
<bean id="unCutoff_security" class="org.alfresco.repo.security.permissions.impl.acegi.MethodSecurityInterceptor" parent="actionSecurity">
<property name="objectDefinitionSource">
<value>
org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementAction.execute=RM_CAP.0.rma:filePlanComponent.ApproveRecordsScheduledForCutoff
org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementAction.*=RM_ALLOW
org.alfresco.repo.action.executer.ActionExecuter.*=RM_ALLOW
</value>
</property>
</bean>
<bean id="unCutoff" class="org.alfresco.module.org_alfresco_module_rm.action.impl.UnCutoffAction" parent="rmAction" depends-on="rmApproveRecordsScheduledForCutoffCapability">
<property name="capability" ref="rmApproveRecordsScheduledForCutoffCapability"/>
</bean>
<!-- Destroy -->
<bean id="destroy_proxy" class="org.alfresco.module.org_alfresco_module_rm.capability.RMActionProxyFactoryBean" parent="rmProxyAction" init-method="registerAction">
<property name="target">
<ref bean="destroy"/>
</property>
<property name="interceptorNames">
<list>
<idref bean="destroy_security"/>
</list>
</property>
</bean>
<bean id="destroy_security" class="org.alfresco.repo.security.permissions.impl.acegi.MethodSecurityInterceptor" parent="actionSecurity">
<property name="objectDefinitionSource">
<value>
org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementAction.execute=RM_CAP.0.rma:filePlanComponent.DestroyRecordsScheduledForDestruction
org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementAction.*=RM_ALLOW
org.alfresco.repo.action.executer.ActionExecuter.*=RM_ALLOW
</value>
</property>
</bean>
<bean id="destroy" class="org.alfresco.module.org_alfresco_module_rm.action.impl.DestroyAction" parent="rmAction"
depends-on="rmDestroyRecordsScheduledForDestructionCapability">
<property name="policyComponent">
<ref bean="policyComponent"/>
</property>
<property name="eagerContentStoreCleaner" ref="eagerContentStoreCleaner"/>
<property name="ghostingEnabled">
<value>${rm.ghosting.enabled}</value>
</property>
<property name="capability" ref="rmDestroyRecordsScheduledForDestructionCapability" />
</bean>
<!-- retain -->
<!-- No permissoin?? : allow -->
<bean id="retain_proxy" class="org.alfresco.module.org_alfresco_module_rm.capability.RMActionProxyFactoryBean" parent="rmProxyAction" init-method="registerAction">
<property name="target">
<ref bean="retain"/>
</property>
<property name="interceptorNames">
<list>
<idref bean="retain_security"/>
</list>
</property>
</bean>
<bean id="retain_security" class="org.alfresco.repo.security.permissions.impl.acegi.MethodSecurityInterceptor" parent="actionSecurity">
<property name="objectDefinitionSource">
<value>
org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementAction.execute=RM_ALLOW
org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementAction.*=RM_ALLOW
org.alfresco.repo.action.executer.ActionExecuter.*=RM_ALLOW
</value>
</property>
</bean>
<bean id="retain" class="org.alfresco.module.org_alfresco_module_rm.action.impl.RetainAction" parent="rmAction" depends-on="rmFileRecordsCapability"/>
<!-- open record folder -->
<bean id="openRecordFolder_proxy" class="org.alfresco.module.org_alfresco_module_rm.capability.RMActionProxyFactoryBean" parent="rmProxyAction" init-method="registerAction">
<property name="target">
<ref bean="openRecordFolder"/>
</property>
<property name="interceptorNames">
<list>
<idref bean="openRecordFolder_security"/>
</list>
</property>
</bean>
<bean id="openRecordFolder_security" class="org.alfresco.repo.security.permissions.impl.acegi.MethodSecurityInterceptor" parent="actionSecurity">
<property name="objectDefinitionSource">
<value>
org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementAction.execute=RM_CAP.0.rma:filePlanComponent.ReOpenFolders
org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementAction.*=RM_ALLOW
org.alfresco.repo.action.executer.ActionExecuter.*=RM_ALLOW
</value>
</property>
</bean>
<bean id="openRecordFolder" class="org.alfresco.module.org_alfresco_module_rm.action.impl.OpenRecordFolderAction" parent="rmAction" depends-on="rmReOpenFoldersCapability">
<property name="capability" ref="rmReOpenFoldersCapability"/>
</bean>
<!-- close record folder -->
<bean id="closeRecordFolder_proxy" class="org.alfresco.module.org_alfresco_module_rm.capability.RMActionProxyFactoryBean" parent="rmProxyAction" init-method="registerAction">
<property name="target">
<ref bean="closeRecordFolder"/>
</property>
<property name="interceptorNames">
<list>
<idref bean="closeRecordFolder_security"/>
</list>
</property>
</bean>
<bean id="closeRecordFolder_security" class="org.alfresco.repo.security.permissions.impl.acegi.MethodSecurityInterceptor" parent="actionSecurity">
<property name="objectDefinitionSource">
<value>
org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementAction.execute=RM_CAP.0.rma:filePlanComponent.CloseFolders
org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementAction.*=RM_ALLOW
org.alfresco.repo.action.executer.ActionExecuter.*=RM_ALLOW
</value>
</property>
</bean>
<bean id="closeRecordFolder" class="org.alfresco.module.org_alfresco_module_rm.action.impl.CloseRecordFolderAction" parent="rmAction" depends-on="rmCloseFoldersCapability">
<property name="capability" ref="rmCloseFoldersCapability"/>
</bean>
<!-- reviewed -->
<bean id="reviewed_proxy" class="org.alfresco.module.org_alfresco_module_rm.capability.RMActionProxyFactoryBean" parent="rmProxyAction" init-method="registerAction">
<property name="target">
<ref bean="reviewed"/>
</property>
<property name="interceptorNames">
<list>
<idref bean="reviewed_security"/>
</list>
</property>
</bean>
<bean id="reviewed_security" class="org.alfresco.repo.security.permissions.impl.acegi.MethodSecurityInterceptor" parent="actionSecurity">
<property name="objectDefinitionSource">
<value>
org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementAction.execute=RM_CAP.0.rma:filePlanComponent.CycleVitalRecords
org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementAction.*=RM_ALLOW
org.alfresco.repo.action.executer.ActionExecuter.*=RM_ALLOW
</value>
</property>
</bean>
<bean id="reviewed" class="org.alfresco.module.org_alfresco_module_rm.vital.ReviewedAction" parent="rmAction" depends-on="rmCycleVitalRecordsCapability">
<property name="capability" ref="rmCycleVitalRecordsCapability"/>
</bean>
<!-- set up record folder -->
<!-- bound to policy: allow -->
<bean id="setupRecordFolder_proxy" class="org.alfresco.module.org_alfresco_module_rm.capability.RMActionProxyFactoryBean" parent="rmProxyAction" init-method="registerAction">
<property name="target">
<ref bean="setupRecordFolder"/>
</property>
<property name="interceptorNames">
<list>
<idref bean="setupRecordFolder_security"/>
</list>
</property>
</bean>
<bean id="setupRecordFolder_security" class="org.alfresco.repo.security.permissions.impl.acegi.MethodSecurityInterceptor" parent="actionSecurity">
<property name="objectDefinitionSource">
<value>
org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementAction.execute=RM_ALLOW
org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementAction.*=RM_ALLOW
org.alfresco.repo.action.executer.ActionExecuter.*=RM_ALLOW
</value>
</property>
</bean>
<bean id="setupRecordFolder" class="org.alfresco.module.org_alfresco_module_rm.action.impl.SetupRecordFolderAction" parent="rmAction" depends-on="rmFileRecordsCapability"/>
<!-- declare record -->
<!-- fileable?? -->
<bean id="declareRecord_proxy" class="org.alfresco.module.org_alfresco_module_rm.capability.RMActionProxyFactoryBean" parent="rmProxyAction" init-method="registerAction">
<property name="target">
<ref bean="declareRecord"/>
</property>
<property name="interceptorNames">
<list>
<idref bean="declareRecord_security"/>
</list>
</property>
</bean>
<bean id="declareRecord_security" class="org.alfresco.repo.security.permissions.impl.acegi.MethodSecurityInterceptor" parent="actionSecurity">
<property name="objectDefinitionSource">
<value>
org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementAction.execute=RM.Declare.0
org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementAction.*=RM_ALLOW
org.alfresco.repo.action.executer.ActionExecuter.*=RM_ALLOW
</value>
</property>
</bean>
<bean id="declareRecord" class="org.alfresco.module.org_alfresco_module_rm.action.impl.DeclareRecordAction" parent="rmAction" depends-on="rmDeclareRecordsCapability">
<property name="capabilities">
<list>
<ref bean="rmDeclareRecordsCapability" />
<ref bean="rmDeclareRecordsInClosedFoldersCapability" />
</list>
</property>
<property name="capability" ref="rmDeclareRecordsCapability"/>
</bean>
<!-- undeclare record -->
<bean id="undeclareRecord_proxy" class="org.alfresco.module.org_alfresco_module_rm.capability.RMActionProxyFactoryBean" parent="rmProxyAction" init-method="registerAction">
<property name="target">
<ref bean="undeclareRecord"/>
</property>
<property name="interceptorNames">
<list>
<idref bean="undeclareRecord_security"/>
</list>
</property>
</bean>
<bean id="undeclareRecord_security" class="org.alfresco.repo.security.permissions.impl.acegi.MethodSecurityInterceptor" parent="actionSecurity">
<property name="objectDefinitionSource">
<value>
org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementAction.execute=RM_CAP.0.rma:filePlanComponent.UndeclareRecords
org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementAction.*=RM_ALLOW
org.alfresco.repo.action.executer.ActionExecuter.*=RM_ALLOW
</value>
</property>
</bean>
<bean id="undeclareRecord" class="org.alfresco.module.org_alfresco_module_rm.action.impl.UndeclareRecordAction" parent="rmAction" depends-on="rmUndeclareRecordsCapability">
<property name="capability" ref="rmUndeclareRecordsCapability"/>
</bean>
<!-- Freeze record -->
<bean id="freeze_proxy" class="org.alfresco.module.org_alfresco_module_rm.capability.RMActionProxyFactoryBean" parent="rmProxyAction" init-method="registerAction">
<property name="target">
<ref bean="freeze"/>
</property>
<property name="interceptorNames">
<list>
<idref bean="freeze_security"/>
</list>
</property>
</bean>
<bean id="freeze_security" class="org.alfresco.repo.security.permissions.impl.acegi.MethodSecurityInterceptor" parent="actionSecurity">
<property name="objectDefinitionSource">
<value>
org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementAction.execute=RM_CAP.0.rma:filePlanComponent.ExtendRetentionPeriodOrFreeze
org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementAction.*=RM_ALLOW
org.alfresco.repo.action.executer.ActionExecuter.*=RM_ALLOW
</value>
</property>
</bean>
<bean id="freeze" class="org.alfresco.module.org_alfresco_module_rm.action.impl.FreezeAction" parent="rmAction" depends-on="rmExtendRetentionPeriodOrFreezeCapability">
<property name="capability" ref="rmExtendRetentionPeriodOrFreezeCapability"/>
</bean>
<!-- Unfreeze record -->
<bean id="unfreeze_proxy" class="org.alfresco.module.org_alfresco_module_rm.capability.RMActionProxyFactoryBean" parent="rmProxyAction" init-method="registerAction">
<property name="target">
<ref bean="unfreeze"/>
</property>
<property name="interceptorNames">
<list>
<idref bean="unfreeze_security"/>
</list>
</property>
</bean>
<bean id="unfreeze_security" class="org.alfresco.repo.security.permissions.impl.acegi.MethodSecurityInterceptor" parent="actionSecurity">
<property name="objectDefinitionSource">
<value>
org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementAction.execute=RM_CAP.0.rma:filePlanComponent.Unfreeze
org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementAction.*=RM_ALLOW
org.alfresco.repo.action.executer.ActionExecuter.*=RM_ALLOW
</value>
</property>
</bean>
<bean id="unfreeze" class="org.alfresco.module.org_alfresco_module_rm.action.impl.UnfreezeAction" parent="rmAction" depends-on="rmUnfreezeCapability">
<property name="capability" ref="rmUnfreezeCapability"/>
</bean>
<!-- Relinquish Hold Action-->
<bean id="relinquishHold_proxy" class="org.alfresco.module.org_alfresco_module_rm.capability.RMActionProxyFactoryBean" parent="rmProxyAction" init-method="registerAction">
<property name="target">
<ref bean="relinquishHold"/>
</property>
<property name="interceptorNames">
<list>
<idref bean="unfreeze_security"/>
</list>
</property>
</bean>
<bean id="relinquishHold" class="org.alfresco.module.org_alfresco_module_rm.action.impl.RelinquishHoldAction" parent="rmAction" depends-on="rmUnfreezeCapability">
<property name="capability" ref="rmUnfreezeCapability"/>
</bean>
<!-- Edit hold reason -->
<bean id="editHoldReason_proxy" class="org.alfresco.module.org_alfresco_module_rm.capability.RMActionProxyFactoryBean" parent="rmProxyAction" init-method="registerAction">
<property name="target">
<ref bean="editHoldReason"/>
</property>
<property name="interceptorNames">
<list>
<idref bean="editHoldReason_security"/>
</list>
</property>
</bean>
<bean id="editHoldReason_security" class="org.alfresco.repo.security.permissions.impl.acegi.MethodSecurityInterceptor" parent="actionSecurity">
<property name="objectDefinitionSource">
<value>
org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementAction.execute=RM_CAP.0.rma:filePlanComponent.ViewUpdateReasonsForFreeze
org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementAction.*=RM_ALLOW
org.alfresco.repo.action.executer.ActionExecuter.*=RM_ALLOW
</value>
</property>
</bean>
<bean id="editHoldReason" class="org.alfresco.module.org_alfresco_module_rm.action.impl.EditHoldReasonAction" parent="rmAction" depends-on="rmViewUpdateReasonsForFreezeCapability">
<property name="capability" ref="rmViewUpdateReasonsForFreezeCapability"/>
</bean>
<!-- Edit review as of date -->
<bean id="editReviewAsOfDate_proxy" class="org.alfresco.module.org_alfresco_module_rm.capability.RMActionProxyFactoryBean" parent="rmProxyAction" init-method="registerAction">
<property name="target">
<ref bean="editReviewAsOfDate"/>
</property>
<property name="interceptorNames">
<list>
<idref bean="editReviewAsOfDate_security"/>
</list>
</property>
</bean>
<bean id="editReviewAsOfDate_security" class="org.alfresco.repo.security.permissions.impl.acegi.MethodSecurityInterceptor" parent="actionSecurity">
<property name="objectDefinitionSource">
<value>
org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementAction.execute=RM_CAP.0.rma:filePlanComponent.PlanningReviewCycles
org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementAction.*=RM_ALLOW
org.alfresco.repo.action.executer.ActionExecuter.*=RM_ALLOW
</value>
</property>
</bean>
<bean id="editReviewAsOfDate" class="org.alfresco.module.org_alfresco_module_rm.action.impl.EditReviewAsOfDateAction" parent="rmAction" depends-on="rmPlanningReviewCyclesCapability">
<property name="capability" ref="rmPlanningReviewCyclesCapability"/>
</bean>
<!-- Edit disposition action as of date -->
<bean id="editDispositionActionAsOfDate_proxy" class="org.alfresco.module.org_alfresco_module_rm.capability.RMActionProxyFactoryBean" parent="rmProxyAction" init-method="registerAction">
<property name="target">
<ref bean="editDispositionActionAsOfDate"/>
</property>
<property name="interceptorNames">
<list>
<idref bean="editDispositionActionAsOfDate_security"/>
</list>
</property>
</bean>
<bean id="editDispositionActionAsOfDate_security" class="org.alfresco.repo.security.permissions.impl.acegi.MethodSecurityInterceptor" parent="actionSecurity">
<property name="objectDefinitionSource">
<value>
org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementAction.execute=RM_CAP.0.rma:filePlanComponent.ManuallyChangeDispositionDates
org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementAction.*=RM_ALLOW
org.alfresco.repo.action.executer.ActionExecuter.*=RM_ALLOW
</value>
</property>
</bean>
<bean id="editDispositionActionAsOfDate" class="org.alfresco.module.org_alfresco_module_rm.action.impl.EditDispositionActionAsOfDateAction" parent="rmAction" depends-on="rmManuallyChangeDispositionDatesCapability">
<property name="capability" ref="rmManuallyChangeDispositionDatesCapability"/>
</bean>
<!-- broadcast vital record definition -->
<!-- bound to policy: allow -->
<bean id="broadcastVitalRecordDefinition_proxy" class="org.alfresco.module.org_alfresco_module_rm.capability.RMActionProxyFactoryBean" parent="rmProxyAction" init-method="registerAction">
<property name="target">
<ref bean="broadcastVitalRecordDefinition"/>
</property>
<property name="interceptorNames">
<list>
<idref bean="broadcastVitalRecordDefinition_security"/>
</list>
</property>
</bean>
<bean id="broadcastVitalRecordDefinition_security" class="org.alfresco.repo.security.permissions.impl.acegi.MethodSecurityInterceptor" parent="actionSecurity">
<property name="objectDefinitionSource">
<value>
org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementAction.execute=RM_ALLOW
org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementAction.*=RM_ALLOW
org.alfresco.repo.action.executer.ActionExecuter.*=RM_ALLOW
</value>
</property>
</bean>
<bean id="broadcastVitalRecordDefinition" class="org.alfresco.module.org_alfresco_module_rm.vital.BroadcastVitalRecordDefinitionAction"
parent="rmAction" />
<!-- broadcast disposition action definition update -->
<!-- bound to policy: allow -->
<bean id="broadcastDispositionActionDefinitionUpdate_proxy" class="org.alfresco.module.org_alfresco_module_rm.capability.RMActionProxyFactoryBean" parent="rmProxyAction" init-method="registerAction">
<property name="target">
<ref bean="broadcastDispositionActionDefinitionUpdate"/>
</property>
<property name="interceptorNames">
<list>
<idref bean="broadcastDispositionActionDefinitionUpdate_security"/>
</list>
</property>
</bean>
<bean id="broadcastDispositionActionDefinitionUpdate_security" class="org.alfresco.repo.security.permissions.impl.acegi.MethodSecurityInterceptor" parent="actionSecurity">
<property name="objectDefinitionSource">
<value>
org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementAction.execute=RM_ALLOW
org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementAction.*=RM_ALLOW
org.alfresco.repo.action.executer.ActionExecuter.*=RM_ALLOW
</value>
</property>
</bean>
<bean id="broadcastDispositionActionDefinitionUpdate" class="org.alfresco.module.org_alfresco_module_rm.action.impl.BroadcastDispositionActionDefinitionUpdateAction"
parent="rmAction" />
<!-- complete event -->
<bean id="completeEvent_proxy" class="org.alfresco.module.org_alfresco_module_rm.capability.RMActionProxyFactoryBean" parent="rmProxyAction" init-method="registerAction">
<property name="target">
<ref bean="completeEvent"/>
</property>
<property name="interceptorNames">
<list>
<idref bean="completeEvent_security"/>
</list>
</property>
</bean>
<bean id="completeEvent_security" class="org.alfresco.repo.security.permissions.impl.acegi.MethodSecurityInterceptor" parent="actionSecurity">
<property name="objectDefinitionSource">
<value>
org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementAction.execute=RM_CAP.0.rma:filePlanComponent.AddModifyEventDates
org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementAction.*=RM_ALLOW
org.alfresco.repo.action.executer.ActionExecuter.*=RM_ALLOW
</value>
</property>
</bean>
<bean id="completeEvent" class="org.alfresco.module.org_alfresco_module_rm.action.impl.CompleteEventAction" parent="rmAction" depends-on="rmAddModifyEventDatesCapability">
<property name="capability" ref="rmAddModifyEventDatesCapability"/>
</bean>
<!-- undo event -->
<bean id="undoEvent_proxy" class="org.alfresco.module.org_alfresco_module_rm.capability.RMActionProxyFactoryBean" parent="rmProxyAction" init-method="registerAction">
<property name="target">
<ref bean="undoEvent"/>
</property>
<property name="interceptorNames">
<list>
<idref bean="undoEvent_security"/>
</list>
</property>
</bean>
<bean id="undoEvent_security" class="org.alfresco.repo.security.permissions.impl.acegi.MethodSecurityInterceptor" parent="actionSecurity">
<property name="objectDefinitionSource">
<value>
org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementAction.execute=RM_CAP.0.rma:filePlanComponent.AddModifyEventDates
org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementAction.*=RM_ALLOW
org.alfresco.repo.action.executer.ActionExecuter.*=RM_ALLOW
</value>
</property>
</bean>
<bean id="undoEvent" class="org.alfresco.module.org_alfresco_module_rm.action.impl.UndoEventAction" parent="rmAction" depends-on="rmAddModifyEventDatesCapability">
<property name="capability" ref="rmAddModifyEventDatesCapability"/>
</bean>
<!-- transfer -->
<bean id="transfer_proxy" class="org.alfresco.module.org_alfresco_module_rm.capability.RMActionProxyFactoryBean" parent="rmProxyAction" init-method="registerAction">
<property name="target">
<ref bean="transfer"/>
</property>
<property name="interceptorNames">
<list>
<idref bean="transfer_security"/>
</list>
</property>
</bean>
<bean id="transfer_security" class="org.alfresco.repo.security.permissions.impl.acegi.MethodSecurityInterceptor" parent="actionSecurity">
<property name="objectDefinitionSource">
<value>
org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementAction.execute=RM_CAP.0.rma:filePlanComponent.AuthorizeAllTransfers
org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementAction.*=RM_ALLOW
org.alfresco.repo.action.executer.ActionExecuter.*=RM_ALLOW
</value>
</property>
</bean>
<bean id="transfer" class="org.alfresco.module.org_alfresco_module_rm.action.impl.TransferAction" parent="rmAction" depends-on="rmAuthorizeAllTransfersCapability">
<property name="capability" ref="rmAuthorizeAllTransfersCapability"/>
<property name="isAccession" value="false"/>
</bean>
<!-- Transfer complete -->
<bean id="transferComplete_proxy" class="org.alfresco.module.org_alfresco_module_rm.capability.RMActionProxyFactoryBean" parent="rmProxyAction" init-method="registerAction">
<property name="target">
<ref bean="transferComplete"/>
</property>
<property name="interceptorNames">
<list>
<idref bean="transfer_security"/>
</list>
</property>
</bean>
<bean id="transferComplete" class="org.alfresco.module.org_alfresco_module_rm.action.impl.TransferCompleteAction" parent="rmAction" depends-on="rmAuthorizeAllTransfersCapability">
<property name="capability" ref="rmAuthorizeAllTransfersCapability"/>
</bean>
<!-- accession -->
<bean id="accession_proxy" class="org.alfresco.module.org_alfresco_module_rm.capability.RMActionProxyFactoryBean" parent="rmProxyAction" init-method="registerAction">
<property name="target">
<ref bean="accession"/>
</property>
<property name="interceptorNames">
<list>
<idref bean="accession_security"/>
</list>
</property>
</bean>
<bean id="accession_security" class="org.alfresco.repo.security.permissions.impl.acegi.MethodSecurityInterceptor" parent="actionSecurity">
<property name="objectDefinitionSource">
<value>
org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementAction.execute=RM_CAP.0.rma:filePlanComponent.AuthorizeNominatedTransfers
org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementAction.*=RM_ALLOW
org.alfresco.repo.action.executer.ActionExecuter.*=RM_ALLOW
</value>
</property>
</bean>
<bean id="accession" class="org.alfresco.module.org_alfresco_module_rm.action.impl.TransferAction" parent="rmAction" depends-on="rmAuthorizeNominatedTransfersCapability">
<property name="capability" ref="rmAuthorizeNominatedTransfersCapability"/>
<property name="isAccession" value="true"/>
</bean>
<!-- Accession complete -->
<bean id="accessionComplete_proxy" class="org.alfresco.module.org_alfresco_module_rm.capability.RMActionProxyFactoryBean" parent="rmProxyAction" init-method="registerAction">
<property name="target">
<ref bean="accessionComplete"/>
</property>
<!--
<property name="interceptorNames">
<list>
<idref bean="accesion_security"/>
</list>
</property>
-->
</bean>
<bean id="accessionComplete" class="org.alfresco.module.org_alfresco_module_rm.action.impl.TransferCompleteAction" parent="rmAction" depends-on="rmAuthorizeNominatedTransfersCapability">
<property name="capability" ref="rmAuthorizeNominatedTransfersCapability"/>
</bean>
<!-- Split Email -->
<bean id="splitEmail" class="org.alfresco.module.org_alfresco_module_rm.action.impl.SplitEmailAction" parent="rmAction" >
</bean>
<bean id="splitEmail_proxy" class="org.alfresco.module.org_alfresco_module_rm.capability.RMActionProxyFactoryBean" parent="rmProxyAction" init-method="registerAction">
<property name="target">
<ref bean="splitEmail"/>
</property>
</bean>
<!-- Create disposition schedule -->
<bean id="createDispositionSchedule_proxy" class="org.alfresco.module.org_alfresco_module_rm.capability.RMActionProxyFactoryBean" parent="rmProxyAction" init-method="registerAction">
<property name="target">
<ref bean="createDispositionSchedule"/>
</property>
<property name="interceptorNames">
<list>
<idref bean="createDispositionSchedule_security"/>
</list>
</property>
</bean>
<bean id="createDispositionSchedule_security" class="org.alfresco.repo.security.permissions.impl.acegi.MethodSecurityInterceptor" parent="actionSecurity">
<property name="objectDefinitionSource">
<value>
org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementAction.execute=RM_CAP.0.rma:filePlanComponent.CreateModifyDestroyFileplanMetadata
org.alfresco.module.org_alfresco_module_rm.action.RecordsManagementAction.*=RM_ALLOW
org.alfresco.repo.action.executer.ActionExecuter.*=RM_ALLOW
</value>
</property>
</bean>
<bean id="createDispositionSchedule"
class="org.alfresco.module.org_alfresco_module_rm.action.impl.CreateDispositionScheduleAction"
parent="rmAction" />
<!-- Actions to create DOD 5015 custom types -->
<!--
<bean id="applyScannedRecord_proxy" class="org.alfresco.module.org_alfresco_module_rm.capability.RMActionProxyFactoryBean" parent="rmProxyAction" init-method="registerAction">
<property name="target">
<ref bean="applyScannedRecord"/>
</property>
</bean>
<bean id="applyScannedRecord" class="org.alfresco.module.org_alfresco_module_rm.action.impl.ApplyCustomTypeAction" parent="rmAction">
<property name="customTypeAspect" value="dod:scannedRecord" />
</bean>
<bean id="applyPdfRecord_proxy" class="org.alfresco.module.org_alfresco_module_rm.capability.RMActionProxyFactoryBean" parent="rmProxyAction" init-method="registerAction">
<property name="target">
<ref bean="applyPdfRecord"/>
</property>
</bean>
<bean id="applyPdfRecord" class="org.alfresco.module.org_alfresco_module_rm.action.impl.ApplyCustomTypeAction" parent="rmAction">
<property name="customTypeAspect" value="dod:pdfRecord" />
</bean>
<bean id="applyDigitalPhotographRecord_proxy" class="org.alfresco.module.org_alfresco_module_rm.capability.RMActionProxyFactoryBean" parent="rmProxyAction" init-method="registerAction">
<property name="target">
<ref bean="applyDigitalPhotographRecord"/>
</property>
</bean>
<bean id="applyDigitalPhotographRecord" class="org.alfresco.module.org_alfresco_module_rm.action.impl.ApplyCustomTypeAction" parent="rmAction">
<property name="customTypeAspect" value="dod:digitalPhotographRecord" />
</bean>
<bean id="applyWebRecord_proxy" class="org.alfresco.module.org_alfresco_module_rm.capability.RMActionProxyFactoryBean" parent="rmProxyAction" init-method="registerAction">
<property name="target">
<ref bean="applyWebRecord"/>
</property>
</bean>
<bean id="applyWebRecord" class="org.alfresco.module.org_alfresco_module_rm.action.impl.ApplyCustomTypeAction" parent="rmAction">
<property name="customTypeAspect" value="dod:webRecord" />
</bean>
-->
</beans>

View File

@@ -0,0 +1,88 @@
# Disposition Actions
cutoff.title=Cutoff
cutoff.description=Cutoff
retain.title=Retain
retain.description=Retain
destroy.title=Destroy
destroy.description=Destroy
# Records Management Actions
file.title=File
file.description=File
reviewed.title=Reviewed
reviewed.description=Reviewed
openRecordFolder.title=Open Folder
openRecordFolder.description=Open Folder
closeRecordFolder.title=Close Folder
closeRecordFolder.description=Close Folder
setupRecordFolder.title=Setup Folder
setupRecordFolder.description=Setup Folder
declareRecord.title=Declare Record
declareRecord.description=Declare Record
undeclareRecord.title=Undeclare Record
undeclareRecord.description=Undeclare Record
freeze.title=Freeze
freeze.description=Freeze
unfreeze.title=Unfreeze
unfreeze.description=Unfreeze
relinquishHold.title=Relinquish Hold
relinquishHold.description=Relinquish Hold
broadcastVitalRecordDefinition.title=Broadcast Vital Record Definition
broadcastVitalRecordDefinition.description=Broadcast Vital Record Definition
broadcastDispositionActionDefinitionUpdate.title=Broadcast Disposition Action Definition Update
broadcastDispositionActionDefinitionUpdate.description=Broadcast Disposition Action Definition Update
completeEvent.title=Complete Event
completeEvent.description=Complete Event
undoEvent.title=Undo Event
undoEvent.description=Undo Event
applyScannedRecord.title=Apply Scanned Record
applyScannedRecord.description=Apply Scanned Record
applyPdfRecord.title=Apply PDF Record
applyPdfRecord.description=Apply PDF Record
applyDigitalPhotographRecord.title=Apply Digital Photograph Record
applyDigitalPhotographRecord.description=Apply Digital Photograph Record
applyWebRecord.title=Apply Web Record
applyWebRecord.description=Apply Web Record
splitEmail.title=Split Email Attatchments
splitEmail.description=Split email attachments into separate records.
transfer.title=Transfer
transfer.description=Transfer
accession.title=Accession
accession.description=Accession
editHoldReason.title=Edit Hold Reason
editHoldReason.description=Edit Hold Reason
editReviewAsOfDate.title=Edit Review Date
editReviewAsOfDate.description=Edit Review Date
editDispositionActionAsOfDate.title=Edit Disposition Action As Of Date
editDispositionActionAsOfDate.description=Edit Disposition Action As Of Date
createDispositionSchedule.title=Create Disposition Schedule
createDispositionSchedule.description=Create Disposition Schedule

View File

@@ -0,0 +1,880 @@
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://www.springframework.org/dtd/spring-beans.dtd'>
<!-- The beans that implement RM capabilities -->
<beans>
<!-- Capability Conditions -->
<bean id="capabilityCondition.base"
abstract="true">
<property name="recordsManagementService" ref="recordsManagementService" />
<property name="permissionService" ref="PermissionService" />
<property name="nodeService" ref="NodeService" />
</bean>
<bean id="capabilityCondition.frozen"
parent="capabilityCondition.base"
class="org.alfresco.module.org_alfresco_module_rm.capability.declarative.condition.FrozenCapabilityCondition">
</bean>
<bean id="capabilityCondition.frozenOrFrozenChildren"
parent="capabilityCondition.base"
class="org.alfresco.module.org_alfresco_module_rm.capability.declarative.condition.FrozenCapabilityCondition">
<property name="checkChildren" value="true" />
</bean>
<bean id="capabilityCondition.frozenOrHold"
parent="capabilityCondition.base"
class="org.alfresco.module.org_alfresco_module_rm.capability.declarative.condition.FrozenOrHoldCondition">
</bean>
<bean id="capabilityCondition.cutoff"
parent="capabilityCondition.base"
class="org.alfresco.module.org_alfresco_module_rm.capability.declarative.condition.CutoffCapabilityCondition">
</bean>
<bean id="capabilityCondition.closed"
parent="capabilityCondition.base"
class="org.alfresco.module.org_alfresco_module_rm.capability.declarative.condition.ClosedCapabilityCondition">
</bean>
<bean id="capabilityCondition.declared"
parent="capabilityCondition.base"
class="org.alfresco.module.org_alfresco_module_rm.capability.declarative.condition.DeclaredCapabilityCondition">
</bean>
<bean id="capabilityCondition.filling"
parent="capabilityCondition.base"
class="org.alfresco.module.org_alfresco_module_rm.capability.declarative.condition.FillingCapabilityCondition">
</bean>
<bean id="capabilityCondition.transferred"
parent="capabilityCondition.base"
class="org.alfresco.module.org_alfresco_module_rm.capability.declarative.condition.TransferredCapabilityCondition">
</bean>
<bean id="capabilityCondition.destroyed"
parent="capabilityCondition.base"
class="org.alfresco.module.org_alfresco_module_rm.capability.declarative.condition.DestroyedCapabilityCondition">
</bean>
<bean id="capabilityCondition.vitalRecordOrFolder"
parent="capabilityCondition.base"
class="org.alfresco.module.org_alfresco_module_rm.capability.declarative.condition.VitalRecordOrFolderCapabilityCondition">
</bean>
<bean id="capabilityCondition.destroyMayBeScheduled"
parent="capabilityCondition.base"
class="org.alfresco.module.org_alfresco_module_rm.capability.declarative.condition.MayBeScheduledCapabilityCondition">
<property name="dispositionService" ref="DispositionService"/>
<property name="dispositionAction" value="destroy"/>
</bean>
<bean id="capabilityCondition.destroyIsScheduled"
parent="capabilityCondition.base"
class="org.alfresco.module.org_alfresco_module_rm.capability.declarative.condition.IsScheduledCapabilityCondition">
<property name="dispositionService" ref="DispositionService"/>
<property name="dispositionAction" value="destroy"/>
</bean>
<bean id="capabilityCondition.hasEvents"
parent="capabilityCondition.base"
class="org.alfresco.module.org_alfresco_module_rm.capability.declarative.condition.HasEventsCapabilityCondition">
<property name="dispositionService" ref="DispositionService"/>
</bean>
<bean id="capabilityCondition.fileable"
parent="capabilityCondition.base"
class="org.alfresco.module.org_alfresco_module_rm.capability.declarative.condition.FileableCapabilityCondition">
<property name="dictionaryService" ref="DictionaryService"/>
</bean>
<!-- Capability beans -->
<bean id="rmBaseCapability"
abstract="true"
parent="RMSecurityCommon"
init-method="init">
<property name="voter" ref="rmEntryVoter"/>
<property name="capabilityService" ref="CapabilityService"/>
</bean>
<bean id="declarativeCapability"
abstract="true"
parent="rmBaseCapability"
class="org.alfresco.module.org_alfresco_module_rm.capability.declarative.DeclarativeCapability"/>
<bean id="compositeCapability"
abstract="true"
parent="rmBaseCapability"
class="org.alfresco.module.org_alfresco_module_rm.capability.declarative.CompositeCapability" />
<bean id="rmAccessAuditCapability"
parent="declarativeCapability">
<property name="name" value="AccessAudit"/>
<property name="permission" value="AccessAudit"/>
</bean>
<bean id="rmAddModifyEventDatesCapability"
parent="declarativeCapability">
<property name="name" value="AddModifyEventDates"/>
<property name="permission" value="AddModifyEventDates"/>
<property name="kinds">
<list>
<value>RECORD_FOLDER</value>
<value>RECORD</value>
</list>
</property>
<property name="conditions">
<map>
<entry key="capabilityCondition.filling" value="true"/>
<entry key="capabilityCondition.frozen" value="false"/>
<entry key="capabilityCondition.hasEvents" value="true"/>
</map>
</property>
</bean>
<bean id="rmApproveRecordsScheduledForCutoffCapability"
parent="declarativeCapability">
<property name="name" value="ApproveRecordsScheduledForCutoff"/>
<property name="permission" value="ApproveRecordsScheduledForCutoff"/>
<property name="kinds">
<list>
<value>RECORD_FOLDER</value>
<value>RECORD</value>
</list>
</property>
<property name="conditions">
<map>
<entry key="capabilityCondition.filling" value="true"/>
<entry key="capabilityCondition.frozen" value="false"/>
</map>
</property>
</bean>
<bean id="rmAttachRulesToMetadataPropertiesCapability"
parent="declarativeCapability">
<property name="name" value="AttachRulesToMetadataProperties"/>
<property name="permission" value="AttachRulesToMetadataProperties"/>
</bean>
<bean id="rmAuthorizeAllTransfersCapability"
parent="declarativeCapability">
<property name="name" value="AuthorizeAllTransfers"/>
<property name="permission" value="AuthorizeAllTransfers"/>
<property name="conditions">
<map>
<entry key="capabilityCondition.frozen" value="false"/>
</map>
</property>
</bean>
<bean id="rmAuthorizeNominatedTransfersCapability"
parent="declarativeCapability">
<property name="name" value="AuthorizeNominatedTransfers"/>
<property name="permission" value="AuthorizeNominatedTransfers"/>
<property name="conditions">
<map>
<entry key="capabilityCondition.frozen" value="false"/>
</map>
</property>
</bean>
<bean id="rmChangeOrDeleteReferencesCapability"
parent="rmBaseCapability"
class="org.alfresco.module.org_alfresco_module_rm.capability.impl.ChangeOrDeleteReferencesCapability">
<property name="name" value="ChangeOrDeleteReferences"/>
<property name="permission" value="ChangeOrDeleteReferences"/>
<property name="conditions">
<map>
<entry key="capabilityCondition.filling" value="true"/>
<entry key="capabilityCondition.frozen" value="false"/>
</map>
</property>
</bean>
<bean id="rmCloseFoldersCapability"
parent="declarativeCapability">
<property name="name" value="CloseFolders"/>
<property name="permission" value="CloseFolders"/>
<property name="kinds">
<list>
<value>RECORD_FOLDER</value>
</list>
</property>
<property name="conditions">
<map>
<entry key="capabilityCondition.filling" value="true"/>
<entry key="capabilityCondition.cutoff" value="false"/>
<entry key="capabilityCondition.frozenOrFrozenChildren" value="false"/>
<entry key="capabilityCondition.closed" value="false"/>
</map>
</property>
</bean>
<bean id="rmCreateAndAssociateSelectionListsCapability"
parent="declarativeCapability">
<property name="name" value="CreateAndAssociateSelectionLists"/>
<property name="permission" value="CreateAndAssociateSelectionLists"/>
</bean>
<bean id="rmCreateModifyDestroyClassificationGuidesCapability"
parent="declarativeCapability">
<property name="name" value="CreateModifyDestroyClassificationGuides"/>
<property name="permission" value="CreateModifyDestroyClassificationGuides"/>
</bean>
<bean id="rmCreateModifyDestroyEventsCapability"
parent="declarativeCapability">
<property name="name" value="CreateModifyDestroyEvents" />
<property name="permission" value="CreateModifyDestroyEvents" />
</bean>
<bean id="rmCreateModifyDestroyFileplanMetadataCapability"
parent="declarativeCapability">
<property name="name" value="CreateModifyDestroyFileplanMetadata"/>
<property name="permission" value="CreateModifyDestroyFileplanMetadata"/>
<property name="kinds">
<list>
<value>FILE_PLAN</value>
<value>RECORD_CATEGORY</value>
<value>DISPOSITION_SCHEDULE</value>
</list>
</property>
<property name="conditions">
<map>
<entry key="capabilityCondition.filling" value="true"/>
</map>
</property>
</bean>
<bean id="rmCreateModifyDestroyFileplanTypesCapability"
parent="declarativeCapability">
<property name="name" value="CreateModifyDestroyFileplanTypes" />
<property name="permission" value="CreateModifyDestroyFileplanTypes" />
</bean>
<bean id="rmCreateModifyDestroyFoldersCapability"
parent="declarativeCapability">
<property name="name" value="CreateModifyDestroyFolders"/>
<property name="permission" value="CreateModifyDestroyFolders"/>
<property name="kinds">
<list>
<value>RECORD_CATEGORY</value>
<value>RECORD_FOLDER</value>
<!-- <value>RECORD</value> -->
</list>
</property>
<property name="conditions">
<map>
<entry key="capabilityCondition.filling" value="true"/>
<entry key="capabilityCondition.cutoff" value="false"/>
<entry key="capabilityCondition.frozenOrFrozenChildren" value="false"/>
<entry key="capabilityCondition.closed" value="false"/>
</map>
</property>
</bean>
<bean id="rmCreateModifyDestroyRecordTypesCapability"
parent="declarativeCapability">
<property name="name" value="CreateModifyDestroyRecordTypes" />
<property name="permission" value="CreateModifyDestroyRecordTypes" />
</bean>
<bean id="rmCreateModifyDestroyReferenceTypesCapability"
parent="declarativeCapability">
<property name="name" value="CreateModifyDestroyReferenceTypes" />
<property name="permission" value="CreateModifyDestroyReferenceTypes" />
</bean>
<bean id="rmCreateModifyDestroyRolesCapability"
parent="declarativeCapability">
<property name="name" value="CreateModifyDestroyRoles" />
<property name="permission" value="CreateModifyDestroyRoles" />
</bean>
<bean id="rmCreateModifyDestroyTimeframesCapability"
parent="declarativeCapability">
<property name="name" value="CreateModifyDestroyTimeframes" />
<property name="permission" value="CreateModifyDestroyTimeframes" />
</bean>
<bean id="rmCreateModifyDestroyUsersAndGroupsCapability"
parent="declarativeCapability">
<property name="name" value="CreateModifyDestroyUsersAndGroups" />
<property name="permission" value="CreateModifyDestroyUsersAndGroups" />
</bean>
<bean id="rmCreateModifyRecordsInCuttoffFoldersCapability"
parent="declarativeCapability">
<property name="name" value="CreateModifyRecordsInCutoffFolders"/>
<property name="permission" value="CreateModifyRecordsInCutoffFolders"/>
<property name="kinds">
<list>
<value>RECORD_FOLDER</value>
<value>RECORD</value>
</list>
</property>
<property name="conditions">
<map>
<entry key="capabilityCondition.filling" value="true"/>
<entry key="capabilityCondition.cutoff" value="true"/>
<entry key="capabilityCondition.frozen" value="false"/>
<entry key="capabilityCondition.closed" value="false"/>
</map>
</property>
</bean>
<bean id="rmCycleVitalRecordsCapability"
parent="declarativeCapability">
<property name="name" value="CycleVitalRecords"/>
<property name="permission" value="CycleVitalRecords"/>
<property name="kinds">
<list>
<value>RECORD_FOLDER</value>
<value>RECORD</value>
</list>
</property>
<property name="conditions">
<map>
<entry key="capabilityCondition.filling" value="true"/>
<entry key="capabilityCondition.frozenOrFrozenChildren" value="false"/>
<entry key="capabilityCondition.transferred" value="false"/>
<entry key="capabilityCondition.destroyed" value="false"/>
<entry key="capabilityCondition.vitalRecordOrFolder" value="true"/>
</map>
</property>
</bean>
<bean id="rmDeclareAuditAsRecordCapability"
parent="declarativeCapability">
<property name="name" value="DeclareAuditAsRecord" />
<property name="permission" value="DeclareAuditAsRecord" />
</bean>
<bean id="rmDeclareRecordsCapability"
parent="declarativeCapability">
<property name="name" value="DeclareRecords"/>
<property name="permission" value="DeclareRecords"/>
<property name="kinds">
<list>
<value>RECORD</value>
</list>
</property>
<property name="conditions">
<map>
<entry key="capabilityCondition.filling" value="true"/>
<entry key="capabilityCondition.cutoff" value="false"/>
<entry key="capabilityCondition.frozen" value="false"/>
<entry key="capabilityCondition.closed" value="false"/>
<entry key="capabilityCondition.declared" value="false"/>
</map>
</property>
</bean>
<bean id="rmDeclareRecordsInClosedFoldersCapability"
parent="declarativeCapability">
<property name="name" value="DeclareRecordsInClosedFolders"/>
<property name="permission" value="DeclareRecordsInClosedFolders"/>
<property name="kinds">
<list>
<value>RECORD</value>
</list>
</property>
<property name="conditions">
<map>
<entry key="capabilityCondition.filling" value="true"/>
<entry key="capabilityCondition.cutoff" value="false"/>
<entry key="capabilityCondition.frozen" value="false"/>
<entry key="capabilityCondition.closed" value="true"/>
<entry key="capabilityCondition.declared" value="false"/>
</map>
</property>
</bean>
<bean id="rmDeleteAuditCapability"
parent="declarativeCapability">
<property name="name" value="DeleteAudit" />
<property name="permission" value="DeleteAudit" />
</bean>
<bean id="rmDeleteLinksCapability"
parent="rmBaseCapability"
class="org.alfresco.module.org_alfresco_module_rm.capability.impl.DeleteLinksCapability">
<property name="name" value="DeleteLinks"/>
<property name="permission" value="DeleteLinks"/>
<property name="conditions">
<map>
<entry key="capabilityCondition.filling" value="true"/>
<entry key="capabilityCondition.cutoff" value="false"/>
<entry key="capabilityCondition.frozen" value="false"/>
</map>
</property>
</bean>
<bean id="rmDeleteRecordsCapability"
parent="declarativeCapability">
<property name="name" value="DeleteRecords"/>
<property name="permission" value="DeleteRecords"/>
<property name="kinds">
<list>
<!-- <value>RECORD_FOLDER</value> -->
<value>RECORD</value>
</list>
</property>
<property name="conditions">
<map>
<entry key="capabilityCondition.frozen" value="false"/>
</map>
</property>
</bean>
<bean id="rmDestroyRecordsCapability"
parent="declarativeCapability">
<property name="name" value="DestroyRecords"/>
<property name="permission" value="DestroyRecords"/>
<property name="kinds">
<list>
<value>RECORD_FOLDER</value>
<value>RECORD</value>
</list>
</property>
<property name="conditions">
<map>
<entry key="capabilityCondition.frozenOrFrozenChildren" value="false"/>
<entry key="capabilityCondition.destroyMayBeScheduled" value="true"/>
</map>
</property>
</bean>
<bean id="rmDestroyRecordsScheduledForDestructionCapability"
parent="declarativeCapability">
<property name="name" value="DestroyRecordsScheduledForDestruction"/>
<property name="permission" value="DestroyRecordsScheduledForDestruction"/>
<property name="conditions">
<map>
<entry key="capabilityCondition.frozenOrFrozenChildren" value="false"/>
<entry key="capabilityCondition.destroyIsScheduled" value="true"/>
</map>
</property>
</bean>
<bean id="rmDisplayRightsReportCapability"
parent="declarativeCapability">
<property name="name" value="DisplayRightsReport" />
<property name="permission" value="DisplayRightsReport" />
</bean>
<bean id="rmEditDeclaredRecordMetadataCapability"
parent="declarativeCapability">
<property name="name" value="EditDeclaredRecordMetadata"/>
<property name="permission" value="EditDeclaredRecordMetadata"/>
<property name="kinds">
<list>
<value>RECORD</value>
</list>
</property>
<property name="conditions">
<map>
<entry key="capabilityCondition.filling" value="true"/>
<entry key="capabilityCondition.cutoff" value="false"/>
<entry key="capabilityCondition.frozen" value="false"/>
<entry key="capabilityCondition.closed" value="false"/>
<entry key="capabilityCondition.declared" value="true"/>
</map>
</property>
</bean>
<bean id="rmEditNonRecordMetadataCapability"
parent="declarativeCapability">
<property name="name" value="EditNonRecordMetadata"/>
<property name="permission" value="EditNonRecordMetadata"/>
<property name="conditions">
<map>
<entry key="capabilityCondition.fileable" value="true"/>
</map>
</property>
</bean>
<bean id="rmEditRecordMetadataCapability"
parent="rmBaseCapability"
class="org.alfresco.module.org_alfresco_module_rm.capability.impl.EditRecordMetadataCapability">
<property name="name" value="EditRecordMetadata"/>
<property name="permission" value="EditRecordMetadata"/>
<property name="kinds">
<list>
<value>RECORD</value>
</list>
</property>
<property name="conditions">
<map>
<entry key="capabilityCondition.filling" value="true"/>
<entry key="capabilityCondition.cutoff" value="false"/>
<entry key="capabilityCondition.frozen" value="false"/>
<entry key="capabilityCondition.closed" value="false"/>
<entry key="capabilityCondition.declared" value="false"/>
</map>
</property>
</bean>
<bean id="rmEditSelectionListsCapability"
parent="declarativeCapability">
<property name="name" value="EditSelectionLists" />
<property name="permission" value="EditSelectionLists" />
</bean>
<bean id="rmEnableDisableAuditByTypesCapability"
parent="declarativeCapability">
<property name="name" value="EnableDisableAuditByTypes" />
<property name="permission" value="EnableDisableAuditByTypes" />
</bean>
<bean id="rmExportAuditCapability"
parent="declarativeCapability">
<property name="name" value="ExportAudit" />
<property name="permission" value="ExportAudit" />
</bean>
<bean id="rmExtendRetentionPeriodOrFreezeCapability"
parent="declarativeCapability">
<property name="name" value="ExtendRetentionPeriodOrFreeze"/>
<property name="permission" value="ExtendRetentionPeriodOrFreeze"/>
<property name="kinds">
<list>
<value>RECORD_FOLDER</value>
<value>RECORD</value>
</list>
</property>
<property name="conditions">
<map>
<entry key="capabilityCondition.filling" value="true"/>
<entry key="capabilityCondition.frozen" value="false"/>
</map>
</property>
</bean>
<bean id="rmFileCapability"
parent="declarativeCapability">
<property name="name" value="File"/>
<property name="private" value="true"/>
<property name="conditions">
<map>
<entry key="capabilityCondition.filling" value="true"/>
<entry key="capabilityCondition.frozen" value="false"/>
<entry key="capabilityCondition.cutoff" value="false"/>
<entry key="capabilityCondition.closed" value="false"/>
<entry key="capabilityCondition.declared" value="false"/>
</map>
</property>
</bean>
<bean id="rmFileRecordsCapability"
parent="compositeCapability">
<property name="name" value="FileRecords" />
<property name="capabilities">
<list>
<ref bean="rmFileCapability"/>
<ref bean="rmCreateModifyRecordsInCuttoffFoldersCapability"/>
</list>
</property>
</bean>
<bean id="rmMakeOptionalPropertiesMandatoryCapability"
parent="declarativeCapability">
<property name="name" value="MakeOptionalParametersMandatory" />
<property name="permission" value="MakeOptionalParametersMandatory" />
</bean>
<bean id="rmManageAccessControlsCapability"
parent="declarativeCapability">
<property name="name" value="ManageAccessControls" />
<property name="permission" value="ManageAccessControls" />
</bean>
<bean id="rmManageAccessRightsCapability"
parent="declarativeCapability">
<property name="name" value="ManageAccessRights"/>
<property name="permission" value="ManageAccessRights"/>
<property name="conditions">
<map>
<entry key="capabilityCondition.frozen" value="false"/>
</map>
</property>
</bean>
<bean id="rmManuallyChangeDispositionDatesCapability"
parent="declarativeCapability">
<property name="name" value="ManuallyChangeDispositionDates"/>
<property name="permission" value="ManuallyChangeDispositionDates"/>
<property name="conditions">
<map>
<entry key="capabilityCondition.filling" value="true"/>
<entry key="capabilityCondition.frozen" value="false"/>
</map>
</property>
</bean>
<bean id="rmMapClassificationGuideMetadataCapability"
parent="declarativeCapability">
<property name="name" value="MapClassificationGuideMetadata" />
<property name="permission" value="MapClassificationGuideMetadata" />
</bean>
<bean id="rmMapEmailMetadataCapability"
parent="declarativeCapability">
<property name="name" value="MapEmailMetadata" />
<property name="permission" value="MapEmailMetadata" />
</bean>
<bean id="rmMoveRecordsCapability"
parent="rmBaseCapability"
class="org.alfresco.module.org_alfresco_module_rm.capability.impl.MoveRecordsCapability">
<property name="name" value="MoveRecords" />
</bean>
<bean id="rmPasswordControlCapability"
parent="declarativeCapability">
<property name="name" value="PasswordControl" />
<property name="permission" value="PasswordControl" />
</bean>
<bean id="rmPlanningReviewCyclesCapability"
parent="rmBaseCapability"
class="org.alfresco.module.org_alfresco_module_rm.capability.impl.EditRecordMetadataCapability">
<property name="name" value="PlanningReviewCycles"/>
<property name="permission" value="PlanningReviewCycles"/>
<property name="conditions">
<map>
<entry key="capabilityCondition.filling" value="true"/>
<entry key="capabilityCondition.cutoff" value="false"/>
<entry key="capabilityCondition.frozen" value="false"/>
<entry key="capabilityCondition.vitalRecordOrFolder" value="true"/>
</map>
</property>
</bean>
<bean id="rmReOpenFoldersCapability"
parent="declarativeCapability">
<property name="name" value="ReOpenFolders"/>
<property name="permission" value="ReOpenFolders"/>
<property name="kinds">
<list>
<value>RECORD_FOLDER</value>
</list>
</property>
<property name="conditions">
<map>
<entry key="capabilityCondition.filling" value="true"/>
<entry key="capabilityCondition.cutoff" value="false"/>
<entry key="capabilityCondition.frozenOrFrozenChildren" value="false"/>
<entry key="capabilityCondition.closed" value="true"/>
</map>
</property>
</bean>
<bean id="rmSelectAuditMetadataCapability"
parent="declarativeCapability">
<property name="name" value="SelectAuditMetadata" />
<property name="permission" value="SelectAuditMetadata" />
</bean>
<bean id="rmTriggerAnEventCapability"
parent="declarativeCapability">
<property name="name" value="TriggerAnEvent"/>
<property name="permission" value="TriggerAnEvent"/>
<property name="kinds">
<list>
<value>RECORD_FOLDER</value>
<value>RECORD</value>
</list>
</property>
<property name="conditions">
<map>
<entry key="capabilityCondition.filling" value="true"/>
<entry key="capabilityCondition.frozen" value="false"/>
<entry key="capabilityCondition.hasEvents" value="true"/>
</map>
</property>
</bean>
<bean id="rmUndeclareRecordsCapability"
parent="declarativeCapability">
<property name="name" value="UndeclareRecords"/>
<property name="permission" value="UndeclareRecords"/>
<property name="kinds">
<list>
<value>RECORD</value>
</list>
</property>
<property name="conditions">
<map>
<entry key="capabilityCondition.filling" value="true"/>
<entry key="capabilityCondition.frozen" value="false"/>
<entry key="capabilityCondition.declared" value="true"/>
</map>
</property>
</bean>
<bean id="rmUnfreezeCapability"
parent="declarativeCapability">
<property name="name" value="Unfreeze"/>
<property name="permission" value="Unfreeze"/>
<property name="conditions">
<map>
<entry key="capabilityCondition.filling" value="true"/>
<entry key="capabilityCondition.frozenOrHold" value="true"/>
</map>
</property>
</bean>
<bean id="rmUpdateClassificationDatesCapability"
parent="declarativeCapability">
<property name="name" value="UpdateClassificationDates" />
<property name="permission" value="UpdateClassificationDates" />
</bean>
<bean id="rmUpdateExemptionCategoriesCapability"
parent="declarativeCapability">
<property name="name" value="UpdateExemptionCategories" />
<property name="permission" value="UpdateExemptionCategories" />
</bean>
<bean id="rmUpdateTriggerDatesCapability"
parent="declarativeCapability">
<property name="name" value="UpdateTriggerDates"/>
<property name="permission" value="UpdateTriggerDates"/>
<property name="conditions">
<map>
<entry key="capabilityCondition.frozen" value="false"/>
</map>
</property>
</bean>
<bean id="rmUpdateVitalRecordCycleInformationCapability"
parent="declarativeCapability">
<property name="name" value="UpdateVitalRecordCycleInformation"/>
<property name="permission" value="UpdateVitalRecordCycleInformation"/>
<property name="conditions">
<map>
<entry key="capabilityCondition.frozen" value="false"/>
</map>
</property>
</bean>
<bean id="rmUpgradeDowngradeAndDeclassifyRecordsCapability"
parent="declarativeCapability">
<property name="name" value="UpgradeDowngradeAndDeclassifyRecords"/>
<property name="permission" value="UpgradeDowngradeAndDeclassifyRecords"/>
<property name="conditions">
<map>
<entry key="capabilityCondition.frozen" value="false"/>
</map>
</property>
</bean>
<bean id="rmViewRecordsCapability"
parent="rmBaseCapability"
class="org.alfresco.module.org_alfresco_module_rm.capability.impl.ViewRecordsCapability">
<property name="name" value="ViewRecords" />
</bean>
<bean id="rmViewUpdateReasonsForFreezeCapability"
parent="declarativeCapability">
<property name="name" value="ViewUpdateReasonsForFreeze"/>
<property name="permission" value="ViewUpdateReasonsForFreeze"/>
<property name="conditions">
<map>
<entry key="capabilityCondition.frozenOrHold" value="true"/>
</map>
</property>
</bean>
<bean id="rmCreate"
parent="rmBaseCapability"
class="org.alfresco.module.org_alfresco_module_rm.capability.impl.CreateCapability">
<property name="name" value="Create"/>
<property name="private" value="true"/>
</bean>
<bean id="rmDelete"
parent="compositeCapability">
<property name="name" value="Delete"/>
<property name="private" value="true"/>
<property name="capabilities">
<list>
<ref bean="rmDestroyRecordsScheduledForDestructionCapability"/>
<ref bean="rmDestroyRecordsCapability"/>
<ref bean="rmDeleteRecordsCapability"/>
<ref bean="rmCreateModifyDestroyFileplanMetadataCapability"/>
<ref bean="rmCreateModifyDestroyFoldersCapability"/>
</list>
</property>
</bean>
<bean id="rmUpdate"
parent="compositeCapability"
class="org.alfresco.module.org_alfresco_module_rm.capability.impl.UpdateCapability">
<property name="name" value="Update"/>
<property name="private" value="true"/>
<property name="capabilities">
<list>
<ref bean="rmCreateModifyDestroyFoldersCapability"/>
<ref bean="rmCreateModifyDestroyFileplanMetadataCapability"/>
<ref bean="rmEditDeclaredRecordMetadataCapability"/>
<ref bean="rmEditNonRecordMetadataCapability"/>
<ref bean="rmCreateModifyRecordsInCuttoffFoldersCapability"/>
</list>
</property>
</bean>
<bean id="rmUpdateProperties"
parent="compositeCapability"
class="org.alfresco.module.org_alfresco_module_rm.capability.impl.UpdatePropertiesCapability">
<property name="name" value="UpdateProperties"/>
<property name="private" value="true"/>
<property name="capabilities">
<list>
<ref bean="rmCreateModifyDestroyFoldersCapability"/>
<ref bean="rmCreateModifyDestroyFileplanMetadataCapability"/>
<ref bean="rmEditDeclaredRecordMetadataCapability"/>
<ref bean="rmEditNonRecordMetadataCapability"/>
<ref bean="rmCreateModifyRecordsInCuttoffFoldersCapability"/>
</list>
</property>
</bean>
<bean id="rmDeclare"
parent="compositeCapability">
<property name="name" value="Declare"/>
<property name="private" value="true"/>
<property name="capabilities">
<list>
<ref bean="rmDeclareRecordsCapability"/>
<ref bean="rmDeclareRecordsInClosedFoldersCapability"/>
</list>
</property>
</bean>
<bean id="rmWriteContent"
parent="declarativeCapability">
<property name="name" value="WriteContent"/>
<property name="private" value="true"/>
<property name="kinds">
<list>
<value>RECORD</value>
</list>
</property>
<property name="conditions">
<map>
<entry key="capabilityCondition.filling" value="true"/>
<entry key="capabilityCondition.frozen" value="false"/>
<entry key="capabilityCondition.declared" value="false"/>
<entry key="capabilityCondition.closed" value="false"/>
<entry key="capabilityCondition.cutoff" value="false"/>
</map>
</property>
</bean>
</beans>

View File

@@ -0,0 +1,5 @@
# Event Types
rmeventservice.rmEventType.simple=Simple Event
rmeventservice.rmEventType.obsolete=Obsoleted Event
rmeventservice.rmEventType.superseded=Superseded Event
rmeventservice.rmEventType.crossReferencedRecordTransfered=Cross Referenced Record Transfered

View File

@@ -0,0 +1,35 @@
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://www.springframework.org/dtd/spring-beans.dtd'>
<beans>
<!-- Identifier Service Implementation Bean -->
<bean id="recordsManagementIdentifierService" class="org.alfresco.module.org_alfresco_module_rm.identifier.IdentifierServiceImpl">
<property name="nodeService" ref="NodeService"/>
<property name="dictionaryService" ref="dictionaryService"/>
</bean>
<bean id="baseRecordsManagementIdentifierGenerator" abstract="true" init-method="init">
<property name="identifierService" ref="recordsManagementIdentifierService"/>
<property name="nodeService" ref="NodeService"/>
</bean>
<bean id="recordContainerIdentifierGenerator"
parent="baseRecordsManagementIdentifierGenerator"
class="org.alfresco.module.org_alfresco_module_rm.identifier.BasicIdentifierGenerator">
<property name="typeAsString" value="{http://www.alfresco.org/model/recordsmanagement/1.0}recordsManagementContainer"/>
</bean>
<bean id="recordFolderIdentifierGenerator"
parent="baseRecordsManagementIdentifierGenerator"
class="org.alfresco.module.org_alfresco_module_rm.identifier.BasicIdentifierGenerator">
<property name="typeAsString" value="{http://www.alfresco.org/model/recordsmanagement/1.0}recordFolder"/>
</bean>
<bean id="recordIdentifierGenerator"
parent="baseRecordsManagementIdentifierGenerator"
class="org.alfresco.module.org_alfresco_module_rm.identifier.BasicIdentifierGenerator">
<property name="typeAsString" value="{http://www.alfresco.org/model/recordsmanagement/1.0}record"/>
</bean>
</beans>

View File

@@ -0,0 +1,134 @@
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://www.springframework.org/dtd/spring-beans.dtd'>
<beans>
<!-- Scheduled actions -->
<!-- Notify Of Records Due For Review Job
Sends out emails of records due for review
-->
<bean id="scheduledNotifyOfRecordsDueForReviewJobDetail" class="org.springframework.scheduling.quartz.JobDetailBean">
<property name="jobClass">
<value>org.alfresco.module.org_alfresco_module_rm.job.NotifyOfRecordsDueForReviewJob</value>
</property>
<property name="jobDataAsMap">
<map>
<entry key="recordsManagementService">
<ref bean="recordsManagementService"/>
</entry>
<entry key="recordsManagementNotificationHelper">
<ref bean="recordsManagementNotificationHelper"/>
</entry>
<entry key="nodeService">
<ref bean="nodeService" />
</entry>
<entry key="searchService">
<ref bean="searchService" />
</entry>
<entry key="transactionService">
<ref bean="transactionService" />
</entry>
</map>
</property>
</bean>
<bean id="scheduledNotifyOfRecordsDueForReviewJobTrigger" class="org.alfresco.util.CronTriggerBean">
<property name="jobDetail">
<ref bean="scheduledNotifyOfRecordsDueForReviewJobDetail" />
</property>
<property name="scheduler">
<ref bean="schedulerFactory" />
</property>
<property name="cronExpression">
<!-- <value>0 30 2 * * ?</value> -->
<value>0 0/15 * * * ?</value>
</property>
</bean>
<!-- Disposition Lifecycle Job -->
<bean id="scheduledDispositionLifecyceleJobDetail" class="org.springframework.scheduling.quartz.JobDetailBean">
<property name="jobClass">
<value>org.alfresco.module.org_alfresco_module_rm.job.DispositionLifecycleJob</value>
</property>
<property name="jobDataAsMap">
<map>
<entry key="nodeService">
<ref bean="nodeService" />
</entry>
<entry key="searchService">
<ref bean="searchService" />
</entry>
<entry key="recordsManagementActionService">
<ref bean="recordsManagementActionService" />
</entry>
<entry key="transactionService">
<ref bean="transactionService" />
</entry>
</map>
</property>
</bean>
<bean id="scheduledDispositionLifecyceleJobTrigger" class="org.alfresco.util.CronTriggerBean">
<property name="jobDetail">
<ref bean="scheduledDispositionLifecyceleJobDetail" />
</property>
<property name="scheduler">
<ref bean="schedulerFactory" />
</property>
<property name="cronExpression">
<!-- <value>0 30 3 * * ?</value> -->
<value>0 0/15 * * * ?</value>
</property>
</bean>
<bean id="scheduledPublishUpdatesJobDetail" class="org.springframework.scheduling.quartz.JobDetailBean">
<property name="jobClass">
<value>org.alfresco.module.org_alfresco_module_rm.job.PublishUpdatesJob</value>
</property>
<property name="jobDataAsMap">
<map>
<entry key="nodeService">
<ref bean="nodeService" />
</entry>
<entry key="searchService">
<ref bean="searchService" />
</entry>
<entry key="retryingTransactionHelper">
<ref bean="retryingTransactionHelper" />
</entry>
<entry key="publishExecutorRegistry">
<ref bean="publishExecutorRegistry" />
</entry>
<entry key="behaviourFilter">
<ref bean="policyBehaviourFilter" />
</entry>
</map>
</property>
</bean>
<bean id="scheduledPublishUpdatesJobTrigger" class="org.alfresco.util.CronTriggerBean">
<property name="jobDetail">
<ref bean="scheduledPublishUpdatesJobDetail" />
</property>
<property name="scheduler">
<ref bean="schedulerFactory" />
</property>
<property name="cronExpression">
<!-- <value>0 30 3 * * ?</value> -->
<value>0/30 * * * * ?</value>
</property>
</bean>
<bean id="publishExecutorRegistry" class="org.alfresco.module.org_alfresco_module_rm.job.publish.PublishExecutorRegistry"/>
<bean id="dispositionActionDefintionPublishExecutor"
class="org.alfresco.module.org_alfresco_module_rm.job.publish.DispositionActionDefinitionPublishExecutor"
init-method="init">
<property name="rmActionService" ref="recordsManagementActionService"/>
<property name="nodeService" ref="nodeService"/>
<property name="publishExecutorRegistry" ref="publishExecutorRegistry"/>
<property name="behaviourFilter" ref="policyBehaviourFilter" />
</bean>
</beans>

View File

@@ -0,0 +1,104 @@
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://www.springframework.org/dtd/spring-beans.dtd'>
<beans>
<!-- Bootstrap Records Management Models -->
<bean id="org_alfresco_module_rm_dictionaryBootstrap" parent="dictionaryModelBootstrap" depends-on="siteService_dictionaryBootstrap">
<property name="models">
<list>
<value>alfresco/module/org_alfresco_module_rm/model/recordsModel.xml</value>
</list>
</property>
<property name="labels">
<list>
<value>alfresco/module/org_alfresco_module_rm/messages/records-model</value>
</list>
</property>
</bean>
<bean id="org_alfresco_module_rm_customModelsRepositoryLocation" class="org.alfresco.repo.dictionary.RepositoryLocation">
<property name="path">
<value>/app:company_home/app:dictionary/cm:records_management</value>
</property>
<property name="queryLanguage">
<value>path</value>
</property>
</bean>
<bean id="org_alfresco_module_rm_dictionaryRepositoryBootstrap" parent="dictionaryRepositoryBootstrap">
<property name="repositoryModelsLocations">
<list>
<ref bean="org_alfresco_module_rm_customModelsRepositoryLocation" />
</list>
</property>
</bean>
<bean id="org_alfresco_module_rm_BaseBehaviour" abstract="true" init-method="init">
<property name="nodeService" ref="NodeService"/>
<property name="policyComponent" ref="policyComponent"/>
</bean>
<!-- File plan component aspect behaviour bean -->
<bean id="org_alfresco_module_rm_FilePlanComponentAspect"
class="org.alfresco.module.org_alfresco_module_rm.model.FilePlanComponentAspect"
parent="org_alfresco_module_rm_BaseBehaviour">
<property name="recordsManagementService" ref="recordsManagementService"/>
</bean>
<bean id="org_alfresco_module_rm_ScheduledAspect"
class="org.alfresco.module.org_alfresco_module_rm.model.ScheduledAspect"
parent="org_alfresco_module_rm_BaseBehaviour">
<property name="dispositionService" ref="dispositionService"/>
</bean>
<!-- RM container type behaviour bean -->
<bean id="org_alfresco_module_rm_RecordContainerType"
class="org.alfresco.module.org_alfresco_module_rm.model.RecordContainerType"
parent="org_alfresco_module_rm_BaseBehaviour">
<property name="dictionaryService" ref="DictionaryService"/>
<property name="recordsManagementActionService" ref="RecordsManagementActionService"/>
<property name="recordsManagementIdentifierService" ref="recordsManagementIdentifierService"/>
</bean>
<bean id="org_alfresco_module_rm_RmSiteType"
class="org.alfresco.module.org_alfresco_module_rm.model.RmSiteType"
parent="org_alfresco_module_rm_BaseBehaviour">
<property name="siteService" ref="SiteService"/>
<property name="recordsManagementSearchService" ref="RecordsManagementSearchService" />
</bean>
<!-- Record Component Identifier aspect behaviour bean -->
<bean id="recordComponentIdentifierAspect"
class="org.alfresco.module.org_alfresco_module_rm.model.RecordComponentIdentifierAspect"
parent="org_alfresco_module_rm_BaseBehaviour">
<property name="attributeService" ref="attributeService"/>
</bean>
<!-- Copy policy management for records -->
<bean id="recordCopyBehaviours"
class="org.alfresco.module.org_alfresco_module_rm.model.RecordCopyBehaviours"
init-method="init">
<property name="policyComponent" ref="policyComponent"/>
<property name="recordsManagementServiceRegistry" ref="RecordsManagementServiceRegistry"/>
</bean>
<!-- Search Behaviour -->
<bean id="recordsManagementSearchBehaviour"
class="org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementSearchBehaviour"
parent="org_alfresco_module_rm_BaseBehaviour">
<property name="recordsManagementService" ref="recordsManagementService"/>
<property name="dispositionService" ref="dispositionService"/>
<property name="recordsManagementServiceRegistry" ref="RecordsManagementServiceRegistry"/>
<property name="vitalRecordService" ref="VitalRecordService"/>
<property name="nodeService" ref="nodeService"/>
</bean>
<!-- Base bean definition for customisable types bootstrap -->
<bean id="customisableTypesBootstrap"
abstract="true"
class="org.alfresco.module.org_alfresco_module_rm.model.CustomisableTypesBootstrap"
init-method="init">
<property name="recordsManagementAdminService" ref="recordsManagementAdminService"/>
<property name="namespaceService" ref="NamespaceService"/>
</bean>
</beans>

View File

@@ -0,0 +1,34 @@
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://www.springframework.org/dtd/spring-beans.dtd'>
<beans>
<bean id="org_alfresco_module_rm_notificationTemplatePatch"
parent="module.baseComponent"
class="org.alfresco.module.org_alfresco_module_rm.patch.NotificationTemplatePatch">
<property name="moduleId" value="org_alfresco_module_rm"/>
<property name="name" value="org_alfresco_module_rm_notificationTemplatePatch"/>
<property name="description" value="Patches new versions of the notification templates."/>
<property name="sinceVersion" value="2.0"/>
<property name="appliesFromVersion" value="2.0"/>
<property name="nodeService" ref="NodeService"/>
<property name="notificationHelper" ref="recordsManagementNotificationHelper"/>
<property name="contentService" ref="ContentService"/>
<property name="versionService" ref="VersionService"/>
</bean>
<bean id="org_alfresco_module_rm_RMv2ModelPatch"
parent="module.baseComponent"
class="org.alfresco.module.org_alfresco_module_rm.patch.RMv2ModelPatch">
<property name="moduleId" value="org_alfresco_module_rm"/>
<property name="name" value="org_alfresco_module_rm_RMv2ModelPatch"/>
<property name="description" value="Patches the existing RM data for the RM v2.0 model updates."/>
<property name="sinceVersion" value="2.0"/>
<property name="appliesFromVersion" value="2.0"/>
<property name="patchDAO" ref="patchDAO"/>
<property name="nodeDAO" ref="nodeDAO" />
<property name="retryingTransactionHelper" ref="retryingTransactionHelper"/>
<property name="qnameDAO" ref="qnameDAO"/>
</bean>
</beans>

View File

@@ -0,0 +1,922 @@
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://www.springframework.org/dtd/spring-beans.dtd'>
<!-- ========================== -->
<!-- Enforcement of permissions -->
<!-- ========================== -->
<!-- -->
<!-- This file defines the beans that intercept method calls to the repository services -->
<!-- and enforce security based on the currently authenticated user. -->
<!-- -->
<beans>
<!-- ===================== -->
<!-- Permissions Model DAO -->
<!-- ===================== -->
<bean id='permissionsModelDAO' class="org.alfresco.repo.security.permissions.impl.model.PermissionModel" init-method="init">
<property name="model">
<value>alfresco/model/permissionDefinitions.xml</value>
</property>
<property name="dtdSchema">
<value>alfresco/model/permissionSchema.dtd</value>
</property>
<property name="nodeService">
<ref bean="nodeService"/>
</property>
<property name="dictionaryService">
<ref bean="dictionaryService"/>
</property>
</bean>
<!-- =========================== -->
<!-- Permissions Model Bootstrap -->
<!-- =========================== -->
<bean id="permissionModelBootstrap" class="org.alfresco.repo.security.permissions.impl.model.PermissionModelBootstrap" abstract="true" init-method="init">
<property name="permissionModel" ref="permissionsModelDAO"/>
</bean>
<!-- =========================== -->
<!-- Helper bean -->
<!-- =========================== -->
<bean id="RMSecurityCommon" abstract="true">
<property name="nodeService" ref="nodeService"/>
<property name="permissionService" ref="permissionService"/>
<property name="recordsManagementService" ref="recordsManagementService"/>
<property name="caveatConfigComponent" ref="caveatConfigComponent"/>
</bean>
<!-- ====== -->
<!-- Voters -->
<!-- ====== -->
<!-- A voter to allow access based on node access control. -->
<!-- These start ACL_NODE or ACL_PARENT and are followed by .methodArgumentPosition -->
<!-- then object type (prefix:localname) . permission -->
<!-- -->
<!-- All permissions starting ACL_NODE and ACL_PARENT must be present for access to -->
<!-- be granted. -->
<!-- -->
<!-- Note: ff the context evaluates to null (e.g. doing an exists test on a node -->
<!-- that does not exist) then access will be allowed. -->
<bean id="aclEntryVoter" class="org.alfresco.repo.security.permissions.impl.acegi.ACLEntryVoter" abstract="false" singleton="true" lazy-init="default" autowire="default" dependency-check="default">
<property name="permissionService">
<ref bean="permissionService"></ref>
</property>
<property name="namespacePrefixResolver">
<ref bean="namespaceService"></ref>
</property>
<property name="nodeService">
<ref bean="nodeService"></ref>
</property>
<property name="authenticationService">
<ref bean="authenticationService"/>
</property>
<property name="authorityService">
<ref bean="authorityService"/>
</property>
<property name="abstainFor">
<set>
<value>{http://www.alfresco.org/model/recordsmanagement/1.0}filePlanComponent</value>
</set>
</property>
</bean>
<bean id="rmEntryVoter" class="org.alfresco.module.org_alfresco_module_rm.capability.RMEntryVoter" lazy-init="false" parent="RMSecurityCommon">
<!-- Services -->
<property name="namespacePrefixResolver" ref="namespaceService"/>
<property name="dictionaryService" ref="dictionaryService"/>
<property name="dispositionService" ref="dispositionService"/>
<property name="capabilityService" ref="CapabilityService"/>
</bean>
<!-- ======================= -->
<!-- Access decision manager -->
<!-- ======================= -->
<!-- The access decision manager asks voters in order if they should allow access -->
<!-- Role and group access do not require ACL based access -->
<bean id="accessDecisionManager" class="org.alfresco.repo.security.permissions.impl.acegi.AffirmativeBasedAccessDecisionManger">
<property name="allowIfAllAbstainDecisions">
<value>false</value>
</property>
<property name="decisionVoters">
<list>
<ref bean="roleVoter"/>
<ref bean="groupVoter"/>
<ref bean="aclEntryVoter"/>
<ref bean="rmEntryVoter"/>
</list>
</property>
</bean>
<!-- ======================================== -->
<!-- Post method call application of security -->
<!-- ======================================== -->
<bean id="afterAcl" class="org.alfresco.repo.security.permissions.impl.acegi.ACLEntryAfterInvocationProvider" abstract="false" singleton="true" lazy-init="default" autowire="default" dependency-check="default">
<property name="permissionService">
<ref bean="permissionServiceImpl"></ref>
</property>
<property name="namespacePrefixResolver">
<ref bean="namespaceService"></ref>
</property>
<property name="nodeService">
<ref bean="nodeService"></ref>
</property>
<property name="authenticationService">
<ref bean="authenticationService"/>
</property>
<property name="maxPermissionCheckTimeMillis">
<value>${system.acl.maxPermissionCheckTimeMillis}</value>
</property>
<property name="maxPermissionChecks">
<value>${system.acl.maxPermissionChecks}</value>
</property>
<property name="unfilteredFor">
<set>
<value>{http://www.alfresco.org/model/recordsmanagement/1.0}filePlanComponent</value>
</set>
</property>
</bean>
<bean id="afterRm" class="org.alfresco.module.org_alfresco_module_rm.capability.RMAfterInvocationProvider" parent="RMSecurityCommon">
<property name="maxPermissionCheckTimeMillis">
<value>${system.acl.maxPermissionCheckTimeMillis}</value>
</property>
<property name="maxPermissionChecks">
<value>${system.acl.maxPermissionChecks}</value>
</property>
</bean>
<!-- Link up after method call security -->
<bean id="afterInvocationManager" class="net.sf.acegisecurity.afterinvocation.AfterInvocationProviderManager">
<property name="providers">
<list>
<ref bean="afterAcl"/>
<ref bean="afterRm"/>
<ref bean="afterAclMarking"/>
</list>
</property>
</bean>
<!-- ================================ -->
<!-- Beans that enforce secure access -->
<!-- ================================ -->
<!-- Each bean defines a new methos security interceptor wired up with the -->
<!-- authenticationManager, accessDecisionManager and afterInvocationManager, which -->
<!-- can all be reused. -->
<!-- If one method cal requires security enforcement - all methods must gave a -->
<!-- security entry of some sort. ACL_ALLOW can be used to give access to all -->
<!-- ROLE_ADMINISTRATOR can be used to grant access to administrator related methods -->
<!-- The namespace service does not enforce any security requirements -->
<bean id="NamespaceService_security" class="org.alfresco.repo.security.permissions.impl.AlwaysProceedMethodInterceptor"/>
<!-- The dictionary service does not enforce any security requirements -->
<bean id="DictionaryService_security" class="org.alfresco.repo.security.permissions.impl.AlwaysProceedMethodInterceptor"/>
<!-- ======================== -->
<!-- Node service permissions -->
<!-- ======================== -->
<!-- See the NodeService for the parameters required for each method call. -->
<!-- -->
<!-- getStores -->
<!-- returns a list fo the stores to which the curent authentication has Read -->
<!-- permission. (See the permission model defintion for what this means) -->
<!-- createStore -->
<!-- only a user with the administrator role can create new stores -->
<!-- exists -->
<!-- check if a node exists. If the current user does not have read access then -->
<!-- the node will not exist. -->
<!-- getRootNode -->
<!-- get the root node for a store - access will be denied for users who do not -->
<!-- have Read permission for the root node of the store. -->
<!-- createNode -->
<!-- requires that the current authentication has the permission to create -->
<!-- children for the containing node. -->
<!-- moveNode -->
<!-- requires that the current authentication has the permission to delete the -->
<!-- the node in the source folder and create it in the destination folder. -->
<!-- setChildAssociationIndex -->
<!-- required write properties permission on the parent -->
<!-- getType -->
<!-- obtaining the type of a node requires read access -->
<!-- addAspect -->
<!-- adding an aspect updates a multi-valued property so this requires write -->
<!-- access to properties. -->
<!-- removeAspect -->
<!-- removing an aspect updates a multi-valued property so this requires write -->
<!-- access to properties. -->
<!-- hasAspect -->
<!-- querying for an aspect requires read access to a property -->
<!-- getAspects -->
<!-- querying for all aspect requires read access to a property -->
<!-- deleteNode -->
<!-- requires the delete permission -->
<!-- addChild -->
<!-- requires create children on the parent -->
<!-- removeChild -->
<!-- Requires delete children from the parent and delete for the child -->
<!-- removeChildAssociation -->
<!-- Requires delete children from the parent and delete for the child -->
<!-- getProperties -->
<!-- Requires read properties for the node -->
<!-- getProperty -->
<!-- Requires read properties for the node -->
<!-- setProperties -->
<!-- Requires write properties for the node -->
<!-- setProperty -->
<!-- Requires write properties for the node -->
<!-- getParentAssocs -->
<!-- Requires read on the node and returns only parents that can be seen -->
<!-- It is possible that no parents are accessible -->
<!-- getChildAssocs -->
<!-- Requires read on the node and returns only children that can be seen -->
<!-- It is possible that no children are accessible -->
<!-- getPrimaryParent -->
<!-- Requires read on the node an aceess error will be thrown if the primary -->
<!-- parent can not be read -->
<!-- createAssociation -->
<!-- NOT SET YET -->
<!-- removeAssociation -->
<!-- NOT SET YET -->
<!-- getTargetAssocs -->
<!-- NOT SET YET -->
<!-- getSourceAssocs -->
<!-- NOT SET YET -->
<!-- getPath -->
<!-- Requires read for the node -->
<!-- getPaths -->
<!-- Requires read for the node -->
<bean id="NodeService_security" class="org.alfresco.repo.security.permissions.impl.acegi.MethodSecurityInterceptor">
<property name="authenticationManager">
<ref bean="authenticationManager"/>
</property>
<property name="accessDecisionManager">
<ref local="accessDecisionManager"/>
</property>
<property name="afterInvocationManager">
<ref local="afterInvocationManager"/>
</property>
<property name="objectDefinitionSource">
<value>
<![CDATA[
org.alfresco.service.cmr.repository.NodeService.getStores=ACL_ALLOW,AFTER_ACL_NODE.sys:base.ReadProperties,RM_ABSTAIN
org.alfresco.service.cmr.repository.NodeService.createStore=ACL_METHOD.ROLE_ADMINISTRATOR,RM_ABSTAIN
org.alfresco.service.cmr.repository.NodeService.exists=ACL_ALLOW,RM_ALLOW
org.alfresco.service.cmr.repository.NodeService.getNodeStatus=ACL_NODE.0.sys:base.ReadProperties,RM.Read.0
org.alfresco.service.cmr.repository.NodeService.getAllRootNodes=ACL_NODE.0.sys:base.ReadProperties,AFTER_ACL_NODE.sys:base.ReadProperties,RM.Read.0,AFTER_RM.FilterNode
org.alfresco.service.cmr.repository.NodeService.getRootNode=ACL_NODE.0.sys:base.ReadProperties,RM_ABSTAIN
org.alfresco.service.cmr.repository.NodeService.createNode=ACL_NODE.0.sys:base.CreateChildren,RM.Create.0.3
org.alfresco.service.cmr.repository.NodeService.moveNode=ACL_NODE.0.sys:base.DeleteNode,ACL_NODE.1.sys:base.CreateChildren,RM.Move.0.1
org.alfresco.service.cmr.repository.NodeService.setChildAssociationIndex=ACL_PARENT.0.sys:base.WriteProperties,RM_ABSTAIN
org.alfresco.service.cmr.repository.NodeService.getType=ACL_ALLOW,RM_ALLOW
org.alfresco.service.cmr.repository.NodeService.setType=ACL_NODE.0.sys:base.WriteProperties,RM_ABSTAIN
org.alfresco.service.cmr.repository.NodeService.addAspect=ACL_NODE.0.sys:base.WriteProperties,RM.Update.0.1.2
org.alfresco.service.cmr.repository.NodeService.removeAspect=ACL_NODE.0.sys:base.WriteProperties,RM.Update.0.1
org.alfresco.service.cmr.repository.NodeService.hasAspect=ACL_NODE.0.sys:base.ReadProperties,RM.Read.0
org.alfresco.service.cmr.repository.NodeService.getAspects=ACL_NODE.0.sys:base.ReadProperties,RM.Read.0
org.alfresco.service.cmr.repository.NodeService.deleteNode=ACL_NODE.0.sys:base.DeleteNode,RM.Delete.0
org.alfresco.service.cmr.repository.NodeService.addChild=ACL_NODE.0.sys:base.CreateChildren,ACL_NODE.1.sys:base.ReadProperties,RM.Create.0.1.2
org.alfresco.service.cmr.repository.NodeService.removeChild=ACL_NODE.0.sys:base.DeleteChildren,ACL_NODE.1.sys:base.DeleteNode,RM.Delete.0.1
org.alfresco.service.cmr.repository.NodeService.removeChildAssociation=ACL_PARENT.0.sys:base.DeleteChildren,ACL_NODE.0.sys:base.DeleteNode,RM.Delete.0
org.alfresco.service.cmr.repository.NodeService.getProperties=ACL_NODE.0.sys:base.ReadProperties,RM.Read.0,AFTER_RM.FilterProperty
org.alfresco.service.cmr.repository.NodeService.getProperty=ACL_NODE.0.sys:base.ReadProperties,RM.Read.0,RM.ReadProperty.0.1
org.alfresco.service.cmr.repository.NodeService.setProperties=ACL_NODE.0.sys:base.WriteProperties,RM.UpdateProperties.0.1
org.alfresco.service.cmr.repository.NodeService.addProperties=ACL_NODE.0.sys:base.WriteProperties,RM.UpdateProperties.0.1
org.alfresco.service.cmr.repository.NodeService.setProperty=ACL_NODE.0.sys:base.WriteProperties,RM.UpdateProperties.0.1.2
org.alfresco.service.cmr.repository.NodeService.removeProperty=ACL_NODE.0.sys:base.WriteProperties,RM.UpdateProperties.0.1
org.alfresco.service.cmr.repository.NodeService.getParentAssocs=ACL_NODE.0.sys:base.ReadProperties,RM.Read.0
org.alfresco.service.cmr.repository.NodeService.getChildAssocs=ACL_NODE.0.sys:base.ReadChildren,AFTER_ACL_NODE.sys:base.ReadProperties,RM.Read.0,AFTER_RM.FilterNode
org.alfresco.service.cmr.repository.NodeService.getChildByName=ACL_NODE.0.sys:base.ReadChildren,AFTER_ACL_NODE.sys:base.ReadProperties,RM.Read.0,AFTER_RM.FilterNode
org.alfresco.service.cmr.repository.NodeService.getChildrenByName=ACL_NODE.0.sys:base.ReadChildren,AFTER_ACL_NODE.sys:base.ReadProperties,RM.Read.0,AFTER_RM.FilterNode
org.alfresco.service.cmr.repository.NodeService.getPrimaryParent=ACL_NODE.0.sys:base.ReadProperties,RM.Read.0
org.alfresco.service.cmr.repository.NodeService.createAssociation=ACL_ALLOW,RM.Assoc.0.1
org.alfresco.service.cmr.repository.NodeService.removeAssociation=ACL_ALLOW,RM.Assoc.0.1
org.alfresco.service.cmr.repository.NodeService.getTargetAssocs=ACL_ALLOW,RM.Read.0
org.alfresco.service.cmr.repository.NodeService.getSourceAssocs=ACL_ALLOW,RM.Read.0
org.alfresco.service.cmr.repository.NodeService.getAssoc=ACL_ALLOW,RM.Read.0
org.alfresco.service.cmr.repository.NodeService.getPath=ACL_NODE.0.sys:base.ReadProperties,RM.Read.0
org.alfresco.service.cmr.repository.NodeService.getPaths=ACL_NODE.0.sys:base.ReadProperties,RM.Read.0
org.alfresco.service.cmr.repository.NodeService.getStoreArchiveNode=ACL_NODE.0.sys:base.Read,RM_ABSTAIN
org.alfresco.service.cmr.repository.NodeService.restoreNode=ACL_NODE.0.sys:base.DeleteNode,ACL_NODE.1.sys:base.CreateChildren,RM_ABSTAIN
org.alfresco.service.cmr.repository.NodeService.getChildAssocsWithoutParentAssocsOfType=ACL_NODE.0.sys:base.ReadProperties,AFTER_ACL_NODE.sys:base.ReadProperties,RM_ABSTAIN
org.alfresco.service.cmr.repository.NodeService.*=ACL_DENY,RM_DENY
]]>
</value>
</property>
</bean>
<!-- ============================== -->
<!-- FileFolder Service Permissions -->
<!-- ============================== -->
<bean id="FileFolderService_security" class="org.alfresco.repo.security.permissions.impl.acegi.MethodSecurityInterceptor">
<property name="authenticationManager">
<ref bean="authenticationManager"/>
</property>
<property name="accessDecisionManager">
<ref local="accessDecisionManager"/>
</property>
<property name="afterInvocationManager">
<ref local="afterInvocationManager"/>
</property>
<property name="objectDefinitionSource">
<value>
<![CDATA[
org.alfresco.service.cmr.model.FileFolderService.list=ACL_NODE.0.sys:base.ReadChildren,AFTER_ACL_NODE.sys:base.ReadProperties,RM.Read.0,AFTER_RM.FilterNode
org.alfresco.service.cmr.model.FileFolderService.listFiles=ACL_NODE.0.sys:base.ReadChildren,AFTER_ACL_NODE.sys:base.ReadProperties,RM.Read.0,AFTER_RM.FilterNode
org.alfresco.service.cmr.model.FileFolderService.listFolders=ACL_NODE.0.sys:base.ReadChildren,AFTER_ACL_NODE.sys:base.ReadProperties,RM.Read.0,AFTER_RM.FilterNode
org.alfresco.service.cmr.model.FileFolderService.listDeepFolders=ACL_NODE.0.sys:base.ReadChildren,AFTER_ACL_NODE.sys:base.ReadProperties,RM.Read.0,AFTER_RM.FilterNode
org.alfresco.service.cmr.model.FileFolderService.getLocalizedSibling=ACL_ALLOW,AFTER_ACL_NODE.sys:base.ReadProperties,RM_ALLOW
org.alfresco.service.cmr.model.FileFolderService.search=ACL_NODE.0.sys:base.ReadChildren,AFTER_ACL_NODE.sys:base.Read,RM.Read.0,AFTER_RM.FilterNode
org.alfresco.service.cmr.model.FileFolderService.searchSimple=ACL_NODE.0.sys:base.ReadChildren,AFTER_ACL_NODE.sys:base.Read,RM.Read.0,AFTER_RM.FilterNode
org.alfresco.service.cmr.model.FileFolderService.rename=ACL_NODE.0.sys:base.WriteProperties,RM.Update.0
org.alfresco.service.cmr.model.FileFolderService.move=ACL_NODE.0.sys:base.DeleteNode,ACL_NODE.1.sys:base.CreateChildren,RM.Move.0.1
org.alfresco.service.cmr.model.FileFolderService.moveFrom=ACL_NODE.0.sys:base.DeleteNode,ACL_NODE.2.sys:base.CreateChildren,RM.Move.0.2
org.alfresco.service.cmr.model.FileFolderService.copy=ACL_NODE.0.sys:base.Read,ACL_NODE.1.sys:base.CreateChildren,RM.Read.0,RM.Create.1.0
org.alfresco.service.cmr.model.FileFolderService.create=ACL_NODE.0.sys:base.CreateChildren,RM.Create.0.2
org.alfresco.service.cmr.model.FileFolderService.delete=ACL_NODE.0.sys:base.DeleteNode,RM.Delete.0
org.alfresco.service.cmr.model.FileFolderService.getNamePath=ACL_NODE.1.sys:base.ReadProperties,RM.Read.1
org.alfresco.service.cmr.model.FileFolderService.resolveNamePath=ACL_ALLOW,AFTER_ACL_NODE.sys:base.ReadProperties,RM.Read.0
org.alfresco.service.cmr.model.FileFolderService.getFileInfo=ACL_NODE.0.sys:base.ReadProperties,RM.Read.0
org.alfresco.service.cmr.model.FileFolderService.getReader=ACL_NODE.0.sys:base.ReadContent,RM.Read.0
org.alfresco.service.cmr.model.FileFolderService.getWriter=ACL_NODE.0.sys:base.WriteContent,RM.WriteContent.0
org.alfresco.service.cmr.model.FileFolderService.exists=ACL_ALLOW,RM_ALLOW
org.alfresco.service.cmr.model.FileFolderService.getType=ACL_ALLOW,RM.Read.0
org.alfresco.service.cmr.model.FileFolderService.*=ACL_DENY,RM_DENY
]]>
</value>
</property>
</bean>
<!-- =========================== -->
<!-- Content Service Permissions -->
<!-- =========================== -->
<!-- Reading requires the permission to read content -->
<!-- Writing required the permission to write conent -->
<bean id="ContentService_security" class="org.alfresco.repo.security.permissions.impl.acegi.MethodSecurityInterceptor">
<property name="authenticationManager">
<ref bean="authenticationManager"/>
</property>
<property name="accessDecisionManager">
<ref local="accessDecisionManager"/>
</property>
<property name="afterInvocationManager">
<ref local="afterInvocationManager"/>
</property>
<property name="objectDefinitionSource">
<value>
<![CDATA[
org.alfresco.service.cmr.repository.ContentService.getStoreTotalSpace=ACL_ALLOW,RM_ALLOW
org.alfresco.service.cmr.repository.ContentService.getStoreFreeSpace=ACL_ALLOW,RM_ALLOW
org.alfresco.service.cmr.repository.ContentService.getRawReader=ACL_METHOD.ROLE_ADMINISTRATOR,RM_ABSTAIN
org.alfresco.service.cmr.repository.ContentService.getReader=ACL_NODE.0.sys:base.ReadContent,RM.Read.0
org.alfresco.service.cmr.repository.ContentService.getWriter=ACL_NODE.0.sys:base.WriteContent,RM.WriteContent.0
org.alfresco.service.cmr.repository.ContentService.isTransformable=ACL_ALLOW,RM_ALLOW
org.alfresco.service.cmr.repository.ContentService.getTransformer=ACL_ALLOW,RM_ALLOW
org.alfresco.service.cmr.repository.ContentService.getMaxSourceSizeBytes=ACL_ALLOW,RM_ALLOW
org.alfresco.service.cmr.repository.ContentService.getImageTransformer=ACL_ALLOW,RM_ALLOW
org.alfresco.service.cmr.repository.ContentService.transform=ACL_ALLOW,RM_ALLOW
org.alfresco.service.cmr.repository.ContentService.getTempWriter=ACL_ALLOW,RM_ALLOW
org.alfresco.service.cmr.repository.ContentService.*=ACL_DENY,RM_DENY
]]>
</value>
</property>
</bean>
<!-- ================ -->
<!-- MimeType Service -->
<!-- ================ -->
<!-- There are no permissions around mime types -->
<bean id="MimetypeService_security" class="org.alfresco.repo.security.permissions.impl.AlwaysProceedMethodInterceptor"/>
<!-- ============== -->
<!-- Search Service -->
<!-- ============== -->
<!-- All search results are filtered to exclude nodes that the current user can not -->
<!-- read. Other methods restrict queries to those nodes the user can read -->
<bean id="SearchService_security" class="org.alfresco.repo.security.permissions.impl.acegi.MethodSecurityInterceptor">
<property name="authenticationManager">
<ref bean="authenticationManager"/>
</property>
<property name="accessDecisionManager">
<ref local="accessDecisionManager"/>
</property>
<property name="afterInvocationManager">
<ref local="afterInvocationManager"/>
</property>
<property name="objectDefinitionSource">
<value>
<![CDATA[
org.alfresco.service.cmr.search.SearchService.query=ACL_ALLOW,AFTER_ACL_NODE.sys:base.Read,RM_QUERY,AFTER_RM.FilterNode
org.alfresco.service.cmr.search.SearchService.selectNodes=ACL_ALLOW,AFTER_ACL_NODE.sys:base.Read,RM_QUERY,AFTER_RM.FilterNode
org.alfresco.service.cmr.search.SearchService.selectProperties=ACL_NODE.0.sys:base.Read,RM_ABSTAIN
org.alfresco.service.cmr.search.SearchService.contains=ACL_NODE.0.sys:base.Read,RM.Read.0
org.alfresco.service.cmr.search.SearchService.like=ACL_NODE.0.sys:base.Read,RM.Read.0
org.alfresco.service.cmr.search.SearchService.*=ACL_DENY,RM_DENY
]]>
</value>
</property>
</bean>
<!-- ================ -->
<!-- Category Service -->
<!-- ================ -->
<!-- Category queries are filtered for nodes that are visible to the current user -->
<!-- Other methods are unrestricted at the moment -->
<!-- Uses the public node service for all mutations - access is allowed here and enforced by the public node service -->
<bean id="CategoryService_security" class="org.alfresco.repo.security.permissions.impl.acegi.MethodSecurityInterceptor">
<property name="authenticationManager">
<ref bean="authenticationManager"/>
</property>
<property name="accessDecisionManager">
<ref local="accessDecisionManager"/>
</property>
<property name="afterInvocationManager">
<ref local="afterInvocationManager"/>
</property>
<property name="objectDefinitionSource">
<value>
<![CDATA[
org.alfresco.service.cmr.search.CategoryService.getChildren=ACL_ALLOW,AFTER_ACL_NODE.sys:base.ReadProperties,RM_ABSTAIN
org.alfresco.service.cmr.search.CategoryService.getCategories=ACL_ALLOW,AFTER_ACL_NODE.sys:base.ReadProperties,RM_ABSTAIN
org.alfresco.service.cmr.search.CategoryService.getClassifications=ACL_ALLOW,AFTER_ACL_NODE.sys:base.ReadProperties,RM_ABSTAIN
org.alfresco.service.cmr.search.CategoryService.getRootCategories=ACL_ALLOW,AFTER_ACL_NODE.sys:base.ReadProperties,RM_ABSTAIN
org.alfresco.service.cmr.search.CategoryService.getClassificationAspects=ACL_ALLOW,RM_ABSTAIN
org.alfresco.service.cmr.search.CategoryService.createClassification=ACL_ALLOW,RM_ABSTAIN
org.alfresco.service.cmr.search.CategoryService.createRootCategory=ACL_ALLOW,RM_ABSTAIN
org.alfresco.service.cmr.search.CategoryService.createCategory=ACL_ALLOW,RM_ABSTAIN
org.alfresco.service.cmr.search.CategoryService.deleteClassification=ACL_ALLOW,RM_ABSTAIN
org.alfresco.service.cmr.search.CategoryService.deleteCategory=ACL_ALLOW,RM_ABSTAIN
org.alfresco.service.cmr.search.CategoryService.getTopCategories=ACL_ALLOW,RM_ABSTAIN
org.alfresco.service.cmr.search.CategoryService.*=ACL_DENY,RM_DENY
]]>
</value>
</property>
</bean>
<!-- ============ -->
<!-- Copy Service -->
<!-- ============ -->
<!-- The copy service does not require any security restrictions, they are imposed -->
<!-- by the node service it uses to do its work. -->
<bean id="CopyService_security" class="org.alfresco.repo.security.permissions.impl.AlwaysProceedMethodInterceptor"/>
<!-- ================ -->
<!-- The Lock Service -->
<!-- ================ -->
<!-- Lock and Unlock require the related aspect specific permissions. Querying the -->
<!-- lock status just requires read access to the node. -->
<bean id="LockService_security" class="org.alfresco.repo.security.permissions.impl.acegi.MethodSecurityInterceptor">
<property name="authenticationManager">
<ref bean="authenticationManager"/>
</property>
<property name="accessDecisionManager">
<ref local="accessDecisionManager"/>
</property>
<property name="afterInvocationManager">
<ref local="afterInvocationManager"/>
</property>
<property name="objectDefinitionSource">
<value>
<![CDATA[
org.alfresco.service.cmr.lock.LockService.lock=ACL_NODE.0.cm:lockable.Lock,RM_ABSTAIN
org.alfresco.service.cmr.lock.LockService.unlock=ACL_NODE.0.cm:lockable.Unlock,RM_ABSTAIN
org.alfresco.service.cmr.lock.LockService.getLockStatus=ACL_NODE.0.sys:base.ReadProperties,RM.Read.0
org.alfresco.service.cmr.lock.LockService.getLockType=ACL_NODE.0.sys:base.ReadProperties,RM.Read.0
org.alfresco.service.cmr.lock.LockService.checkForLock=ACL_NODE.0.sys:base.ReadProperties,RM.Read.0
org.alfresco.service.cmr.lock.LockService.getLocks=ACL_NODE.0.sys:base.ReadProperties,RM.Read.0
org.alfresco.service.cmr.lock.LockService.*=ACL_DENY,RM_DENY
]]>
</value>
</property>
</bean>
<!-- =============== -->
<!-- Version Service -->
<!-- =============== -->
<!-- The version service does not have any restrictions applied at the moment. It -->
<!-- does not use a node service that would apply any permissions. -->
<bean id="VersionService_security" class="org.alfresco.repo.security.permissions.impl.AlwaysProceedMethodInterceptor"/>
<!-- =============================== -->
<!-- Multilingual Content Service -->
<!-- =============================== -->
<!-- The version service does not have any restrictions applied at the moment. It -->
<!-- does not use a node service that would apply any permissions. -->
<bean id="MultilingualContentService_security" class="org.alfresco.repo.security.permissions.impl.acegi.MethodSecurityInterceptor">
<property name="authenticationManager">
<ref bean="authenticationManager"/>
</property>
<property name="accessDecisionManager">
<ref local="accessDecisionManager"/>
</property>
<property name="afterInvocationManager">
<ref local="afterInvocationManager"/>
</property>
<property name="objectDefinitionSource">
<value>
<![CDATA[
org.alfresco.service.cmr.ml.MultilingualContentService.getTranslationContainer=ACL_ALLOW,RM_ABSTAIN
org.alfresco.service.cmr.ml.MultilingualContentService.getTranslations=ACL_NODE.0.sys:base.Read,AFTER_ACL_NODE.sys:base.Read,RM_ABSTAIN
org.alfresco.service.cmr.ml.MultilingualContentService.getTranslationForLocale=ACL_NODE.0.sys:base.Read,AFTER_ACL_NODE.sys:base.Read,RM_ABSTAIN
org.alfresco.service.cmr.ml.MultilingualContentService.getMissingTranslations=ACL_ALLOW,RM_ABSTAIN
org.alfresco.service.cmr.ml.MultilingualContentService.getPivotTranslation=ACL_NODE.0.sys:base.Read,AFTER_ACL_NODE.sys:base.Read,RM_ABSTAIN
org.alfresco.service.cmr.ml.MultilingualContentService.isTranslation=ACL_NODE.0.sys:base.Read,RM_ABSTAIN
org.alfresco.service.cmr.ml.MultilingualContentService.makeTranslation=ACL_NODE.0.sys:base.Write,RM_ABSTAIN
org.alfresco.service.cmr.ml.MultilingualContentService.unmakeTranslation=ACL_NODE.0.sys:base.Write,RM_ABSTAIN
org.alfresco.service.cmr.ml.MultilingualContentService.addTranslation=ACL_NODE.0.sys:base.Read,ACL_NODE.1.sys:base.Write,RM_ABSTAIN
org.alfresco.service.cmr.ml.MultilingualContentService.addEmptyTranslation=ACL_NODE.0.sys:base.Read,ACL_NODE.0.sys:base.CreateChildren,RM_ABSTAIN
org.alfresco.service.cmr.ml.MultilingualContentService.copyTranslationContainer=ACL_NODE.0.sys:base.Read,ACL_NODE.1.sys:base.CreateChildren,RM_ABSTAIN
org.alfresco.service.cmr.ml.MultilingualContentService.moveTranslationContainer=ACL_NODE.0.sys:base.DeleteNode,ACL_NODE.1.sys:base.CreateChildren,RM_ABSTAIN
org.alfresco.service.cmr.ml.MultilingualContentService.deleteTranslationContainer=ACL_NODE.0.sys:base.DeleteNode,ACL_NODE.0.sys:base.DeleteChildren,RM_ABSTAIN
org.alfresco.service.cmr.ml.MultilingualContentService.*=ACL_DENY,RM_DENY
]]>
</value>
</property>
</bean>
<!-- =================== -->
<!-- Edition Service -->
<!-- =================== -->
<bean id="EditionService_security" class="org.alfresco.repo.security.permissions.impl.acegi.MethodSecurityInterceptor">
<property name="authenticationManager">
<ref bean="authenticationManager"/>
</property>
<property name="accessDecisionManager">
<ref local="accessDecisionManager"/>
</property>
<property name="afterInvocationManager">
<ref local="afterInvocationManager"/>
</property>
<property name="objectDefinitionSource">
<value>
<![CDATA[
org.alfresco.service.cmr.ml.EditionService.createEdition=ACL_NODE.0.sys:base.Read,RM_ABSTAIN
org.alfresco.service.cmr.ml.EditionService.getEditions=ACL_NODE.0.sys:base.Read,RM_ABSTAIN
org.alfresco.service.cmr.ml.EditionService.getVersionedTranslations=ACL_ALLOW,RM_ABSTAIN
org.alfresco.service.cmr.ml.EditionService.getVersionedMetadatas=ACL_ALLOW,RM_ABSTAIN
org.alfresco.service.cmr.ml.EditionService.*=ACL_DENY,RM_DENY
]]>
</value>
</property>
</bean>
<!-- ============================== -->
<!-- The Check-out/Check-in service -->
<!-- ============================== -->
<!-- To check out a node requires that you have permission to check out the node and -->
<!-- create the working copy in the specified location. Check in requires the -->
<!-- the associated permission, as does cancel check out. See the permission model -->
<!-- for how these permissions are granted. -->
<bean id="CheckoutCheckinService_security" class="org.alfresco.repo.security.permissions.impl.acegi.MethodSecurityInterceptor">
<property name="authenticationManager">
<ref bean="authenticationManager"/>
</property>
<property name="accessDecisionManager">
<ref local="accessDecisionManager"/>
</property>
<property name="afterInvocationManager">
<ref local="afterInvocationManager"/>
</property>
<property name="objectDefinitionSource">
<value>
<![CDATA[
org.alfresco.service.cmr.coci.CheckOutCheckInService.checkout=ACL_NODE.0.cm:lockable.CheckOut,RM_ABSTAIN
org.alfresco.service.cmr.coci.CheckOutCheckInService.checkin=ACL_NODE.0.cm:lockable.CheckIn,RM_ABSTAIN
org.alfresco.service.cmr.coci.CheckOutCheckInService.cancelCheckout=ACL_NODE.0.cm:lockable.CancelCheckOut,RM_ABSTAIN
org.alfresco.service.cmr.coci.CheckOutCheckInService.getWorkingCopy=ACL_NODE.0.sys:base.Read,RM_ABSTAIN
org.alfresco.service.cmr.coci.CheckOutCheckInService.*=ACL_DENY,RM_DENY
]]>
</value>
</property>
</bean>
<!-- ================ -->
<!-- The Rule Service -->
<!-- ================ -->
<!-- The rule service does not require any security restrictions, they are imposed -->
<!-- by the node service it uses to do its work. -->
<bean id="RuleService_security" class="org.alfresco.repo.security.permissions.impl.AlwaysProceedMethodInterceptor"/>
<!-- ==================== -->
<!-- The Importer Service -->
<!-- ==================== -->
<!-- The importer service does not require any security restrictions, they are -->
<!-- imposed by the node service it uses to do its work. -->
<bean id="ImporterService_security" class="org.alfresco.repo.security.permissions.impl.AlwaysProceedMethodInterceptor"/>
<!-- ================== -->
<!-- The Action Service -->
<!-- ================== -->
<!-- The action service does not require any security restrictions, they are imposed -->
<!-- by the node service it uses to do its work. -->
<bean id="ActionService_security" class="org.alfresco.repo.security.permissions.impl.AlwaysProceedMethodInterceptor"/>
<!-- ====================== -->
<!-- The Permission Service -->
<!-- ====================== -->
<!-- Requests to this service are controlled by the ReadPermissions and -->
<!-- and ChangePermissions permissions. Access to some methods are not restricted at -->
<!-- the moment. -->
<bean id="PermissionService_security" class="org.alfresco.repo.security.permissions.impl.acegi.MethodSecurityInterceptor">
<property name="authenticationManager">
<ref bean="authenticationManager"/>
</property>
<property name="accessDecisionManager">
<ref local="accessDecisionManager"/>
</property>
<property name="afterInvocationManager">
<ref local="afterInvocationManager"/>
</property>
<property name="objectDefinitionSource">
<value>
<![CDATA[
org.alfresco.service.cmr.security.PermissionService.getOwnerAuthority=ACL_ALLOW,RM_ALLOW
org.alfresco.service.cmr.security.PermissionService.getAllAuthorities=ACL_ALLOW,RM_ALLOW
org.alfresco.service.cmr.security.PermissionService.getAllPermission=ACL_ALLOW,RM_ALLOW
org.alfresco.service.cmr.security.PermissionService.getPermissions=ACL_NODE.0.sys:base.ReadPermissions,RM.Read.0
org.alfresco.service.cmr.security.PermissionService.getAllSetPermissions=ACL_NODE.0.sys:base.ReadPermissions,RM.Read.0
org.alfresco.service.cmr.security.PermissionService.getSettablePermissions=ACL_ALLOW,RM_ALLOW
org.alfresco.service.cmr.security.PermissionService.hasPermission=ACL_ALLOW,RM_ALLOW
org.alfresco.service.cmr.security.PermissionService.deletePermissions=ACL_NODE.0.sys:base.ChangePermissions,RM.Capability.0
org.alfresco.service.cmr.security.PermissionService.deletePermission=ACL_NODE.0.sys:base.ChangePermissions,RM.Capability.0
org.alfresco.service.cmr.security.PermissionService.setPermission=ACL_NODE.0.sys:base.ChangePermissions,RM.Capability.0
org.alfresco.service.cmr.security.PermissionService.setInheritParentPermissions=ACL_NODE.0.sys:base.ChangePermissions,RM.Capability.0
org.alfresco.service.cmr.security.PermissionService.getInheritParentPermissions=ACL_ALLOW,RM_ALLOW
org.alfresco.service.cmr.security.PermissionService.clearPermission=ACL_NODE.0.sys:base.ChangePermissions,RM.Capability.0
org.alfresco.service.cmr.security.PermissionService.*=ACL_DENY,RM_DENY
]]>
</value>
</property>
</bean>
<!-- ===================== -->
<!-- The Authority Service -->
<!-- ===================== -->
<!-- This service currently has no restrictions. -->
<bean id="AuthorityService_security" class="org.alfresco.repo.security.permissions.impl.acegi.MethodSecurityInterceptor">
<property name="authenticationManager">
<ref bean="authenticationManager"/>
</property>
<property name="accessDecisionManager">
<ref local="accessDecisionManager"/>
</property>
<property name="afterInvocationManager">
<ref local="afterInvocationManager"/>
</property>
<property name="objectDefinitionSource">
<value>
<![CDATA[
org.alfresco.service.cmr.security.AuthorityService.hasAdminAuthority=ACL_ALLOW
org.alfresco.service.cmr.security.AuthorityService.hasGuestAuthority=ACL_ALLOW
org.alfresco.service.cmr.security.AuthorityService.isAdminAuthority=ACL_ALLOW
org.alfresco.service.cmr.security.AuthorityService.isGuestAuthority=ACL_ALLOW
org.alfresco.service.cmr.security.AuthorityService.getAuthorities=ACL_ALLOW
org.alfresco.service.cmr.security.AuthorityService.getAuthoritiesForUser=ACL_METHOD.ROLE_ADMINISTRATOR
org.alfresco.service.cmr.security.AuthorityService.getAllAuthorities=ACL_ALLOW
org.alfresco.service.cmr.security.AuthorityService.findAuthorities=ACL_ALLOW
org.alfresco.service.cmr.security.AuthorityService.getAllRootAuthorities=ACL_ALLOW
org.alfresco.service.cmr.security.AuthorityService.createAuthority=ACL_METHOD.ROLE_ADMINISTRATOR
org.alfresco.service.cmr.security.AuthorityService.addAuthority=ACL_METHOD.ROLE_ADMINISTRATOR
org.alfresco.service.cmr.security.AuthorityService.removeAuthority=ACL_METHOD.ROLE_ADMINISTRATOR
org.alfresco.service.cmr.security.AuthorityService.deleteAuthority=ACL_METHOD.ROLE_ADMINISTRATOR
org.alfresco.service.cmr.security.AuthorityService.getContainedAuthorities=ACL_ALLOW
org.alfresco.service.cmr.security.AuthorityService.getContainingAuthorities=ACL_ALLOW
org.alfresco.service.cmr.security.AuthorityService.getContainingAuthoritiesInZone=ACL_ALLOW
org.alfresco.service.cmr.security.AuthorityService.getShortName=ACL_ALLOW
org.alfresco.service.cmr.security.AuthorityService.getName=ACL_ALLOW
org.alfresco.service.cmr.security.AuthorityService.authorityExists=ACL_ALLOW
org.alfresco.service.cmr.security.AuthorityService.setAuthorityDisplayName=ACL_METHOD.ROLE_ADMINISTRATOR
org.alfresco.service.cmr.security.AuthorityService.getAuthorityDisplayName=ACL_ALLOW
org.alfresco.service.cmr.security.AuthorityService.getOrCreateZone=ACL_METHOD.ROLE_ADMINISTRATOR
org.alfresco.service.cmr.security.AuthorityService.getZone=ACL_ALLOW
org.alfresco.service.cmr.security.AuthorityService.getAuthorityZones=ACL_ALLOW
org.alfresco.service.cmr.security.AuthorityService.getAllAuthoritiesInZone=ACL_ALLOW
org.alfresco.service.cmr.security.AuthorityService.getAllRootAuthoritiesInZone=ACL_ALLOW
org.alfresco.service.cmr.security.AuthorityService.addAuthorityToZones=ACL_METHOD.ROLE_ADMINISTRATOR
org.alfresco.service.cmr.security.AuthorityService.removeAuthorityFromZones=ACL_METHOD.ROLE_ADMINISTRATOR
org.alfresco.service.cmr.security.AuthorityService.getDefaultZones=ACL_ALLOW
org.alfresco.service.cmr.security.AuthorityService.*=ACL_DENY,RM_DENY
]]>
</value>
</property>
</bean>
<!-- =============================================== -->
<!-- The Authentication Service security interceptor -->
<!-- =============================================== -->
<!-- NOTE: Authentication is excluded as it sets or clears authentication -->
<!-- The same for validate ticaket -->
<!-- Update authentication checks internally -->
<bean id="AuthenticationService_security" class="org.alfresco.repo.security.permissions.impl.acegi.MethodSecurityInterceptor">
<property name="authenticationManager">
<ref bean="authenticationManager"/>
</property>
<property name="accessDecisionManager">
<ref local="accessDecisionManager"/>
</property>
<property name="afterInvocationManager">
<ref local="afterInvocationManager"/>
</property>
<property name="objectDefinitionSource">
<value>
<![CDATA[
org.alfresco.service.cmr.security.MutableAuthenticationService.isAuthenticationMutable=ACL_ALLOW
org.alfresco.service.cmr.security.MutableAuthenticationService.isAuthenticationCreationAllowed=ACL_ALLOW
org.alfresco.service.cmr.security.MutableAuthenticationService.createAuthentication=ACL_METHOD.ROLE_ADMINISTRATOR
org.alfresco.service.cmr.security.MutableAuthenticationService.updateAuthentication=ACL_ALLOW
org.alfresco.service.cmr.security.MutableAuthenticationService.setAuthentication=ACL_METHOD.ROLE_ADMINISTRATOR
org.alfresco.service.cmr.security.MutableAuthenticationService.deleteAuthentication=ACL_METHOD.ROLE_ADMINISTRATOR
org.alfresco.service.cmr.security.MutableAuthenticationService.setAuthenticationEnabled=ACL_METHOD.ROLE_ADMINISTRATOR
org.alfresco.service.cmr.security.AuthenticationService.getAuthenticationEnabled=ACL_METHOD.ROLE_ADMINISTRATOR
org.alfresco.service.cmr.security.AuthenticationService.authenticationExists=ACL_METHOD.ROLE_ADMINISTRATOR
org.alfresco.service.cmr.security.AuthenticationService.getCurrentUserName=ACL_ALLOW
org.alfresco.service.cmr.security.AuthenticationService.invalidateUserSession=ACL_METHOD.ROLE_ADMINISTRATOR
org.alfresco.service.cmr.security.AuthenticationService.invalidateTicket=ACL_ALLOW
org.alfresco.service.cmr.security.AuthenticationService.getCurrentTicket=ACL_ALLOW
org.alfresco.service.cmr.security.AuthenticationService.clearCurrentSecurityContext=ACL_ALLOW
org.alfresco.service.cmr.security.AuthenticationService.isCurrentUserTheSystemUser=ACL_ALLOW
org.alfresco.service.cmr.security.AuthenticationService.guestUserAuthenticationAllowed=ACL_ALLOW
org.alfresco.service.cmr.security.AuthenticationService.getDomains=ACL_METHOD.ROLE_ADMINISTRATOR
org.alfresco.service.cmr.security.AuthenticationService.getDomainsThatAllowUserCreation=ACL_METHOD.ROLE_ADMINISTRATOR
org.alfresco.service.cmr.security.AuthenticationService.getDomainsThatAllowUserDeletion=ACL_METHOD.ROLE_ADMINISTRATOR
org.alfresco.service.cmr.security.AuthenticationService.getDomiansThatAllowUserPasswordChanges=ACL_METHOD.ROLE_ADMINISTRATOR
]]>
</value>
</property>
</bean>
<!-- =================== -->
<!-- The Ownable Service -->
<!-- =================== -->
<!-- This service currently has no restrictions. -->
<!-- TODO: respect the permissions on the ownable service -->
<bean id="OwnableService_security" class="org.alfresco.repo.security.permissions.impl.acegi.MethodSecurityInterceptor">
<property name="authenticationManager">
<ref bean="authenticationManager"/>
</property>
<property name="accessDecisionManager">
<ref local="accessDecisionManager"/>
</property>
<property name="afterInvocationManager">
<ref local="afterInvocationManager"/>
</property>
<property name="objectDefinitionSource">
<value>
<![CDATA[
org.alfresco.service.cmr.security.OwnableService.getOwner=ACL_NODE.0.sys:base.ReadProperties,RM.Capability.0
org.alfresco.service.cmr.security.OwnableService.setOwner=ACL_NODE.0.cm:ownable.SetOwner,RM.Capability.0
org.alfresco.service.cmr.security.OwnableService.takeOwnership=ACL_NODE.0.cm:ownable.TakeOwnership,RM.Capability.0
org.alfresco.service.cmr.security.OwnableService.hasOwner=ACL_NODE.0.sys:base.ReadProperties,RM.Capability.0
org.alfresco.service.cmr.security.OwnableService.*=ACL_DENY,RM_DENY
]]>
</value>
</property>
</bean>
<!-- Person Service -->
<bean id="PersonService_security" class="org.alfresco.repo.security.permissions.impl.acegi.MethodSecurityInterceptor">
<property name="authenticationManager">
<ref bean="authenticationManager"/>
</property>
<property name="accessDecisionManager">
<ref local="accessDecisionManager"/>
</property>
<property name="afterInvocationManager">
<ref local="afterInvocationManager"/>
</property>
<property name="objectDefinitionSource">
<value>
<![CDATA[
org.alfresco.service.cmr.security.PersonService.getPerson=ACL_ALLOW,AFTER_ACL_NODE.sys:base.ReadProperties
org.alfresco.service.cmr.security.PersonService.personExists=ACL_ALLOW
org.alfresco.service.cmr.security.PersonService.createMissingPeople=ACL_ALLOW
org.alfresco.service.cmr.security.PersonService.setCreateMissingPeople=ACL_METHOD.ROLE_ADMINISTRATOR
org.alfresco.service.cmr.security.PersonService.getMutableProperties=ACL_ALLOW
org.alfresco.service.cmr.security.PersonService.setPersonProperties=ACL_METHOD.ROLE_ADMINISTRATOR
org.alfresco.service.cmr.security.PersonService.isMutable=ACL_ALLOW
org.alfresco.service.cmr.security.PersonService.createPerson=ACL_METHOD.ROLE_ADMINISTRATOR
org.alfresco.service.cmr.security.PersonService.deletePerson=ACL_METHOD.ROLE_ADMINISTRATOR
org.alfresco.service.cmr.security.PersonService.notifyPerson=ACL_METHOD.ROLE_ADMINISTRATOR
org.alfresco.service.cmr.security.PersonService.getAllPeople=ACL_ALLOW
org.alfresco.service.cmr.security.PersonService.getPeople=ACL_ALLOW
org.alfresco.service.cmr.security.PersonService.getPeopleFilteredByProperty=ACL_ALLOW
org.alfresco.service.cmr.security.PersonService.getPeopleContainer=ACL_ALLOW
org.alfresco.service.cmr.security.PersonService.getUserNamesAreCaseSensitive=ACL_ALLOW
org.alfresco.service.cmr.security.PersonService.getUserIdentifier=ACL_ALLOW
org.alfresco.service.cmr.security.PersonService.*=ACL_DENY
]]>
</value>
</property>
</bean>
<!-- ==================== -->
<!-- The Template Service -->
<!-- ==================== -->
<!-- This service currently has no restrictions. -->
<bean id="TemplateService_security" class="org.alfresco.repo.security.permissions.impl.AlwaysProceedMethodInterceptor"/>
<!-- ==================== -->
<!-- The Script Service -->
<!-- ==================== -->
<!-- This service currently has no restrictions. -->
<bean id="ScriptService_security" class="org.alfresco.repo.security.permissions.impl.AlwaysProceedMethodInterceptor"/>
<!-- ================ -->
<!-- Workflow Service -->
<!-- ================ -->
<!-- TODO: Add workflow security -->
<bean id="WorkflowService_security" class="org.alfresco.repo.security.permissions.impl.AlwaysProceedMethodInterceptor"/>
<!-- ============= -->
<!-- Audit Service -->
<!-- ============= -->
<!-- TODO: Add audit security -->
<bean id="AuditService_security" class="org.alfresco.repo.security.permissions.impl.AlwaysProceedMethodInterceptor"/>
<!-- ======================== -->
<!-- Repository Admin Service -->
<!-- ======================== -->
<!-- TODO: Add repository admin security -->
<bean id="RepoAdminService_security" class="org.alfresco.repo.security.permissions.impl.AlwaysProceedMethodInterceptor"/>
<!-- ===================== -->
<!-- Content Usage Service -->
<!-- ===================== -->
<!-- TODO: Add content usage security -->
<bean id="ContentUsageService_security" class="org.alfresco.repo.security.permissions.impl.AlwaysProceedMethodInterceptor"/>
<bean id="PublicServiceAccessService_security" class="org.alfresco.repo.security.permissions.impl.acegi.MethodSecurityInterceptor">
<property name="authenticationManager">
<ref bean="authenticationManager"/>
</property>
<property name="accessDecisionManager">
<ref local="accessDecisionManager"/>
</property>
<property name="afterInvocationManager">
<ref local="afterInvocationManager"/>
</property>
<property name="objectDefinitionSource">
<value><![CDATA[org.alfresco.service.cmr.security.PublicServiceAccessService.hasAccess=ACL_ALLOW,RM_ALLOW]]>
</value>
</property>
</bean>
</beans>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,614 @@
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://www.springframework.org/dtd/spring-beans.dtd'>
<beans>
<bean id="jsonConversionComponent"
class="org.alfresco.module.org_alfresco_module_rm.jscript.app.JSONConversionComponent"
parent="baseJsonConversionComponent">
<property name="recordsManagementService" ref="RecordsManagementService"/>
</bean>
<bean id="jsonConversionComponent.baseEvaluator"
abstract="true">
<property name="jsonConversionComponent" ref="jsonConversionComponent"/>
<property name="recordsManagementService" ref="RecordsManagementService"/>
<property name="nodeService" ref="NodeService"/>
<property name="namespaceService" ref="NamespaceService"/>
<property name="capabilityService" ref="CapabilityService"/>
</bean>
<bean id="jsonConversionComponent.baseIndicator"
abstract="true"
parent="jsonConversionComponent.baseEvaluator"
init-method="registerIndicator"/>
<bean id="jsonConversionComponent.baseAction"
abstract="true"
parent="jsonConversionComponent.baseEvaluator"
init-method="registerAction"
class="org.alfresco.module.org_alfresco_module_rm.jscript.app.evaluator.TrueEvaluator"/>
<!-- Indicator evaluators -->
<bean id="jsonConversionComponent.closedIndicator"
parent="jsonConversionComponent.baseIndicator"
class="org.alfresco.module.org_alfresco_module_rm.jscript.app.evaluator.FolderOpenClosedEvaluator">
<property name="name" value="closed"/>
<property name="kinds">
<set>
<value>RECORD_FOLDER</value>
</set>
</property>
</bean>
<bean id="jsonConversionComponent.openIndicator"
parent="jsonConversionComponent.baseIndicator"
class="org.alfresco.module.org_alfresco_module_rm.jscript.app.evaluator.FolderOpenClosedEvaluator">
<property name="name" value="open"/>
<property name="expected" value="false"/>
<property name="kinds">
<set>
<value>RECORD_FOLDER</value>
</set>
</property>
</bean>
<bean id="jsonConversionComponent.cutoffIndicator"
parent="jsonConversionComponent.baseIndicator"
class="org.alfresco.module.org_alfresco_module_rm.jscript.app.evaluator.CutoffEvaluator">
<property name="name" value="cutoff"/>
<property name="kinds">
<set>
<value>RECORD</value>
</set>
</property>
</bean>
<bean id="jsonConversionComponent.folderCutoffIndicator"
parent="jsonConversionComponent.baseIndicator"
class="org.alfresco.module.org_alfresco_module_rm.jscript.app.evaluator.CutoffEvaluator">
<property name="name" value="cutoffFolder"/>
<property name="kinds">
<set>
<value>RECORD_FOLDER</value>
</set>
</property>
</bean>
<bean id="jsonConversionComponent.frozenIndicator"
parent="jsonConversionComponent.baseIndicator"
class="org.alfresco.module.org_alfresco_module_rm.jscript.app.evaluator.FrozenEvaluator">
<property name="name" value="frozen"/>
<property name="kinds">
<set>
<value>RECORD_FOLDER</value>
<value>RECORD</value>
</set>
</property>
</bean>
<bean id="jsonConversionComponent.multiParentIndicator"
parent="jsonConversionComponent.baseIndicator"
class="org.alfresco.module.org_alfresco_module_rm.jscript.app.evaluator.MultiParentEvaluator">
<property name="name" value="multiParent"/>
<property name="kinds">
<set>
<value>RECORD_FOLDER</value>
<value>RECORD</value>
</set>
</property>
</bean>
<bean id="jsonConversionComponent.transferredIndicator"
parent="jsonConversionComponent.baseIndicator"
class="org.alfresco.module.org_alfresco_module_rm.jscript.app.evaluator.HasAspectEvaluator">
<property name="name" value="transferred"/>
<property name="aspect" value="rma:transferred"/>
<property name="kinds">
<set>
<value>RECORD_FOLDER</value>
<value>RECORD</value>
</set>
</property>
</bean>
<bean id="jsonConversionComponent.accessionedIndicator"
parent="jsonConversionComponent.baseIndicator"
class="org.alfresco.module.org_alfresco_module_rm.jscript.app.evaluator.HasAspectEvaluator">
<property name="name" value="accessioned"/>
<property name="aspect" value="rma:ascended"/>
<property name="kinds">
<set>
<value>RECORD_FOLDER</value>
<value>RECORD</value>
</set>
</property>
</bean>
<bean id="jsonConversionComponent.destroyedIndicator"
parent="jsonConversionComponent.baseIndicator"
class="org.alfresco.module.org_alfresco_module_rm.jscript.app.evaluator.HasAspectEvaluator">
<property name="name" value="destroyed"/>
<property name="aspect" value="rma:ghosted"/>
<property name="kinds">
<set>
<value>RECORD_FOLDER</value>
<value>RECORD</value>
</set>
</property>
</bean>
<bean id="jsonConversionComponent.vitalRecordIndicator"
parent="jsonConversionComponent.baseIndicator"
class="org.alfresco.module.org_alfresco_module_rm.jscript.app.evaluator.VitalRecordEvaluator">
<property name="name" value="vitalRecord"/>
<property name="vitalRecordService" ref="VitalRecordService"/>
<property name="kinds">
<set>
<value>RECORD_FOLDER</value>
<value>RECORD</value>
</set>
</property>
</bean>
<bean id="jsonConversionComponent.transferIndicator"
parent="jsonConversionComponent.baseIndicator"
class="org.alfresco.module.org_alfresco_module_rm.jscript.app.evaluator.TransferEvaluator">
<property name="name" value="transfer"/>
<property name="kinds">
<set>
<value>RECORD_FOLDER</value>
<value>RECORD</value>
</set>
</property>
</bean>
<bean id="jsonConversionComponent.accessionIndicator"
parent="jsonConversionComponent.baseIndicator"
class="org.alfresco.module.org_alfresco_module_rm.jscript.app.evaluator.TransferEvaluator">
<property name="name" value="accession"/>
<property name="transferAccessionIndicator" value="true"/>
<property name="kinds">
<set>
<value>RECORD_FOLDER</value>
<value>RECORD</value>
</set>
</property>
</bean>
<bean id="jsonConversionComponent.nonElectronicIndicator"
parent="jsonConversionComponent.baseIndicator"
class="org.alfresco.module.org_alfresco_module_rm.jscript.app.evaluator.NonElectronicEvaluator">
<property name="name" value="nonElectronic"/>
<property name="dictionaryService" ref="DictionaryService"/>
<property name="kinds">
<set>
<value>RECORD</value>
</set>
</property>
</bean>
<bean id="jsonConversionComponent.declaredIndicator"
parent="jsonConversionComponent.baseIndicator"
class="org.alfresco.module.org_alfresco_module_rm.jscript.app.evaluator.HasAspectEvaluator">
<property name="name" value="declared"/>
<property name="aspect" value="rma:declaredRecord"/>
<property name="kinds">
<set>
<value>RECORD</value>
</set>
</property>
</bean>
<!-- Action evaluators -->
<bean id="jsonConversionComponent.editDetailsAction"
parent="jsonConversionComponent.baseAction">
<property name="name" value="editDetails"/>
<property name="kinds">
<set>
<value>RECORD_CATEGORY</value>
<value>RECORD_FOLDER</value>
<value>RECORD</value>
</set>
</property>
<property name="capability" value ="UpdateProperties"/>
</bean>
<bean id="jsonConversionComponent.deleteAction"
parent="jsonConversionComponent.baseAction">
<property name="name" value="delete"/>
<property name="kinds">
<set>
<value>RECORD_CATEGORY</value>
<value>RECORD_FOLDER</value>
<value>RECORD</value>
</set>
</property>
<property name="capability" value="Delete"/>
</bean>
<bean id="jsonConversionComponent.managePermissionsAction"
parent="jsonConversionComponent.baseAction">
<property name="name" value="managePermissions"/>
<property name="kinds">
<set>
<value>RECORD_CATEGORY</value>
<value>RECORD_FOLDER</value>
<value>RECORD</value>
</set>
</property>
<property name="capability" value ="ManageAccessRights"/>
</bean>
<bean id="jsonConversionComponent.viewAuditLogAction"
parent="jsonConversionComponent.baseAction">
<property name="name" value="viewAuditLog"/>
<property name="kinds">
<set>
<value>RECORD_CATEGORY</value>
<value>RECORD_FOLDER</value>
<value>RECORD</value>
</set>
</property>
<property name="capability" value ="AccessAudit"/>
</bean>
<bean id="jsonConversionComponent.closeFolderAction"
parent="jsonConversionComponent.baseAction">
<property name="name" value="closeFolder"/>
<property name="kinds">
<set>
<value>RECORD_FOLDER</value>
</set>
</property>
<property name="capability" value ="CloseFolders"/>
</bean>
<bean id="jsonConversionComponent.openFolderAction"
parent="jsonConversionComponent.baseAction">
<property name="name" value="openFolder"/>
<property name="kinds">
<set>
<value>RECORD_FOLDER</value>
</set>
</property>
<property name="capability" value ="ReOpenFolders"/>
</bean>
<bean id="jsonConversionComponent.reviewAllAction"
parent="jsonConversionComponent.baseAction">
<property name="name" value="reviewAll"/>
<property name="kinds">
<set>
<value>RECORD_FOLDER</value>
</set>
</property>
<property name="capability" value ="CycleVitalRecords"/>
</bean>
<bean id="jsonConversionComponent.cutoffAction"
parent="jsonConversionComponent.baseAction"
class="org.alfresco.module.org_alfresco_module_rm.jscript.app.evaluator.CutoffEvaluator">
<property name="name" value="cutoff"/>
<property name="cutoff" value="false"/>
<property name="kinds">
<set>
<value>RECORD_FOLDER</value>
<value>RECORD</value>
</set>
</property>
<property name="capability" value ="ApproveRecordsScheduledForCutoff"/>
</bean>
<bean id="jsonConversionComponent.destroyAction"
parent="jsonConversionComponent.baseAction">
<property name="name" value="destroy"/>
<property name="kinds">
<set>
<value>RECORD_FOLDER</value>
<value>RECORD</value>
</set>
</property>
<property name="capability" value ="DestroyRecordsScheduledForDestruction"/>
</bean>
<bean id="jsonConversionComponent.transferAction"
parent="jsonConversionComponent.baseAction">
<property name="name" value="transfer"/>
<property name="kinds">
<set>
<value>RECORD_FOLDER</value>
<value>RECORD</value>
</set>
</property>
<property name="capability" value ="AuthorizeAllTransfers"/>
</bean>
<bean id="jsonConversionComponent.accessionAction"
parent="jsonConversionComponent.baseAction">
<property name="name" value="accession"/>
<property name="kinds">
<set>
<value>RECORD_FOLDER</value>
<value>RECORD</value>
</set>
</property>
<property name="capability" value ="AuthorizeNominatedTransfers"/>
</bean>
<bean id="jsonConversionComponent.undoCutoffAction"
parent="jsonConversionComponent.baseAction"
class="org.alfresco.module.org_alfresco_module_rm.jscript.app.evaluator.CutoffEvaluator">
<property name="name" value="undoCutoff"/>
<property name="cutoff" value="true"/>
<property name="kinds">
<set>
<value>RECORD_FOLDER</value>
<value>RECORD</value>
</set>
</property>
<property name="capability" value ="ApproveRecordsScheduledForCutoff"/>
</bean>
<bean id="jsonConversionComponent.editDispositionAsOfDateAction"
parent="jsonConversionComponent.baseAction">
<property name="name" value="editDispositionAsOfDate"/>
<property name="kinds">
<set>
<value>RECORD_FOLDER</value>
<value>RECORD</value>
</set>
</property>
<property name="capability" value ="ManuallyChangeDispositionDates"/>
</bean>
<bean id="jsonConversionComponent.freezeAction"
parent="jsonConversionComponent.baseAction">
<property name="name" value="freeze"/>
<property name="kinds">
<set>
<value>RECORD_FOLDER</value>
<value>RECORD</value>
</set>
</property>
<property name="capability" value ="ExtendRetentionPeriodOrFreeze"/>
</bean>
<bean id="jsonConversionComponent.unfreezeAction"
parent="jsonConversionComponent.baseAction">
<property name="name" value="unfreeze"/>
<property name="kinds">
<set>
<value>RECORD_FOLDER</value>
<value>RECORD</value>
</set>
</property>
<property name="capability" value ="Unfreeze"/>
</bean>
<bean id="jsonConversionComponent.fileToAction"
parent="jsonConversionComponent.baseAction">
<property name="name" value="fileTo"/>
<property name="kinds">
<set>
<value>RECORD_FOLDER</value>
<value>RECORD</value>
</set>
</property>
</bean>
<bean id="jsonConversionComponent.file"
parent="jsonConversionComponent.baseAction">
<property name="name" value="file"/>
<property name="kinds">
<set>
<value>RECORD_FOLDER</value>
</set>
</property>
<property name="capability" value ="FileRecords"/>
</bean>
<bean id="jsonConversionComponent.reviewedAction"
parent="jsonConversionComponent.baseAction">
<property name="name" value="reviewed"/>
<property name="kinds">
<set>
<value>RECORD</value>
</set>
</property>
<property name="capability" value ="CycleVitalRecords"/>
</bean>
<bean id="jsonConversionComponent.editReviewAsOfDateAction"
parent="jsonConversionComponent.baseAction">
<property name="name" value="editReviewAsOfDate"/>
<property name="kinds">
<set>
<value>RECORD</value>
</set>
</property>
<property name="capability" value ="PlanningReviewCycles"/>
</bean>
<bean id="jsonConversionComponent.declareAction"
parent="jsonConversionComponent.baseAction">
<property name="name" value="declare"/>
<property name="kinds">
<set>
<value>RECORD</value>
</set>
</property>
<property name="capability" value ="Declare"/>
</bean>
<bean id="jsonConversionComponent.undeclareAction"
parent="jsonConversionComponent.baseAction">
<property name="name" value="undeclare"/>
<property name="kinds">
<set>
<value>RECORD</value>
</set>
</property>
<property name="capability" value ="UndeclareRecords"/>
</bean>
<bean id="jsonConversionComponent.newCategory"
parent="jsonConversionComponent.baseAction">
<property name="name" value="newCategory"/>
<property name="kinds">
<set>
<value>FILE_PLAN</value>
<value>RECORD_CATEGORY</value>
</set>
</property>
<property name="capability" value ="CreateModifyDestroyFileplanMetadata"/>
</bean>
<bean id="jsonConversionComponent.newFolder"
parent="jsonConversionComponent.baseAction">
<property name="name" value="newFolder"/>
<property name="kinds">
<set>
<value>RECORD_CATEGORY</value>
</set>
</property>
<property name="capability" value ="CreateModifyDestroyFolders"/>
</bean>
<bean id="jsonConversionComponent.import"
parent="jsonConversionComponent.baseAction">
<property name="name" value="import"/>
<property name="capability" value="Create"/>
</bean>
<bean id="jsonConversionComponent.export"
parent="jsonConversionComponent.baseAction">
<property name="name" value="export"/>
<property name="capability" value="ViewRecords"/>
</bean>
<bean id="jsonConversionComponent.relinquish"
parent="jsonConversionComponent.baseAction">
<property name="name" value="relinquish"/>
<property name="kinds">
<set>
<value>HOLD</value>
</set>
</property>
<property name="capability" value ="Unfreeze"/>
</bean>
<bean id="jsonConversionComponent.editReason"
parent="jsonConversionComponent.baseAction">
<property name="name" value="editReason"/>
<property name="kinds">
<set>
<value>HOLD</value>
</set>
</property>
<property name="capability" value="ViewUpdateReasonsForFreeze"/>
</bean>
<bean id="jsonConversionComponent.downloadZip"
parent="jsonConversionComponent.baseAction">
<property name="name" value="downloadZip"/>
</bean>
<bean id="jsonConversionComponent.fileReport"
parent="jsonConversionComponent.baseAction">
<property name="name" value="fileReport"/>
</bean>
<bean id="jsonConversionComponent.transferComplete"
parent="jsonConversionComponent.baseAction">
<property name="name" value="transferComplete"/>
<property name="kinds">
<set>
<value>TRANSFER</value>
</set>
</property>
<property name="capability" value="AuthorizeAllTransfers"/>
</bean>
<bean id="jsonConversionComponent.accessionComplete"
parent="jsonConversionComponent.baseAction">
<property name="name" value="accessionComplete"/>
<property name="kinds">
<set>
<value>TRANSFER</value>
</set>
</property>
<property name="capability" value="AuthorizeNominatedTransfers"/>
</bean>
<bean id="jsonConversionComponent.createDispositionSchedule"
parent="jsonConversionComponent.baseAction">
<property name="name" value="createDispositionSchedule"/>
<property name="capability" value="CreateModifyDestroyFileplanMetadata"/>
</bean>
<bean id="jsonConversionComponent.editDispositionSchedule"
parent="jsonConversionComponent.baseAction">
<property name="name" value="editDispositionSchedule"/>
<property name="capability" value="CreateModifyDestroyFileplanMetadata"/>
</bean>
<bean id="jsonConversionComponent.completeEvent"
parent="jsonConversionComponent.baseAction">
<property name="name" value="completeEvent"/>
<property name="capability" value="AddModifyEventDates"/>
</bean>
<bean id="jsonConversionComponent.undoEvent"
parent="jsonConversionComponent.baseAction">
<property name="name" value="undoEvent"/>
<property name="capability" value="AddModifyEventDates"/>
</bean>
<bean id="jsonConversionComponent.editReferences"
parent="jsonConversionComponent.baseAction">
<property name="name" value="editReferences"/>
<property name="kinds">
<set>
<value>RECORD</value>
</set>
</property>
<property name="capability" value="ChangeOrDeleteReferences"/>
</bean>
<bean id="jsonConversionComponent.addRecordMetadata"
parent="jsonConversionComponent.baseAction">
<property name="name" value="addRecordMetadata"/>
<property name="kinds">
<set>
<value>RECORD</value>
</set>
</property>
<property name="capability" value="EditRecordMetadata"/>
</bean>
<bean id="jsonConversionComponent.downloadRecord"
parent="jsonConversionComponent.baseAction">
<property name="name" value="downloadRecord"/>
<property name="kinds">
<set>
<value>RECORD</value>
</set>
</property>
<property name="capability" value="ViewRecords"/>
</bean>
<bean id="jsonConversionComponent.splitEmail"
parent="jsonConversionComponent.baseAction"
class="org.alfresco.module.org_alfresco_module_rm.jscript.app.evaluator.SplitEmailActionEvaluator">
<property name="name" value="splitEmail"/>
<property name="kinds">
<set>
<value>RECORD</value>
</set>
</property>
</bean>
</beans>

View File

@@ -0,0 +1,344 @@
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://www.springframework.org/dtd/spring-beans.dtd'>
<beans>
<!-- REST impl for RM Action Service -->
<bean id="webscript.org.alfresco.rma.rmaction.post" class="org.alfresco.module.org_alfresco_module_rm.script.RmActionPost" parent="webscript">
<property name="recordsManagementActionService" ref="RecordsManagementActionService"/>
<property name="nodeService" ref="NodeService"/>
</bean>
<!-- Abstract parent bean for many RM get and post beans -->
<bean id="rmBaseWebscript" parent="webscript" abstract="true">
<property name="nodeService" ref="NodeService"/>
<property name="namespaceService" ref="NamespaceService"/>
<property name="recordsManagementService" ref="RecordsManagementService"/>
<property name="dispositionService" ref="DispositionService"/>
</bean>
<!-- REST impl for GET DOD Custom Types -->
<bean id="webscript.org.alfresco.rma.dodcustomtypes.get" class="org.alfresco.module.org_alfresco_module_rm.script.DodCustomTypesGet" parent="webscript">
<property name="dictionaryService" ref="DictionaryService"/>
</bean>
<bean id="webscript.org.alfresco.rma.customisable.get" class="org.alfresco.module.org_alfresco_module_rm.script.CustomisableGet" parent="webscript">
<property name="recordsManagementAdminService" ref="RecordsManagementAdminService"/>
<property name="namespaceService" ref="NamespaceService"/>
<property name="dictionaryService" ref="DictionaryService"/>
</bean>
<!-- REST impl for GET Custom Property Definitions -->
<bean id="webscript.org.alfresco.rma.custompropdefinitions.get" class="org.alfresco.module.org_alfresco_module_rm.script.CustomPropertyDefinitionsGet" parent="rmBaseWebscript">
<property name="recordsManagementAdminService" ref="RecordsManagementAdminService"/>
</bean>
<!-- REST impl for PUT Custom Property Definitions -->
<bean id="webscript.org.alfresco.rma.custompropdefinition.put" class="org.alfresco.module.org_alfresco_module_rm.script.CustomPropertyDefinitionPut" parent="rmBaseWebscript">
<property name="recordsManagementAdminService" ref="RecordsManagementAdminService"/>
</bean>
<!-- REST impl for POST Custom Property Definitions -->
<bean id="webscript.org.alfresco.rma.custompropdefinition.post" class="org.alfresco.module.org_alfresco_module_rm.script.CustomPropertyDefinitionPost" parent="rmBaseWebscript">
<property name="recordsManagementAdminService" ref="RecordsManagementAdminService"/>
</bean>
<!-- TODO Delete this -->
<!-- REST impl for DELETE Custom Property Definitions -->
<bean id="webscript.org.alfresco.rma.custompropdefinition.delete" class="org.alfresco.module.org_alfresco_module_rm.script.CustomPropertyDefinitionDelete" parent="rmBaseWebscript">
<property name="recordsManagementAdminService" ref="RecordsManagementAdminService"/>
</bean>
<!-- REST impl for GET Custom Reference Definitions -->
<bean id="webscript.org.alfresco.rma.customrefdefinitions.get" class="org.alfresco.module.org_alfresco_module_rm.script.CustomReferenceDefinitionsGet" parent="webscript">
<property name="recordsManagementAdminService" ref="RecordsManagementAdminService"/>
<property name="namespaceService" ref="NamespaceService"/>
</bean>
<!-- REST impl for PUT Custom Reference Definitions -->
<bean id="webscript.org.alfresco.rma.customrefdefinition.put" class="org.alfresco.module.org_alfresco_module_rm.script.CustomReferenceDefinitionPut" parent="rmBaseWebscript">
<property name="recordsManagementAdminService" ref="RecordsManagementAdminService"/>
</bean>
<!-- REST impl for POST Custom Reference Definitions -->
<bean id="webscript.org.alfresco.rma.customrefdefinition.post" class="org.alfresco.module.org_alfresco_module_rm.script.CustomReferenceDefinitionPost" parent="rmBaseWebscript">
<property name="recordsManagementAdminService" ref="RecordsManagementAdminService"/>
</bean>
<!-- REST impl for GET Custom Reference Instances -->
<bean id="webscript.org.alfresco.rma.customrefs.get" class="org.alfresco.module.org_alfresco_module_rm.script.CustomRefsGet" parent="rmBaseWebscript">
<property name="recordsManagementAdminService" ref="RecordsManagementAdminService"/>
</bean>
<!-- REST impl for POST Custom Reference Instance -->
<bean id="webscript.org.alfresco.rma.customref.post" class="org.alfresco.module.org_alfresco_module_rm.script.CustomRefPost" parent="rmBaseWebscript">
<property name="recordsManagementAdminService" ref="RecordsManagementAdminService"/>
</bean>
<!-- REST impl for DELETE Custom Reference Instance -->
<bean id="webscript.org.alfresco.rma.customref.delete" class="org.alfresco.module.org_alfresco_module_rm.script.CustomRefDelete" parent="rmBaseWebscript">
<property name="recordsManagementAdminService" ref="RecordsManagementAdminService"/>
</bean>
<!-- REST impl for GET Disposition Schedule -->
<bean id="webscript.org.alfresco.rma.dispositionschedule.get" class="org.alfresco.module.org_alfresco_module_rm.script.DispositionScheduleGet" parent="rmBaseWebscript">
</bean>
<!-- REST impl for POST Disposition Action Definition -->
<bean id="webscript.org.alfresco.rma.dispositionactiondefinitions.post" class="org.alfresco.module.org_alfresco_module_rm.script.DispositionActionDefinitionPost" parent="rmBaseWebscript">
</bean>
<!-- REST impl for PUT Disposition Action Definition -->
<bean id="webscript.org.alfresco.rma.dispositionactiondefinition.put" class="org.alfresco.module.org_alfresco_module_rm.script.DispositionActionDefinitionPut" parent="rmBaseWebscript">
</bean>
<!-- REST impl for DELETE Disposition Action Definition -->
<bean id="webscript.org.alfresco.rma.dispositionactiondefinition.delete" class="org.alfresco.module.org_alfresco_module_rm.script.DispositionActionDefinitionDelete" parent="rmBaseWebscript">
</bean>
<!-- REST impl for GET Disposition Lifecycle -->
<bean id="webscript.org.alfresco.rma.dispositionlifecycle.get" class="org.alfresco.module.org_alfresco_module_rm.script.DispositionLifecycleGet" parent="rmBaseWebscript">
<property name="personService" ref="PersonService"/>
</bean>
<!-- REST impl for GET List Of Values -->
<bean id="webscript.org.alfresco.rma.listofvalues.get" class="org.alfresco.module.org_alfresco_module_rm.script.ListOfValuesGet" parent="webscript">
<property name="recordsManagementService" ref="RecordsManagementService"/>
<property name="recordsManagementActionService" ref="RecordsManagementActionService"/>
<property name="recordsManagementAuditService" ref="RecordsManagementAuditService"/>
<property name="recordsManagementEventService" ref="RecordsManagementEventService"/>
<property name="dispositionService" ref="DispositionService"/>
<property name="dictionaryService" ref="DictionaryService"/>
<property name="namespaceService" ref="NamespaceService"/>
</bean>
<!-- REST impl for GET Records MetaData aspects -->
<bean id="webscript.org.alfresco.rma.recordmetadataaspects.get" class="org.alfresco.module.org_alfresco_module_rm.script.RecordMetaDataAspectsGet" parent="webscript">
<property name="recordsManagementService" ref="RecordsManagementService"/>
<property name="dictionaryService" ref="DictionaryService"/>
<property name="namespaceService" ref="NamespaceService"/>
</bean>
<!-- REST impl for GET Audit Log -->
<bean id="webscript.org.alfresco.rma.rmauditlog.get" class="org.alfresco.module.org_alfresco_module_rm.script.AuditLogGet" parent="webscript">
<property name="nodeService" ref="nodeService"/>
<property name="contentService" ref="ContentService"/>
<property name="permissionService" ref="PermissionService"/>
<property name="mimetypeService" ref="mimetypeService"/>
<property name="recordsManagementAuditService" ref="RecordsManagementAuditService"/>
</bean>
<bean id="webscript.org.alfresco.rma.rmauditlogstatus.get" class="org.alfresco.module.org_alfresco_module_rm.script.AuditLogStatusGet" parent="webscript">
<property name="recordsManagementAuditService" ref="RecordsManagementAuditService"/>
</bean>
<!-- REST impl for POST Audit Log -->
<bean id="webscript.org.alfresco.rma.rmauditlog.post" class="org.alfresco.module.org_alfresco_module_rm.script.AuditLogPost" parent="webscript">
<property name="nodeService" ref="nodeService"/>
<property name="contentService" ref="ContentService"/>
<property name="permissionService" ref="PermissionService"/>
<property name="mimetypeService" ref="mimetypeService"/>
<property name="recordsManagementAuditService" ref="RecordsManagementAuditService"/>
</bean>
<!-- REST impl for PUT Audit Log (starting and stopping auditing) -->
<bean id="webscript.org.alfresco.rma.rmauditlog.put" class="org.alfresco.module.org_alfresco_module_rm.script.AuditLogPut" parent="webscript">
<property name="recordsManagementAuditService" ref="RecordsManagementAuditService"/>
</bean>
<!-- REST impl for DELETE Audit Log (clears audit log) -->
<bean id="webscript.org.alfresco.rma.rmauditlog.delete" class="org.alfresco.module.org_alfresco_module_rm.script.AuditLogDelete" parent="webscript">
<property name="recordsManagementAuditService" ref="RecordsManagementAuditService"/>
</bean>
<!-- REST impl for POST export -->
<bean id="webscript.org.alfresco.rma.export.post" class="org.alfresco.module.org_alfresco_module_rm.script.ExportPost" parent="webscript">
<property name="nodeService" ref="nodeService"/>
<property name="contentService" ref="ContentService"/>
<property name="permissionService" ref="PermissionService"/>
<property name="mimetypeService" ref="mimetypeService"/>
<property name="exporterService" ref="ExporterService"/>
</bean>
<!-- REST impl for POST import -->
<bean id="webscript.org.alfresco.rma.import.post" class="org.alfresco.module.org_alfresco_module_rm.script.ImportPost" parent="webscript">
<property name="nodeService" ref="NodeService"/>
<property name="dictionaryService" ref="DictionaryService"/>
<property name="importerService" ref="ImporterService"/>
<property name="recordsManagementService" ref="RecordsManagementService"/>
<property name="recordsManagementSecurityService" ref="RecordsManagementSecurityService"/>
</bean>
<!-- Base bean for transfer web scripts -->
<bean id="rmBaseTransferWebscript" parent="webscript" abstract="true">
<property name="nodeService" ref="nodeService"/>
<property name="contentService" ref="ContentService"/>
<property name="permissionService" ref="PermissionService"/>
<property name="mimetypeService" ref="mimetypeService"/>
<property name="exporterService" ref="ExporterService"/>
</bean>
<!-- REST impl for GET transfer -->
<bean id="webscript.org.alfresco.rma.transfer.get" class="org.alfresco.module.org_alfresco_module_rm.script.TransferGet" parent="rmBaseTransferWebscript">
</bean>
<!-- REST impl for GET transfer report -->
<bean id="webscript.org.alfresco.rma.transferreport.get" class="org.alfresco.module.org_alfresco_module_rm.script.TransferReportGet" parent="rmBaseTransferWebscript">
<property name="dictionaryService" ref="DictionaryService"/>
<property name="recordsManagementService" ref="RecordsManagementService"/>
<property name="dispositionService" ref="DispositionService"/>
</bean>
<!-- REST impl for POST transfer report -->
<bean id="webscript.org.alfresco.rma.transferreport.post" class="org.alfresco.module.org_alfresco_module_rm.script.TransferReportPost" parent="rmBaseTransferWebscript">
<property name="dictionaryService" ref="DictionaryService"/>
<property name="recordsManagementService" ref="RecordsManagementService"/>
<property name="recordsManagementActionService" ref="RecordsManagementActionService"/>
<property name="dispositionService" ref="DispositionService"/>
</bean>
<!-- RM Role API-->
<bean id="webscript.org.alfresco.rma.admin.rmrole.rmroles.get" class="org.alfresco.module.org_alfresco_module_rm.script.admin.RmRolesGet" parent="webscript">
<property name="recordsManagementService" ref="RecordsManagementService"/>
<property name="recordsManagementSecurityService" ref="RecordsManagementSecurityService"/>
</bean>
<bean id="webscript.org.alfresco.rma.admin.rmrole.rmroles.post" class="org.alfresco.module.org_alfresco_module_rm.script.admin.RmRolesPost" parent="webscript">
<property name="recordsManagementService" ref="RecordsManagementService"/>
<property name="recordsManagementSecurityService" ref="RecordsManagementSecurityService"/>
</bean>
<bean id="webscript.org.alfresco.rma.admin.rmrole.rmrole.get" class="org.alfresco.module.org_alfresco_module_rm.script.admin.RmRoleGet" parent="webscript">
<property name="recordsManagementService" ref="RecordsManagementService"/>
<property name="recordsManagementSecurityService" ref="RecordsManagementSecurityService"/>
</bean>
<bean id="webscript.org.alfresco.rma.admin.rmrole.rmrole.put" class="org.alfresco.module.org_alfresco_module_rm.script.admin.RmRolePut" parent="webscript">
<property name="recordsManagementService" ref="RecordsManagementService"/>
<property name="recordsManagementSecurityService" ref="RecordsManagementSecurityService"/>
</bean>
<bean id="webscript.org.alfresco.rma.admin.rmrole.rmrole.delete" class="org.alfresco.module.org_alfresco_module_rm.script.admin.RmRoleDelete" parent="webscript">
<property name="recordsManagementService" ref="RecordsManagementService"/>
<property name="recordsManagementSecurityService" ref="RecordsManagementSecurityService"/>
</bean>
<!-- RM Event API-->
<bean id="webscript.org.alfresco.rma.admin.rmevent.rmeventtypes.get" class="org.alfresco.module.org_alfresco_module_rm.script.admin.RmEventTypesGet" parent="webscript">
<property name="recordsManagementEventService" ref="RecordsManagementEventService"/>
</bean>
<bean id="webscript.org.alfresco.rma.admin.rmevent.rmevents.get" class="org.alfresco.module.org_alfresco_module_rm.script.admin.RmEventsGet" parent="webscript">
<property name="recordsManagementEventService" ref="RecordsManagementEventService"/>
</bean>
<bean id="webscript.org.alfresco.rma.admin.rmevent.rmevents.post" class="org.alfresco.module.org_alfresco_module_rm.script.admin.RmEventsPost" parent="webscript">
<property name="recordsManagementEventService" ref="RecordsManagementEventService"/>
</bean>
<bean id="webscript.org.alfresco.rma.admin.rmevent.rmevent.get" class="org.alfresco.module.org_alfresco_module_rm.script.admin.RmEventGet" parent="webscript">
<property name="recordsManagementEventService" ref="RecordsManagementEventService"/>
</bean>
<bean id="webscript.org.alfresco.rma.admin.rmevent.rmevent.put" class="org.alfresco.module.org_alfresco_module_rm.script.admin.RmEventPut" parent="webscript">
<property name="recordsManagementEventService" ref="RecordsManagementEventService"/>
</bean>
<bean id="webscript.org.alfresco.rma.admin.rmevent.rmevent.delete" class="org.alfresco.module.org_alfresco_module_rm.script.admin.RmEventDelete" parent="webscript">
<property name="recordsManagementEventService" ref="RecordsManagementEventService"/>
</bean>
<!-- REST impl for GET Email Map -->
<bean id="webscript.org.alfresco.rma.admin.emailmap.get" class="org.alfresco.module.org_alfresco_module_rm.script.EmailMapGet" parent="webscript">
<property name="customEmailMappingService" ref="CustomEmailMappingService" />
</bean>
<!-- REST impl for POST Email Map -->
<bean id="webscript.org.alfresco.rma.admin.emailmap.post" class="org.alfresco.module.org_alfresco_module_rm.script.EmailMapPost" parent="webscript">
<property name="customEmailMappingService" ref="CustomEmailMappingService" />
</bean>
<!-- REST impl for PUT Email Map -->
<bean id="webscript.org.alfresco.rma.admin.emailmap.put" class="org.alfresco.module.org_alfresco_module_rm.script.EmailMapPut" parent="webscript">
<property name="customEmailMappingService" ref="CustomEmailMappingService" />
</bean>
<!-- REST impl for GET RM Constraint -->
<bean id="webscript.org.alfresco.rma.rmconstraints.get" class="org.alfresco.module.org_alfresco_module_rm.script.RMConstraintGet" parent="webscript">
<property name="caveatConfigService" ref="CaveatConfigService" />
</bean>
<!-- REST impl for GET User Rights Report -->
<bean id="webscript.org.alfresco.rma.userrightsreport.get" class="org.alfresco.module.org_alfresco_module_rm.script.UserRightsReportGet" parent="webscript">
<property name="authorityService" ref="AuthorityService" />
<property name="personService" ref="PersonService" />
<property name="nodeService" ref="NodeService" />
<property name="recordsManagementService" ref="RecordsManagementService" />
<property name="recordsManagementSecurityService" ref="RecordsManagementSecurityService" />
</bean>
<!-- REST impl for GET Bootstrap Test Data -->
<bean id="webscript.org.alfresco.rma.bootstraptestdata.get" class="org.alfresco.module.org_alfresco_module_rm.script.BootstrapTestDataGet" parent="webscript">
<property name="nodeService" ref="NodeService" />
<property name="searchService" ref="SearchService" />
<property name="importerService" ref="ImporterService"/>
<property name="permissionService" ref="PermissionService"/>
<property name="siteService" ref="SiteService"/>
<property name="recordsManagementService" ref="RecordsManagementService" />
<property name="recordsManagementActionService" ref="RecordsManagementActionService" />
<property name="authorityService" ref="AuthorityService"/>
<property name="recordsManagementSecurityService" ref="RecordsManagementSecurityService"/>
<property name="recordsManagementSearchBehaviour" ref="recordsManagementSearchBehaviour"/>
<property name="dispositionService" ref="dispositionService"/>
</bean>
<!-- REST impl for GET applydodcertmodelfixes -->
<!-- This webscript is intended for patching the RM custom model during the DoD certification process. -->
<!-- TODO Delete this webscript after the certification process -->
<bean id="webscript.org.alfresco.rma.applydodcertmodelfixes.get" class="org.alfresco.module.org_alfresco_module_rm.script.ApplyDodCertModelFixesGet" parent="webscript">
<property name="contentService" ref="ContentService" />
</bean>
<!-- REST impl for GET applyfixmob1573 -->
<!-- TODO Delete this webscript after the certification process -->
<bean id="webscript.org.alfresco.rma.applyfixmob1573.get" class="org.alfresco.module.org_alfresco_module_rm.script.ApplyFixMob1573Get" parent="webscript">
<property name="contentService" ref="ContentService" />
</bean>
<!-- RM search web script -->
<bean id="webscript.org.alfresco.slingshot.rmsearch.rmsavedsearches.get"
class="org.alfresco.module.org_alfresco_module_rm.script.slingshot.RMSavedSearchesGet"
parent="webscript">
<property name="siteService" ref="SiteService"/>
<property name="recordsManagementSearchService" ref="RecordsManagementSearchService"/>
</bean>
<bean id="webscript.org.alfresco.slingshot.rmsearch.rmsavedsearches.post"
class="org.alfresco.module.org_alfresco_module_rm.script.slingshot.RMSavedSearchesPost"
parent="webscript">
<property name="siteService" ref="SiteService"/>
<property name="recordsManagementSearchService" ref="RecordsManagementSearchService"/>
<property name="namespaceService" ref="namespaceService"/>
</bean>
<bean id="webscript.org.alfresco.slingshot.rmsearch.rmsavedsearches.delete"
class="org.alfresco.module.org_alfresco_module_rm.script.slingshot.RMSavedSearchesDelete"
parent="webscript">
<property name="siteService" ref="SiteService"/>
<property name="recordsManagementSearchService" ref="RecordsManagementSearchService"/>
</bean>
<bean id="webscript.org.alfresco.slingshot.rmsearch.rmsearch.get"
class="org.alfresco.module.org_alfresco_module_rm.script.slingshot.RMSearchGet"
parent="webscript">
<property name="siteService" ref="SiteService"/>
<property name="recordsManagementSearchService" ref="RecordsManagementSearchService"/>
<property name="namespaceService" ref="namespaceService"/>
<property name="nodeService" ref="NodeService"/>
<property name="dictionaryService" ref="DictionaryService"/>
<property name="permissionService" ref="PermissionService"/>
<property name="personService" ref="PersonService"/>
<property name="contentService" ref="ContentService"/>
</bean>
</beans>

View File

@@ -0,0 +1,187 @@
[
{
"name" : "User",
"displayLabel" : "Records Management User",
"isAdmin" : false,
"capabilities" :
[
"DeclareRecords",
"ViewRecords"
]
},
{
"name" : "PowerUser",
"displayLabel" : "Records Management Power User",
"isAdmin" : false,
"capabilities" :
[
"DeclareRecords",
"ViewRecords",
"CreateModifyDestroyFolders",
"EditRecordMetadata",
"EditNonRecordMetadata",
"AddModifyEventDates",
"CloseFolders",
"DeclareRecordsInClosedFolders",
"ReOpenFolders",
"CycleVitalRecords",
"PlanningReviewCycles"
]
},
{
"name" : "SecurityOfficer",
"displayLabel" : "Records Management Security Officer",
"isAdmin" : false,
"capabilities" :
[
"DeclareRecords",
"ViewRecords",
"CreateModifyDestroyFolders",
"EditRecordMetadata",
"EditNonRecordMetadata",
"AddModifyEventDates",
"CloseFolders",
"DeclareRecordsInClosedFolders",
"ReOpenFolders",
"CycleVitalRecords",
"PlanningReviewCycles",
"UpdateClassificationDates",
"CreateModifyDestroyClassificationGuides",
"UpgradeDowngradeAndDeclassifyRecords",
"UpdateExemptionCategories"
]
},
{
"name" : "RecordsManager",
"displayLabel" : "Records Management Records Manager",
"isAdmin" : false,
"capabilities" :
[
"DeclareRecords",
"ViewRecords",
"CreateModifyDestroyFolders",
"EditRecordMetadata",
"EditNonRecordMetadata",
"AddModifyEventDates",
"CloseFolders",
"DeclareRecordsInClosedFolders",
"ReOpenFolders",
"CycleVitalRecords",
"PlanningReviewCycles",
"UpdateTriggerDates",
"CreateModifyDestroyEvents",
"ManageAccessRights",
"MoveRecords",
"ChangeOrDeleteReferences",
"DeleteLinks",
"EditDeclaredRecordMetadata",
"ManuallyChangeDispositionDates",
"ApproveRecordsScheduledForCutoff",
"CreateModifyRecordsInCutoffFolders",
"ExtendRetentionPeriodOrFreeze",
"Unfreeze",
"ViewUpdateReasonsForFreeze",
"DestroyRecordsScheduledForDestruction",
"DestroyRecords",
"UpdateVitalRecordCycleInformation",
"UndeclareRecords",
"DeclareAuditAsRecord",
"DeleteAudit",
"CreateModifyDestroyTimeframes",
"AuthorizeNominatedTransfers",
"EditSelectionLists",
"AuthorizeAllTransfers",
"CreateModifyDestroyFileplanMetadata",
"CreateAndAssociateSelectionLists",
"AttachRulesToMetadataProperties",
"CreateModifyDestroyFileplanTypes",
"CreateModifyDestroyRecordTypes",
"MakeOptionalParametersMandatory",
"MapEmailMetadata",
"DeleteRecords",
"TriggerAnEvent",
"CreateModifyDestroyRoles",
"CreateModifyDestroyUsersAndGroups",
"PasswordControl",
"EnableDisableAuditByTypes",
"SelectAuditMetadata",
"DisplayRightsReport",
"AccessAudit",
"ExportAudit",
"CreateModifyDestroyReferenceTypes",
"UpdateClassificationDates",
"CreateModifyDestroyClassificationGuides",
"UpgradeDowngradeAndDeclassifyRecords",
"UpdateExemptionCategories",
"MapClassificationGuideMetadata"
]
},
{
"name" : "Administrator",
"displayLabel" : "Records Management Administrator",
"isAdmin" : true,
"capabilities" :
[
"DeclareRecords",
"ViewRecords",
"CreateModifyDestroyFolders",
"EditRecordMetadata",
"EditNonRecordMetadata",
"AddModifyEventDates",
"CloseFolders",
"DeclareRecordsInClosedFolders",
"ReOpenFolders",
"CycleVitalRecords",
"PlanningReviewCycles",
"UpdateTriggerDates",
"CreateModifyDestroyEvents",
"ManageAccessRights",
"MoveRecords",
"ChangeOrDeleteReferences",
"DeleteLinks",
"EditDeclaredRecordMetadata",
"ManuallyChangeDispositionDates",
"ApproveRecordsScheduledForCutoff",
"CreateModifyRecordsInCutoffFolders",
"ExtendRetentionPeriodOrFreeze",
"Unfreeze",
"ViewUpdateReasonsForFreeze",
"DestroyRecordsScheduledForDestruction",
"DestroyRecords",
"UpdateVitalRecordCycleInformation",
"UndeclareRecords",
"DeclareAuditAsRecord",
"DeleteAudit",
"CreateModifyDestroyTimeframes",
"AuthorizeNominatedTransfers",
"EditSelectionLists",
"AuthorizeAllTransfers",
"CreateModifyDestroyFileplanMetadata",
"CreateAndAssociateSelectionLists",
"AttachRulesToMetadataProperties",
"CreateModifyDestroyFileplanTypes",
"CreateModifyDestroyRecordTypes",
"MakeOptionalParametersMandatory",
"MapEmailMetadata",
"DeleteRecords",
"TriggerAnEvent",
"CreateModifyDestroyRoles",
"CreateModifyDestroyUsersAndGroups",
"PasswordControl",
"EnableDisableAuditByTypes",
"SelectAuditMetadata",
"DisplayRightsReport",
"AccessAudit",
"ExportAudit",
"CreateModifyDestroyReferenceTypes",
"UpdateClassificationDates",
"CreateModifyDestroyClassificationGuides",
"UpgradeDowngradeAndDeclassifyRecords",
"UpdateExemptionCategories",
"MapClassificationGuideMetadata",
"ManageAccessControls"
]
}
]

View File

@@ -0,0 +1,29 @@
<webscript>
<shortname>Get the custom email property map</shortname>
<description><![CDATA[
Get the custom email property map.
<br />
fields are specified with "from" and "to".
<br />
Example data.
<pre>
"mappings":
[
{"from" : "messageTo", "to" : "imap:messageTo" } ,
{"from" : "Thread-Index", "to" : "imap:threadIndex" } ,
{"from" : "messageFrom", "to" : "imap:messageFrom" } ,
{"from" : "messageSubject", "to" : "cm:title" } ,
{"from" : "messageSubject", "to" : "imap:messageSubject" } ,
{"from" : "messageSubject", "to" : "cm:description" } ,
{"from" : "messageCc", "to" : "imap:messageCc" } ,
{"from" : "Message-ID", "to" : "imap:messageId" }
]
</pre>
]]>
</description>
<url>/api/rma/admin/emailmap</url>
<format default="json">argument</format>
<authentication>user</authentication>
<transaction allow="readonly">required</transaction>
<lifecycle>internal</lifecycle>
</webscript>

View File

@@ -0,0 +1,8 @@
<#import "emailmap.lib.ftl" as emailmapLib/>
<#escape x as jsonUtils.encodeJSONString(x)>
{
"data":
<@emailmapLib.emailmapJSON emailmap=emailmap />
}
</#escape>

View File

@@ -0,0 +1,14 @@
<#-- renders an email map object -->
<#macro emailmapJSON emailmap>
<#escape x as jsonUtils.encodeJSONString(x)>
{
"mappings":
[
<#list emailmap as mapping>
{"from": "${mapping.from}", "to": "${mapping.to}" }<#if mapping_has_next>,</#if>
</#list>
]
}
</#escape>
</#macro>

View File

@@ -0,0 +1,40 @@
<webscript>
<shortname>Update email property map</shortname>
<description><![CDATA[
Update the custom email property map
<br />
Data is specified in JSON format as a JSONObject with two optional fields, "add" and "delete".
<br />
The contents of the add array are added.
<br />
The contents of the delete array are deleted.
<br />
Add mapping:
<pre>
{
"add":
[
{"to":"rmc:Wibble", "from":"whatever"},
{"to":"rmc:wobble", "from":"whatever"}
]
}
</pre>
Delete mapping:
<pre>
{
"delete":
[
{"to":"rmc:Wibble", "from":"whatever"},
{"to":"rmc:wobble", "from":"whatever"}
]
}
</pre>
Returns data in the same format as the get method
]]>
</description>
<url>/api/rma/admin/emailmap</url>
<format default="json">argument</format>
<authentication>user</authentication>
<transaction>required</transaction>
<lifecycle>internal</lifecycle>
</webscript>

View File

@@ -0,0 +1,7 @@
<#import "emailmap.lib.ftl" as emailmapLib/>
<#escape x as jsonUtils.encodeJSONString(x)>
{
"data": <@emailmapLib.emailmapJSON emailmap=emailmap />
}
</#escape>

View File

@@ -0,0 +1,40 @@
<webscript>
<shortname>Update email property map</shortname>
<description><![CDATA[
Update the custom email property map
<br />
Data is specified in JSON format as a JSONObject with two optional fields, "add" and "delete".
<br />
The contents of the add array are added.
<br />
The contents of the delete array are deleted.
<br />
Add mapping:
<pre>
{
"add":
[
{"to":"rmc:Wibble", "from":"whatever"},
{"to":"rmc:wobble", "from":"whatever"}
]
}
</pre>
Delete mapping:
<pre>
{
"delete":
[
{"to":"rmc:Wibble", "from":"whatever"},
{"to":"rmc:wobble", "from":"whatever"}
]
}
</pre>
Returns data in the same format as the get method
]]>
</description>
<url>/api/rma/admin/emailmap</url>
<format default="json">argument</format>
<authentication>user</authentication>
<transaction>required</transaction>
<lifecycle>internal</lifecycle>
</webscript>

View File

@@ -0,0 +1,8 @@
<#import "emailmap.lib.ftl" as emailmapLib/>
<#escape x as jsonUtils.encodeJSONString(x)>
{
"data":
<@emailmapLib.emailmapJSON emailmap=emailmap />
}
</#escape>

View File

@@ -0,0 +1,13 @@
<webscript>
<shortname>Delete an RM Constraint list</shortname>
<description>
<![CDATA[
Delete an RM Constraint list, all contents of the list are deleted.
]]>
</description>
<url>/api/rma/admin/rmconstraints/{listName}</url>
<format default="json">argument</format>
<authentication>user</authentication>
<transaction>required</transaction>
<lifecycle>internal</lifecycle>
</webscript>

View File

@@ -0,0 +1,27 @@
/**
* Delete the rm constraint list
*/
function main()
{
// Get the shortname
var shortName = url.extension;
// Get the constraint
var constraint = caveatConfig.getConstraint(shortName);
if (constraint != null)
{
caveatConfig.deleteConstraintList(shortName);
// Pass the constraint name to the template
model.constraintName = shortName;
}
else
{
// Return 404
status.setCode(404, "Constraint List " + shortName + " does not exist");
return;
}
}
main();

View File

@@ -0,0 +1,5 @@
<#escape x as jsonUtils.encodeJSONString(x)>
{
"data": { }
}
</#escape>

View File

@@ -0,0 +1,22 @@
<webscript>
<shortname>Get a RM Constraint method</shortname>
<description>
<![CDATA[
Get an RM Constraint including the details. The list name is qualified with an underscore between prefix and name to be compatible with Java Script and URLs
e.g. rma_listName rather than rma:listName
<BR />
Constraint object
<dl>
<dt>constraintName</dt> <dd>the name of the constraint. The underscore character is used instead of the colon</dd>
<dt>constraintTitle</dt> <dd>the title of the constraint (human readable)</dd>
<dt>caseSensitive</dt> <dd>Are the values case sensitive</dd>
<dt>allowedValues</dt> <dd>array of allowed values, this is the complete unrestricted list of all values</dd>
</dl>
]]>
</description>
<url>/api/rma/admin/rmconstraints/{listName}</url>
<format default="json">argument</format>
<authentication>user</authentication>
<transaction allow="readonly">required</transaction>
<lifecycle>internal</lifecycle>
</webscript>

View File

@@ -0,0 +1,25 @@
/**
* Get the detail of the rm constraint
*/
function main()
{
// Get the shortname
var shortName = url.extension;
// Get the constraint
var constraint = caveatConfig.getConstraint(shortName);
if (constraint != null)
{
// Pass the constraint detail to the template
model.constraint = constraint;
}
else
{
// Return 404
status.setCode(404, "Constraint List " + shortName + " does not exist");
return;
}
}
main();

View File

@@ -0,0 +1,8 @@
<#import "rmconstraint.lib.ftl" as rmconstraintLib/>
<#escape x as jsonUtils.encodeJSONString(x)>
{
"data": <@rmconstraintLib.constraintJSON constraint=constraint />
}
</#escape>

View File

@@ -0,0 +1,61 @@
<#-- renders an rm constraint object -->
<#macro constraintSummaryJSON constraint>
<#escape x as jsonUtils.encodeJSONString(x)>
{
"url" : "${url.serviceContext + "/api/rma/admin/rmconstraints/" + constraint.name}",
"constraintName" : "${constraint.name}",
"constraintTitle" : "${constraint.title}"
}
</#escape>
</#macro>
<#macro constraintJSON constraint>
<#escape x as jsonUtils.encodeJSONString(x)>
{
"url" : "${url.serviceContext + "/api/rma/admin/rmconstraints/" + constraint.name}",
"constraintName" : "${constraint.name}",
"caseSensitive" : "${constraint.caseSensitive?string("true", "false")}",
"constraintTitle" : "${constraint.title}",
"allowedValues" : [ <#list constraint.allowedValues as allowedValue> "${allowedValue}" <#if allowedValue_has_next>,</#if> </#list> ]
}
</#escape>
</#macro>
<#macro constraintWithValuesJSON constraint>
<#escape x as jsonUtils.encodeJSONString(x)>
{
"url" : "${url.serviceContext + "/api/rma/admin/rmconstraints/" + constraint.name}",
"constraintName" : "${constraint.name}",
"caseSensitive" : "${constraint.caseSensitive?string("true", "false")}",
"constraintTitle" : "${constraint.title}",
"values" : [
<#list constraint.values as value>
{
"url" : "${url.serviceContext + "/api/rma/admin/rmconstraints/" + constraint.name + "/values/" + value.valueName}",
"valueName":"${value.valueName}",
"valueTitle":"${value.valueTitle}",
"authorities" : [ <#list value.authorities as authority> { "authorityName" : "${authority.authorityName}", "authorityTitle" : "${authority.authorityTitle}"} <#if authority_has_next>,</#if></#list>]
}<#if value_has_next>,</#if>
</#list>
]
}
</#escape>
</#macro>
<#macro constraintWithValueJSON constraint value>
<#escape x as jsonUtils.encodeJSONString(x)>
{
"url" : "${url.serviceContext + "/api/rma/admin/rmconstraints/" + constraint.name + "/values/" + value.valueName}",
"constraintName" : "${constraint.name}",
"constraintTitle" : "${constraint.title}",
"value" :
{
"url" : "${url.serviceContext + "/api/rma/admin/rmconstraints/" + constraint.name + "/values/" + value.valueName}",
"valueName":"${value.valueName}",
"valueTitle":"${value.valueTitle}",
"authorities" : [ <#list value.authorities as authority> { "authorityName" : "${authority.authorityName}", "authorityTitle" : "${authority.authorityTitle}"} <#if authority_has_next>,</#if></#list>]
}
}
</#escape>
</#macro>

View File

@@ -0,0 +1,19 @@
<webscript>
<shortname>Update an RM Constraint List</shortname>
<description><![CDATA[
Update an RM Constraint List
<BR />
The following properties may be updatedConstraint object
<BR />
<dl>
<dt>constraintTitle</dt> <dd>Optional, the title of the constraint (human readable)</dd>
<dt>allowedValues</dt> <dd>Optional, array of allowed values, the complete list must be specified</dd>
</dl>
]]>
</description>
<url>/api/rma/admin/rmconstraints/{listName}</url>
<format default="json">argument</format>
<authentication>user</authentication>
<transaction>required</transaction>
<lifecycle>internal</lifecycle>
</webscript>

View File

@@ -0,0 +1,7 @@
<#import "rmconstraint.lib.ftl" as rmconstraintLib/>
<#escape x as jsonUtils.encodeJSONString(x)>
{
"data": <@rmconstraintLib.constraintJSON constraint=constraint />
}
</#escape>

View File

@@ -0,0 +1,51 @@
/**
* Update an rm constraint
*/
function main()
{
// Get the shortname
var shortName = url.extension;
// Get the constraint
var constraint = caveatConfig.getConstraint(shortName);
if (constraint != null)
{
var allowedValues
var title = null;
if (json.has("constraintTitle"))
{
title = json.get("constraintTitle");
constraint.updateTitle(title);
}
if (json.has("allowedValues"))
{
values = json.getJSONArray("allowedValues");
var i = 0;
allowedValues = new Array();
if (values != null)
{
for (var x = 0; x < values.length(); x++)
{
allowedValues[i++] = values.get(x);
}
}
constraint.updateAllowedValues(allowedValues);
}
// Pass the constraint detail to the template
model.constraint = constraint;
}
else
{
// Return 404
status.setCode(404, "Constraint List " + shortName + " does not exist");
return;
}
}
main();

View File

@@ -0,0 +1,18 @@
<webscript>
<shortname>Get the names of all RM Constraint Lists</shortname>
<description><![CDATA[
Array of summary details for custom constraint lists
<br />
<dl>
<dt>constraintTitle</dt><dd>Human readable title for the custom constraint list</dd>
<dt>constraintName</dt><dd>the name of the constraint list, prefixed </dd>
<dt>url</dt><dd></dd>
</dl>
]]>
</description>
<url>/api/rma/admin/rmconstraints?withEmptyLists={withEmptyLists?}</url>
<format default="json">argument</format>
<authentication>user</authentication>
<transaction allow="readonly">required</transaction>
<lifecycle>internal</lifecycle>
</webscript>

View File

@@ -0,0 +1,19 @@
/**
* List the names of the rm constraints
*/
function main()
{
var wel = true;
var withEmptyLists = args["withEmptyLists"];
// Pass the information to the template
if (withEmptyLists != null && withEmptyLists === 'false')
{
model.constraints = caveatConfig.constraintsWithoutEmptyList;
}
else
{
model.constraints = caveatConfig.allConstraints;
}
}
main();

View File

@@ -0,0 +1,13 @@
<#import "rmconstraint.lib.ftl" as rmconstraintLib/>
<#escape x as jsonUtils.encodeJSONString(x)>
{
"data":
[
<#list constraints as constraint>
<@rmconstraintLib.constraintSummaryJSON constraint=constraint />
<#if constraint_has_next>,</#if>
</#list>
]
}
</#escape>

View File

@@ -0,0 +1,20 @@
<webscript>
<shortname>Create a new RM Constraint List</shortname>
<description><![CDATA[
Create a new RM Constraint List
<BR />
The following properties may be specified
<BR />
<dl>
<dt>constraintName</dt> <dd>Optional the name of the constraint. If not specified then one will be generated.</dd>
<dt>constraintTitle</dt> <dd>The title of the constraint (human readable)</dd>
<dt>allowedValues</dt> <dd>array of allowed values, the complete list must be specified</dd>
</dl>
]]>
</description>
<url>/api/rma/admin/rmconstraints</url>
<format default="json">argument</format>
<authentication>user</authentication>
<transaction>required</transaction>
<lifecycle>internal</lifecycle>
</webscript>

View File

@@ -0,0 +1,7 @@
<#import "rmconstraint.lib.ftl" as rmconstraintLib/>
<#escape x as jsonUtils.encodeJSONString(x)>
{
"data": <@rmconstraintLib.constraintJSON constraint=constraint />
}
</#escape>

View File

@@ -0,0 +1,47 @@
/**
* Create a new RM Constraint List
*/
function main()
{
// Parse the passed in details
var title = null;
var name = null;
var allowedValues = {};
if (json.has("allowedValues"))
{
values = json.getJSONArray("allowedValues");
var i = 0;
allowedValues = new Array();
if (values != null)
{
for (var x = 0; x < values.length(); x++)
{
allowedValues[i++] = values.get(x);
}
}
}
if (json.has("constraintName"))
{
name = json.get("constraintName");
}
if (json.has("constraintTitle"))
{
title = json.get("constraintTitle");
}
else
{
title = name;
}
var constraint = caveatConfig.createConstraint(name, title, allowedValues);
// Pass the constraint detail to the template
model.constraint = constraint;
}
main();

View File

@@ -0,0 +1,63 @@
<webscript>
<shortname>Get an RM Constraint</shortname>
<description>
<![CDATA[
Get an RM Constraint including the values.
<BR />
The list name is qualified with an underscore between prefix and name to be compatible with Java Script and URLs
<BR />
e.g. rma_listName rather than rma:listName
<BR />
Constraint object
<dl>
<dt>constraintName</dt> <dd>the name of the constraint. The underscore character is used instead of the colon</dd>
<dt>caseSensitive</dt> <dd>is the constraint case sensitive</dd>
<dt>constraintTitle</dt> <dd>the display name of the constraint</dd>
<dt>allowedValues</dt> <dd>array of the allowed values, this is the complete unrestricted list of all values</dd>
<dt>values</dt> <dd>array of constraint values</dd>
</dl>
Constraint values object
<dl>
<dt>valueName</dt><dd>the full name of the value</dd>
<dt>valueTitle</dt><dd>the display name of the value</dd>
<dt>authorities</dt><dd>array of constraint authorities</dd>
</dl>
Example JSON data
<pre>
{
"data":
{
"url" : "\/alfresco\/service\/api\/rma\/admin\/rmconstraints\/rma_smList",
"constraintName" : "rma_smList",
"caseSensitive" : "true",
"constraintTitle" : "Display title for rma:smList",
"allowedValues" : [ "Alpha" , "Beta" , "Gamma" ],
"values" :
[
{
"valueName":"NOCON",
"valueTitle":"NOCON",
"authorities" : [ { "authorityName" : "jrogers", "authorityTitle" : "jrogers"} ]
},
{
"valueName":"NOFORN",
"valueTitle":"NOFORN",
"authorities" : [ { "authorityName" : "jrogers", "authorityTitle" : "jrogers"} , { "authorityName" : "fbloggs", "authorityTitle" : "fbloggs"} , { "authorityName" : "jdoe", "authorityTitle" : "jdoe"} ]
},
{
"valueName":"FGI",
"valueTitle":"FGI",
"authorities" : [ { "authorityName" : "fbloggs", "authorityTitle" : "fbloggs"} , { "authorityName" : "jdoe", "authorityTitle" : "jdoe"} ]
}
]
}
}
</pre>
]]>
</description>
<url>/api/rma/admin/rmconstraints/{listName}/values</url>
<format default="json">argument</format>
<authentication>user</authentication>
<transaction allow="readonly">required</transaction>
<lifecycle>internal</lifecycle>
</webscript>

View File

@@ -0,0 +1,25 @@
/**
* Get the detail of the rm constraint
*/
function main()
{
var urlElements = url.extension.split("/");
var shortName = urlElements[0];
// Get the constraint
var constraint = caveatConfig.getConstraint(shortName);
if (constraint != null)
{
// Pass the constraint detail to the template
model.constraint = constraint;
}
else
{
// Return 404
status.setCode(404, "Constraint List " + shortName + " does not exist");
return;
}
}
main();

View File

@@ -0,0 +1,7 @@
<#import "../rmconstraint.lib.ftl" as rmconstraintLib/>
<#escape x as jsonUtils.encodeJSONString(x)>
{
"data": <@rmconstraintLib.constraintWithValuesJSON constraint=constraint />
}
</#escape>

View File

@@ -0,0 +1,28 @@
<webscript>
<shortname>Updates values in an an RM Constraint List</shortname>
<description><![CDATA[
Updates values in an an RM Constraint List
<br />
If the authority is missing from the list then the value is deleted.
<br />
If an authority does not exist in a list then the authority is added.
<br />
Only the authorities for the specified values are updated.
<br />
If a value is missing it will not be affected.
<br />
JSON Parameter format:
<br />
"values" : [ ValueName, [ authorityName1, authorityName2 ]]
<br />
The input format for values is different to the output format.
<br />
Data Return format.
]]>
</description>
<url>/api/rma/admin/rmconstraints/{listName}/values</url>
<format default="json">argument</format>
<authentication>user</authentication>
<transaction>required</transaction>
<lifecycle>internal</lifecycle>
</webscript>

View File

@@ -0,0 +1,7 @@
<#import "../rmconstraint.lib.ftl" as rmconstraintLib/>
<#escape x as jsonUtils.encodeJSONString(x)>
{
"data": <@rmconstraintLib.constraintWithValuesJSON constraint=constraint />
}
</#escape>

View File

@@ -0,0 +1,39 @@
/**
* Update the details of a value in an rm constraint
*/
function main()
{
var urlElements = url.extension.split("/");
var shortName = urlElements[0];
var values = null;
if (json.has("values"))
{
values = json.getJSONArray("values");
}
if (values == null)
{
status.setCode(status.STATUS_BAD_REQUEST, "Values missing");
return;
}
// Get the constraint
var constraint = caveatConfig.getConstraint(shortName);
if (constraint != null)
{
constraint.updateValues(values);
model.constraint = caveatConfig.getConstraint(shortName);
model.constraintName = shortName;
}
else
{
// Return 404
status.setCode(404, "Constraint List " + shortName + " does not exist");
return;
}
}
main();

View File

@@ -0,0 +1,11 @@
<webscript>
<shortname>Delete a value from an RM Constraint List</shortname>
<description><![CDATA[
]]>
</description>
<url>/api/rma/admin/rmconstraints/{listName}/{valueName}</url>
<format default="json">argument</format>
<authentication>user</authentication>
<transaction>required</transaction>
<lifecycle>internal</lifecycle>
</webscript>

View File

@@ -0,0 +1,41 @@
/**
* Delete the rm constraint list
*/
function main()
{
var urlElements = url.extension.split("/");
var shortName = urlElements[0];
var authorityName = urlElements[1];
if (shortName == null)
{
status.setCode(status.STATUS_BAD_REQUEST, "shortName missing");
return;
}
if (valueName == null)
{
status.setCode(status.STATUS_BAD_REQUEST, "value missing");
return;
}
// Get the constraint
var constraint = caveatConfig.getConstraint(shortName);
if (constraint != null)
{
caveatConfig.deleteRMConstraintListValue(shortName, valueName);
var constraint = caveatConfig.getConstraint(shortName);
// Pass the constraint name to the template
model.constraint = constraint;
}
else
{
// Return 404
status.setCode(404, "Constraint List " + shortName + " does not exist");
return;
}
}
main();

View File

@@ -0,0 +1,7 @@
<#import "../rmconstraint.lib.ftl" as rmconstraintLib/>
<#escape x as jsonUtils.encodeJSONString(x)>
{
"data": <@rmconstraintLib.constraintWithValuesJSON constraint=constraint />
}
</#escape>

View File

@@ -0,0 +1,47 @@
<webscript>
<shortname>Get an RM Constraint Value</shortname>
<description>
<![CDATA[
Get an RM Constraint value.
<BR />
The list name is qualified with an underscore between prefix and name to be compatible with Java Script and URLs
<BR />
e.g. rma_listName rather than rma:listName
<BR />
Constraint object
<dl>
<dt>constraintName</dt> <dd>the name of the constraint. The underscore character is used instead of the colon</dd>
<dt>constraintTitle</dt> <dd>the display name of the constraint</dd>
<dt>value</dt> <dd>constraint values</dd>
</dl>
Constraint values object
<dl>
<dt>valueName</dt><dd>the full name of the value</dd>
<dt>valueTitle</dt><dd>the display name of the value</dd>
<dt>authorities</dt><dd>array of constraint authorities</dd>
</dl>
Example JSON data:
<pre>
{
"data":
{
"url" : "\/alfresco\/service\/api\/rma\/admin\/rmconstraints\/rma_smList/values/NOCON",
"constraintName" : "rma_smList",
"constraintTitle" : "Display title for rma:smList",
"value" :
{
"valueName":"NOCON",
"valueTitle":"NOCON",
"authorities" : [ { "authorityName" : "jrogers", "authorityTitle" : "jrogers"} ]
}
}
}
</pre>
]]>
</description>
<url>/api/rma/admin/rmconstraints/{listName}/values/{valueName}</url>
<format default="json">argument</format>
<authentication>user</authentication>
<transaction allow="readonly">required</transaction>
<lifecycle>internal</lifecycle>
</webscript>

View File

@@ -0,0 +1,36 @@
/**
* Get the detail of the rm constraint
*/
function main()
{
var urlElements = url.extension.split("/");
var shortName = decodeURIComponent(urlElements[0]);
var valueName = decodeURIComponent(urlElements[2])
// Get the constraint
var constraint = caveatConfig.getConstraint(shortName);
if (constraint != null)
{
// Pass the constraint detail to the template
var value = constraint.getValue(valueName);
if(value == null)
{
// Return 404
status.setCode(404, "Constraint List: " + shortName + " value: " + valueName + "does not exist");
return;
}
model.value = value;
model.constraint = constraint;
}
else
{
// Return 404
status.setCode(404, "Constraint List " + shortName + " does not exist");
return;
}
}
main();

View File

@@ -0,0 +1,7 @@
<#import "../rmconstraint.lib.ftl" as rmconstraintLib/>
<#escape x as jsonUtils.encodeJSONString(x)>
{
"data": <@rmconstraintLib.constraintWithValueJSON constraint=constraint value=value/>
}
</#escape>

View File

@@ -0,0 +1,14 @@
<webscript>
<shortname>Deletes a records management event</shortname>
<description>
<![CDATA[
]]>
</description>
<url>/api/rma/admin/rmevents/{eventname}</url>
<format default="json">argument</format>
<authentication>user</authentication>
<transaction>required</transaction>
<lifecycle>internal</lifecycle>
</webscript>

View File

@@ -0,0 +1,14 @@
<webscript>
<shortname>Get an records management event</shortname>
<description>
<![CDATA[
]]>
</description>
<url>/api/rma/admin/rmevents/{eventname}</url>
<format default="json">argument</format>
<authentication>user</authentication>
<transaction allow="readonly">required</transaction>
<lifecycle>internal</lifecycle>
</webscript>

View File

@@ -0,0 +1,8 @@
<#import "rmevent.lib.ftl" as rmEventLib/>
<#escape x as jsonUtils.encodeJSONString(x)>
{
"data":
<@rmEventLib.eventJSON event=event />
}
</#escape>

View File

@@ -0,0 +1,12 @@
<#-- renders an rm event object -->
<#macro eventJSON event>
<#escape x as jsonUtils.encodeJSONString(x)>
{
"eventName": "${event.name}",
"eventDisplayLabel": "${event.displayLabel}",
"eventType":"${event.type}"
}
</#escape>
</#macro>

View File

@@ -0,0 +1,14 @@
<webscript>
<shortname>Update a records management event</shortname>
<description>
<![CDATA[
]]>
</description>
<url>/api/rma/admin/rmevents/{eventname}</url>
<format default="json">argument</format>
<authentication>user</authentication>
<transaction>required</transaction>
<lifecycle>internal</lifecycle>
</webscript>

View File

@@ -0,0 +1,8 @@
<#import "rmevent.lib.ftl" as rmEventLib/>
<#escape x as jsonUtils.encodeJSONString(x)>
{
"data":
<@rmEventLib.eventJSON event=event />
}
</#escape>

View File

@@ -0,0 +1,14 @@
<webscript>
<shortname>Get list of records management events</shortname>
<description>
<![CDATA[
]]>
</description>
<url>/api/rma/admin/rmevents</url>
<format default="json">argument</format>
<authentication>user</authentication>
<transaction allow="readonly">required</transaction>
<lifecycle>internal</lifecycle>
</webscript>

View File

@@ -0,0 +1,13 @@
<#import "rmevent.lib.ftl" as rmEventLib/>
<#escape x as jsonUtils.encodeJSONString(x)>
{
"data":
{
<#list events as event>
"${event.name}":
<@rmEventLib.eventJSON event=event /><#if event_has_next>,</#if>
</#list>
}
}
</#escape>

View File

@@ -0,0 +1,14 @@
<webscript>
<shortname>Create a new records managment event</shortname>
<description>
<![CDATA[
]]>
</description>
<url>/api/rma/admin/rmevents</url>
<format default="json">argument</format>
<authentication>user</authentication>
<transaction>required</transaction>
<lifecycle>internal</lifecycle>
</webscript>

View File

@@ -0,0 +1,9 @@
<#import "rmevent.lib.ftl" as rmEventLib/>
<#escape x as jsonUtils.encodeJSONString(x)>
{
"data":
<@rmEventLib.eventJSON event=event />
}
}
</#escape>

View File

@@ -0,0 +1,14 @@
<webscript>
<shortname>Gets the records management event types</shortname>
<description>
<![CDATA[
]]>
</description>
<url>/api/rma/admin/rmeventtypes</url>
<format default="json">argument</format>
<authentication>user</authentication>
<transaction>required</transaction>
<lifecycle>internal</lifecycle>
</webscript>

View File

@@ -0,0 +1,16 @@
<#import "rmevent.lib.ftl" as rmEventLib/>
<#escape x as jsonUtils.encodeJSONString(x)>
{
"data":
{
<#list eventtypes as eventtype>
"${eventtype.name}":
{
"eventTypeName" : "${eventtype.name}",
"eventTypeDisplayLabel" : "${eventtype.displayLabel}"
}<#if eventtype_has_next>,</#if>
</#list>
}
}
</#escape>

Some files were not shown because too many files have changed in this diff Show More