企业流程化管理,经常想到的是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