首页 > 其他分享 >activiti 工作流 quartz 任务调度

activiti 工作流 quartz 任务调度

时间:2023-04-21 21:08:39浏览次数:49  
标签:表示 10 quartz 15 activiti 触发 30 Job 任务调度


activiti :工作流workflow

quartz 有四个重要的组件 

1. Scheduler
代表一个 Quartz 的独立运行容器,Scheduler 将 Trigger 绑定到特定 JobDetail, 这样当 Trigger 触发时, 对应的 Job 就会被调度。

2. Trigger
描述 Job 执行的时间触发规则。主要有 SimpleTrigger 和 CronTrigger 两个子类,通过一个 TriggerKey 唯一标识。

3. Job
定义一个任务,规定了任务是执行时的行为。JobExecutionContext 提供了调度器的上下文信息,Job 的数据可从 JobDataMap 中获取。

4. JobDetail
Quartz 在每次执行 Job 时,都重新创建一个 Job 实例,所以它不直接接受一个 Job 的实例,相反它接收一个 Job 实现类。描述 Job 的实现类及其它相关的静态信息,如 Job 名字、描述等。
 

 

https://www.liangzl.com/get-article-detail-13642.html  OpenWebFlow

Activiti是一个开源的自动化业务工作流引擎

工作流引擎最常见用于审批流程中,现在一线互联网公司也开始使用,并有快速推广的趋势,复杂繁多的业务流程如果采用if else实现那将是崩溃的,代码不可维护,业务流程在代码中可读性很差,所以高人设计了业务流程模型图示BPMN2.0,我们要做到就是把业务场景抽象为标准流程图,把流程图丢到流程引擎中按流程定义约定逐步流转,很显然扩展性和业务可描述性会好很多,所以工作流引擎主要用于解决复杂的业务,目前经常被提起的中台系统抽象业务为服务,也涉及大量智能的业务流程引擎做支撑。

 

http://www.learun.cn/Home/VerificationForm 体验工作流

 

cron表达式是由7个域组成的字符串,它们描述了任务计划的各个细节,这些域用空格分隔,每个域代表的含义如下:

Seconds(秒)
Minutes(分)
Hours(时)
Day-of-Month(日)
Month(月)
Day-of-Week(星期)
Year(可选字段)(年)
示例:0 0 10 ? * WED表示每个星期三的10:00:00

表达式    {秒}    {分}    {时}    {日}    {月}    {周}    {年}(可选)
允许值    0~59    0~59    0~23    1~31    1~12
JAN~DEC    1~7
SUN~SAT    1970~2099
特殊值    , - * /    , - * /    , - * /    , - * /
? L W C    , - * /    , - * /
? L C #    , - * /
说明:下面描述中,XX域则表示cron表达式相应的位置,如秒域表示cron中第1个值,日域则表示cron表达式第4个值等等。

月份简称:JAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV和DEC。
星期简称:SUN,MON,TUE,WED,THU,FRI和SAT。其中,1表示SUN。
,:用来分割在域上指定的多个值。如:MON,WED,FRI在星期域里表示星期一、星期三、星期五。
/:用于指定增量值。如分钟上使用0/15,表示从零开始,每隔15分钟,等价于0,15,30,45。如分钟上使用3/15,表示从第3分钟开始,每隔15分钟,等价于3,18,33,48,x/y中x表示开始值,y表示步长。
*:表示匹配该域的任意值。如秒上使用*表示每秒触发一次。
-:表示指定一个范围,如分钟域上10-13,表示10分、11分、12分、13分。
?:表示不关心的域,可用于日和周两个域上,主要用来解决日和周两个域的冲突。和*类似,区别在于*关心域,只是域的值可以任意,?则表示对该域不关心,不需要看该域的内容,直接忽略。
L:表示最后,是单词last的首字母,可用于日和周两个域上,用在日和周上含义不同:
日域上表示月份中日期的最后一天,如一月的第31天、非闰年二月的第28天。
周域上单独使用仅表示7或SAT,即仅表示周六。但是如果跟在其他值后,如6L或FRIL则表示该月中最后一个星期五。
L还可以指定偏移量,如日域指定L-3,表示该月倒数第3天。当使用L时其值尽量不要指定列表或范围,以免令人困惑。
W:用于日域,表示距离指定日最近的星期几(周一至周五中的一个),如:日域上值为15W则表示距离本月第15日最近的工作日。
#:用于周域,表示该月的第n个星期几。如:周域值为6#3或FRI#3表示该月的第3个星期五。
四、常用表达式示例
0 0 10,14,16 * * ?每天上午10点、下午两点、下午4点整触发
0 0/30 9-17 * * ? 每天朝九晚五内每隔半小时触发
0 15 10 ? * MON-FRI 周一至周五的上午10:15触发
0 0/5 * * * ?每5分钟触发
10 0/5 * * * ?每隔5分钟的第10秒触发(即10:00:10、10:05:10、10:10:10等)
30 * * * * ? 每半分钟触发
30 10 * * * ? 每小时的10分30秒触发
30 10 1 * * ? 每天1点10分30秒触发
30 10 1 20 * ? 每月20号1点10分30秒触发
30 10 1 20 10 ? * 每年10月20号1点10分30秒触发
30 10 1 20 10 ? 2011 2011年10月20号1点10分30秒触发
30 10 1 ? 10 * 2011 2011年10月每天1点10分30秒触发
30 10 1 ? 10 SUN 2011 2011年10月每周日1点10分30秒触发
15,30,45 * * * * ? 每15秒,30秒,45秒时触发
15-45 * * * * ? 15到45秒内,每秒都触发
15/5 * * * * ? 每分钟的每15秒开始触发,每隔5秒触发一次
15-30/5 * * * * ? 每分钟的15秒到30秒之间开始触发,每隔5秒触发一次
0 0/3 * * * ? 每小时的第0分0秒开始,每三分钟触发一次
0 15 10 ? * MON-FRI 星期一到星期五的10点15分0秒触发
0 15 10 L * ? 每个月最后一天的10点15分0秒触发
0 15 10 LW * ? 每个月最后一个工作日的10点15分0秒触发
0 15 10 ? * 5L 每个月最后一个星期四的10点15分0秒触发
0 15 10 ? * 5#3 每个月第三周的星期四的10点15分0秒触发 

标签:表示,10,quartz,15,activiti,触发,30,Job,任务调度
From: https://blog.51cto.com/u_16082902/6214179

相关文章

  • Quartz Cron Expression 格式的详细说明
    cron表达式的格式 Quartzcron表达式的格式十分类似于UNIXcron格式,但还是有少许明显的区别。区别之一就是Quartz的格式向下支持到秒级别的计划,而UNIXcron计划仅支持至分钟级。许多我们的触发计划要基于秒级递增的(例如,每45秒),因此这是一个非常好的差异。 在UNIXcron......
  • quartz简单实现多任务并发
    packagecom.scan.xxx.config.quartz;importlombok.extern.slf4j.Slf4j;importorg.quartz.*;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Co......
  • C#中Quartz的使用
    安装NuGet包:在VisualStudio中打开项目,右键单击项目名称,选择“管理NuGet包”,搜索“Quartz”并安装。创建作业:创建一个实现了IJob接口的类,该接口包含一个Execute方法,该方法将在作业运行时调用。例如:publicclassMyJob:IJob{publicTaskExecute(IJobExec......
  • 使用vue+bpmn-js实现activiti的流程设计器__Vue.js
    https://www.vue-js.com/topic/5f6c4af84590fe0031e591ef完整代码见github:https://github.com/griabcrh/vue-activiti-demo适配activitiimportactivitiModdleDescriptorfrom'../js/activiti.json';this.bpmnModeler=newBpmnModeler({container:ca......
  • 工作流引擎 Activiti 进阶教程
    一、流程实例什么是流程实例流程实例(ProcessInstance)代表流程定义的执行实例。一个流程实例包括了所有的运行节点。我们可以利用这个对象来了解当前流程实例的进度等信息。启动流程实例并添加Businesskey(业务标识)流程定义部署在activiti后,就可以在系统中通过activiti去管理......
  • Quartz 简单使用
    Scheduler每次执行,都会根据JobDetail创建一个新的Job实例,这样就可以规避并发访问的问题(jobDetail的实例也是新的)Quzrtz定时任务默认都是并发执行,不会等待上一次任务执行完毕,只要间隔时间到就会执行,如果定时任务执行太长,会长时间占用资源,导致其它任务堵塞@DisallowConcurrentEx......
  • QuartZ Cron表达式简记
    表达式范例:*/5****?每隔5秒执行一次0*/1***?每隔1分钟执行一次0023**?每天23点执行一次001**?每天凌晨1点执行一次:0011*?每月1号凌晨1点执行一次0023L*?......
  • 《Linux基础》05. 定时任务调度 · 磁盘分区与挂载 · 网络配置
    目录1:定时任务调度1.1:crontab1.2:at2:磁盘分区与挂载2.1:原理介绍2.2:硬盘说明2.3:磁盘目录情况查询2.3.1:lsblk2.3.2:df2.3.3:du2.3.4:tree2.3.5:其他查看指令示例2.4:分区与挂载2.4.1:fdisk2.4.2:mkfs2.4.3:mount2.4.4:umount2.4.5:相关配置文件2.5:挂载案例2.5.1:虚拟机添加硬盘2.5.2:硬盘分区2.5.......
  • 自用纯C语言实现任务调度(可用于STM32、C51等单片机)
    前言  这个任务调度模块的实现是形成于毕设项目中的,用在STM32中,断断续续跨度2个月实现了一些基本功能,可能后面再做其他项目时会一点点完善起来,也会多学习相关知识来强化模块的实用性和高效性,毕竟用自己自主实现出来的功能还是蛮舒心的。任务调度模式结构  整体上的结构属于......
  • 第 11 章Linux 实操篇-定时任务调度
    第11章Linux实操篇-定时任务调度11.1crond任务调度crontab进行定时任务的设置11.1.1概述任务调度:是指系统在某个时间执行的特定的命令或程序。任务调度分类:1.系统工作:有些重要的工作必须周而复始地执行。如病毒扫描等个别用户工作:个别用户可能希望执行某些程序,比......