ビジネス データモデルは、プロセスおよびプロセス指向アプリケーション間で共有されるビジネスデータの定義です。 このページは ビジネス データモデルの定義方法とデプロイ方法について説明します。モデルが定義された後、プロセスで使用されるビジネスデータを指定するために、それを使用することができます。
- ビジネス データモデル (BDM)
- ビジネスデータの格納場所
- BDMの仕樣
- 複数
- ユニーク制約
- クエリ
- インデックス
- コンポジションと集約
- データのローディング
- リスト内のビジネスオブジェクト変数を使ったマルチインスタンス
- BDM を定義する
- BDM をエクスポートする
- 開発のためにBDM をエクスポートする
- 他のBonita BPM Studioと共有するためにBDMをエクスポートする
- BDMを表示する
- プロセス内でのビジネスオブジェクト
- persistenceID
- プロセス起案の入力コントラクトでBDMの属性を初期化する
- タスクのデータ操作内の入力コントラクトでBPMの属性を初期化する
- ビジネスオブジェクトとコネクタ
ビジネス データモデル (BDM)
ビジネスデータは、プロセスとアプリケーションで共有される情報です。一連の ビジネスオブジェクトとして、1つのビジネス データモデル (BDM) 内に定義されます。1つのBPMは、1つのテナント内のすべてのプロセスとアプリケーションによって使用されます。プロセスを定義するときに、そのプロセスに関係するビジネスオブジェクトを指定します。 プロセスがインスタンス化(案件が開始されること)されると、要求に応じてその指定されたビジネスオブジェクトがインスタンス化され、プロセス インスタンス内の変数になります。
プロセスデータの代わりに、 単一のプロセス外部に存在するあらゆるデータを意味する「ビジネスデータ」の使用が推奨されます。 ビジネスデータ オブジェクトは、すべてのプロセスとアプリケーションによって(1つのテナント内で)アクセス可能なデータベースに格納されます。外部システムからデータをインポートしたり、変更発生の都度、データを書き換える必要はありません。このデータは自動で永続的に格納されます。Bonita BPM Studioを使用して、プロセスやタスクに関連するビジネスオブジェクトを単に指定するだけです。ビジネスオブジェクトのデータアクセスオブジェクト (DAO)を使用して、プログラムからこのビジネスオブジェクトにアクセスすることも可能です。
BDM を設計するにあったて、次の点を考慮する必要があります:
- BDM で ビジネスオブジェクトの事前定義を作成します。これは複数のプロセスによって操作されるという重要な概念を表します。 例えば、注文、請求、休暇申請などのデータは、運用中のBonita BPM エンジンが稼働しているとき、すべてのプロセスで共有されます。
- BDM は、単純データ型と複合データ型(complex)のビジネスオブジェクト、およびそれらのオブジェクト間の従属関係と参照関係から構成されています。
- 1つのテナントには1つのBDMがあるので、必要とするすべてのオブジェクトをBDMに含む必要があります。モデルの変更は、その変更によってデプロイしたプロセスとアプリケーションに問題を引き起こさないよう、注意して行う必要があります。
- ビジネスオブジェクトは、ダイアグラムまたはプロセスのレベルでインスタンスが作成されます。タスクやフォームのレベルではありません。
BDMの仕樣は、BDM内に何を構成設定しなければならないかを詳細に説明しています。BDMを定義するためには、Bonita BPM Studioを使用します。
ビジネスデータの格納場所
BDMに指定したビジネスデータは、データベーに格納されます。 BusinessDataDS と NotManagedBizDataDS の2つのデータソースが必要です。 Bonita BPM Studio でBDM を定義するときは、 あなたの開発環境に内蔵のh2 データベースとデータソースが自動的に作成されます。
開発中は、 ワークスペースのTomcat library にある h2-1.3.170.jar
内のツールを使用して、h2 データベース内のビジネスデータを参照できます。データベースの内容を手動で変更する場合は、 データを失ったり、プロセス インスタンス内のビジネスオブジェクトとの同期を失うリスクがあります。しかしながら、プロセスのデバックで、データベース内容を見ることは有益です。開発中にBDMを変更した場合、 既存のプロセス定義で問題を引き起こす可能性もあります。
運用に移行する際には、あなたの運用環境内にビジネスデータのデータベースとデータソースを構成設定する必要があります。
BDMの仕様
BDM は、ビジネスオブジェクトの階層が構造化され、パッケージ名で一意に識別されます。
ビジネスオブジェクト定義は、内容は次のとおりです:
- オブジェクト名: これはJavaのクラス名である必要があります。なぜなら、 ビジネスオブジェクトはJava クラスで実装されるからです。オブジェクト名は、ユニークである必要があります。
- 属性: オブジェクトの構成要素。任意の数の属性があります。各属性に対して次の項目を指定します。
- 名前
- タイプ(データ型)
- 長さ(データ型による)
- 必須かどうか
- そのオブジェクトが複数のインスタンスを含むかどうか
- 任意のユニーク制約
- 一連のデフォルトのクエリが自動的に作成されます。オプションで任意のカスタムクエリを作成できます。
- 属性のインデックス (オプション)
persistenceId が
自動的に作成されます。
ビジネスオブジェクトは、コンポジション、または集約の関連を使用して、他のビジネスオブジェクトと結び付けることができます。それらの関連は、標準の create, read, update, delete アクションを使用し管理されます。ビジネスオブジェクトは、Java DAO を指定する Engine Java API を使用するか、REST API を使用してダイレクトに読み込むことができます。ビジネスオブジェクトをGroovy式で読み込むには、DAO を使用します。ビジネスオブジェクトはプロセス内で「データ操作」を使用してのみ更新できます。
複数
いくつかのプロセス中のユーザーインタフェースやシステム タスクは、複数インスタンスのビジネスオブジェクトを処理する必要があるかもしれません。 この能力が求められる場面は、データをまとめて変更する(例えば、ユーザーフォーム内のリストから複数の休暇申請を一括承認する)場合や外部システムから入手したデータで一連のデータを初期化する(例えば、外部データソースから商品リストのローディングする、 1つのインスタンスのビジネスオブジェクト内に一連の商品を保存するなど)場合があります。
複数インスタンスのビジネスオブジェクト処理をサポートするには:
- 新しいビジネスデータ ウィザード内のチェックボックスを使用して、所定のビジネスデータを「複数」に指定します。
- Groovy式でマルチインスタンスの ビジネスデータをアクセスする場合は、オブジェクトの
java.util.list
を使用します。 - ビジネスオブジェクト インスタンスのリストを設定する場合は、「データ操作」で 「値を取得する式:」を選択し、既存のリストをリストアップする右オペランドを使って新しいビジネスオブジェクトインスタンスを選択します。
- ビジネスオブジェクト インスタンスのリストを削除する場合は、データ操作で演算子を「左を削除する」に選択することで、すべてのインスタンスを削除できます。
ユニーク制約
SQL のユニーク制約は、単一フィールド、または複数フィールドの組み合わせで、データベース内の入力値の一意性を定義します。単一フィールドのユニーク制約は、そのフィールドへのそれぞれの入力が異なる値を持つことを意味します。 複数フィールドの組み合わせのユニーク制約は、構成する一部のフィールド値が同じか、あるいは空であったとしても、その組み合わせの全体値がユニークであることを意味します。
属性の各値がユニークであることを要求定義するために、1つの属性にユニーク制約を指定できます。 これは、データのクエリに同じ値を持つ2回の入力を許さないことを教え、そのクエリの中でこの属性を使用できることを意味します。
クエリ
JPQL(Java Persistence Query Languag) のクエリがデータベースに格納されたデータ オブジェクトに関する情報を取得するために使用されます。BDM の各オブジェクトに対して一連のデフォルトのクエリが自動的に定義されます。 あなたは、カスタムクエリも作成できます。
デフォルトのクエリは、 find
と find_by
のクエリです。次の3つのタイプがあります。
- ユニーク制約(単一の結果を返す)をベースとしたもの
- 単純データ型の属性(with = criterion)をベースとしたもの
- Select All (ビジネスオブジェクト上のすべてのビジネスデータを返す)をベースとしたもの
カスタムクエリを作成するには、クエリ ダブ内にあるクエリ スクリプトを書く式エディタを使用します。デフォルトのクエリの1つをサンプルして使用することもできます。1つの ビジネスオブジェクトに対し同一名のカスタムクエリを複数持つことはできません。カスタムクエリは、「複数」指定の属性に対しても可能ですが、SELECT のクエリのみサポートされます。
クエリをコールするためには、DAO インスタンスを使用します。Groovy式には、ビジネスオブジェクト DAO クラスを実装した提供済み変数かあります。
例: フォーム内でビジネスオブジェクトを操作するとき、状況に応じてビジネスオブジェクトをクエリで再ロードし、フォームの内容をリフレッシュすることが必要な場合があります。このためには、Groovyスクリプトを使用しなければいけません。例えば、選択ウィジェットで”顧客”の選択にしたがって絞り込まれた”契約”のリストを表示するフォームがあったと仮定します。ユーザーが”顧客”を選択したときに、それをきっかけにビジネスオブジェクト クエリ、Contracts.findByClient() が
実行されます。 スクリプトは契約リストの戻り値を解析し、契約リストのウィジェットに埋め込みます。このシナリオでは、Groovyスクリプト式からコールするためのDAOオブジェクトを必要とします。
インデックス
インデックスの目的は、より高速にデータを取得することです。アプリケーションのパフォーマンスを最適化するために、ビジネスオブジェクト上にインデックスを指定することができます。 例えば、既存の注文を検索してその注文を変更する起案フォームを持つプロセスの場合、注文番号にインデックスを定義します。
Bonita BPM Studio のビジネス データモデルのウィザード内で ビジネスオブジェクトを見るとき、 属性にインデクスが付けられているが確認できます。単一の属性、あるいは順番付けした属性のリストにインデックスを定義できます。PersistenceIDには、インデックスが主キーとして自動的に作成されます。このインデックスは BDM のウィザード内では見えません。BDM には、 ビジネスデータを使用するすべてのアプリケーションとプロセスが必要とするインデックスを定義します。 定義できるインデックスの数に制限はありませんが、数多くのインデックスを定義した場合と、ビジネスデータが大量である場合は、インデックスのビルドに多くの時間がかかります。.
注意: Oracle データベースを使用する場合、ユニーク制約属性にインデックスを定義できません。 データベースは、ユニーク制約属性に対して自動的にインデックスを作成します。 ですから、ユニーク制約属性にインデックスを指定した場合、実行時に問題が生じます。
運用環境では、 テナントがスタートしたとき、あるいは新しいBDM がデプロイされた後に、インデックスがビルドされます。 開発環境では、Bonita BPM Studio がスタートしたとき、およびStudio のBDM ウィザードが閉じられたときに、インデックスがビルドされます。
コンポジション(composition)と集約(aggregation)
BDM内の他のビジネスオブジェクトと関連を持つ合成ビジネスオブジェクトを定義できます。その際、その関連にはコンポジションと集約の2つの選択肢があります。
- コンポジションの関連では、子供のオブジェクトは親のオブジェクトから独立して存在できません。合成ビジネスオブジェクトは、ビジネスオブジェクトである属性(COMPLEX型)を含みます。単純データ型を持つ属性も含むことができます。例えば、「家」オブジェクトの子供である「部屋」オブジェクトは、「家」オブジェクト」がない場合、存在できません。
- 集約の関連では、子供のオブジェクトは親のオブジェクトから独立して存在できます。合成ビジネスオブジェクトは、他のビジネスオブジェクトを参照します。同様に、単純データ型の属性を含むことができます。
例: 注文オブジェクトは一連の原子属性変数(注文番号、顧客、作成日など)と一連の「注文明細」オブジェクトからなります。この「注文明細」は「注文」の外に独立して置く意味がありせんから、「注文」とコンポジションの関連を持ちます。「注文明細」は「商品」オブジェクトと「数量」の単純データ型属性を含みます。この「商品」オブジェクトは「注文明細」の外に存在性を持ちます(商品カタログに使用される)。ですから、「注文明細」と集約の関連を持ちます。
Bonita BPM Studio BDM のウィザードでは、コンポジションと集約の関連があるオブジェクトおよび単純データ型の属性を指定できます。 子供のオブジェクトは「必須」、または「オプション」のいずれかになります。子供のオブジェクトは複数にできます。これは、合成オブジェクトがゼロ以上(オプションの場合)、または1以上(必須の場合)の子供のオブジェクト インスタンスを持つことを意味します。 子供のオブジェクトにユニーク制約をセットすることはできません。デフォルトの関連はコンポジションです。
Bonita BPM Studio BDM のウィザードでオブジェクトを構成設定するとき、属性のドロップダウンリストにはコンポジション、または集約の関連で含めることが可能なオジェクト名が含まれます。あなたが構成設定中の、またはその親のオブジェクトは指定できません。
合成オブジェクトは適切なスキーマを使用して自動的にデータベースに保存されます。コンポジションの関連では、子供のオブジェクトは親のオブジェクトIDを外部キーとして持ちます。集約の関連では、子供のオブジェクトが複数でない場合はその親のオブジェクトは外部キーとして子供のオブジェクトIDを持ちます。子供のオブジェクトが複数である場合は、その子供のオブジェクトIDが専用の関連表(dedicated association table)に格納されます。
ビジネスオブジェクトを使用するプロセスを作成するとき、コンポジションまたは集約の関連を使用することで、典型的なビジネスオブジェクトとしてオブジェクトを処理しますが、次の例外があります。
- コンポジション オブジェクトはページのウィジェットやウィジェットのグループに自動的にマップされません。
- 合成オブジェクトの値をセットするには、Groovy式を使用するか、または 既存のクラスインスタンスから子供のオブジェクトに値をダイレクトに割り当てます。
- プロセス内で getter とsetter のメソッドを使用することができます。 あるいは、タスクのデータ操作を使用し、合成オブジェクトを単一のインスタンスまたはインスタンスリストの
java.util.list
としてセットすることができます。 - プロセスがGroovy 式 からクエリを使用する場合、あるいはクライアントの Java アプリケーションからDAO オブジェクトを使用する場合は、子供のオブジェクトを含む完全なコンポジション オブジェクトをローディングします。
データのローディング
複合データ型(complex)のビジネスオブジェクトのローディングには2つの方法があります。 lazy または eager です。lazy ローディング、つまり「関係を持つオブジェクトを必要なときだけ読み込む」にすると、親のオブジェクトインスタンスはロードされますが、子供のオブジェクトインスタンスはそれが必要とされるときのみロードされます。 eager ローディング、つまり「常に関係を持つオブジェクトを読み込む」にすると、子供のオブジェクトインスタンスは親のオブジェクトインスタンスがロードされたときに一緒にロードされます。 デフォルトは、lazy ローディングになります。 eager ローディングを使用するためには、 任意のビジネスオブジェクトの構成設定する際に、「関連」のプロパティでデフォルトを「常に関連オブジェクトを読み込む」(eager) に変更することができます。これは、特定のオブジェクトとそれにコンポジションまたは集約の関連を持つすべてのオブジェクトがロードされることを意味します。付加的なデータロードとメモリー内の情報維持に負荷がかかりますが、データは既にロードされているため、アクセス時間を短縮することができます。
リスト内のビジネスオブジェクト変数を使ったマルチインスタンス
リストは、複数のビジネスデータ 変数、複数の値を持つプロセス変数、または任意のリスト型にすることができます。
リストの ビジネスオブジェクト、またはタスクのマルチインスタンスを作成するための変数を使用することができます。 タスクレベルで作成した MultiInstanceIterator reference は、タスク インスタンスを作成するためにリストの各アイテムを使用します。
BDMを定義する
BDM はBonita BPM Studio を使用して定義します。Studio からプロセスを実行することで、内臓のBonita BPM Engine に自動的にデプロイされ、利用可能になります。これは、開発中の各Studio がそれぞれ異なるBDM を持ち、デプロイする前にBDM をテスト可能であることを意味します。 しかしながら、あなたが開発時にチームでダイアグラムとその他の成果物を共有している場合は、BDM の定義を同期する必要があります。この同期は、BDM を手動でエクスポートし他の開発システムにインポートするか、あるいは共有リポジトリ(community editionでは利用不可能)を使用するか、いずれかの方法が必要です。
BDM を定義するには、Bonita BPM Studio の[開発] メニュー、[ビジネス データモデル] に進んで、 [管理] を選択します。 現在の BDM 定義が表示されます。 [ビジネスオブジェクトのリスト] の下のフィールドに BDM のパッケージ名を指定します。
オブジェクトを追加するには:
- [ ビジネスオブジェクトのリスト ]に進み、[追加] をクリックします。
- 新規に作成されたオブジェクトが仮の名前でリストに追加されます。
- 仮のオブジェクト名をクリックして選択し、あなたが使用したい名前に上書き変更します。
- その後、詳細を指定するためにそのオブジェクトを変更します。
新規または既存のオブジェクトを変更するには:
- [ビジネスオブジェクトのリスト] 内のオブジェクトを選択します。ポップアップの右側に詳細が表示されます。
- オブジェクトの説明を入力します。これはオプションですが、メンテナンスや同じ BDM を使用する他の開発者とのコミュニケーションのため、入力することを推奨します。
- [属性] タブでオブジェクトの次の属性を指定します:
- 名前を指定します。これはオブジェクト内でユニークでなければなりません。
- 既存の[タイプ] をクリックし、ドロップダウンリストから新しいタイプを選択してタイプを指定します。
- 属性が複数の値を持つ場合、[複数] の列内のボックスをチェックします。
- 属性が必須である場合、 [必須] 列内のボックスをチェックします。
- 属性が String タイプの場合、属性リストの下のフィールドで属性をセットします。
- [ユニーク制約] ダブで、単一の属性、またはユニーク制約を構成する複数の属性セットを指定します。
- [追加 ] をクリックしてユニーク制約を追加します。 ユニーク制約は仮の名前でリストに追加されます。
- 仮のユニーク制約名をクリックして選択し、あなたが使用したい名前に上書き変更します。
- [属性] フィールドをクリックし、右端のアイコンをクリックして[属性の選択] ポップアップを開きます。
- ポップアップでユニークにする必要がある属性の組み合わせを選択するためにそのボックスをチェックします。単一の属性またはセットを指定できます。
- [OK] をクリックしてポップアップを閉じます。その属性はユニーク制約リストに表示されます。
- [クエリ] ダブでデフォルトのクエリを表示したり、カスタムクエリを管理することができます。 カスタムクエリを追加するには:
- [カスタム] ラジオボタンをクリックします。
- [追加]をクリックしてカスタムクエリを追加します。カスタムクエリは仮の名前でリストに追加されます。
- 仮のカスタムクエリ名をクリックして選択し、あなたが使用したい名前に上書き変更します。
- [クエリ] フィールドをクリックし、右端のアイコンをクリックして[クエリの作成] ポップアップを開きます。
- このポップアップで、クエリをJPQLの文法で指定します。クエリ内で使用されるパラメータはすべて、リスト内に指定する必要があります。
- ドロップダウンリストから結果の型を選択します。
- [OK] をクリックしてポップアップを閉じます。このクエリは保存されます。
- [インデックス] ダブでオブジェクトのインデックスを指定します。
- [追加] をクリックしてインデックスを追加します。インデックスは仮の名前でリストに追加されます。
- 仮のインデックス名をクリックして選択し、あなたが使用したい名前に上書き変更します。
- [属性] フィールドをクリックし、右端のアイコンをクリックして[属性の選択] ポップアップを開きます。
- ポップアップで、あなたがインデックス化したい属性を指定します。属性をインデックスに指定するには、 [使用可能な属性] リスト内の属性を選択し[追加] をクリックします。
- [追加]、[削除] 、[上へ] および [下へ] ボタンを使用してインデックス属性の順序を指定します。
- [OK] をクリックしてこのポップアップを閉じます。このインデックスが保存されます。
- [終了] をクリックしてビジネス データモデルを保存します。すべてのオブジェクトが保存されます。
BDM をエクスポートする
ビジネス データモデルをエクスポートする方法は次の2つがあります:
- 開発のために ZIP ファイルを使用する
- 他のBonita BPM Studio と共有するために BOS ファイルを使用する
開発のためにBDM をエクスポートする
BDM をデプロイするには、 Bonita BPM Studio からそれを ZIPファイルとしてエクスポートし、その後、Bonita BPM ポータルにそれをインポートします。
次のステップに従います:
- Bonita BPM Studio の[開発] メニューを選択します。
- [ビジネス データモデル] > [エクスポート] をクリックします。
- 出力先のフォルダを選択します。
- [エクスポート] をクリックします。指定したフォルダに
bdm.zip
というファイルが書かれます。 - Bonita BPM ポータルにシステム管理者としてログインします。
- [BPM サービス]のページに進みます。
- [一時停止] をクリックします。
- サービスが停止されたら、[リソース] メニューの進み、[ビジネス データモデル] を選択します。
- Bonita BPM Studioからエクスポートしたビジネス データモデルを含むファイルを指定します。
- [アクティベート] をクリックします。 警告メッセージが表示され、この新しい BDM のインストールが既存の BDM を上書きすることを警告します。
- [インストール] をクリックしてデプロイを完了します。Bonita BPM ポータルはファイルをロードし、オブジェクト定義を取得して、プロセスが実行時にそれを使用できるようにします。プロセスによってビジネスオブジェクトが変更された際、それを適切に格納するために、ビジネス データベース内のデータベース スキーマの作成/更新も行います。 デプロイが完了すると、メッセージメッセージが表示されます。デプロイが失敗した場合は、問題解決のためエンジンログを使用します。
- [BPM サービス] のページに進みます。
- [再開] をクリックします。BPM サービスが再開します。
他のBonita BPM Studioと共有するためにBDMをエクスポートする
Bonita BPM Studio の開発メニューからエクスポートされた bdm.zip
はポータルへのインポートのために設計されており、他のBonita BPM Studio へはインポートできません。その代わり、次のように .bos
ファイルを作成します:
- [ダイアグラム] メニューから [エクスポート] を選択します。あるいはクールバーの[エクスポート] をクリックします。
- エクスポート可能な項目を表示するポップアップで、ビジネス データモデルだけを選択します。
- ファイル名と場所を指定するか、デフォルトの提案を使用します。
- [終了] をクリックします。
結果として、.bos
ファイルは、サブスクリプション・ライセンスを持つ Bonita BPM Studio にインポートできます。
警告: Bonita BPM Studio はビジネス データモデルを1つだけ持つことができます。あなたがビジネス データモデルを含む .bos
ファイルをインポートするときは、既にStudio にあるモデルは上書きされます。
BDMを表示する
BDM ZIP ファイルは、 ビジネスオブジェクトのモデルファイル、 bom.xml
を含んでいます。BDM の定義を見るために、テキストエディタでこのファイルを開くことができます。
bom.xml
ファイルのサンプルコンテンツ:
<businessObjectModel>
<businessObjects>
<businessObject qualifiedName=“com.company.model.LeaveRequest”>
<fields>
<field name=“startDate” type=“DATE” nullable=“false” length=“255” collection=“false”/>
<field name=“endDate” type=“DATE” nullable=“false” length=“255” collection=“false”/>
<field name=“returnDate” type=“DATE” nullable=“false” length=“255” collection=“false”/>
<field name=“daysOff” type=“DOUBLE” nullable=“false” length=“255” collection=“false”/>
<field name=“leaveType” type=“STRING” nullable=“false” length=“255” collection=“false”/>
<field name=“approved” type=“BOOLEAN” nullable=“true” length=“255” collection=“false”/>
</fields>
<uniqueConstraints/>
<queries>
<query name=“query1” content=“SELECT l.daysOff
FROM LeaveRequest l
WHERE
l.leaveType = ‘Test'” returnType=“java.lang.Double”>
<queryParameters/>
</query>
</queries>
</businessObject>
</businessObjects>
</businessObjectModel>
プロセス内でのビジネスオブジェクト
プロセスを設計するとき、プロセスで使用される変数を指定します。これらは BDM で定義したビジネスオブジェクト インスタンスの変数を含むことができます。Bonita BPM Studioの中で他のプロセス変数を定義する同様の方法でビジネスオブジェクト変数を定義します。
persistenceID
データベースに作成された各オブジェクトは読み取り専用のユニークなIDを持ちます。それぞれの新しく作成された persistenceID の番号は、連続的に付番されます。この persistenceID は、Bonita BPM ポータルのエンドユーザーには見えません。開発者は getPersistenceID
のメソッドを使用することによって、このIDを回復することができます。
プロセスで永続化されたビジネスオブジェクト インスタンスを宣言するとき、 次の2つの方法でそれを初期化できます:
- インスタンスとして: 実行時にプロセスがインスタンス化されたとき、BDM 内でオブジェクトに定義した構造を使用し自動的に作成されます(例えば、社員の休暇申請を管理するために設計されたプロセスは、休暇申請のビジネスオブジェクトの新しいインスタンスを作成します)。各 BDM の属性の初期値は、Groovyスクリプトを介して設定できます。この方法で、プロセス起案の入力コントラクトを属性にセットできます。詳しい情報は、 「入力コントラクトでBDMの属性を初期化する」を参照してください。
- 既存のインスタンスとして: このデータは、既に存在するビジネスオブジェクトのインスタンスを persistenceID で特定することによってロードされます(例えば、未承認の休暇申請を社員に変更させるために設計されたプロセスは、既存の休暇申請のビジネスオブジェクトのインスタンスを変更します)。
それがプロセス内に宣言された後、ビジネスオブジェクト インスタンスは、そのデータ属性を読み込むか、あるいは変更することによって. 適合できます。 エンジンは変更の永続化に対処します。
プロセス起案の入力コントラクトでBDMの属性を初期化する
Studio のコントラクト定義パネル([詳細] パネル、[実行] タブ、[コントラクト] ペイン)で、[データから追加…] ボタンを使用してBDM定義から入力コントラクトをインポートできます。 BDM クラス属性をマッピングする複合データ型(complex)の入力を作成します (属性が単純データ型でない場合に、もう一方の複合データ型(complex)の入力が作成される)。
入力コントラクトからBDM 属性への自動マッピングは未だ存在しません。この作業を実行するには、BDM 属性への入力をセットするGroovyスクリプト作成する必要があります。
例えば、[詳細] パネル内部の [実行] タブ > [コントラクト] ペインで [データから追加…] をクリックし、上記の com.company.model.LeaveRequest オブジェクトを選択するアクションは、次の複合データ型(complex)の入力を作成します:
- leaveRequestInput : COMPLEX
- startDate : DATE
- endDate: DATE
- returnDate: DATE
- daysOff: DECIMAL
- leaveType: TEXT
- approved: BOOLEAN
その後、プロセス変数のリスト([詳細] パネル内部の [データ] タブ > [プール変数] ペイン)に戻り、com.company.model.LeaveRequest タイプの新規変数を追加、あるいはcom.company.model.LeaveRequest タイプを持つ既存の変数を編集した後、[鉛筆] アイコンをクリックしGroovyスクリプト エディタを開く必要があります。
次のコード小片をエディタで入力し、入力コントラクトに対応するcom.company.model.LeaveRequest の新規インスタンス をセットします:
leaveRequest.setStartDate(leaveRequestInput.getStartDate());
leaveRequest.setEndDate(leaveRequestInput.getEndDate());
leaveRequest.setReturnDate(leaveRequestInput.getReturnDate());
leaveRequest.setDaysOff(leaveRequestInput.getDaysOff());
leaveRequest.setLeaveType(leaveRequestInput.getLeaveType());
leaveRequest.setApproved(leaveRequestInput.getApproved());
return leaveRequest;
タスクのデータ操作内の入力コントラクトでBPMの属性を初期化する
タスクレベルでBDM オブジェクトへの入力が存在する場合は、 [詳細] パネル内部の [実行] タブ > [データ操作] ペインで初期化する必要があります。
例えば、前のセッションのように [データから追加…] アクションで入力コントラクトをセットした場合は、[データ操作] ペインに進んで [追加] ボタンを使用し新しい「データ操作」を追加することができます。
最初の選択ボックスで、 com.company.model.LeaveRequest タイプの変数を選択し、その後、[値を取得する式:] をクリックし「演算子の種類」で [右の式でインスタンスを生成] を選択し、[OK] をクリックします。
そして、[鉛筆] アイコンをクリックし[式の編集] エディタを開きます。[スクリプト] の式のタイプを選択し上記と同じコード小片を入力して、入力コントラクトに対応するcom.company.model.LeaveRequest の新規インスタンス をセットします。
ビジネスオブジェクトとコネクタ
DAO を使用することによって、Java プログラムでビジネスデータを使用できます。 具体的には、カスタムコネクタを使用して外部ソースにビジネスデータを書くことができます。カスタムコネクタは、依存性に bdm-client-pojo.jar
ファイルを含む必要があります。
既存の外部データからデータを取得するためにコネクタを使用する場合、 ビジネスオブジェクトにデータを書くことができません。必要なら、カスタムデータ型を持つプロセス変数を代わりに使用します。