ActivitiのProcessEngine構成
1. 概要
以前のActiviti with Javaの紹介記事では、ProcessEngineの重要性を確認し、フレームワークによって提供されるデフォルトの静的APIを介して作成しました。
デフォルト以外にも、ProcessEngineを作成する方法があります。これについてはここで説明します。
2. ProcessEngineインスタンスの取得
ProcessEngineのインスタンスを取得する方法は2つあります。
-
ProcessEnginesクラスを使用する
-
プログラムで、ProcessEngineConfigurationを介して
これら両方のアプローチの例を詳しく見てみましょう。
3. ProcessEnginesクラスを使用してProcessEngineを取得する
通常、ProcessEngineは、activiti.cfg.xml,と呼ばれるXMLファイルを使用して構成され、デフォルトの作成プロセスでも使用されます。
この構成がどのように見えるかの簡単な例を次に示します。
ここで、エンジンの永続性の側面がどのように構成されているかに注目してください。
そして今、私たちはProcessEngineを得ることができます:
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
4. ProcessEngineConfigurationを使用してProcessEngineを取得する
エンジンを取得するデフォルトルートを通過する–ProcessEngineConfigurationを作成する方法は2つあります。
-
XML Configを使用する
-
Java Configを使用する
XML構成から始めましょう。
セクション2.1で述べたように。 –プログラムでProcessEngineConfigurationを定義し、そのインスタンスを使用してProcessEngineを構築できます。
@Test
void whenCreateDefaultConfiguration_thenGotProcessEngine() {
ProcessEngineConfiguration processEngineConfiguration
= ProcessEngineConfiguration
.createProcessEngineConfigurationFromResourceDefault();
ProcessEngine processEngine
= processEngineConfiguration.buildProcessEngine();
assertNotNull(processEngine);
}
メソッドcreateProcessEngineConfigurationFromResourceDefault()はactiviti.cfg.xmlファイルも検索するため、buildProcessEngine()APIを呼び出すだけで済みます。
この場合、検索するデフォルトのBean名はprocessEngineConfigurationです。 構成ファイル名またはBean名を変更する場合は、他の使用可能な方法を使用してProcessEngineConfiguration.を作成できます。
いくつかの例を見てみましょう。
まず、構成ファイル名を変更し、APIにカスタムファイルを使用するように依頼します。
@Test
void whenGetProcessEngineConfig_thenGotResult() {
ProcessEngineConfiguration processEngineConfiguration
= ProcessEngineConfiguration
.createProcessEngineConfigurationFromResource(
"my.activiti.cfg.xml");
ProcessEngine processEngine = processEngineConfiguration
.buildProcessEngine();
assertNotNull(processEngine);
}
それでは、Bean名も変更しましょう。
@Test
void whenGetProcessEngineConfig_thenGotResult() {
ProcessEngineConfiguration processEngineConfiguration
= ProcessEngineConfiguration
.createProcessEngineConfigurationFromResource(
"my.activiti.cfg.xml",
"myProcessEngineConfiguration");
ProcessEngine processEngine = processEngineConfiguration
.buildProcessEngine();
assertNotNull(processEngine);
assertEquals("root", processEngine.getProcessEngineConfiguration()
.getJdbcUsername());
}
もちろん、構成が異なる名前を想定しているので、テストを実行する前に、ファイル名(およびBean名)を一致するように変更する必要があります。
エンジンを作成するために使用できる他のオプションは、createProcessEngineConfigurationFromInputStream(InputStream inputStream),createProcessEngineConfigurationFromInputStream(InputStream inputStream, String beanName)です。
XML構成を使用したくない場合は、we can also set things up using Java config only。
4つの異なるクラスで作業します。これらはそれぞれ異なる環境を表しています。
-
org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration –ProcessEngineは、DBに支えられたスタンドアロンの方法で使用されます
-
org.activiti.engine.impl.cfg.StandaloneInMemProcessEngineConfiguration –はデフォルトで、H2インメモリデータベースが使用されます。 DBは、エンジンの起動およびシャットダウン時に作成および削除されます。したがって、この構成スタイルはテストに使用できます。
-
Spring環境で使用されるorg.activiti.spring.SpringProcessEngineConfiguration –
-
org.activiti.engine.impl.cfg.JtaProcessEngineConfiguration –エンジンは、JTAトランザクションを使用してスタンドアロンモードで実行されます
いくつかの例を見てみましょう。
スタンドアロンプロセスエンジン構成を作成するためのJUnitテストを次に示します。
@Test
void whenCreateProcessEngineConfig_thenCreated() {
ProcessEngineConfiguration processEngineConfiguration
= ProcessEngineConfiguration
.createStandaloneProcessEngineConfiguration();
ProcessEngine processEngine = processEngineConfiguration
.setDatabaseSchemaUpdate(ProcessEngineConfiguration
.DB_SCHEMA_UPDATE_TRUE)
.setJdbcUrl("jdbc:h2:mem:my-own-db;DB_CLOSE_DELAY=1000")
.buildProcessEngine();
assertNotNull(processEngine);
assertEquals("sa", processEngine.getProcessEngineConfiguration()
.getJdbcUsername());
}
同様に、インメモリデータベースを使用してスタンドアロンプロセスエンジン構成を作成するためのJUnitテストケースを作成します。
@Test
void whenCreateInMemProcessEngineConfig_thenCreated() {
ProcessEngineConfiguration processEngineConfiguration
= ProcessEngineConfiguration
.createStandaloneInMemProcessEngineConfiguration();
ProcessEngine processEngine = processEngineConfiguration
.buildProcessEngine();
assertNotNull(processEngine);
assertEquals("sa", processEngine.getProcessEngineConfiguration()
.getJdbcUsername());
}
5. データベースのセットアップ
デフォルトでは、Activiti APIは、データベース名が「activiti」、ユーザー名が「sa」のH2インメモリデータベースを使用します。
他のデータベースを使用する必要がある場合は、2つの主要なプロパティを使用して明示的に設定する必要があります。
databaseType –有効な値はh2, mysql, oracle, postgres, mssql, db2です。 これもDB構成から把握できますが、自動検出が失敗した場合に役立ちます。
databaseSchemaUpdate –このプロパティを使用すると、エンジンの起動時またはシャットダウン時にデータベースに何が起こるかを定義できます。 次の3つの値を持つことができます。
-
false(デフォルト)–このオプションは、データベーススキーマのバージョンをライブラリに対して検証します。 一致しない場合、エンジンは例外をスローします
-
true –プロセスエンジン構成が構築されると、データベースに対してチェックが実行されます。 それに応じてデータベースが作成/更新されますcreate-drop
-
「–」–これにより、プロセスエンジンの作成時にDBスキーマが作成され、プロセスエンジンのシャットダウン時にDBスキーマが削除されます。
DB構成をJDBCプロパティとして定義できます。
または、DataSourceを使用している場合:
6. 結論
このクイックチュートリアルでは、ActivitiでProcessEngineを作成するいくつかの異なる方法に焦点を当てました。
また、データベース構成を処理するためのさまざまなプロパティとアプローチも確認しました。
いつものように、私たちが見た例のコードはover on GitHubで見つけることができます。