Flowable以交易方式执行流程,可以根据需要进行配置。我们先看看Flowable如何正常地处理事务。如果触发Flowable(启动一个进程,完
成一个任务,发出执行信号),Flowable将在进程中前进,直到它在每个活动执行路径上达到等待状态。更具体地说,它通过进程图执行深度优先搜索,并在每个执行分支上达到等待状态时返回。等待状态是一个“稍后”执行的任务,这意味着Flowable会持续当前执行并等待再次触发。触发器可以来自外部来源,例如,如果我们有用户任务或接收消息任务,或者如果我们有定时器事件,则来自Flowable本身。

我们看到一个带有用户任务,服务任务和计时器事件的BPMN流程。完成用户任务和验证地址是同一个工作单元的一部分,所以它应该成功或失败。这意味着如果服务任务抛出一个异常,我们想要回滚当前事务,以便执行追踪到用户任务,用户任务仍然存在于数据库中。这也是Flowable的默认行为。在(1)应用程序或客户端线程完成任务。在同一个线程中,Flowable现在正在执行服务并前进,直到达到等待状态(在这种情况下为计时器事件(2))。然后它将控制权返回给调用者(3),可能会提交事务(如果它是由Flowable启动的话)。

在某些情况下,这不是我们想要的。有时我们需要对流程中的事务边界进行自定义控制,以便能够对逻辑工作单元进行范围。这是异步延续
发挥的地方。考虑以下过程(片段):

这一次,我们正在完成用户任务,生成发票,然后将该发票发送给客户。这次发票的生成不是同一工作单元的一部分,所以如果生成发票失败,我们不希望回滚用户任务的完成。我们想要Flowable做的是完成用户任务(1),提交事务并将控制返回给调用应用程序。然后我们想要在后台线程中异步生成发票。这个后台线程是Flowable作业执行器(实际上是一个线程池),它定期轮询数据库的作业。在幕后,当我们到达“生成发票”任务时,我们正在为Flowable创建一个工作“消息”,以便稍后继续处理并将其保存到数据库中。这份工作然后由工作执行者拿起并执行。我们也给当地的工作执行者一点提示,有一个新的工作,以提高业绩。

为了使用这个特性,我们可以使用flowable:async =“true”扩展名。所以,例如,服务任务如下所示:

<serviceTask id="service1" name="Generate Invoice"
flowable:class="my.custom.Delegate"
flowable:async="true" />

可以在以下BPMN任务类型中指定async:task,serviceTask,scriptTask,businessRuleTask,sendTask,receiveTask,userTask,subProcess,callActivity。

在userTask,receiveTask或其他等待状态下,异步延续允许我们在单独的线程/事务中执行启动执行侦听器。

上面文章来自盘古BPM研究院:http://vue.pangubpm.com/
文章翻译提交:https://github.com/qiudaoke/flowable-userguide
了解更多文章可以关注微信公众号:

Flowable入门系列文章62 - 异步延续相关推荐

  1. Flowable入门系列文章193 - 禁用批量插入和安全脚本

    1.禁用批量插入 默认情况下,引擎将在批量插入中将同一数据库表的多个插入语句组合在一起,从而提高性能.已经针对所有支持的数据库进行了测试和实施. 但是,它可能是受支持和测试过的数据库的特定版本,不允许 ...

  2. Flowable入门系列文章11 - Flowable API 01

    1.Process Engine API和服务 引擎API是与Flowable进行交互的最常见的方式.主要的出发点是ProcessEngine,可以按照配置部分所述的几种方式创建 .从 Process ...

  3. Flowable入门系列文章35 - Activity解读 11

    1.消息中间捕捉事件 描述 中间捕获 消息事件捕获具有指定名称的消息. 图形表示法 中间捕捉消息事件可视化为一个典型的中间事件(圆圈内有较小的圆圈),里面有消息图标.消息图标是白色(未填充),以指示其 ...

  4. Flowable入门系列文章25 - Activity解读 01

    事件被用来模拟流程生命周期中发生的事情.事件总是被视为一个圆圈.在BPMN 2.0中,存在两个主要事件类别:捕捉事件和抛出事件. 捕捉:当进程执行到达事件时,它将等待触发器发生.触发器的类型由XML中 ...

  5. Flowable入门系列文章47 - 电子邮件任务

    Flowable允许您通过向一个或多个收件人发送电子邮件的自动邮件服务任务来增强业务流程,包括支持cc,bcc,HTML内容等.请注意,邮件任务不是 BPMN 2.0规范的正式任务(因此没有专门的图标 ...

  6. Flowable入门系列文章195 - JMX的组态和服务URL

    1.组态 JMX使用默认配置,以便于使用最常用的配置进行部署.但是,更改默认配置很容易.您可以通过编程或通过配置文件来完成.下面的代码片段显示了如何在配置文件中完成这个工作: <bean id= ...

  7. Flowable入门系列文章194 - JMX的基本介绍和属性说明

    1.介绍 可以使用标准的Java管理扩展(JMX)技术连接到Flowable引擎,以获取信息或更改其行为.任何标准的JMX客户端都可以用于这个目的.启用和禁用Job Executor,部署新的流程定义 ...

  8. Flowable入门系列文章49 - 骡子任务

    mule任务允许你发送消息给mule,增强了Flowable的集成功能.请注意,Mule任务不是 BPMN 2.0规范的正式任务(因此没有专门的图标).因此,在Flowable中,mule任务被实现为 ...

  9. Flowable入门系列文章90 - 一般可流动的REST原则 01

    1.安装和认证 Flowable包含一个REST API给Flowable引擎,可以通过将flowable-rest.war文件部署到像Apache Tomcat这样的servlet容器来安装.但是, ...

最新文章

  1. matlab练习程序(Log Polar变换)
  2. 多分类f1分数_如何计算多标签分类中的F1测度?
  3. 【Java 虚拟机原理】垃圾回收算法 ( Java 虚拟机内存分区 | 垃圾回收机制 | 引用计数器算法 | 引用计数循环引用弊端 )
  4. 列了一些自己会但是不怎么精通的编程语言和知识,做个记录,空余时间加强学习...
  5. codevs2693 上学路线(施工)
  6. 相对熵与交叉熵的区别
  7. 读博熬不住了,拿个硕士学位投身业界如何?看过来人怎么说
  8. java实现的代理的两种办法
  9. 前端学习(1965)vue之电商管理系统电商系统之渲染添加参数的按钮
  10. Echarts富文本rich及格式化工具formatter的使用
  11. 在win10环境中安装xilinx vivado IDE时出现的问题及解决方法
  12. 计算机ps一级知识点,2017年计算机等级一级Photoshop常考知识点
  13. 【bzoj 3815】卡常数
  14. TerraSolid工具试用系列3----TerraModel从点云生成并导出DEM或DSM备注
  15. 计算机技术应用基础知识,计算机三级PC技术章节习题及答案:计算机应用的基础知识...
  16. HTML iframe标签用法案例详解
  17. 九种linux查询日志命令总结
  18. html/css面试题(3)
  19. Javascript的常见数据类型以及相应操作
  20. 网络安全9大思维的实战检验

热门文章

  1. 微信小程序开发——base64位图片显示问题
  2. BertTokenizer在处理中英文混合序列中遇到的问题
  3. 软件安全 实验 2 软件动态、静态分析技术 TraceMe.exe OllyDbg IDA
  4. 推荐计算机专业毕业好投的一些知名出版社旗下闭源期刊
  5. 天津城市职业学院计算机查询,天津城市职业学院教务管理系统成绩查询、网上选课查分登录入口...
  6. 《动态壁纸 : 手机壁纸大全》用户协议
  7. Android APK文件结构 完整打包编译的流程 APK安装过程 详解
  8. 信息系统项目管理师-高级-计算类-进度管理
  9. WIN10远程协助无法控制的解决方法
  10. 亚马逊后台如何下载库存文件,如何在亚马逊后台用表格用SKU删除产品,添加上传产品