简单工作流——Spring的Quartz实战

一 工资自动结算任务

package org.crazyit.hrsystem.schedule;


import java.util.Date;
import org.springframework.scheduling.quartz.QuartzJobBean;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;


import org.crazyit.hrsystem.service.EmpManager;


public class PayJob extends QuartzJobBean
{
    // 判断作业是否执行的旗标
    private boolean isRunning = false;
    // 该作业类所依赖的业务逻辑组件
    private EmpManager empMgr;
    public void setEmpMgr(EmpManager empMgr)
    {
        this.empMgr = empMgr;
    }
    // 定义任务执行体
    public void executeInternal(JobExecutionContext ctx)
        throws JobExecutionException
    {
        if (!isRunning)
        {
            System.out.println("开始调度自动结算工资");
            isRunning = true;
            // 调用业务逻辑方法
            empMgr.autoPay();
            isRunning = false;
        }
    }
}

二 自动打卡任务

package org.crazyit.hrsystem.schedule;


import java.util.Date;
import org.springframework.scheduling.quartz.QuartzJobBean;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;


import org.crazyit.hrsystem.service.EmpManager;


public class PunchJob extends QuartzJobBean
{
    // 判断作业是否执行的旗标
    private boolean isRunning = false;
    // 该作业类所依赖的业务逻辑组件
    private EmpManager empMgr;
    public void setEmpMgr(EmpManager empMgr)
    {
        this.empMgr = empMgr;
    }
    // 定义任务执行体
    public void executeInternal(JobExecutionContext ctx)
        throws JobExecutionException
    {
        if (!isRunning)
        {
            System.out.println("开始调度自动打卡");
            isRunning = true;
            // 调用业务逻辑方法
            empMgr.autoPunch();
            isRunning = false;
        }
    }
}

三 任务调度配置

     <!-- cronExpression指定Cron表达式:每月3日2时启动 -->
     <bean id="cronTriggerPay"
           class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"
           p:cronExpression="0 0 2 3 * ? *">
           <property name="jobDetail">
                <!-- 使用嵌套Bean的方式来定义任务Bean
                     jobClass指定任务Bean的实现类 -->
                <bean  class="org.springframework.scheduling.quartz.JobDetailFactoryBean"
                     p:jobClass="org.crazyit.hrsystem.schedule.PayJob"
                     p:durability="true">
                     <!-- 这里设置的jobDataAsMap可以传递一些参数给作业任务 -->
                     <property name="jobDataAsMap">
                           <map>
                                <entry key="empMgr"  value-ref="empManager"/>
                           </map>
                     </property>
                </bean>
           </property>
     </bean>
     <!-- 定义触发器来管理任务Bean
           cronExpression指定Cron表达式:周一到周五7点、12点执行调度-->
     <bean id="cronTriggerPunch"
           class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"
           p:cronExpression="0 0 7,12 ? * MON-FRI">
           <property name="jobDetail">
                <!-- 使用嵌套Bean的方式来定义任务Bean
                     jobClass指定任务Bean的实现类 -->
                <bean  class="org.springframework.scheduling.quartz.JobDetailFactoryBean"
                     p:jobClass="org.crazyit.hrsystem.schedule.PunchJob"
                     p:durability="true">
                     <!-- 为任务Bean注入属性 -->
                     <property name="jobDataAsMap">
                           <map>
                                <entry key="empMgr"  value-ref="empManager"/>
                           </map>
                     </property>
                </bean>
           </property>
     </bean>
     <!-- 执行实际的调度调度 -->
     <bean  class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
           <property name="triggers">
                <list>
                     <ref bean="cronTriggerPay"/>
                     <ref bean="cronTriggerPunch"/>
                </list>
           </property>
     </bean>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值