cancel
Showing results for 
Search instead for 
Did you mean: 

scheduled job , queryTemplate

natgeek
Champ in-the-making
Champ in-the-making

Hi, guys.

I need a helpSmiley Happy

i try to make simple scheduled job, which will run script. I want to run that script only once at every 10 minutes.

I checked tutorial and some articles here, i found out that query template should be  like below

<property name="queryTemplate">

            <value>PATH:"/app:company_home"</value>

</property>

My job starts, works, but it runs 3 times script

016-10-31 11:10:00,304 DEBUG [org.alfresco.repo.jscript.ScriptLogger] [DefaultScheduler_Worker-6] ====== start wf====

2016-10-31 11:10:00,307 DEBUG [org.alfresco.repo.jscript.ScriptLogger] [DefaultScheduler_Worker-10] ====== start wf====

2016-10-31 11:10:00,285 DEBUG [org.alfresco.repo.jscript.ScriptLogger] [DefaultScheduler_Worker-8] ====== start wf====

What is wrong?  I can not realised that.

Please help.

7 REPLIES 7

kaynezhang
World-Class Innovator
World-Class Innovator

Please try to  set transactionMode to  ONE_TRANSACTION in you bean definition

      <property name="transactionMode">

            <value>ONE_TRANSACTION</value>

        </property>

        <property name="searchService">

            <ref bean="SearchService"/>

        </property>

        <property name="templateService">

            <ref bean="TemplateService"/>

        </property>

.....

natgeek
Champ in-the-making
Champ in-the-making

Hi)) thank you for your reply, but    <value>ONE_TRANSACTION</value>  doesn't work.

definition is :

<bean id="runScriptExpireWorkflow" class="org.alfresco.repo.action.scheduled.CronScheduledQueryBasedTemplateActionDefinition">

        <property name="transactionMode">

            <value>ONE_TRANSACTION</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"</value>

        </property>

        <property name="cronExpression">

            <value>0 0/1 * * * ? </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="ScriptExpireWorkflowAction"/> <!-- This is name of the action (bean SimpleTemplateActionDefinition) that gets run -->

        </property>

        <property name="transactionService">

            <ref bean="TransactionService"/>

        </property>

        <property name="runAsUser">

            <value>System</value>

        </property>

    </bean>

and job runs js script, in which:  logger.log(document.properties.name);

and in the log file:

2016-10-31 17:49:00,308 DEBUG [org.alfresco.repo.jscript.ScriptLogger] [DefaultScheduler_Worker-3] Company Home

2016-10-31 17:49:00,225 DEBUG [org.alfresco.repo.jscript.ScriptLogger] [DefaultScheduler_Worker-5] Company Home

2016-10-31 17:49:00,326 DEBUG [org.alfresco.repo.jscript.ScriptLogger] [DefaultScheduler_Worker-3] Company Home

when I tried run workflow by that job, I had 3 instances of the workflow, the same

Really, I do not know what is going 

kaynezhang
World-Class Innovator
World-Class Innovator

Could you please turn on scheduled action debug log to see what is going on

log4j.logger.org.alfresco.repo.action.scheduled.CronScheduledQueryBasedTemplateActionDefinition=DEBUG

natgeek
Champ in-the-making
Champ in-the-making

Hello) I  put this logger

log4j.logger.org.alfresco.repo.action.scheduled.CronScheduledQueryBasedTemplateActionDefinition=DEBUG

into

..tomcat/webapps/alfresco/WEB-INF/classes/log4j.properties

but i do not watch anything corresponding with CronScheduledQueryBasedTemplateActionDefinition

i have only that in alfresco.log after loading 

2016-11-01 10:29:53,485 DEBUG [org.alfresco.repo.jscript.ScriptLogger] [DefaultScheduler_Worker-8] Company Home

2016-11-01 10:29:53,485 DEBUG [org.alfresco.repo.jscript.ScriptLogger] [DefaultScheduler_Worker-1] Company Home

2016-11-01 10:32:00,625 DEBUG [org.alfresco.repo.jscript.ScriptLogger] [DefaultScheduler_Worker-8] Company Home

2016-11-01 10:32:00,628 DEBUG [org.alfresco.repo.jscript.ScriptLogger] [DefaultScheduler_Worker-4] Company Home

2016-11-01 10:32:00,678 DEBUG [org.alfresco.repo.jscript.ScriptLogger] [DefaultScheduler_Worker-2] Company Home

2016-11-01 10:34:00,203 DEBUG [org.alfresco.repo.jscript.ScriptLogger] [DefaultScheduler_Worker-4] Company Home

2016-11-01 10:34:00,235 DEBUG [org.alfresco.repo.jscript.ScriptLogger] [DefaultScheduler_Worker-6] Company Home

2016-11-01 10:34:00,299 DEBUG [org.alfresco.repo.jscript.ScriptLogger] [DefaultScheduler_Worker-2] Company Home

2016-11-01 10:36:00,569 DEBUG [org.alfresco.repo.jscript.ScriptLogger] [DefaultScheduler_Worker-1] Company Home

2016-11-01 10:36:00,565 DEBUG [org.alfresco.repo.jscript.ScriptLogger] [DefaultScheduler_Worker-3] Company Home

2016-11-01 10:36:00,561 DEBUG [org.alfresco.repo.jscript.ScriptLogger] [DefaultScheduler_Worker-9] Company Home

2016-11-01 10:38:00,280 DEBUG [org.alfresco.repo.jscript.ScriptLogger] [DefaultScheduler_Worker-7] Company Home

2016-11-01 10:38:00,267 DEBUG [org.alfresco.repo.jscript.ScriptLogger] [DefaultScheduler_Worker-1] Company Home

2016-11-01 10:38:00,263 DEBUG [org.alfresco.repo.jscript.ScriptLogger] [DefaultScheduler_Worker-2] Company Home

mitpatoliya
Star Collaborator
Star Collaborator

Frequency at which your job run depends on cron expression mentioned in configuration

  <property name="cronExpression">

            <value>0 0/1 * * * ? </value>

        </property>

According to your requirement it should be changed as follow.

<property name="cronExpression">

            <value>“0 0/10 * * * ?</value>

        </property>

restart your server after above change.

natgeek
Champ in-the-making
Champ in-the-making

Hi) thank you)

but main problem is not cron expression. 1, 2, 10 minutes - doesn't matter.

Look in the log - one job, one script, in the script one string logger.log(space.properties.name);

but three times runs at the same time. How it possible?

2016-11-01 10:38:00,280 DEBUG [org.alfresco.repo.jscript.ScriptLogger] [DefaultScheduler_Worker-7] Company Home

2016-11-01 10:38:00,267 DEBUG [org.alfresco.repo.jscript.ScriptLogger] [DefaultScheduler_Worker-1] Company Home

2016-11-01 10:38:00,263 DEBUG [org.alfresco.repo.jscript.ScriptLogger] [DefaultScheduler_Worker-2] Company Home

My job definition is:

<?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="ScriptExpireWorkflowAction" 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', 'lucene', 'PATH:"/app:company_home/app:dictionary/app:scripts/cm:expire-wf-start1.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="runScriptExpireWorkflow" class="org.alfresco.repo.action.scheduled.CronScheduledQueryBasedTemplateActionDefinition">

        <property name="transactionMode">

            <value>ONE_TRANSACTION</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"</value>

        </property>

        <property name="cronExpression">

            <value>0 0/10 * * * ? </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="ScriptExpireWorkflowAction"/> <!-- This is name of the action (bean SimpleTemplateActionDefinition) that gets run -->

        </property>

        <property name="transactionService">

            <ref bean="TransactionService"/>

        </property>

        <property name="runAsUser">

            <value>System</value>

        </property>

    </bean>

</beans>   

Just right now i changed cron expression as you advised (10 minutes) and I have the same picture:

every ten minutes starts my job, but not once! three times!!!!

2016-11-02 09:50:00,772 DEBUG [org.alfresco.repo.jscript.ScriptLogger] [DefaultScheduler_Worker-9] Company Home

2016-11-02 09:50:00,768 DEBUG [org.alfresco.repo.jscript.ScriptLogger] [DefaultScheduler_Worker-4] Company Home

2016-11-02 09:50:02,824 DEBUG [org.alfresco.repo.jscript.ScriptLogger] [DefaultScheduler_Worker-10] Company Home

2016-11-02 10:00:11,028 DEBUG [org.alfresco.repo.jscript.ScriptLogger] [DefaultScheduler_Worker-1] Company Home

2016-11-02 10:00:11,841 DEBUG [org.alfresco.repo.jscript.ScriptLogger] [DefaultScheduler_Worker-5] Company Home

2016-11-02 10:00:12,393 DEBUG [org.alfresco.repo.jscript.ScriptLogger] [DefaultScheduler_Worker-4] Company Home

2016-11-02 10:10:00,593 DEBUG [org.alfresco.repo.jscript.ScriptLogger] [DefaultScheduler_Worker-6] Company Home

2016-11-02 10:10:00,588 DEBUG [org.alfresco.repo.jscript.ScriptLogger] [DefaultScheduler_Worker-2] Company Home

2016-11-02 10:10:00,625 DEBUG [org.alfresco.repo.jscript.ScriptLogger] [DefaultScheduler_Worker-10] Company Home

shyam42
Champ on-the-rise
Champ on-the-rise

   Hi,

<bean id="customJobTrigger" class="org.alfresco.util.CronTriggerBean">  <property name="jobDetail">   <ref bean="customJobDetail" />  </property>  <property name="scheduler">   <ref bean="schedulerFactory" />  </property>  <property name="cronExpression">   <value>cronExpression</value>  </property> </bean>  <bean id="customJobDetail" class="org.springframework.scheduling.quartz.JobDetailBean">  <property name="jobClass">   <value>CustomJobProcessor   </value>  </property> </bean>‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍

Using This you can run that cronjob only once when you wanted.