1概要
前回のリンク:/java-activiti[Activiti with Java]の紹介記事では、 ProcessEngine の重要性を見て、フレームワークによって提供されるデフォルトの静的APIを介して作成しました。
デフォルト以外にも、 ProcessEngine を作成する方法は他にもあります。
2 ProcessEngine インスタンスの取得
ProcessEngine のインスタンスを取得する方法は2つあります。
-
ProcessEngines クラスを使用する
-
ProcessEngineConfiguration を介してプログラム的に
これら両方のアプローチの例を詳しく見てみましょう。
3 ProcessEngines クラスを使用して ProcessEngine を取得
通常、 ProcessEngine は__activiti.cfg.xmlという名前のXMLファイルを使用して設定されます。
これは、この設定がどのようになるかを示す簡単な例です。
<beans xmlns="...">
<bean id="processEngineConfiguration" class=
"org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">
<property name="jdbcUrl"
vasentence you have mentioned and also changed thelue="jdbc:h2:mem:activiti;DB__CLOSE__DELAY=1000"/>
<property name="jdbcDriver" value="org.h2.Driver"/>
<property name="jdbcUsername" value="root"/>
<property name="jdbcPassword" value=""/>
<property name="databaseSchemaUpdate" value="true"/>
</bean>
</beans>
ここでエンジンの永続性の側面がどのように構成されているかに注目してください。
そして今、 ProcessEngine を取得することができます。
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
4 ProcessEngineConfiguration を使用して ProcessEngine を取得します
エンジンを取得するというデフォルトのルートを通り過ぎる - ProcessEngineConfiguration を作成する方法は2つあります。
-
XML設定を使用する
-
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設定を使用したくない場合は、 Java設定のみを使用して設定することもできます 。
私たちは4つの異なるクラスで仕事をするつもりです。これらはそれぞれ異なる環境を表します。
-
org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration –
ProcessEngine は、DBによって支援され、スタンドアロンで使用されます。 。 __org.activiti.engine.impl.cfg.StandaloneInMemProcessEngineConfiguration
– デフォルトでは、H2メモリ内データベースが使用されます。 DBが作成され、 エンジンの始動時および停止時にドロップされます。 設定スタイルはテストに使用できます 。 org.activiti.spring.SpringProcessEngineConfiguration - __で使用される
春の環境 。 org.activiti.engine.impl.cfg.JtaProcessEngineConfiguration – the
エンジンは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はH2のインメモリデータベースを使用し、データベース名は "activiti"、ユーザー名は "sa"です。
他のデータベースを使用する必要がある場合は、2つの主要なプロパティを使用して明示的に設定する必要があります。
databaseType - 有効な値は h2、mysql、oracle、postgres、mssql、db2 です。これはDB設定からも把握できますが、自動検出が失敗した場合に役立ちます。
databaseSchemaUpdate – このプロパティを使用すると、エンジンの起動時または停止時にデータベースに対して実行される処理を定義できます。次の3つの値があります。
-
false (デフォルト) - このオプションはデータベースのバージョンを検証します
ライブラリに対するスキーマ。それらがあればエンジンは例外を投げます 一致しない 。 true - プロセスエンジン構成が構築されたときのチェック
データベース上で実行されます。データベースが作成/更新されます それに応じて作成ドロップ 。 “ – ” - プロセスエンジンが起動したときにDBスキーマを作成します。
プロセスエンジンがシャットダウンしたときに作成され、ドロップされます。
DB設定をJDBCプロパティとして定義できます。
<property name="jdbcUrl" value="jdbc:h2:mem:activiti;DB__CLOSE__DELAY=1000"/>
<property name="jdbcDriver" value="org.h2.Driver"/>
<property name="jdbcUsername" value="sa"/>
<property name="jdbcPassword" value=""/>
<property name="databaseType" value="mysql"/>
代わりに、 DataSource を使用している場合:
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" >
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/activiti"/>
<property name="username" value="activiti"/>
<property name="password" value="activiti"/>
<property name="defaultAutoCommit" value="false"/>
<property name="databaseType" value="mysql"/>
</bean>
6. 結論
このクイックチュートリアルでは、Activitiで ProcessEngine を作成するいくつかの異なる方法に焦点を当てました。
データベース構成を処理するためのさまざまなプロパティとアプローチもありました。
いつものように、私たちが見た例のためのコードはhttps://github.com/mansi2392/tutorials/tree/master/spring-activiti[GitHubに乗って]を見つけることができます。