流程引擎缓存

部署缓存

所有流程定义都将被缓存(在解析之后),以避免每次需要流程定义时都轮询数据库,因为流程定义数据不会更改。这减少了引用流程定义的等待时间,从而提高了系统的性能。

自定义缓存的最大容量

如果一个进程定义很多,则高速缓存可能会占用大量内存,并且工作内存的容量可能会达到其极限。因此,在达到最大容量后,将从高速缓存中逐出最近最少使用的进程定义条目,以满足容量条件。但是,如果仍然遇到内存不足的问题,则可能有必要降低缓存的最大容量。

通过更改最大容量,该配置会影响以下所有缓存组件:

1、工艺定义

2、案例定义

3、决策定义

4、决策需求定义

在流程引擎配置中,可以指定缓存的最大容量。默认值为1000。创建流程引擎后,将设置此属性,并将相应地扫描和部署所有资源。例如,最大容量可以设置为120,如下所示:

....

 

 

注意:上述所有组件使用相同的容量,并且不可能为每个组件单独设置容量大小。此外,在默认的缓存实现中,容量大小与缓存中使用的最大元素数相对应。这就是说,您用尽的物理存储的绝对量(例如,兆字节)取决于相应过程定义所需的大小。

提供自定义缓存实现

一旦超过最大容量,缓存的默认实现将逐出最近最少使用的条目。如果有必要通过不同的标准选择收回的缓存条目,则可以提供自己的缓存实现。

通过从org.pangubpm.util.commons包实现Cache接口,可以做到这一点。例如,假设已实现以下类:

public class MyCacheImplementation implements Cache {

 

// implement interface methods and your own cache logic here}

接下来,需要将MyCacheImplementation插入自定义CacheFactory中:

public class MyCacheFactory extends CacheFactory {

  @Override

  public Cache createCache(int maxNumberOfElementsInCache) {

    return new MyCacheImplementation(maxNumberOfElementsInCache);

  }}

工厂用于为不同的缓存组件(例如流程定义或案例定义)提供缓存实现。一旦完成,就可以使用流程引擎配置,在其中可以指定一组资源。创建流程引擎后,将扫描并部署所有这些资源。在给定的示例中,现在可以按以下方式部署自定义缓存工厂:

....

 

 技术支持:盘古BPM工作流平台

相关教程