关于jBPM 5.2中getProcessInstancesWaitingForEvent方法调用频率与配置的问询
关于
getProcessInstancesWaitingForEvent方法的调用频率与配置说明 调用频率说明
- 该方法的调用频率由
JPASignalManager的事件触发逻辑直接决定:当系统需要向等待特定事件的流程实例发送信号时,JPASignalManager会调用此方法,将目标流程实例加载到ProcessInstanceManager缓存中。具体调用次数取决于业务场景中事件触发的频次——事件触发越频繁,方法调用次数越多。
配置可能性
- 目前没有官方提供的直接配置项可调整该方法的调用频率。它的调用逻辑是
JPASignalManager内部的默认行为,嵌入在引擎的信号处理流程中。若需自定义控制,只能通过扩展或重写JPASignalManager的相关逻辑实现,属于定制化开发范畴,无开箱即用的配置参数。
类注释翻译
/**
- 此方法由{@link JPASignalManager}用于将{@link ProcessInstance}实例加载到{@link ProcessInstanceManager}缓存中,以便后续发送信号。
- 遗憾的是,关于锁定机制,该方法并非始终在事务中调用,这意味着添加查询锁定逻辑会引发异常,不可行。
- 由于{@link org.drools.core.command.SingleSessionCommandService}的设计基于同步的execute(...)方法,一个线程创建流程实例时,另一线程无法同时尝试向其发送信号。这意味着因该查询缺乏悲观锁定而可能导致的幻读竞态条件不会发生。
- 当然,若使用多个ksession同时与同一流程实例交互,则上述情况不成立。不过这几乎适用于所有涉及流程实例的场景,因此无需赘述。
*/
内容的提问来源于stack exchange,提问作者Marius
相关产品推荐
相关产品推荐

