Activiti定时任务

作者:Jesai

傻逼一样的去坚持,就会有牛逼的结果

情景:

某公司有一个OA系统,审批环节是经理。有一天,经理出差了,然后下面突然有一份决定公司某个重大项目是否能顺利中标的决策需要呈批请示。但是刚好这个经办的员工不知道经理已经出差(或者这个呈批必须要经过经理审批的环节,没有跳过,也没有转发)。巧了,刚好这个经理出差的时候,没有委托任何人来办理这个事情。然后这个呈批就卡死在经理的环节上面没有人办理了。怎么办?问经理要密码?重新发起一个呈批?如果这样子做的话,说明这个OA系统的流程还不够灵活,需要管理员或者人工手动去协调系统。

 

方案:

那么我们可以设置Activiti的定时任务。一旦超过这个办理的期限,那么,流程就会自动执行一些操作。下面我做的一个方案是一旦超过了办理期限,系统自动发送邮件提醒办理者。

 

要素:

(1)定时任务边界

(2)定时任务时间

(3)超时处理

 

Activity定时任务,需要启用JOB模块:

 

   <!-- 定时任务 -->
<property name="jobExecutorActivate" value="true" />

这里如果设置为false,是不会触发定时任务的。

 

设计流程:

 

流程部分代码:

 <boundaryEvent id="sid-2C3A3C84-B2E4-4B29-A319-0AFBC17544F0" attachedToRef="sid-C8781FAE-02B8-4F8D-9A7D-A8AB4A8CB95A" cancelActivity="false">

 <timerEventDefinition>

 <timeDate>2016-06-04T15:03:00</timeDate>

 </timerEventDefinition>

 </boundaryEvent>

 <serviceTask id="sid-F8D7E189-DB9F-49C2-87D6-D466398A889E" name="超时发送邮件" activiti:type="mail">

 <extensionElements>

 <activiti:field name="to">

 <activiti:string>763630473@qq.com</activiti:string>

 </activiti:field>

 <activiti:field name="from">

 <activiti:string>763630473@qq.com</activiti:string>

 </activiti:field>

 <activiti:field name="subject">

 <activiti:string>待办超时</activiti:string>

 </activiti:field>

 <activiti:field name="text">

 <activiti:string>你有一个待办任务已经超时。</activiti:string>

 </activiti:field>

 </extensionElements>

 </serviceTask>

超时的时间设置(其中一种)

(1)需要设置经理节点

(2)设置超时任务边界的时间

 

说明:

(1)必须要设置一个时间,否则任务不执行

(2)取消活动为true,那么超时会直接取消这个流程活动,为false,不取消

(3)关于时间设置

Main config中的数据格式均为:ISO_8601格式:(P ,Y,M,W,D,T,.H,M,S)或 cron时间格式:

 

Iso_8601格式:

 

-----Time duration:延时多长时间后触发。例:P10D 表示10天以后触发

 

-----time date:什么时间触发。例:2011-03-12T12:12:23 表示在2011年03 月12日 12:12:23触发

 

      ---time cycle:循环规则:

 

R【循环次数】【/开始时间】/时间间隔【/结束时间】。

 

例:R3/PT10 表示重复3次,每次间隔10小时

 

  从2004年5月6日北京时间下午1点起时间间隔半年零5天3小 时循环,且循环3次,可以表示为  

R3/2004-05-06T130000+08/P0Y6M5DT3H0M0S。

 

以1年2个月为循环间隔,无限次循环,最后循环终止于2025年1    月1日,可表示为R/P1Y2M/2025-01-01

 

 

 

Cron 时间格式:seconds minutes hours day-of -mouth mouth,day-of-week year

 

其中*表示这个域上所有的合法值

 

例:0 * 17 * * ? 表示每天下午5点到5:59每分钟触发一次

 

?表示不指定该域上的值(只能用在日域或周域上,且不能同时在两 个域上使用,即假如在在其中的一个域上指定了值,必要再另一 个上放?)

 

,表示在某个域上指定一个值列表

 

例:0 10,44 14 ? 3 WEB  表示三月中每个星期三的下午2:10 和下午的2:44触发

 

- 表示在某个域上指定一个值范围

 

例:0 45 3-8 ? * * 表示上午3点到上午8点的45分时触发

 

m/n 表示某个域的值从m开始,按n递增

 

例:0/15 0/30 * * * ? 表示整点和半点时每15秒触发

 

L 表示某个域上允许的最后一个值(只能用在日域和周域上,用在 日域上时,表示当月的最后一天触发;用在周域上,表示周的最 后一天,即周六触发)

 

例:0 0 12 ? * 2L 表示每个月中的最后一个星期一的12:00触发

 

W 表示里指定日期最近的工作日(只用在日域上,其只能指定单天, 不能指定范围或列表)

 

例:在日域上指定15W,那么如果15号是工作日,就在15号 触发

 

如果15号是周六,就在14号触发

 

如果15号是周日,就在16号触发

 

# 表示月份中的第几周的哪一天(只用在周域上)

 

例:6#3 表示某个月的第三个星期五

 

最后执行:

Activiti交流QQ群:634320089

关于邮件任务我之前已经说过,就不重复!

Activiti定时任务的更多相关文章

  1. activiti学习总结

    Activiti界面元素的使用总结 一.图形设计中元素的使用 1.SequenceFlow:连接线,可以连接两个任务,来管理流程实例的流向 -----General -----id:流程的id,用与程 ...

  2. activiti 引擎 数据库设计说明书

    1.结构设计 1.1.    逻辑结构设计 Activiti使用到的表都是ACT_开头的. ACT_RE_*: ’RE’表示repository(存储),RepositoryService接口所操作的 ...

  3. Activiti工作流学习-----基于5.19.0版本(2)

    二.activiti.cfg.xml的其他bean节点配置 2.1 新特性:Job Executor和Async Executor 从5.17.0版本的activiti开始提供作业执行者(Job Ex ...

  4. activiti框架 数据库设计说明

    1.结构设计 1.1.    逻辑结构设计 Activiti使用到的表都是ACT_开头的. ACT_RE_*: ’RE’表示repository(存储),RepositoryService接口所操作的 ...

  5. 基于Activiti的流程应用开发平台JSAAS-WF V5.3

    第1章 产品概述及体系架构 1.1.概述 红迅JSAAS-WF工作流平台V5是广州红迅软件有限公司面向合作伙伴以及有IT运维团队中大型企业提供新一代的流程管理产品,它基于流行的JAVA开源技术上构建, ...

  6. activiti数据库表结构剖析

    1.结构设计 1.1.    逻辑结构设计 Activiti使用到的表都是ACT_开头的. ACT_RE_*: ’RE’表示repository(存储),RepositoryService接口所操作的 ...

  7. activiti 基础

    一:activiti 入门 作者:fenng 商丘 工作流(Workflow) 就是业务过程的部分或整体在计算机应用环境下的自动化主要解决的是"使在多个参与者之间按照某种定义的规则传递文档, ...

  8. 【原】Spring activiti 环境搭建之数据库创建

    由于在开发工作流的时候,避免不了要保存一些数据和流程走向;所以在搭建Spring activiti开发环境的时候需要把官方提供的23张表创建到我们的DB,后续的流程都会在这些表中记录. 1.创建代码如 ...

  9. Activiti工作流学习要点

    1. 1个插件 在Eclipse中安装Activiti插件,让你可以在Eclipse中绘制Activiti工作流图 2. 1个引擎 ProcessEngine对象,Activiti工作流引擎.这是Ac ...

随机推荐

  1. H3C RIPv2配置任务

  2. 2018-2-13-win10-uwp-unix-timestamp-时间戳-转-DateTime

    title author date CreateTime categories win10 uwp unix timestamp 时间戳 转 DateTime lindexi 2018-2-13 17 ...

  3. 小程序 scroll-view 左右横向滑动没有效果(无法滑动)问题

    scroll-view 中的需要滑动的元素不可以用 float 浮动:

  4. 【39.68%】【CF 714 C】Filya and Homework

    time limit per test 1 second memory limit per test 256 megabytes input standard input output standar ...

  5. dotnet Framework 源代码 类库的意思

    本文告诉大家 dotnet framework 的源代码类库的意思 下面列出来 dotnet framework 源代码的各个类库的作用. System System 命名空间包含基本类和基类,这些类 ...

  6. c#中索引器

    https://zhidao.baidu.com/question/59675980.html 不是必要的..相当于数学中的一个函数

  7. Iptables&Firewalld防火墙

    一.IPtables 1.IPtables入门简介 Netfilter/Iptables(以下简称Iptables)是unix/linux自带的一款优秀且开放源代码的完全自由的基于包过滤的防火墙工具, ...

  8. Raid相关操作与注意事项记录

    Raid相关操作与注意事项 Raid5 SATA盘组成的Raid5,在保护数据的前提下达到高性能: RAID要有BBU Current Cache Policy采用WriteBack,No Write ...

  9. myeclipse上进行tomcat远程调试

    1.将Tomcat中的bin目录下的startup.bat启动脚本复制一份到本目录下并且修改名字为startup-debug.bat,然后打开startup-debug.bat文件 再startup- ...

  10. $Noip2012/Luogu1083$ 借教室

    $Luogu$ $Sol$ 区间整体加减? 差分+树状数组维护前缀和! 那每给一个人借完教室之后都要判断一下现在合不合法?那复杂度比暴力还不如些... 注意到这里的单调性,假设给前$x$个人借完教室之 ...