Руководство по архивированию экземпляров процессов и их определений

# Настройка сервера для возможности архивирования экземпляров процессов и их определений

Прежде всего, сервер должен быть собран с включенным модулем wfe-archiving.

Настройка сервера состоит из следующих действий.

  • Создайте каталог расширений wfe.custom, (полный путь для jboss4 — ${JBOSS4_HOME}/server/default/wfe.custom, полный путь для jboss7 — ${JBOSS7_HOME}/standalone/wfe.custom)

подробнее см. Концепция настроек

  • Создайте файл wfe.custom.system.context.xml для определения бинов, со следующим содержимым
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:jee="http://www.springframework.org/schema/jee"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:task="http://www.springframework.org/schema/task"
xsi:schemaLocation="
http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/tx 
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/aop 
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/jee 
http://www.springframework.org/schema/jee/spring-jee-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/task 
http://www.springframework.org/schema/task/spring-task-3.0.xsd"> 
<bean id="hibernatePropertiesA" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
 <property name="locations">
  <list>		
   <value>classpath:database-archive.properties</value>				
   <value>classpath*:wfe.custom.database-archive.properties</value>			    
  </list>
 </property>
</bean>
<bean id="sessionFactoryA" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
 <property name="hibernateProperties" ref="hibernatePropertiesA" />
 <property name="entityInterceptor">
  <bean class="ru.runa.wfe.commons.hibernate.CacheInterceptor" />
 </property>
 <property name="packagesToScan">
  <list>
   <value>ru.runa.wfe</value>
  </list>
 </property>
</bean>
<bean id="hibernateTemplateA" class="org.springframework.orm.hibernate3.HibernateTemplate">
 <property name="sessionFactory" ref="sessionFactoryA" />
</bean>
<bean id="archProcessDAO" class="ru.runa.wfe.execution.dao.ProcessDAO">
 <property name="hibernateTemplate" ref="hibernateTemplateA" />
</bean>
<bean id="archSwimlaneDAO" class="ru.runa.wfe.execution.dao.SwimlaneDAO">
 <property name="hibernateTemplate" ref="hibernateTemplateA" />
</bean>
<bean id="archDeploymentDAO" class="ru.runa.wfe.definition.dao.DeploymentDAO">
 <property name="hibernateTemplate" ref="hibernateTemplateA" />
</bean>
<bean id="archConstantDAO" class="ru.runa.wfe.commons.dao.ConstantDAO">
 <property name="hibernateTemplate" ref="hibernateTemplateA" />
</bean>
<bean id="archExecutorDAO" class="ru.runa.wfe.user.dao.ExecutorDAO">
 <property name="hibernateTemplate" ref="hibernateTemplateA" />		
</bean>
<bean id="archPermissionDAO" class="ru.runa.wfe.security.dao.PermissionDAO">
 <property name="hibernateTemplate" ref="hibernateTemplateA" />
</bean>
<bean id="archLocalizationDAO" class="ru.runa.wfe.commons.dao.LocalizationDAO">
 <property name="hibernateTemplate" ref="hibernateTemplateA" />
</bean>
<bean id="archTokenDAO" class="ru.runa.wfe.execution.dao.TokenDAO">
 <property name="hibernateTemplate" ref="hibernateTemplateA" />
</bean>
<bean id="archivingInitLogic" class="ru.runa.wfe.service.logic.archiving.ArchivingInitializerLogic"/>
 <bean id="archivingLogic" class="ru.runa.wfe.service.logic.archiving.ArchivingLogic"/>	
</beans>

  • настройте соединение с БД предназначенной для архивации экземпляров процессов и их определений

Система использует Hibernate ORM и может работать на любой СУБД. Настройка аналогична настройке соединения с основной БД, подробнее см. в руководстве по настройке сервера, Настройка соединения с БД

Например, в случае использования MSSQL Server и jboss7, выполните следующие действия:

1). Создайте модуль для jdbc драйвера, подробнее MSSQL Server

2). Добавьте еще одну секцию источника данных и драйвера в standalone.xml,

<xa-datasource jndi-name="java:/mssqlds-arch" pool-name="java:/mssqlds_arch_Pool" enabled="true" use-java-context="true">
 <xa-datasource-property name="URL">
  jdbc:jtds:sqlserver://localhost;instanceName=.\SQLEXPRESS;
 </xa-datasource-property>
 <xa-datasource-property name="serverName">
  localhost
 </xa-datasource-property>
 <xa-datasource-property name="databaseName">
  wfe-archive
 </xa-datasource-property>
 <driver>mssql</driver>
 <transaction-isolation>TRANSACTION_READ_COMMITTED</transaction-isolation>
 <xa-pool>
  <min-pool-size>5</min-pool-size>
  <max-pool-size>30</max-pool-size>
 </xa-pool>
 <security>
  <user-name>wfe</user-name>
  <password>wfe</password>
 </security>
</xa-datasource>
<drivers>
 <driver name="mssql" module="net.sourceforge.jtds">
  <driver-class>net.sourceforge.jtds.jdbc.Driver</driver-class>
  <xa-datasource-class>net.sourceforge.jtds.jdbcx.JtdsDataSource</xa-datasource-class>
 </driver>
</drivers>

Имя БД, имя сервера БД и имя экземпляра БД необходимо выставить в соответствии с используемыми.

  • выполните привязку созданного источника данных и установку соответствующего диалекта, подробнее см. в руководстве по настройке сервера, Настройка соединения с БД

Например, в случае использования MSSQL Server и jboss7, создайте файл wfe.custom.database-archive.properties в каталоге wfe.custom со следующим содержимым

hibernate.connection.datasource=java:/mssqlds-arch
hibernate.dialect=ru.runa.wfe.commons.hibernate.SQLServerUnicodeDialect

# Запуск клиентских приложений

Сборка приложений архивации описана в руководстве разработчика.

Для приложения архивации процессов (BackupProcesses) вводятся параметры командной строки:

  • количество минут работы приложения
  • количество дней назад, когда был завершен процесс

Для приложения архивации определений процессов (BackupProcessDefinitions):

  • количество минут работы приложения
  • количество дней назад, когда было загружено определение

Для приложения восстановления процесса (RestoreProcess), вводится параметр командной строки:

  • идентификатор процесса, который необходимо восстановить

Для приложения восстановления определения процесса (RestoreProcessDefinition) вводятся следующие параметры:

  • имя определения
  • версия определения

Настройки имени и пароля пользователя находятся в файле archiving-client.properties

Замечание. Если имя определения состоит из нескольких слов, разделенных пробелами, следует записать его в кавычках (одинарных ‘ или в двойных “), например:

cmd> java  –jar wfe-archiving-4.2.0-SNAPSHOT.jar  ‘Пример Эскалации’ 1

Замечание. Архивация определений производится только для тех определений, для которых не существует процессов.