As we transition to the new Hyland Community, some post links may be temporarily disrupted as we finalize redirects. We apologize for the inconvenience and are working to resolve this as quickly as possible. Details.
<?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://www.springframework.org/dtd/spring-beans.dtd'> <beans> <!– Define the model factory used to generate object models suitable for use with freemarker templates. –> <bean id="templateActionModelFactory" class="org.alfresco.repo.action.scheduled.FreeMarkerWithLuceneExtensionsModelFactory"> <property name="serviceRegistry"> <ref bean="ServiceRegistry"/> </property> </bean> <bean id="runScriptActionTestJScript" class="org.alfresco.repo.action.scheduled.SimpleTemplateActionDefinition"> <property name="actionName"> <value>script</value> </property> <property name="parameterTemplates"> <map> <entry> <key> <value>script-ref</value> </key> <value>\$\{selectSingleNode('workspace://SpacesStore', 'fts-alfresco', 'PATH:"/app:company_home/app:dictionary/cm:Scheduled_x0020_Actions/cm:myTestScript.js"' )\}</value> </entry> </map> </property> <property name="templateActionModelFactory"> <ref bean="templateActionModelFactory"/> </property> <property name="dictionaryService"> <ref bean="DictionaryService"/> </property> <property name="actionService"> <ref bean="ActionService"/> </property> <property name="templateService"> <ref bean="TemplateService"/> </property> </bean> <bean id="runtestScheduleEveryOneMinutes" class="org.alfresco.repo.action.scheduled.CronScheduledQueryBasedTemplateActionDefinition"> <property name="transactionMode"> <value>UNTIL_FIRST_FAILURE</value> <!–value>ISOLATED_TRANSACTIONS</value–> </property> <property name="compensatingActionMode"> <value>IGNORE</value> </property> <property name="searchService"> <ref bean="SearchService"/> </property> <property name="templateService"> <ref bean="TemplateService"/> </property> <property name="queryLanguage"> <value>fts-alfresco</value> </property> <property name="stores"> <list> <value>workspace://SpacesStore</value> </list> </property> <!– Find all nodes that do not have the aspect –> <property name="queryTemplate"> <value>PATH:"/app:company_home/st:sites/cm:mySite/cm:documentLibrary/cm:_Inbox"</value> </property> <property name="cronExpression"> <value>0 0/15 * * * ?</value> </property> <property name="jobName"> <value>TestJScriptJobName</value> </property> <property name="jobGroup"> <value>TestJScriptJobGroup</value> </property> <property name="triggerName"> <value>TestJScriptTriggerName</value> </property> <property name="triggerGroup"> <value>TestJScriptTriggerGroup</value> </property> <property name="scheduler"> <ref bean="schedulerFactory"/> </property> <property name="actionService"> <ref bean="ActionService"/> </property> <property name="templateActionModelFactory"> <ref bean="templateActionModelFactory"/> </property> <property name="templateActionDefinition"> <ref bean="runScriptActionTestJScript"/> </property> <property name="transactionService"> <ref bean="TransactionService"/> </property> <property name="runAsUser"> <value>System</value> <!–value>admin</value–> </property> </bean> </beans>
logger.system.out(" -> running script, " + new Date().toString()); try{ if ((debug) || (log)) { // get or create log file var configFolder = companyhome.childByNamePath(configRootPath); var logFile = configFolder.childByNamePath(logFileName); // if no log file, create a new one if ( logFile == null) { logFile = configFolder.createFile(logFileName); } // else rotate log file if necessary else if (parseInt(logFile.size/1024) > logMaxSize){ var logFileBackup = configFolder.childByNamePath(logFileNameBackup); // remove previous log backup if (logFileBackup != null){ configFolder.removeNode(logFileBackup); } // rename existing log logFile.name = logFileNameBackup; logFile.save(); // create new log file logFile = configFolder.createFile(logFileName); } if ( logFile == null) throw "Unable to open/create log file"; logFile.content += "\n\n________________________________________________________________\n"; logFile.content += new Date().toString() + "Run execution \n"; } // manage locks (one process at a time). var configFolder = companyhome.childByNamePath(configRootPath); var lockFile = companyhome.childByNamePath(configRootPath + "/" + lockFileName); if (!lockFile){ // lock file does not exists // create lock file if not exists if (!lockFile) lockFile = configFolder.createFile(lockFileName); if (!lockFile) throw "Unable to create lock file"; // get document array to process var childsFiles = new Array(); if (document.type == "{http://www.alfresco.org/model/content/1.0}folder"){ if (log) logFile.content += "\nCurrent node is a folder, processing childs\n"; childsFiles = document.childFileFolders(true, false); } else if (document.type == "{http://www.alfresco.org/model/content/1.0}content"){ if (log) logFile.content += "\nCurrent node is a document, processing current node only\n"; childsFiles[0] = document; } else { throw "Unknow document type"; } // process documents for (ii_main in childsFiles){ if (log) logFile.content += " -> Processing file: " + childsFiles[ii_main].properties.name + "\n"; if (debug) logger.system.out(" -> Processing file: " + childsFiles[ii_main].properties.name); // // put all business logic here () // } // release lock (hide) var lockFile = companyhome.childByNamePath(configRootPath + "/" + lockFileName); if (lockFile){ configFolder.removeNode(lockFile); } } else{ // Process already running if (log) logFile.content += "Process already running\n"; if (debug) logger.system.out("Process already running"); } } catch (err){ logger.system.out("! Aborting, error message: " + err); if (log) logFile.content += "\n ! Aborting, error message: " + err + "\n"; // release lock var configFolder = companyhome.childByNamePath(configRootPath); var lockFile = companyhome.childByNamePath(configRootPath + "/" + lockFileName); if (lockFile){ configFolder.removeNode(lockFile); } }