10 ビジネス・オブジェクトのモデリング
BPMプロジェクトのビジネス・オブジェクトを使用すると、プロセス内のデータを効率的に管理でき、既存のコンポーネントを再利用することもできます。既存のコンポーネントを再利用すると、プロセスの複雑さが軽減され、保守しやすくなります。
10.1 ビジネス・オブジェクトの概要
ビジネス・オブジェクトを使用すると、オブジェクト指向パラダイムを使用して、プロセスの一部であるビジネス・エンティティをモデリングおよび開発できます。ビジネス・オブジェクトを使用すると、ビジネス・オブジェクトで表されるビジネス・エンティティに関連付けられたデータおよびビジネス動作をカプセル化することで、プロセス内のデータの管理を簡略化できます。
ビジネス・オブジェクトは、属性のセットとメソッドのセットで構成されます。属性は、モデリング対象のエンティティに関連するデータを格納します。メソッドはこれらの属性の値を操作したり、属性の値に基づいて計算を実行します。
通常、ビジネス・オブジェクトは実際のビジネスにおけるエンティティを表しますが、特定のエンティティに関連付けられていないビジネス・ロジックをカプセル化するためにビジネス・オブジェクトを使用することもできます。
通常、プロセスに多数のデータ・オブジェクトが含まれている場合、同じアイデンティティを示すデータ・オブジェクトどうしを1つのビジネス・オブジェクトにまとめることができます。たとえば、営業見積サンプルでは、次のデータを見積オブジェクト内にまとめることができます。
-
見積サマリー
-
見積要求ステータス
-
推奨割引
ビジネス・オブジェクトを使用して関連するデータのグループを管理する場合、複数のプロセス・データを、定義したビジネス・オブジェクトのタイプの単一データ・オブジェクトに置き換えて、プロセスの複雑さを大幅に軽減できます。また、他に「ビジネス・オブジェクトを使用したモデリングのメリット」で説明されているようなメリットもあります。
営業見積サンプルには、次のビジネス・エンティティがあります。
-
見積
-
使用許諾条項
-
製品項目
-
承認フロー
-
契約
これらの各エンティティは、関連性の高いデータのセットをグループ化します。このデータは、ビジネス・オブジェクトの属性内で表現されます。属性によって、同じビジネス・エンティティを定義および説明します。これらの属性の値によって、ビジネス・オブジェクトの状態が定義されます。
BPMプロジェクト内で定義したビジネス・オブジェクトは、ビジネス・カタログ内のユーザー定義モジュールに格納されます。ビジネス・オブジェクトを開くと、そのエディタにビジネス・オブジェクトの説明およびそれを構成する属性が表示されます。
ビジネス・オブジェクトは、継承をサポートしており、それらによって定義されるデータおよび動作の再利用を可能にします。継承の詳細は、「ビジネス・オブジェクト継承の概要」および「ビジネス・オブジェクト継承の使用」を参照してください。
Oracle BPM Studioには、ビジネス・オブジェクトの構造を表示および編集するためのエディタが備わっています。エディタを使用すると、次のことができます。
-
説明の追加
-
ドキュメントの追加
-
属性の追加、編集および削除。
-
ネームスペース情報の表示
図10-1では、手動で作成した見積オブジェクトをビジネス・オブジェクト・エディタで編集しています。
10.1.1 ビジネス・オブジェクトのタイプ
ビジネス・オブジェクトの特性と機能は、ビジネス・オブジェクトを作成した方法によって決まります。
ビジネス・オブジェクトの作成方法を次に示します。
-
手動での作成: ビジネス・オブジェクトは手動で構築できます。これには、ビジネス・オブジェクトを作成してから、属性とドキュメントを追加します。
-
XMLスキーマ要素または複合タイプに基づいて作成: 生成されるビジネス・オブジェクトには、選択したスキーマ要素または複合タイプにマッピングされた1つ以上の属性が含まれます。これらの属性は削除できませんが、新規の属性を追加することはできます。
-
「タイプ」モジュール内の合成型をカスタマイズする方法: サービスまたは参照を追加すると、引数として必要なタイプがビジネス・カタログによって「タイプ」事前定義済モジュールに追加されますが、そのタイプをカスタマイズできます。タイプをカスタマイズする際は、ユーザー定義モジュールへのタイプの格納、名前の変更、およびタイプへの属性の追加が可能です。
10.1.2 ビジネス・オブジェクトを使用したモデリングのメリット
ビジネス・オブジェクトを使用してプロセス内のデータを管理すると、次のようなメリットがあります。
-
プロセスの簡略化: ビジネス・オブジェクトを使用すると、プロセス内のプロセス・データ・オブジェクトが少なくなります。このため、プロセスが簡略化され、可読性が向上します。
-
結合の減少: プロセス内のデータ・オブジェクトの数が少ないほど、それを構成するサブプロセスおよびアクティビティに必要なパラメータも少なくなります。
-
再利用: 同じプロジェクトに属していない他のプロセス内の特定のプロセスに定義したビジネス・オブジェクトを使用できます。ビジネス・オブジェクトの再利用により、プロジェクトの開発時間を大幅に短縮できます。ビジネス・オブジェクト継承を使用することで、同じプロジェクト内で1つのビジネス・オブジェクトで定義されているデータおよび動作を再利用することもできます。継承の詳細は、「ビジネス・オブジェクト継承の概要」および「ビジネス・オブジェクト継承の使用」を参照してください。
-
容易な管理: ビジネス・オブジェクトを更新したり、そのバグを修正すると、このビジネス・オブジェクトを使用しているすべてのプロセスに変更が反映されます。
-
パラレルな開発: プロセス内のビジネス・オブジェクトの特定のインタフェースについて合意した後、チームの一部のメンバーがそれらのビジネス・オブジェクトを開発する一方で、他のメンバーがプロセスを開発することができます。
-
ユニット・テスト: プロセス内の各ビジネス・オブジェクトを個別にテストできます。ユニット・テストを行うと、テスト・ケースの複雑さを軽減し、プロジェクトの質を大幅に向上させることができます。
10.2 ビジネス・オブジェクトの使用
ビジネス・オブジェクトをBPMプロジェクトに追加して、プロジェクト内のプロセスに関連するデータを格納できます。追加したビジネス・オブジェクトは、ビジネス・カタログに格納されます。
ビジネス・カタログの詳細は、「ビジネス・カタログの使用」を参照してください。
ビジネス・オブジェクトの開発時には、ビジネス・オブジェクトを変更、名前変更または削除できます。また、ビジネス・オブジェクトの機能がわかるドキュメントや、その使用方法を説明するドキュメントを追加することもできます。
10.2.1 ビジネス・オブジェクトを追加する方法
ビジネス・オブジェクトをビジネス・カタログに追加して、BPMNプロセスにデータを格納するためのビジネス・エンティティをモデリングできます。
ビジネス・オブジェクトを追加するには:
10.2.2 ビジネス・オブジェクトを追加した後の結果
ビジネス・オブジェクトがビジネス・カタログ内に生成されます。このビジネス・オブジェクトを使用して、BPMNプロセス内に次の要素のタイプを定義できます。
-
データ・アソシエーション内の引数
-
プロセス・データ・オブジェクト
-
プロジェクト・データ・オブジェクト
10.2.3 ビジネス・オブジェクトを変更する方法
既存のビジネス・オブジェクトは、次の方法で変更できます。
-
属性の追加
「ビジネス・オブジェクト属性を追加する方法」を参照してください
-
属性の削除
「ビジネス・オブジェクト属性の削除方法」を参照してください
-
メソッドの追加
「ビジネス・オブジェクト・メソッドの追加方法」を参照してください
-
メソッドの削除
「ビジネス・オブジェクト・メソッドの削除方法」を参照してください
-
ドキュメントの追加
「ビジネス・オブジェクト属性をドキュメント化する方法」を参照してください
「ビジネス・オブジェクト・メソッドをドキュメント化する方法」を参照してください
10.2.4 ビジネス・オブジェクトを削除する方法
使用しないビジネス・オブジェクトや不要なビジネス・オブジェクトは削除できます。削除したビジネス・オブジェクトを使用するフロー・オブジェクトまたはデータ・アソシエーションがプロジェクトに含まれる場合は、手動でそれらを削除する必要があります。
ビジネス・オブジェクトを削除するには:
10.2.5 ビジネス・オブジェクトを削除した後の結果
Oracle BPM Studioによって、ビジネス・オブジェクトがビジネス・カタログから削除されます。削除したビジネス・オブジェクトを使用しているフロー・オブジェクトがプロセス内にある場合、これらの参照を手動で削除する必要があります。
10.2.6 ビジネス・オブジェクトをドキュメント化する方法
ビジネス・オブジェクトの機能やデータ構造が他のプロセス開発者にわかるように、ドキュメントをビジネス・オブジェクトに追加できます。
ビジネス・オブジェクトをドキュメント化するには:
10.3 プロセス内でのビジネス・オブジェクトの使用
ビジネス・オブジェクトには、プロセスに関連するデータが格納されます。このデータ・オブジェクト内の情報は、プロセス内のいずれのアクティビティからでも更新できます。
プロジェクト内でビジネス・オブジェクトを使用するには、データ・オブジェクトをプロセスに追加し、そのタイプを作成済のビジネス・オブジェクトに設定します。
10.3.1 プロセス内でのビジネス・オブジェクトの使用方法
ビジネス・オブジェクトを使用してデータ・オブジェクトのタイプを定義する複合データ・オブジェクトをプロセス内に作成できます。
プロセス内でビジネス・オブジェクトを使用するには:
10.4 XMLスキーマ要素またはタイプに基づくビジネス・オブジェクトの追加
ビジネス・オブジェクトはXMLスキーマ要素または複合タイプに基づいて作成できます。ビジネス・オブジェクトの作成に使用するXMLスキーマ要素または複合タイプは、BPMプロジェクトの一部である必要があります。
要素を含むXMLスキーマや複合タイプはプロジェクトに追加できます。あるいは、WSDLファイル内にインラインで定義されているタイプを使用することもできます。後者の場合、Webサービス・タイプのSOAアダプタを追加することにより、WSDLファイルをプロジェクトに追加する必要があります。
ビジネス・オブジェクトは、XSDスキーマに基づき、ビジネス・オブジェクトの要素はそのXSD定義に基づいて初期化されます。デフォルトのデータ値は、プロセス・データ・オブジェクトにのみ適用でき、ビジネス・オブジェクトには適用できません。デフォルトのデータ値をビジネス・オブジェクトに適用すると、スキーマ定義は適用されません。
XMLスキーマ要素を使用してビジネス・オブジェクトを作成すると、選択した要素が結果のビジネス・オブジェクトの属性になります。
XMLスキーマ要素を使用してビジネス・オブジェクトを作成すると、選択した要素が結果のビジネス・オブジェクトの属性になります。
WSDLファイルに含まれるスキーマに基づいてビジネス・オブジェクトを作成した場合、結果のビジネス・オブジェクトを別のビジネス・オブジェクトの属性のタイプとして使用することはできません。
10.4.1 XMLスキーマ要素またはタイプに基づいてビジネス・オブジェクトを追加する方法
この手順を実行する前に、ビジネス・カタログにビジネス・オブジェクトのベースとして使用するXMLスキーマが含まれていることを確認してください。
XMLスキーマまたは複合タイプに基づいてビジネス・オブジェクトを追加するには:
10.4.2 XMLスキーマ要素またはタイプに基づいてビジネス・オブジェクトを作成した後の結果
ビジネス・オブジェクトを変更したり、ビジネス・オブジェクトに属性を追加することはできません。ビジネス・オブジェクトの構造は、XMLスキーマ要素またはタイプの構造に基づいています。
10.4.3 XMLスキーマをBPMプロジェクトに追加する方法
「ビジネス・オブジェクトの作成」ダイアログ・ボックスから、XMLスキーマをプロジェクトに追加できます。
XMLスキーマをBPMプロジェクトに追加するには:
10.5 ビジネス・オブジェクト属性の概要
属性は、ビジネス・オブジェクトを定義および説明するデータを格納します。ビジネス・オブジェクトにおける属性は、オブジェクト指向におけるインスタンス変数に相当するものです。
営業見積サンプルでは、見積オブジェクト内に次の属性があります。
-
サマリー
-
製品項目
-
見積要求ステータス
-
使用許諾条項
-
推奨割引
これらの属性は製品を説明するもので、プロセスに関連しています。IDまたはSKUは、選択された製品を識別する役割を持ちます。説明はユーザーに製品の用途を示すために使用されます。価格は製品価格を顧客に示し、以降のプロセスで合計金額を計算するために使用されます。
属性を定義する際には、次の項目を指定する必要があります。
-
名前: 属性を識別するために使用します。
-
タイプ: 属性に格納できるデータのタイプを定義します。属性では、単純型またはその他の定義済ビジネス・オブジェクトをサポートしています。
さらに、次の項目も定義できます。
-
説明: 属性の用途が他のプロセス開発者にわかるように、属性の詳細を提供します。
-
ドキュメント。「ビジネス・オブジェクト属性をドキュメント化する方法」を参照してください。
-
カスタムのデフォルト値
-
Not Null制約。
10.5.1 ビジネス・オブジェクト属性でサポートされるデータ型
次の表に、ビジネス・オブジェクトの属性でサポートされるデータ型を示します。
表10-1 サポートされるデータ型
データ型 | 説明 |
---|---|
string |
英数字の値 |
int |
整数 |
boolean |
trueまたはfalseの値 |
double |
倍精度浮動小数点数値 |
decimal |
定義済精度の小数部分 |
dateTime |
時間のユニット。日付と時刻を格納します |
long |
ロング数値 |
duration |
時間間隔 |
base64Binary |
バイナリ値(例: イメージ、ファイル) |
float |
浮動小数数値 |
byte |
8ビット符号付き2の補数の整数 |
short |
16ビット符号付き2の補数の整数 |
date |
時間のユニット。日付のみを格納します |
time |
時間のユニット。時間のみを格納します |
配列 |
指定されたデータ型の要素の集まり |
複合型 |
その他のビジネス・オブジェクト |
10.6 ビジネス・オブジェクト属性の使用
ビジネス・オブジェクトをモデリングするには、その属性を追加する必要があります。これらの属性は、プロセスに関連するデータを格納します。
属性は必要に応じて追加、変更および削除できます。また、格納されているデータの説明とビジネス・オブジェクトのユーザーに必要な情報が記載されたドキュメントに、これらを追加することもできます。
10.6.3 ビジネス・オブジェクト属性をドキュメント化する方法
ビジネス・オブジェクトの機能が他のプロセス開発者にわかるように、ドキュメントをビジネス・オブジェクト属性に追加できます。
ビジネス・オブジェクト属性をドキュメント化するには:
10.7 ビジネス・オブジェクト・メソッドの使用
ビジネス・オブジェクトには、それに含まれているデータを操作および処理を実行するメソッドを含めることができます。これらのメソッドは、そのビジネス・オブジェクトの動作を表します。
属性は必要に応じて追加、変更および削除できます。また、実行する操作の説明とビジネス・オブジェクトのユーザーに必要な情報が記載されたドキュメントに、これらを追加することもできます。
10.7.1 ビジネス・オブジェクト・メソッドの追加方法
ビジネス・オブジェクトのデータに基づいて操作および処理を実行するビジネス・オブジェクト・メソッドを定義できます。
ビジネス・オブジェクト・メソッドを追加するには:
10.7.2 ビジネス・オブジェクト・メソッドのシグネチャの変更方法
ビジネス・オブジェクト・メソッドのシグネチャは、名前または戻り型を変更するか、入力引数を変更することで変更できます。
ビジネス・オブジェクト・メソッドのシグネチャを変更するには:
10.7.3 ビジネス・オブジェクト・メソッドの削除方法
使用しなくなったビジネス・オブジェクト・メソッドは削除できます。
ビジネス・オブジェクト・メソッドを削除するには:
- ビジネス・オブジェクト・エディタで、削除するメソッドが含まれているビジネス・オブジェクトを開きます。
- 「メソッド」セクションを開きます。
- 削除するメソッドの「削除」ボタンをクリックします。
10.8 ビジネス・オブジェクトの共有
ビジネス・オブジェクトをファイルにエクスポートしてからインポートすることで、異なるプロジェクト間でそれらを共有できます。
単一のビジネス・オブジェクトまたは複数のビジネス・オブジェクトのエクスポートを選択できます。複数のビジネス・オブジェクトをエクスポートするときは、例外もエクスポートできます。エクスポートしたビジネス・オブジェクトを含むファイルには、.bob拡張子が付きます。ビジネス・オブジェクトが他のビジネス・オブジェクトに依存している場合は、これらの依存関係もエクスポート・ファイルに含められます。
このエクスポート・ファイルから他の任意のプロジェクトに、ビジネス・オブジェクトをインポートできます。ビジネス・オブジェクトをインポートするときに、Studioでは、それが格納されていたモジュールが存在しない場合はそのモジュールもインポートされます。
10.9 ビジネス・オブジェクト継承の概要
継承によって1つのビジネス・オブジェクトで定義されているデータおよび動作を再利用できます。これにより、重複するデータ構造およびスクリプトが回避され、保守が簡単になり、エラーが発生しにくくなります。
継承を使用するには、ビジネス・オブジェクトを、再利用する属性およびメソッドを定義する別のビジネス・オブジェクトの子として作成します。後者を親オブジェクトと呼びます。
子オブジェクトには、それによって定義されているかのように、親オブジェクトの属性およびメソッドへのアクセス権があります。
会社の給与計算を管理するビジネス・プロセスでは、ビジネス・オブジェクトEmployeeを定義し、Employeeのデータおよびメソッドを継承してそれらのいくつかを再定義する子ビジネス・オブジェクトManagerを定義します。
10.9.1 メソッドのオーバーロード
子ビジネス・オブジェクトは、親オブジェクトで定義されているメソッドを再定義し、それらにその子ビジネス・オブジェクト固有の異なる動作を割り当てることができます。再定義されたメソッドの入力引数および戻りパラメータは、親オブジェクトのメソッドのものと一致する必要があります。
10.9.2 ポリモフィズム
子ビジネス・オブジェクトは、親ビジネス・オブジェクトのサブタイプです。つまり、親ビジネス・オブジェクトの型を使用してデータ・オブジェクトを定義し、それに子ビジネス・オブジェクトのインスタンスを割り当てることができます。これを行う場合、親ビジネス・オブジェクトで定義されている属性およびメソッドにのみアクセス権を持つようになります。ただし、子ビジネス・オブジェクトで再定義されたメソッドは、それらが子オブジェクトで定義されたように動作します。
10.9.3 メソッドのオーバーライド
ビジネス・オブジェクトは同じ名前であるが引数のセットが異なる複数のメソッドを持つことができます。そのメソッドが呼び出されたときに呼び出される引数に基づいて、どのメソッドを実行するのかがランタイム・エンジンによって決定されます。
10.10 ビジネス・オブジェクト継承の使用
ビジネス・オブジェクト継承を使用してデータおよびメソッドを再利用すると、コードの重複を回避し、保守を容易にすることができます。
この項では、子ビジネス・オブジェクトの作成方法と、オブジェクトを抽象としてマークする方法について説明します。
10.10.1 子ビジネス・オブジェクトの作成方法
子ビジネス・オブジェクトを作成すると、ビジネス・オブジェクトで定義されている属性およびメソッドを再利用できます。
子ビジネス・オブジェクトを作成するには:
10.10.2 ビジネス・オブジェクトを抽象としてマークする方法
ビジネス・オブジェクトを抽象としてマークし、それが動作およびデータを定義するのみであることを示すことができます。
抽象ビジネス・オブジェクトを作成するには:
- ビジネス・オブジェクト・エディタで、抽象としてマークするビジネス・オブジェクトを開きます。
- 「抽象」チェック・ボックスを選択します。
ビジネス・オブジェクトを抽象としてマークし、それが、子オブジェクトによって再利用される動作およびデータを定義するのみであることを示すことができます。抽象ビジネス・オブジェクトはインスタンス化できず、データ・オブジェクトの型を定義してそれに子ビジネス・オブジェクトのインスタンスを割り当てることにのみ使用できます。