BPELプロセスを作成する最初の手順は、Oracle JDeveloperでアプリケーションおよびBPELプロジェクトを作成することです。 アプリケーションおよびBPELプロジェクトの作成では、次のファイルが生成されます。
bpel_process_name.bpel
BPELプロセスに必要な基本的なアクティビティを格納するBPELソース・ファイル。 このファイルは、アクティビティやサービスをドラッグ・アンド・ドロップしたり、変数やパートナ・リンクなどを作成するときに、Oracle JDeveloperで作成されます。
bpel_process_name.xsd
プロセスに必要なXML文書を検証するためのXMLスキーマ。 BPELプロセスを作成する際に作成したカスタムXSDファイルまたはインポートしたカスタムXSDファイルは、このファイルと同じ場所に格納されます。
bpel_process_name.wsdl
Webサービスの通信エンドポイントを作成するための基本的なWSDL。
bpel.xml
BPELプロセスがコールするWebサービスのWSDLファイルの場所を定義するデプロイメント・ディスクリプタ・ファイル。 このファイルはWebサービスのパブリック・インタフェースを参照します。
図7-2に、「BPELProcess1_synch」というBPELプロジェクトに関するこれらのファイルを示します。
図7-2に表示されているファイルに加え、次のファイルも作成されます。
application_name.jws
Javaアプリケーション・ファイル。 複雑なビジネス・プロセスでは、アプリケーションに多数のプロジェクト(.jprファイル)が組み込まれます。
bpel_process_name.jpr
Javaプロジェクト・ファイル。 各.jprファイルは、同じ名前の.bpelファイルに関連付けられます。
BPELプロセスは、Oracle JDeveloperで最初にアプリケーションを作成することで作成します。
アプリケーションを作成する手順は、次のとおりです。
アプリケーション・ナビゲータで、「アプリケーション」を右クリックし、「新規アプリケーション」を選択します。
「アプリケーションの作成」ダイアログを使用して、新しいアプリケーションの名前と場所を入力し、アプリケーション・テンプレートを指定します。
アプリケーション名を入力します。
ディレクトリ名を入力または参照するか、デフォルトの名前をそのまま使用します。
アプリケーション・パッケージの接頭辞を入力します。
後ろにピリオドが続く接頭辞は、アプリケーションの初期プロジェクトで作成されたオブジェクトに適用されます。
BPELプロジェクトの場合は、アプリケーション・テンプレートに「テンプレートなし[すべてのテクノロジ]」を選択します。
「OK」をクリックします。
「プロジェクトの作成」ウィンドウで、「取消」をクリックします。
Oracle JDeveloperでアプリケーションを作成した後は、アプリケーションに1つ以上のBPELプロジェクトを作成します。
BPELプロジェクトを作成する手順は、次のとおりです。
作成したアプリケーション名を右クリックし、「新規プロジェクト」を選択します。
「カテゴリ」で、「General」を開き、「Projects」を選択します。
「項目」で、「BPELプロセス・プロジェクト」を選択し、「OK」をクリックします。
BPELプロジェクト作成ウィザードの「プロジェクトの設定」ダイアログを使用して、BPELプロジェクトを設定します。
BPELプロセスの名前を入力します。
ネームスペースを入力するか、デフォルト値をそのまま使用します。
デフォルトのプロジェクト設定を使用するか、独自の設定を指定します。
次のいずれかのテンプレートを選択します。
非同期BPELプロセス: BPELプロセス・フローを開始するデフォルトのreceiveアクティビティと、非同期でクライアントをコールバックするinvokeアクティビティを備えた非同期プロセスを作成します。
同期BPELプロセス: BPELプロセス・フローを開始するデフォルトのreceiveアクティビティと、結果を戻すreplyアクティビティを備えた同期プロセスを作成します。
空のBPELプロセス: アクティビティのない空のプロセスを作成します。
「次へ」をクリックします。
BPELプロジェクト作成ウィザードの「入力/出力要素」ダイアログを使用して、独自のスキーマ・ファイルを追加するか、デフォルトのスキーマ・ファイルをそのまま使用します。
図7-3に示すように、BPELプロジェクトを作成すると、Oracle JDeveloperのダイアグラム・ビューにスケルトンBPELプロセスが表示されます。 これは、bpel_process_name.bpelによって表されたワークフローです。
図7-3に、同期BPELプロセスを示します。 「receiveInput」というラベルのreceiveアクティビティは入力変数に対して使用され、「replyOutput」というラベルのreplyアクティビティは出力変数に対して使用されます。
図7-4に、非同期プロセスを示します。 「receiveInput」というラベルのreceiveアクティビティは入力変数に対して使用され、「callBackClient」というラベルのinvokeアクティビティは出力変数に対して使用され、さらにWebサービスを起動するために使用されます。
ダイアグラムの下の「ソース」タブには、ダイアグラム・ビューに対応するBPELソース・コードが表示されます。
例7-1に、非同期プロセスのソース・コードを示します。
例7-1 非同期プロセスのソース・コード
<?xml version = "1.0" encoding = "UTF-8" ?>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////////
Oracle JDeveloper BPEL Designer
Created: Wed May 03 10:14:38 PDT 2006
Author:
Purpose: Asynchronous BPEL Process
///////////////////////////////////////////////////////////////////////////////////////////////////
-->
<process name="BPELProcess1_asynch"
targetNamespace="http://xmlns.oracle.com/BPELProcess1_asynch"
xmlns="http://schemas.xmlsoap.org/ws/2003/03/business-process/"
xmlns:xp20="http://www.oracle.com/XSL/Transform/java/
oracle.tip.pc.services.functions.Xpath20"
xmlns:bpws="http://schemas.xmlsoap.org/ws/2003/03/business-process/"
xmlns:ldap="http://schemas.oracle.com/xpath/extension/ldap"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:client="http://xmlns.oracle.com/BPELProcess1_asynch"
xmlns:bpelx="http://schemas.oracle.com/bpel/extension"
xmlns:ora="http://schemas.oracle.com/xpath/extension"
xmlns:orcl="http://www.oracle.com/XSL/Transform/java/
oracle.tip.pc.services.functions.ExtFunc">
<!--
///////////////////////////////////////////////////////////////////////////////////////////////////
PARTNERLINKS
List of services participating in this BPEL process
///////////////////////////////////////////////////////////////////////////////////////////////////
-->
<partnerLinks>
<!--
The 'client' role represents the requester of this service. It is
used for callback. The location and correlation information associated
with the client role are automatically set using WS-Addressing.
-->
<partnerLink name="client" partnerLinkType="client:BPELProcess1_asynch"
myRole="BPELProcess1_asynchProvider"
partnerRole="BPELProcess1_asynchRequester"/>
</partnerLinks>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////////
VARIABLES
List of messages and XML documents used within this BPEL process
///////////////////////////////////////////////////////////////////////////////////////////////////
-->
<variables>
<!-- Reference to the message passed as input during initiation -->
<variable name="inputVariable"
messageType="client:BPELProcess1_asynchRequestMessage"/>
<!-- Reference to the message that will be sent back to the requester during callback -->
<variable name="outputVariable"
messageType="client:BPELProcess1_asynchResponseMessage"/>
</variables>
<!--
///////////////////////////////////////////////////////////////////////////////////////////////////
ORCHESTRATION LOGIC
Set of activities coordinating the flow of messages across the
services integrated within this business process
///////////////////////////////////////////////////////////////////////////////////////////////////
-->
<sequence name="main">
<!-- Receive input from requestor. (Note: This maps to operation defined in BPELProcess1_asynch.wsdl) -->
<receive name="receiveInput" partnerLink="client"
portType="client:BPELProcess1_asynch" operation="initiate"
variable="inputVariable" createInstance="yes"/>
<!--
Asynchronous callback to the requester. (The callback location and correlation id are
transparently handled using WS-addressing.)
-->
<invoke name="callbackClient" partnerLink="client"
portType="client:BPELProcess1_asynchCallback"
operation="onResult" inputVariable="outputVariable"/>
</sequence>
</process>
非同期プロセスのソース・コードの詳細は、『Oracle BPEL Process Managerクイック・スタート・ガイド』を参照してください。