企业流程化管理,经常想到的是ERP等,今天翻阅martini中的bpm实现,学习了里面的流程化业务管理模式。
在martini中bpm进行任务流转和调度的,会用到一个叫Quartz的框架,只需要通过在Spring的bean管理中进行配置和依据Quartz的比较常用的两个org.springframework.scheduling.quartz.SimpleTriggerBean和org.springframework.scheduling.quartz.CronTriggerBean就可以十分灵活的实现任务的策略调用。
两个类的区别为:
SimpleTrigger更类似于JDK中的Timer,它只是简单的以某个时间间隔来执行某个任务而已,比较简陋,而CronTrigger功能则十分强大,可以设定制定任务在任意指定时刻内调用。
Spring的配置如下:
CronTriggerBean类进行任务调配(精确定义任务执行时间):
<bean id="cacheRefreshTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail">
<bean class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="concurrent" value="false"/>
<property name="targetObject" ref="resourceManager"/>
<property name="targetMethod" value="patrol"/>
</bean>
</property>
<property name="cronExpression" value="0 0/1 * * * ?"/>
</bean>
SimpleTriggerBean类进行任务调配(可以定义任务执行频率):
<bean id="simpleReportTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
<property name="jobDetail">
<ref bean="reportJob"/>
</property>
<property name="startDelay">
<value>3600000</value>
</property>
<property name="repeatInterval">
<value>86400000</value>
</property>
</bean>
cronExpression 配置任务执行的间隔时间、频率,用法有点类似linux上面的启动任务的list 。 具体是(参考文档:http://xiaolele.iteye.com/blog/368922。这里写的很细,在细就参考http://www.opensymphony.com/quartz主页):
字段名 允许的值 允许的特殊字符
秒 | 0-59 | , - * / | ||
分 | 0-59 | , - * / | ||
小时 | 0-23 | , - * / | ||
日 | 1-31 | , - * ? / L W C | ||
月 | 1-12 or JAN-DEC | , - * / | ||
周几 | 1-7 or SUN-SAT | , - * ? / L C # | ||
年 (可选字段) | empty, 1970-2099 | , - * / |
cronExpression参考:http://xiaolele.iteye.com/blog/368922