搜索

67.5. 在 Red Hat Process Automation Manager 中以独立数据库模式持久保留进程变量

download PDF

当您创建要在您定义的进程中使用的进程变量时,红帽流程自动化管理器将这些进程变量存储在默认数据库架构中。您可以在单独的数据库架构中保留进程变量,以便在维护和实施流程数据方面具有更大的灵活性。

例如,在您的独立数据库架构中保留进程变量可以帮助您执行以下任务:

  • 以人类可读格式维护进程变量
  • 将变量提供给 Red Hat Process Automation Manager 之外的服务
  • 清除 Red Hat Process Automation Manager 中默认数据库表的日志,而不丢失进程变量数据
注意

此流程只适用于处理变量。此过程不适用于问题单变量。

先决条件

  • 您已在 Red Hat Process Automation Manager 中定义了您要在其中实施变量的进程。
  • 如果要将变量保存在 Red Hat Process Automation Manager 之外的数据库架构中,您可以创建一个数据源和您要使用的独立数据库 schema。有关创建数据源的详情,请参考 配置 Business Central 设置和属性

流程

  1. 在用作进程变量的数据对象文件中,添加以下元素来配置变量持久性:

    为变量持久性配置 Person.java 对象示例

    @javax.persistence.Entity  1
    @javax.persistence.Table(name = "Person")  2
    public class Person extends org.drools.persistence.jpa.marshaller.VariableEntity  3
    implements java.io.Serializable {  4
    
    	static final long serialVersionUID = 1L;
    
    	@javax.persistence.GeneratedValue(strategy = javax.persistence.GenerationType.AUTO, generator = "PERSON_ID_GENERATOR")
    	@javax.persistence.Id  5
    	@javax.persistence.SequenceGenerator(name = "PERSON_ID_GENERATOR", sequenceName = "PERSON_ID_SEQ")
    	private java.lang.Long id;
    
    	private java.lang.String name;
    
    	private java.lang.Integer age;
    
    	public Person() {
    	}
    
    	public java.lang.Long getId() {
    		return this.id;
    	}
    
    	public void setId(java.lang.Long id) {
    		this.id = id;
    	}
    
    	public java.lang.String getName() {
    		return this.name;
    	}
    
    	public void setName(java.lang.String name) {
    		this.name = name;
    	}
    
    	public java.lang.Integer getAge() {
    		return this.age;
    	}
    
    	public void setAge(java.lang.Integer age) {
    		this.age = age;
    	}
    
    	public Person(java.lang.Long id, java.lang.String name,
    			java.lang.Integer age) {
    		this.id = id;
    		this.name = name;
    		this.age = age;
    	}
    
    }

    1
    将数据对象配置为持久性实体。
    2
    定义用于 data 对象的数据库表名称。
    3
    创建单独的 MappedVariable 映射表,用于维护此数据对象和相关进程实例之间的关系。如果您不需要此关系,则不需要扩展 VariableEntity 类。如果没有此扩展,数据对象仍会保留,但没有包含额外的数据。
    4
    将数据对象配置为 serializable 对象。
    5
    为对象设置持久性 ID。

    要使用 Business Central 使数据对象持久,请导航到项目中的 data 对象文件,单击窗口右上角的 Persistence 图标,并配置持久性行为:

    图 67.1. Business Central 中的持久性配置

    中央的持久性
  2. 在项目的 pom.xml 文件中,添加以下用于持久性支持的依赖关系。这个依赖关系包含您在 data 对象中配置的 VariableEntity 类。

    持久性的项目依赖性

    <dependency>
      <groupId>org.drools</groupId>
      <artifactId>drools-persistence-jpa</artifactId>
      <version>${rhpam.version}</version>
      <scope>provided</scope>
    </dependency>

  3. 在项目的 ~/META-INF/kie-deployment-descriptor.xml 文件中,配置 JPA marshalling 策略以及要与 marshaller 搭配使用的持久性单元。对于定义为实体的对象,需要 JPA marshalling 策略和持久性单元。

    JPA marshaller 和 persistence 单元在 kie-deployment-descriptor.xml 文件中配置

    <marshalling-strategy>
      <resolver>mvel</resolver>
      <identifier>new org.drools.persistence.jpa.marshaller.JPAPlaceholderResolverStrategy("myPersistenceUnit", classLoader)</identifier>
      <parameters/>
    </marshalling-strategy>

  4. 在项目的 ~/META-INF 目录中,创建一个 persistence.xml 文件,用于指定您要保留的进程变量:

    带有数据源配置的 persistence.xml 文件示例

    <persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:orm="http://java.sun.com/xml/ns/persistence/orm" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.0" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd http://java.sun.com/xml/ns/persistence/orm http://java.sun.com/xml/ns/persistence/orm_2_0.xsd">
        <persistence-unit name="myPersistenceUnit" transaction-type="JTA">
            <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
            <jta-data-source>java:jboss/datasources/ExampleDS</jta-data-source>  1
            <class>org.space.example.Person</class>
            <exclude-unlisted-classes>true</exclude-unlisted-classes>
            <properties>
                <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect"/>
                <property name="hibernate.max_fetch_depth" value="3"/>
                <property name="hibernate.hbm2ddl.auto" value="update"/>
                <property name="hibernate.show_sql" value="true"/>
                <property name="hibernate.id.new_generator_mappings" value="false"/>
                <property name="hibernate.transaction.jta.platform" value="org.hibernate.service.jta.platform.internal.JBossAppServerJtaPlatform"/>
            </properties>
        </persistence-unit>
    </persistence>

    1
    设置进程变量保留的数据源

    要使用 Business Central 配置 marshalling 策略、持久性单元和数据源,请导航至项目 Settings Deployments Marshalling Strategy 和 Project Settings Persistence

    图 67.2. JPA marshaller 配置 Business Central

    JPA marhsalling 策略

    图 67.3. Business Central 中的持久性单元和数据源配置

    持久性单元
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.