第 67 章 流程引擎中的持久性和事务


进程引擎实施进程状态的持久性。该实施使用带有 SQL 数据库后端的 JPA 框架。它还可以将审计日志信息存储在数据库中。

流程引擎还支持使用 JTA 框架执行进程的事务,依靠持久后端支持事务。

67.1. 进程运行时状态的持久性

进程引擎支持运行进程实例的运行时状态的持久性存储。由于它存储了运行时状态,如果进程引擎停止或遇到问题,它可以继续执行进程实例。

进程引擎还会持久存储当前和之前进程状态的进程定义和历史日志。

您可以使用 JPA 框架指定的 persistence.xml 文件在 SQL 数据库中配置持久性。您可以插入不同的持久性策略。有关 persistence.xml 文件的详情请参考 第 67.4.1 节 “在 persistence.xml 文件中配置”

默认情况下,如果您没有在进程引擎中配置持久性,则进程信息(包括进程实例状态)不会被具有持久性。

当进程引擎启动进程时,它会创建一个 进程实例,它代表在该特定上下文中执行进程。例如,在执行处理销售订购的进程时,会为每个销售请求创建一个进程实例。

进程实例包含进程的当前运行时状态和上下文,包括任何进程变量的当前值。但是,它不包括关于该进程过去状态历史记录的信息,因为此信息不需要持续执行进程。

当进程实例的运行时状态具有持久性时,您可以在进程引擎失败或停止时恢复所有正在运行的进程的执行状态。您还可以从内存中删除特定进程实例,然后在以后恢复它。

如果您将进程引擎配置为使用持久性,它会自动将运行时状态存储到数据库中。您不需要在代码中触发持久性。

当您从数据库恢复进程引擎状态时,所有实例都会自动恢复到其上次记录的状态。如果进程实例被触发,例如,已过期的计时器、完成进程实例请求的任务或向进程实例发送信号时,进程实例会自动恢复。您不需要加载单独的实例,并手动触发其执行。

流程引擎还会根据需要自动重新加载进程实例。

67.1.1. 安全持久性点

进程引擎在执行过程中,将进程实例的状态保存在 安全点上

当进程实例启动或恢复之前等待状态的执行时,进程引擎将继续执行,直到无法执行更多操作。如果不能执行更多操作,这表示进程已完成,或者已到达等待状态。如果进程包含多个并行路径,则所有路径都必须到达等待状态。

在执行过程中,这个点被视为一个安全点。此时,进程引擎将进程实例的状态以及受执行影响的任何其他进程实例存储在持久性存储中。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat