第6章 データモデル
データモデルはデータオブジェクトのモデルです。データオブジェクトは複雑なカスタムデータタイプです (例: Name、Address、および Date of Birth データフィールドのある Person オブジェクト).
データモデルはプロジェクトに格納されるデータモデル定義に保存されます。Red Hat JBoss BRMS は、データオブジェクトを定義するためのデータモデラー、つまりカスタムグラフィカルエディターを提供します。
6.1. データモデラー
データモデラーは、Business Central からプロジェクトデータモデルの一部としてファクトまたはデータオブジェクトを作成するためのビルトインエディターです。データオブジェクトは、POJO として実装されるカスタムデータタイプです。これらのカスタムデータタイプは、インポート後にすべてのリソース (ガイド付きデシジョンテーブルなど) で使用できます。
エディターを開くには、Project Authoring パースペクティブを開き、パースペクティブメニューで New Item
新規モデルの作成時に、このモデルオブジェクトの名前の入力を求めるプロンプトが表示され、(パッケージのコンテキストでの) 場所を選択するよう求められます。正常に実行されると、モデルオブジェクトのフィールドを作成できるエディターが表示されます。
データモデラーは、ソースコードを保持した状態で Editor
と Source
タブ間の切り替えをサポートします。これにより、JBDS などの外部ツールでモデルに変更を加え、データモデラーは必要なコードブロックを自動的に更新することができます。
メインエディターウィンドウで、ユーザーは以下を実行できます。
- フィールドの追加または削除
- 指定のフィールドを選択します。フィールドが選択されると、フィールドの情報はすべてのドメインエディターに読み込まれます。
データオブジェクトクラスを選択します。たとえば、フィールドプロパティーを読み込む代わりに (メインウィンドウで) データオブジェクト名をクリックすると、ドメインエディターがクラスプロパティーを読み込みます。
6.2. 利用可能なフィールドタイプ
データオブジェクトフィールドは、以下のタイプのいずれかに割り当てることができます。
Java オブジェクトプリミティブタイプ:
BigDecimal
、BigInteger
、Boolean
、Byte
、Character
、Date
、Double
、Float
、Integer
、Long
、Short
、およびString
。Java プリミティブタイプ:
boolean
、byte
、char
、double
、float
、int
、long
、およびshort
。Java 列挙 (Enum) タイプ:
現在のプロジェクトで定義されているか、または依存関係としてインポートされる Java 列挙 (enum) タイプ。「依存関係の追加」を参照してください。
現在のプロジェクトデータオブジェクト:
ユーザー定義のデータオブジェクトは、フィールドタイプとして割り当てられるよう自動的に利用可能になります。
プロジェクト依存関係:
現在のプロジェクトで Java 依存関係としてインポートされるその他の Java クラス。「依存関係の追加」を参照してください。
6.3. データモデラーのアノテーション
Red Hat JBoss BRMS は、デフォルトですべての Drools アノテーションをサポートし、Drools & jBPM ドメイン画面を使用してカスタマイズできます。利用可能なドメイン画面についての詳細は、「データオブジェクトドメイン画面」 を参照してください。
カスタムまたは事前定義のアノテーションを追加または編集するには、Source タブに切り替え、ソースコードを直接変更します。ソースコードは、Red Hat JBoss Developer Studio および Business Central の両方で直接編集できます。Advanced 画面を使用して任意のアノテーションを管理します。
フィールドを作成するか、永続可能なデータオブジェクトに追加する際に、デフォルトで追加される JPA アノテーションはランタイム時に Red Hat JBoss BRMS が使用できるモデルを生成します。通常、モデルがプロセスで使用されるデフォルトの設定を変更することは推奨されていません。
Red Hat JBoss BRMS 6.2 以降は、Hibernate がデフォルトの JPA 実装として利用可能な状態で JPA 固有のアノテーションをサポートします。JPA プロバイダーがクラスパスに読み込まれる場合は、他のJPA アノテーションもサポートされます。
データモデラーでアノテーションを追加する際に、アノテーションクラスをワークベンチクラスパスに置く必要があるか、またはプロジェクト依存関係をアノテーションを含む .jar
ファイルに追加できます。データモデラーは検証チェックを実行し、アノテーションがクラスパス上にあることを確認します。アノテーションが存在しない場合はプロジェクトのビルドは実行されません。
6.4. データオブジェクトの作成
-
Project Authoring パースペクティブで、パースペクティブメニューにある New Item
Data Object をクリックします。 - 名前を入力し、パッケージを選択します。名前はパッケージ内で一意である必要がありますが、2 つの異なるパッケージにまたがる場合には同じ名前のデータオブジェクトが 2 つ存在しても問題ありません。
- データオブジェクトを永続化するには、Persistable チェックボックスにチェックを付けます。
- OK をクリックします。
データオブジェクトのフィールドを作成します。
メインエディターウィンドウで add field をクリックし、属性 Id、Label および Type を持つオブジェクトにフィールドを追加します。必須属性には * のマークが付けられます。
- Id: データオブジェクト内で一意のフィールド ID。
- Label: Fields パネルで使用されるラベル。このフィールドはオプションになります。
Type: フィールドのデータタイプ。
- Create をクリックして新規フィールドを作成し、New field ウィンドウを閉じます。または、Create and continue をクリックして New field ウィンドウを開いたままにします。
属性を編集するには、属性を選択し、通常のプロパティー画面を使用します。
データオブジェクトを使用するには、データモデルをリソースにインポートしてください。データモデルとリソースの (ガイド付きリソースエディターなど) がいずれも同じパッケージにない場合、それらが同じプロジェクト内にあったとしてもこのタスクは必要になります。
6.5. 永続型データオブジェクト
Red Hat JBoss BRMS 6.2 以降、データモデラーは永続型データモデルの生成をサポートしています。永続型データオブジェクトは JPA 仕様をベースとしています。Persistable チェックボックスにチェックを付けると、プラットフォームはデフォルトの永続性設定を使用します。データオブジェクトは以下の 2 つの方法で永続化できます。
新規データオブジェトの作成時。
新規オブジェクトの作成時には、「データオブジェクトの作成」 の手順に従ってください。
- データオブジェクトがすでに作成されている場合。
すでに作成されているデータオブジェクトを永続化するには、以下を実行します。
- Business Central でデータオブジェクトを開きます。
- Editor タブをクリックします。
右側のメニューから Persistence アイコンを選択します。
- Persistable にチェックを付けます。
- Save をクリックして変更を保存します。
6.6. データオブジェクトドメイン画面
以下のドメイン画面タブは、データオブジェクトエディター画面の右側から選択できます。
Drools & jBPM
Drools & jBPM 画面では、Drools 固有の属性の設定が可能です。
Business Central のデータモデラーは、ファクトモデルクラスおよび属性の事前定義のアノテーションの編集をサポートしています。以下の Drools アノテーションはサポートされており、Drools & jBPM インターフェースを使ってカスタマイズできます。
-
TypeSafe
-
ClassReactive
-
PropertyReactive
-
Role
-
Timestamp
-
Duration
-
Expires
-
Remotable
図6.1 Drools & jBPM クラスビュー
ファクトモデル内のフィールドについて、position
および Equals
アノテーションがサポートされています。特定のフィールドが選択されている場合の Drools & jBPM 画面は以下のようになります。
図6.2 Drools & jBPM フィールドビュー
永続性
Persistence 画面を使用して、永続性について基本的な JPA アノテーションの属性を設定できます。アノテーションの微調整または特定のアノテーションを追加を実行するには、Advanced 画面を使用します。
図6.3 Class Persistence ビュー
特定のフィールドが選択されている場合の Persistence 画面は以下のようになります。
図6.4 Field Persistence ビュー
以下のアノテーションは Persistence 画面で管理できます。
アノテーション | データオブジェクトが永続型の場合に自動生成される |
---|---|
javax.persistence.Entity |
Yes |
javax.persistence.Table |
No |
アノテーション | データオブジェクトが永続型の場合に自動生成される | 関連する UI 要素 |
---|---|---|
javax.persistence.Id |
Yes |
Is 識別子 |
javax.persistence.GeneratedValue |
Yes |
生成戦略 |
javax.persistence.SequenceGenerator |
Yes |
シーケンスジェネレーター |
javax.persistence.Column |
No |
列プロパティー属性 |
javax.persistence.OneToOne |
No |
リレーションシップタイプ |
javax.persistence.OneToMany |
Yes: フィールドに 1 つまたは複数の値がある場合 |
リレーションシップタイプ |
javax.persistence.ManyToOne |
Yes: フィールドに複数の値がある場合 |
リレーションシップタイプ |
javax.persistence.ManyToMany |
No |
リレーションシップタイプ |
javax.persistence.ElementCollection |
Yes: 新規フィールドに、Integer、Boolean、String などの基本 Java タイプが 1 つまたは複数含まれる場合に UI で生成される。このアノテーションは Persistence 画面ツールでは編集できません (代わりに Advanced 画面ツールを使用します)。 |
|
その他すべての JPA アノテーションは、Advanced 画面を使用して追加できます。
Advanced
Advanced 画面はアノテーションの微調整に使用されます。アノテーションは、Advanced Domain 画面を使用して設定し、追加し、削除することができます。クラスパスにあるすべてのアノテーションについてこれらを実行できます。
add annotation オプションをクリックした後に Add new Annotation ウィンドウが表示されます。アノテーションの完全修飾名を入力する必要があり、search アイコンを押すと、アノテーションの定義がウィザードに読み込まれます。その後に各種のアノテーションパラメーターを設定できます (必須パラメーターには * のマークが付けられます)。
ウィザードで指定パラメーターに適したエディターが提供される場合もあります。
カスタマイズされたエディターを提供できない場合、ウィザードは汎用パラメーターエディターを提供します。
すべての必須パラメーターを入力した後に、Finish ボタンが有効にされ、アノテーションを指定のフィールドまたはデータオブジェクトに追加できます。
6.7. データオブジェクト間の関係の設定
属性タイプが別のデータオブジェクトとして定義される場合、関係は、オブジェクト属性一覧の 記号で特定され、定義されます。このアイコンをクリックして、データオブジェクトの定義にジャンプし、表示および編集を行います。
関係のカスタマイズが必要になるのはデータオブジェクトが永続型である場合のみです。
関係は、関係が設定された属性を選択し、右側にある Persistence ボタンを選択して設定できます。Relationship Properties の下で、Relationship Type プロパティーの編集オプションをクリックします。
異なるデータオブジェクトで使用されるデータオブジェクトの削除を試行すると、Usage Detected 画面が表示されます。ここからオブジェクトを削除することもできますが、この場合、結果として生じるエラーが解決されるまでプロジェクトのビルドは停止します。
6.8. 永続性記述子
Business Central には、デフォルトの永続性設定のある persistence.xml
ファイルが含まれます。永続性設定を行うには、Project Settings: Project General Settings
Advanced properties セクションを使用してプロパティーを変更したり、削除したり、追加したりします。
永続性記述子で Project persistable Data Objects セクションを開く場合、2 つのボタンが表示されます。
-
Add class: ユーザーはエンティティーとして宣言されるよう任意のクラスを
persistence.xml
ファイルに追加できます。 - Add project persistable classes: 現行プロジェクトにすべての永続型データオブジェクトを自動的に読み込みます。