13 データ・オブジェクトおよびデータ・アソシエーションの使用
データ・オブジェクトを使用してプロセスベースのビジネス・アプリケーションで使用されるデータを格納する方法を学習し、また、データ・アソシエーションを使用してビジネス・プロセス内でのデータ処理方法を定義する方法も学習します。
13.1 ビジネス・プロセスで使用されるデータの処理について
ほとんどのビジネス・アプリケーションでは、ユーザーがデータを作成して操作する必要があります。たとえば、営業見積アプリケーションでは、顧客、見積、その他のタイプのデータに関する情報など、見積に関連するデータをユーザーが入力します。また、アプリケーションでは、アプリケーションの全体的な機能の一部として内部でのみ使用されるその他のデータを作成および操作することが必要な場合があります。
ビジネス・プロセスの作成時に、アプリケーションが使用するデータを定義する必要があります。Oracle Business Process Management (Oracle BPM)では、データがデータ・オブジェクト内に格納されます。データ・オブジェクトは、ほとんどのプログラミング言語に見られるデータ型と類似した単純型に基づいて定義されます。
また、データ・オブジェクトは、複合データ型に基づいた定義もできます。Oracle BPMのビジネス・オブジェクトは複合データ型です。複合データ型を使用すると、関連するデータをグループにまとめることができます。たとえば、従業員に関する情報の格納が必要なアプリケーションを作成している場合、名前、住所、給与および従業員に関するその他の情報を格納する複合データ型の作成が必要な場合があります。複合データ型は、Javaなどのオブジェクト指向プログラミング言語で使用されるクラスの概念に似ています。複合データ型の詳細は、「複合データ型を使用したデータ構造の定義」を参照してください。
13.2 データ・オブジェクトの概要
一般にデータ・オブジェクトは、ビジネス・プロセスおよびOracle BPMアプリケーションで使用される情報の格納に使用される変数です。プロセスの設計および実装ステージ中に定義されます。BPMプロジェクトのデプロイ前に、実行アプリケーションで必要なデータ・オブジェクトのすべてを定義しておく必要があります。
実行時に、新規データ・オブジェクトは作成されませんが、ユーザーがアプリケーションと相互作用するため、データ・オブジェクトに格納された情報の値は変更されます。実行中のプロセスでは、データを格納、アクセスおよび操作できます。また、データの値によってプロセスの分岐が決まります。
13.2.1 基本データ・オブジェクトと複合データ・オブジェクトの概要
Oracle BPMは、基本と複合の2つのタイプのデータ・オブジェクトをサポートします。使用するデータ・オブジェクトのタイプは、処理が必要なデータの型によって決まります。
-
基本データ・オブジェクト
基本データ・オブジェクトは単純データ型に基づいています。これらは、ほとんどのプログラミング言語に共通のコアなデータ型です。表 表13-1は、Oracle BPMでサポートされる基本データ型のリストです。
表13-1 単純なデータ・オブジェクト
タイプ 説明 ブール
論理値trueまたはfalseを表します。
Int
整数を表します。たとえば: 23、-10、0。
Decimal
10進表記で表される数値を表します。たとえば: 3.14、62、0.023。
Real
浮動小数点の数値を表します。たとえば: 2e-1、2.3E8。
String
文字列を表します。たとえば: "This is a string."
時間
年-月-日 時:分:秒として表される特定の時間を表します。たとえば: 1995-02-03 13:30:28-08:00
間隔
年数、月数、日数、時間数、分数、秒数として表される期間を表します。たとえば: 1d3h30m。
Binary
イメージや動画を含む、バイナリ・データの格納に使用されます。
-
複合データ・オブジェクト
複合データ・オブジェクトを使用すると、様々な型のデータをグループにまとめるデータ構造を作成できます。複合データ・オブジェクトは、複合データ型に基づきます。複合データ型を使用することで、基本データ・オブジェクトに基づいてデータ構造を作成できます。
たとえば、ID、名前、年齢といった従業員の様々なタイプのデータを含む、従業員という複合データ・オブジェクトを作成できます。複合データ型と複合データ・オブジェクトの間の関係は、Javaプログラミング言語におけるクラスとインスタンスとの関係に似ています。
図13-1は、基本データ・オブジェクトと複合データ・オブジェクトの関係を示しています。
複合データ・オブジェクトを作成する前に、まず、データ構造を定義する複合データ型を定義する必要があります。複合データ型の使用の詳細は、「複合データ型を使用したデータ構造の定義」を参照してください。
13.2.2 プロセスおよびプロジェクト・データ・オブジェクトの概要
データ・オブジェクトのデータ型を指定するだけではなく、スコープも選択する必要があります。Oracle BPMのスコープとは、データ・オブジェクトにアクセスできるプロセスまたはプロジェクト内の場所を指します。
Oracle BPMでは、プロセスとプロジェクトの2つのタイプのデータ・オブジェクト・スコープがあります。プロセス・データ・オブジェクトは、特定のプロセス用に定義されたデータ・オブジェクトです。同様に、プロジェクト・データ・オブジェクトはBPMプロジェクト全体用に定義されます。プロジェクト・データ・オブジェクトとプロセス・データ・オブジェクトはいずれも、基本タイプと複合タイプの両方から作成できます。
13.2.2.1 プロセス・データ・オブジェクト
プロセス・データ・オブジェクトを使用すると、単一のプロセス内でのみ使用されるデータ・オブジェクトを定義できます。プロセス・データ・オブジェクトは、それが定義されたプロセス内でのみ使用できます。
プロセスベースのアプリケーションを設計しているときに、単一のプロセス内でのみデータ・オブジェクトが必要であることが判明している場合は、システム・リソースを節約するためプロセス・データ・オブジェクトとして定義することをお薦めします。
13.2.2.2 プロジェクト・データ・オブジェクト
プロジェクト・データ・オブジェクトでは、プロセス間でデータを共有できます。たとえば、Oracle BPMアプリケーション内では、発注書プロセスと承認リクエスト・プロセスはいずれも、リクエストを作成した従業員のデータを追跡します。1つのプロセスで作成または変更されたデータに他のユーザーがアクセスできます。
プロジェクト・データ・オブジェクトを使用すると、アプリケーション内のすべてのプロセスが同じデータにアクセスできるようになります。ただし、各プロセスでは、そのデータの値を割り当てて、更新する必要があります。
プロジェクト・データ・オブジェクトではプロジェクト内のすべてのプロセスで使用されるデータ・オブジェクトを定義できますが、このデータ・オブジェクトはグローバルなデータ・オブジェクトではありません。プロジェクト内の各プロセスは、独自のバージョンのデータ・オブジェクトを使用します。プロセス間でデータを共有するためにプロジェクト・データ・オブジェクトが使用されることはありません。プロセス間でデータを共有するには、データ・アソシエーションを作成する必要があります。データ・アソシエーションの詳細は、「データ・アソシエーションの概要」を参照してください。
プロジェクト・データ・オブジェクトを定義することのもう1つの利点は、プロジェクトの公開後に変数の値が表示されるようにOracle Business Process Management Workspaceビューを構成できることです。これは、プロジェクト・データ・オブジェクトを使用する場合にのみ可能です。
13.3 データ・オブジェクトの使用
また、データ・オブジェクトは、複合データ型に基づいた定義もできます。Oracle BPMのビジネス・オブジェクトは複合データ型です。複合データ型を使用すると、関連するデータをグループにまとめることができます。
この項では、新規データ・オブジェクトを作成する方法や既存のデータ・オブジェクトを編集または削除する方法など、データ・オブジェクトを使用する手順について説明します。
13.3.1 データ・オブジェクトの作成方法
この項の手順では、新規のプロセス・データ・オブジェクトまたはプロジェクト・データ・オブジェクトを作成する方法について説明します。複合データ型に基づくデータ・オブジェクトの作成が必要な場合は、最初に複合データ型を作成する必要があります。複合データ型の詳細は、「複合データ型を使用したデータ構造の定義」を参照してください。
プロジェクトのようこそページからデータ・オブジェクトを作成するには:
13.3.2 データ・オブジェクトを編集または削除する方法
プロセス・データ・オブジェクトまたはプロジェクト・データ・オブジェクトを編集または削除できます。
データ・オブジェクトを編集または削除するには:
13.3.3 データ・オブジェクト削除または編集時の処理
データ・オブジェクトの編集または削除後にプロジェクトを検証し、変更または削除されたデータ・オブジェクトへの参照がないことを確認します。
データ・オブジェクトの編集後、そのオブジェクトへのすべての参照が引き続き有効であることを確認する必要があります。たとえば、int
型からstring
型にデータ・オブジェクトを変更した場合は、そのデータ・オブジェクトを使用するすべての式が引き続き正しく機能することを確認する必要があります。
データ・オブジェクトの削除後、そのオブジェクトへのすべての参照を必ず削除してください。参照には、そのデータ・オブジェクトを使用しているすべてのデータ・アソシエーションおよび式が含まれます。削除されたデータ・オブジェクトへの参照を削除しない場合は、プロジェクトが検証されません。
13.4 データ・アソシエーションの概要
データ・アソシエーションは、データ・オブジェクトに格納された情報を処理する方法を決定します。
データ・アソシエーションを使用できるコンテキストは次のとおりです。
-
BPMNプロセスから起動された別のプロセスまたはサービス
-
ヒューマン・タスク・サービス
-
Oracle Business Rule
-
スクリプト・タスク。
このBPMNフロー・オブジェクトは、データ・アソシエーションを介してデータ・オブジェクトを受渡しするために使用します。
表13-2は、データ・アソシエーションを定義できるフロー・オブジェクトをリストしています。また、実装されるオブジェクトもリストしています。
表13-2 データ・アソシエーションを受け入れるフロー・オブジェクト
フロー・オブジェクト | 実装 |
---|---|
メッセージ開始および終了イベント |
サービスおよびその他のBPMNプロセス |
メッセージ・スロー・イベントおよびキャッチ・イベント |
サービスおよびその他のBPMNプロセス |
送信タスクおよび受信タスク |
サービスおよびその他のBPMNプロセス |
スクリプト・タスク |
実装は含みません。データ・アソシエーションを介してデータ・オブジェクトを受渡しするために使用します。 |
ユーザー・タスク |
Oracle Human Tasks |
ビジネス・ルール・タスク |
Oracle Business Rules |
サービス・タスク |
サービスおよびBPMNプロセス |
データ・アソシエーションは、フロー・オブジェクトから外部のサービスまたはプロセスへの入力引数および出力引数を定義するために使用します。図13-3に、フロー・オブジェクトと、それに対応する実装、および外部のプロセスまたはサービスの間にある関係を示します。
矢印は、外部のプロセスまたはサービスとの間で入力と出力を行う引数を表します。これらの引数はデータ・アソシエーションを使用して定義されます。
入力および出力はフロー・オブジェクトのデータ・アソシエーションで定義されますが、コールされているシステムまたはサービスに渡される値を定義していることに注意してください。これらのシステムおよびサービスは、図13-4に示すように、ビジネス・プロセスの外に存在します。
式を使用して、入力値と出力値を評価および変更できます。
13.4.1 データ・アソシエーション・エディタの概要
図13-5に示されるように、データ・アソシエーション・エディタを使用すると、フロー・オブジェクトとその実装の間で受渡しされる入力値と出力値を構成できます。
表13-3では、データ・アソシエーション・エディタの各領域について説明します。
表13-3 データ・アソシエーション・エディタのユーザー・インタフェース
UI領域 | 説明 |
---|---|
入力 |
フロー・オブジェクト内に実装されるサービスまたはプロセスへの入力として割り当てられたデータ・オブジェクトを表示するテキスト・ボックスが表示されます。各テキスト・ボックスの横には、式エディタを起動するアイコンがあります。 |
フロー・オブジェクト・インタフェース |
実装されるサービスまたはプロセスに必要な入力引数がリストされます。また、入力および出力として提供されたデータ・オブジェクトの展開可能なリストも表示されます。フロー・オブジェクトの領域では、複合データ・オブジェクト内の特定の基本データ・オブジェクトにマップする複合データ・オブジェクトを展開できます。 |
出力 |
フロー・オブジェクト内に実装されるサービスまたはプロセスからの出力として割り当てられたデータ・オブジェクトを表示するテキスト・ボックスが表示されます。 |
データ・オブジェクト |
すべてのデータ・オブジェクトのリストが表示されます。このリストは、プロセス・データ・オブジェクトとプロジェクト・データ・オブジェクトの間が分割されます。 |