Como ejecutar una regla cada cierto tiempo

cancel
Showing results for 
Search instead for 
Did you mean: 
pedror
Active Member

Como ejecutar una regla cada cierto tiempo

Buenas, 

Tengo dos preguntas:

* He creado una regla y necesito que se ejecute cada cierto tiempo. Como puedo colocarle una nueva opción al campo "Cuando" o en que parte de las reglas se le puede especificar el tiempo de ejecución. 

* La otra pregunta es que tengo una regla, que cuando el evento interrumpir ocurra  envíe una notificación. Esto realiza la notificación cuando se interrumpe manualmente pero cuando el RM lo hace automáticamente no esta haciendo la notificación. Que podría hacer? El valor que tengo en cuando es "Cuando se actualizan elementos".

Muchas gracias.

10 Replies
douglascrp
Advanced II

Re: Como ejecutar una regla cada cierto tiempo

Buenas tardes.

Mi español no es muy bueno, pero you voy intentar ayudarte.

He creado una regla y necesito que se ejecute cada cierto tiempo

Es esto una regla en una carpeta?

Reglas de carpetas son ejecutadas en respuesta a algunos eventos como la creación o modificación de contenido.

Se esto es o que usted llama de regla, entonces creo que o que usted necesita es crear un script, en Java Script, y configurar Alfresco para ejecutarlo automaticamente.

Esto es un ejemplo de algo que yo hice ayer para un cliente.

El archivo scheduled-action-services-context.xml configura el timer que ejecuta el archivo Java Script.

La explicación para todo eso puede ser encontrada en http://www.curiousnerd.me/scheduled-custom-action-alfresco/ 

Yo no pudo comprender la segunda pregunta. O que es la notificación? Es un email?

pedror
Active Member

Re: Como ejecutar una regla cada cierto tiempo

Gracias Douglas por tu ayuda, lo de la segunda pregunta si es una notificacion de email cuando se puedan destruir los documentos. Solo funciona si se hace manualmente la interrupcion pero NO cuando el RM lo hace automaticamente.

Muchas Gracias

douglascrp
Advanced II

Re: Como ejecutar una regla cada cierto tiempo

Usted puede crear otro Java Script con el codigo para enviar los emails quando la búsqueda encontrar archivos que se pueden destruir.

Ejemplos de codigo para enviar emails con Java Script Alfresco – Sending a notification email to Site Administrators by using JavaScript API | Programming... 

pedror
Active Member

Re: Como ejecutar una regla cada cierto tiempo

Buenas, saben si las tareas programadas empiezan a funcionar si se colocan en C:\alfresco-community\tomcat\shared\classes\alfresco\extension como scheduled-action-services-context.xml y se reinicia Alfresco?, o tambien se tiene que colocar en acciones programadas del diccionario de datos?. Otra pregunta por favor, se tiene que crear codigo java para que funcionen?, o con el código en xml basta, porque el javascript se necesita solo si se hace referencia a un script desde el xml. Muchas gracias por aclararmen estas dudas

douglascrp
Advanced II

Re: Como ejecutar una regla cada cierto tiempo

No es necesario escribir codigo Java. El archivo XML es todo que necesita. Por supuesto, se necesita crear el archivo Java Script en el Diccionario de Datos.

Usted tiene que poner el archivo XML en C:\alfresco-community\tomcat\shared\classes\alfresco\extension y reiniciar Alfresco

pedror
Active Member

Re: Como ejecutar una regla cada cierto tiempo

Hola Douglas C. R. Paes, He creado el scrip perfectamente, pero el xml me sigue generando error. No me permite entrar y en el log me aparece Failed to import bean definitions from URL location [classpath:alfresco/application-context.xml], tambien,  LifecycleProcessor not initialized. Copie lo que habia en el enlace que me pasaste cambiando el nombre del scrip que tengo. Sabes si tengo que hacer algo extra?  

<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>

<!--Execute the script /Company Home/Data Dictionary/Script/exampleScript.js -->
<bean id="runScriptAction" 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>
<!-- Note that as of Alfresco 4.0, due to a Spring upgrade, the FreeMarker ${foo} entries must be escaped -->

<value>\$\{selectSingleNode('workspace://SpacesStore', 'lucene', 'PATH:"/app:company_home/app:dictionary/app:scripts/cm:notificacion.js"' )\}</value>

<!-- This value tag is for Alfresco 3.x, because the escape of FreeMarker entries will fail otherwise -->

<!--<value>#{"${"}selectSingleNode('workspace://SpacesStore', 'lucene', 'PATH:"/app:company_home/app:dictionary/app:scripts/cm:exampleScript.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>

<!-- Script execution config -->
<bean id="runScript" class="org.alfresco.repo.action.scheduled.CronScheduledQueryBasedTemplateActionDefinition">
<property name="transactionMode">
<value>UNTIL_FIRST_FAILURE</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>lucene</value>
</property>
<property name="stores">
<list>
<value>workspace://SpacesStore</value>
</list>
</property>
<property name="queryTemplate">
<value>PATH:"/app:company_home/cm:customSpace"</value>
</property>
<!--Cron script execution every 10 minutes-->
<property name="cronExpression">
<value>15 * * * * ?</value>
</property>
<property name="jobName">
<value>jobD</value>
</property>
<property name="jobGroup">
<value>jobGroup</value>
</property>
<property name="triggerName">
<value>triggerD</value>
</property>
<property name="triggerGroup">
<value>triggerGroup</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="runScriptAction"/> <!-- This is name of the action (bean) that gets run -->
</property>
<property name="transactionService">
<ref bean="TransactionService"/>
</property>
<property name="runAsUser">
<value>System</value>
</property>
</bean>

</beans>

Muchas gracias a ti y a las personas que me respondieron en el otro hilo.

douglascrp
Advanced II

Re: Como ejecutar una regla cada cierto tiempo

Puedes compartir todo el log?

pedror
Active Member

Re: Como ejecutar una regla cada cierto tiempo

Hola  Este es el log. Muchas Gracias por ayudarme. Espero tu respuesta

pedror
Active Member

Re: Como ejecutar una regla cada cierto tiempo

Buenas tardes con este xml me ejecuto la tarea. Esta programada para que se ejecute cada 15 segundos.

Muchas gracias a todos, en especial a ti Douglas C. R. Paes.

<?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="alfresco_runScriptAction" 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/app:scripts/cm:notificacion.js"')\}</value>   <!--en vez de notificacion el nombre de tu  script -->
</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="alfresco_runScript" class="org.alfresco.repo.action.scheduled.CronScheduledQueryBasedTemplateActionDefinition">
<property name="transactionMode">
<value>UNTIL_FIRST_FAILURE</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>lucene</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"</value>
</property>
<property name="cronExpression">
<value>15 * * * * ?</value>
</property>
<property name="jobName">
<value>jobD</value>
</property>
<property name="jobGroup">
<value>jobGroup</value>
</property>
<property name="triggerName">
<value>triggerA</value>
</property>
<property name="triggerGroup">
<value>triggerGroup</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="alfresco_runScriptAction"/>
</property>
<property name="transactionService">
<ref bean="TransactionService"/>
</property>
<property name="runAsUser">
<value>System</value>
</property>
</bean>
</beans>