activiti学习(十三)

101 阅读2分钟

image.png 持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第13天,点击查看活动详情

Activiti的使用

之前结束了一下Activiti的一些功能,我们接着看看剩余的功能使用。

通过表达式或脚本暴露内部bean

默认情况下,在activiti中指定的所有activiti.cfg.xml配置或Spring配置文件可用于表达式和脚本中。如果要限制配置文件中bean的可见性,可以在流程引擎配置中配置名为bean的属性。ProcessEngineConfiguration中的bean属性是一个映射。指定该属性时,只有在该映射中指定的bean对表达式和脚本可见。公开的bean将以您在该映射中指定的名称公开。

发布缓存配置

所有流程定义在解析之后都会被缓存,以避免每次需要流程定义时都查询数据库,因为流程定义数据不会更改。默认情况下,此缓存没有限制。要限制定义缓存,可以用以下属性:

<property name="processDefinitionCacheLimit" value="10" />

设置这个属性将用具有提供的强制限制的LRU缓存替换默认hashmap缓存。当然,这个属性的最佳取值取决于存储的进程定义总量以及所有运行时进程实例在运行时实际使用的进程定义数。 您还可以注入自己的缓存实现。这必须是实现org.activiti.engine.impl.persistence.deploy.DeploymentCache接口,如下:

<property name="processDefinitionCache">
  <bean class="org.activiti.MyCache" />
</property>

有一个类似的属性称为knowledgeBaseCacheLimit和knowledgeBaseCache,用于配置规则缓存。只有在流程中使用“规则”任务时,才需要这样做。

日志配置

所有日志记录(activiti、spring、mybatis等) 通过SLF4J路由,你可以自由配置日志框架的实现。 默认情况下,activiti引擎依赖项中不存在SFL4J所依赖的jar,需要将它引用到自己的项目中去,以便使用你自己的日志框架。如果没有添加任何实现jar,SLF4J将使用NOP-logger,除了警告以外,不会记录其它信息。有关这些绑定的详细信息www.slf4j.org/codes.html#… 对于Maven,添加一个类似这样的依赖项(这里使用log4j),如下:

<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-log4j12</artifactId>
</dependency>

activiti ui和activiti rest webapps配置为使用Log4j。在运行所有activiti-*模块的测试时,也会使用Log4j。
需要注意的是:在类路径中使用带有commons日志的容器时:为了将SLF4J和spring对接,使用了桥接模式。如果您的容器提供了commons日志记录实现,需要配置如下,使用Maven时的示例(版本省略):

<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>jcl-over-slf4j</artifactId>
</dependency>