,就是定时器(2),然后它会返回给调用者(3),并提交事务(如果事务是由Activiti开启的)
有时需要自定义控制流程中事务的边界,把业务逻辑包裹在一起.这就需要使用异步执行:
完成了用户任务...对于userTask,receiveTask和其他等待状态,异步执行的作用是让开始流程监听器运行在一个单独的线程或者事务中
排他任务
从Activiti 5.9开始 ,JobExecutor能保证同一个流程实例中的...,可能相关的job都在同一时间被获取,被JobExecutor分配给不同的工作线程执行
结果是,三个单独的服务执行使用的事务在到达并发汇聚时可能重叠:
如果出现了这个问题,这些事务是互相不可见的,其他事务同时到达了相同的并发汇聚...:
Activiti只会对同一个job重试估计次数(默认配置为3).之后,job还会在数据库里,但是不会再重试了.意味着这个操作必须手工执行job的触发
如果job有非事务方面的效果,不会因为失败的事务回滚...:如果“预定演唱会门票”服务没有与Activiti共享事务,重试job可能导致我们预定了过多门票
针对这些问题,在Activiti中推出了新的概念:排他job
排他Job
对于一个流程实例,排他任务不能同时执行两个