Home

Sometimes we have requirements where we need to do certain processes or set of operations on a regular basis. It could be archival of contents or processing of existing documents in Alfresco repository to generate some reports, or another case is where you had a bunch of documents dropped by users on a shared drive and you want to upload them into Alfresco every day automatically to manage them easily. The possibilities are endless. Alfresco uses this kind of scheduled job for content archival and purging. Alfresco use spring’s cron job capabilities to meet up these requirements.

We are going to discuss how we could create our own scheduled job in alfresco. Steps to create it are as follow.

Step 1

Create custom-scheduled-job-context.xml where we define job detail and job trigger beans

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<bean id="customJobDetail" class="org.springframework.scheduling.quartz.JobDetailBean">
    <property name="jobClass">      
     <value>com.company.scheduled.job.CustomScheduledJob</value>
        </property>
        <property name="jobDataAsMap">
            <map>
                <entry key="abstractAuthenticationService">
                    <ref bean="authenticationService" />
                </entry>
            </map>
        </property>
    </bean>
    <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>0 0 21 * * ?</value>
        </property>
    </bean>

Place it under

<tomcat>/shared/classes/alfresco/extension

Here we are creating custom Scheduled Job called customJobDetail and associating it with jobtrigger called customJobTrigger.

In the jobdatamap you can pass alfresco services which will be required by your job to access repository.

cronExpression value in customJobTrigger defines the time interval at which this job will be executed(provided alfresco is up and running J)

Step 2

Create job class CustomScheduledJob under package  com.company.scheduled.job

Which extends java.lang.Object and

implements org.quartz.StatefulJob

We need to implement execute method and under that business logic will reside.

execute(org.quartz.JobExecutionContext context)

Package that class in jar and place the jar under

<tomcat>/webapps/alfresco/WEB-INF/lib

Restart the server and your scheduled job will be executed on defined time intervals. You can define the cron expression based on your requirements. Refer this guide to know more about cron expressions.

Field name

Mandatory?

Allowed values

Allowed special characters

Remarks

Minutes Yes 0-59 * / , –
Hours Yes 0-23 * / , –
Day of month Yes 1-31 * / , – ? L W
Month Yes 1-12 or JAN-DEC * / , –
Day of week Yes 0-6 or SUN-SAT * / , – ? L #
Year No 1970–2099 * / , – This field is not supported in standard/default implementations.

For debugging you need to add your job class in log4j.properties of alfresco. You will be able to see logs of your job run on interval you have mentioned in your context file.

Other References

http://docs.spring.io/spring/docs/1.2.5/reference/scheduling.html

http://en.wikipedia.org/wiki/Cron

Looking for quality Alfresco Web Hosting? Look no further than Arvixe Web Hosting!

Publicités

Laisser un commentaire

Choisissez une méthode de connexion pour poster votre commentaire:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s