ヘッダーをスキップ
Oracle® Fusion Middlewareテクノロジ・アダプタ・ユーザーズ・ガイド
11gリリース1 (11.1.1.7.0)
B55918-09
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

11 Oracle JCA Adapter for UMS

この章は、Oracle User Messaging Serviceアダプタの使用方法について説明します。このアダプタは、ユーザーとアプリケーション間の通信を可能にするOracle Fusion MiddlewareコンポーネントのOracle User Message Service (UMS)をラップするJCAアダプタを提供します。また、この章では、UMSアダプタの概念、機能、構成およびエラー処理に関する情報を提供します。

この章では、次の項目について説明します。

11.1 UMSおよびUMSアダプタの概念

User Messaging Serviceは、ユーザーとアプリケーション間の通信を可能にするOracle Fusion Middlewareコンポーネントです。内容は次のとおりです。

UMSでは、電子メール、SMS、インスタント・メッセージ、ボイスなどの様々なメッセージング・チャネルがサポートされます。UMSでは、Oracle BPELまたはMediator製品と外部間のメッセージング・プロキシが提供されます。User Messaging Serviceでは、インバウンド・メッセージングとアウトバウンド・メッセージングの2通りのメッセージングが提供され、配信ステータスの配信などの強固なメッセージ配信と、エンタープライズ・メッセージを使用したメッセージの再送信が可能です。また、UMSでは、フェイルオーバー・アドレスをサポートできます。つまり、UMSでは、ユーザーとアプリケーション間の通信に対して、スケーラブルで可用性の高いソリューションが提供されます。

User Messaging Serviceの詳細は、『Oracle Fusion Middleware Oracle SOA Suite開発者ガイド』を参照してください。

11.1.1 Oracle UMSアダプタ

User Messaging Serviceアダプタには、Java Enterprise Edition Connector Architecture(JCA)バージョン1.5が実装されています。UMSアダプタは、実質的にUser Messaging Serviceをラップしているため、電子メールを含むメッセージング・チャネルを超えた通信が可能です。

UMSアダプタは、アダプタのアーキテクチャ全体に含まれます。J2EEアプリケーション、MediatorおよびBPELの各プロセスはOracle WebLogic Serverと通信します。次の図を参照してください。

図11-1 アダプタ・アーキテクチャの一部としてのUMSアダプタ

図11-1の説明が続きます
「図11-1 アダプタ・アーキテクチャの一部としてのUMSアダプタ」の説明

11.2 Oracle UMSアダプタの機能

UMSアダプタには次の機能が含まれています。

UMSアダプタには、次のインバウンド機能があります。

11.2.1 UMSアダプタのメッセージの概要

UMSアダプタでは、異なるメッセージの書式を指定できます。

多くの電子メールのユース・ケースでは、メッセージ・ペイロードが平文に指定されているため、スキーマを指定する必要がなく、そのままで受信することが必要な場合もあります。このケースでは、「メッセージ」画面で「文字列タイプのメッセージ」チェック・ボックスを選択できます。

たとえば、バイナリ・データの画像を送信する場合は、「不透明なメッセージ(Base64Binary)」オプションを指定できます。このオプションを選択すると、コンテンツは送信前にbase64でエンコードされます。

メッセージの変換には、XSDファイルが必要です。新しいスキーマを定義するか、あるいは既存のデータ型の定義(DTD)またはCOBOLコピーブックを変換する場合は、「ネイティブ・フォーマットのスキーマの定義」を選択してXSDファイルを指定する必要があります。

「ネイティブ・フォーマットのスキーマの定義」を選択すると、ネイティブ・フォーマット・ビルダー・ウィザードが起動します。このウィザードは、カンマ区切り値(CSV)、固定長、DTDおよびCOBOLコピーブックなどのファイル形式を使用したネイティブ・スキーマ・ファイルの作成を支援します。

ネイティブ・スキーマ・ファイルの作成後、「スキーマ・ファイルのURL」および「スキーマ要素」フィールドが入力された「メッセージ」ページが表示されます。

他のアダプタとは異なり、UMSアダプタでは、使用するメッセージの表示に、事前定義済のメッセージ・スキーマを使用します。

UMSアダプタで使用するメッセージ・スキーマの例は次のとおりです。

<?xml version= "1.0" encoding= "UTF-8" ?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            xmlns="http://platform.integration.oracle/blocks/adapter/fw/
metadata/Inbound_UMS" targetNamespace="http://platform.integration.oracle/blocks/adapter/
fw/metadata/Inbound_UMS" xmlns:imp1="http://xmlns.oracle.com/pcbpel/adapter/opaque/" elementFormDefault="qualified" attributeFormDefault="unqualified"> <xsd:import namespace="http://xmlns.oracle.com/pcbpel/adapter/opaque/" schemaLocation="opaque.xsd"/> <xsd:complexType name="MessageType"> <xsd:sequence> <xsd:element ref="imp1:opaqueElement"/> <xsd:element name="attachment" type="AttachmentType" minOccurs="0"
maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="AttachmentType"> <xsd:attribute name="href" type="xsd:string"/> </xsd:complexType> <xsd:complexType name="ResponseType"> <xsd:sequence> <xsd:element name="MessageId" type="xsd:string"/> </xsd:sequence> </xsd:complexType> <xsd:element name="message" type="MessageType"/> <xsd:element name="response" type="ResponseType"/> </xsd:schema>Status OpenFixedClosed

スキーマの定義は、UMSアダプタ構成ウィザードの「メッセージ」画面を介した変換要件とメッセージ本文のコンテンツの定義に従って行います。UMSアダプタでは、指定されたXSDがUMSアダプタで使用するメッセージ・スキーマにインポートされます。

たとえば、次のスキーマ・スニペットを参照すると、ユーザー定義スキーマのsingleString.xsdがUMSアダプタ構成ウィザードでインポートされ、さらにUMSアダプタ構成ウィザードを介してsingleString.xsdの下に定義されたsingleString要素を参照します。

<?xml version= '1.0' encoding= 'UTF-8' ?>
<xsd:schema attributeFormDefault="unqualified" elementFormDefault="qualified"
            targetNamespace="http://xmlns.oracle.com/singleString"
            xmlns="http://xmlns.oracle.com/singleString"
            xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            xmlns:nxsd="http://xmlns.oracle.com/pcbpel/nxsd"
            nxsd:encoding="US-ASCII" nxsd:useArrayIdentifiers="true"
            nxsd:stream="chars" nxsd:version="NXSD">
    <xsd:complexType name="singleString">
        <xsd:sequence>
            <xsd:element name="input" type="xsd:string" nxsd:style="terminated"
                         nxsd:terminatedBy=";"/>
        </xsd:sequence>
    </xsd:complexType>
    <xsd:element name="payload" type="singleString"/>
</xsd:schema>

次のスニペットは相互作用仕様を示しています。

<adapter-config name="SendEmail" adapter="UMS Adapter"
                wsdlLocation="SendEmail.wsdl"
  xmlns="http://platform.integration.oracle/blocks/adapter/fw/metadata">
  <connection-factory location="eis/ums/UMSAdapter"/>
  <endpoint-interaction portType="SendEmail_ptt" operation="SendEmail">
    <interaction-spec className="oracle.tip.adapter.ums.outbound.UmsInteractionSpec">
      <property name="DeliveryType" value="Email"/>
      <property name="From" value="scott.tiger@example.com"/>
      <property name="To" value="scott.parker@example.com"/>
      <property name="ReplyTo" value=" scott.tiger@example.com"/>
      <property name="Subject" value="Test Email"/>
    </interaction-spec>
  </endpoint-interaction>
</adapter-config>

注意:

UMSアダプタでは、メッセージ・メタデータにメッセージ・ファイルそのものが添付されます。message.datファイルを調査する場合は、インターネット・ヘッダーおよびMIMEヘッダーのすべてとペイロードを含む電子メール・メッセージの全体が表示されます。これは、任意のメール・クライアントでメッセージ・ソースの表示を実行した場合の表示と類似しています。また、キーワードを定義し、ユーザー・プリファレンス・ベースのメッセージングで使用するメッセージ・メタデータは、アダプタによってメッセージ・ヘッダーとして公開されます。詳細は、『Oracle Fusion Middleware Oracle SOA Suite開発者ガイド』を参照してください。


11.2.1.1 カスタムJavaコールアウト

「Javaコールアウト」画面では、電子メール・メッセージがUMSアダプタで処理される前に起動可能なカスタム・ロジックを使用してカスタムJavaクラスを指定できます。

11.2.1.1.1 カスタムJavaコールアウトのユース・ケース

カスタムJavaコールアウトのユース・ケースとして、送信者のアドレスをLDAP内のアドレス、またはステージング領域に存在し以前に記録されていたアドレスに一致させる例があります。このユース・ケースを作成するには、インタフェースのoracle.tip.pc.services.translation.util.ICustomCalloutを実装する必要があります。

このインタフェースでは、booleanの戻り値で単一のメソッド実行が定義されます。戻り値に応じて、メッセージは処理されるか、または拒否されます。

public Inteface CustomCallout{
  public boolean execute (Message message) throws exception;
}

ここでのMessageは、UMSセッション記述プロトコル(SDP)というJava APIのMessageクラスを示します。これは、UMSサーバーで指定され、適切に定義されたJava APIで、jdeveloper\communications\modules\oracle.sdp.messaging_11.1.1\sdpmessaging.jarで検索できます。戻されるブール値によって、メッセージを受け入れて処理するか、またはメッセージを拒否するかが指定されます。

package oracle.adapter.custom;

import java.io.File;
import oracle.sdp.messaging.Message;
import oracle.tip.pc.services.translation.util.ICustomCallout;
 
public class UMSAdapter_CustomCall implements ICustomCallout{
 
        @Override
        public boolean execute(Message message) throws exception {
        String emailFromAddress = message.getSenders()[0]
.getValue();
 
String fileName = "/tmp/OracleStore/staging/".
concat(emailFromAddress).concat(".usr");
                File file = new File(fileName);
                if(file.exists()) {
                        return true;
                }
                return false;
        }
}

もう1つのユース・ケースでは、サンプル・コードに示すように、scott.tiger@example.comという電子メールIDを持つユーザーがインターネット・ストアのWebサイトを使用した登録をしています。このユーザーは、ステージング領域の下にscott.tiger@example.comというファイル名を使用して記録されます。

送信されてきた電子メールに返信するには、そのユーザーの電子メールIDに直接電子メールが送信されます。ユーザーが電子メールに返信すると、UMSアダプタがその電子メールを受信します。その後は、Javaコールアウトを使用して、ユーザーのWebサイトでの登録をチェックし、確認できます。

11.2.1.1.2 カスタム・コールアウト・ファシリティの使用

カスタム・コールアウト・ファシリティを使用するには、次を実行する必要があります。

  1. UMSアダプタ構成ウィザードの「Javaコールアウト」画面でクラス名を指定します。

  2. そのクラスおよび他の必要なカスタム・クラスをjarファイルにバンドルします。

  3. SCA-INF/libディレクトリにあるコンポジット・アプリケーションの下にそのjarファイルを置きます。

  4. カスタムJavaクラスも、WebLogic Serverのドメイン・ディレクトリに配置することなく、次の2つの方法のいずれかによって、コンポジットと一緒にパッケージし、デプロイできます。

    • コンパイル済のJavaクラス(.classファイル)は、コンポジット・プロジェクト・フォルダの\SCA-INF\classesの下に直接配置し、デプロイできます。

    • コンパイル済のJavaクラスはJARとして作成することも可能で、コンポジット・プロジェクト・フォルダの下に配置した上で、\SCA-INF\libをデプロイします。

11.2.2 UMSアダプタのエラー処理およびトランザクション

他のテクノロジ・アダプタと同様に、UMSアダプタでは、悪質なメッセージを拒否するために、インバウンド側でアダプタによるデフォルトの拒否処理メカニズムを使用します。

たとえば、変換関連のエラーが生じると、標準処理メカニズムを使用したメッセージ拒否が発生します。これにより、ランタイム例外を処理するためのポリシーの定義でエラーが分析可能なことを確認できます。例外を処理するためのポリシーの詳細は、第2章のエラー処理に関する項を参照してください。

11.2.2.1 LRC最適化でXAを使用するように構成されたJNDI名の使用

UMSアダプタでは、インバウンド・シナリオを使用したXAトランザクションをデフォルトで使用します。この場合は、アダプタのデプロイメント・ディスクリプタの下にあるLocal Transactionに設定されたトランザクション・サポートと一緒に、XATransactionプロパティがtrueに設定された接続ファクトリ・インスタンスが構成されます。この構成は、UMSアダプタがLRC(最終リソース・コミット)最適化を標準XAに提供する場合に必要です。LRCは、XA以外のリソースがグローバル・トランザクションに参加できるようにするパフォーマンス拡張オプションです。

デフォルトのJNDIインスタンスが使用可能で、これはデフォルトでXAを使用するように構成されています。このデフォルトのJNDIインスタンス名はeis/ums/UMSAdapterInboundです。

アウトバウンド・シナリオでは、デフォルトのJNDIインスタンスのeis/ums/UMSAdapterOutboundが指定されます。このJNDIインスタンスでは、トランザクション・サポートがNoTransactionに設定されます。

独自のJNDIインスタンスを定義して使用することもできますが、前述の説明に注意しておく必要があります。

11.2.2.2 インバウンド・エラー処理

UMSアダプタでは、悪質なメッセージを拒否するために、アダプタのインバウンド側でデフォルトの拒否処理メカニズムを使用します。たとえば、変換関連のエラーが生じると、メッセージ拒否が発生します。フォルト・ポリシーおよびアダプタの詳細は、このガイドのフォルト・ポリシーの作成に関する項を参照してください。

再試行可能なエラー状態で、再試行関連のエンドポイント・プロパティを指定している場合は、アダプタにより、メッセージの拒否前に構成されていた再試行数でインバウンド・メッセージを再発行します。次に、前述のJNDIおよびXAの説明に従って、XAの下にあるロールバックにトランザクションが設定されます。

再試行不可能なインバウンド・エラー状態では、メッセージは、XAの使用時にロールバックに設定されたトランザクションでただちに拒否されます。

11.2.2.3 アウトバウンド・エラー処理

UMSアダプタは、接続エラーなどの一時(リカバリ可能)エラー状態に対して例外をスローします。再試行可能なエラーでは、アダプタ・フレームワークでサポートされている再試行ポリシーを使用できます。これを実行するには、必要な再試行カウントに対してバインディング・プロパティのjca.retry.countを設定できます。さらに、他のアダプタにおいて、プロパティを設定していない場合は、フォルト・ポリシーに従って再試行が実行されます。

アウトバウンド・トランザクションには、フォルト・ポリシーを使用して再試行不可能な接続エラーを定義できます。再接続の試行の最大数は、fault-policy.xmlを使用して定義できます。

アダプタでは、アダプタ構成ウィザードを使用して、設計時の作業で取得したメタデータに基づき、データをネイティブ表現と標準XML形式間で変換します。変換の実行によりスローされる例外が発生すると、変換エラーがスローされ、さらに対応するバインディング・フォルトもスローされます。

表11-1「UMSアダプタのアウトバウンド・エンドポイント・プロパティ」に示すように、アウトバウンド再試行可能エラーに関連するエンドポイント・プロパティを設定できます。

表11-1 UMSアダプタのアウトバウンド・エンドポイント・プロパティ

プロパティ 説明

jca.retry.count

再試行可能エラー状態をスローして起動中のサービス・エンジンに戻す前の再試行の最大数を示します。

jca.retry.interval

再試行の時間間隔(秒単位)を示します。

jca.retry.backoff

再試行間隔の増分ファクタ(正の整数)を示します。

jca.retry.maxInterval

再試行の間隔の最大値(値が1より大きい場合の上限)を示します。

jca.retry.maxPeriod

再試行の合計最大期間を示します。このパラメータに指定した値を超えて、再試行が発生することはありません。


11.2.2.3.1 ステータス・レポートでの失敗した送信通知の再試行メカニズム

UMSアダプタでは、UMSが提供する既存のインフラストラクチャを使用して、失敗した送信の例外を再試行します。現行のUMSサーバーでは、Oracle Enterprise Managerからの通知の失敗の確認に加えて、メッセージの再送信もサポートしています。

11.2.2.3.2 SMTPサーバーとの通信におけるTLS (SSL)を使用したアウトバウンド送信

\

アウトバウンドを使用する場合は、使用するUMSアダプタ構成ウィザードのフローと標準のUMSアダプタ構成ウィザードを使用した場合のフローは同じですが、Enterprise Managerコンソールを使用した実行が必要なUMSサーバー側に追加の構成タスクが発生します。

電子メール・ドライバ側のOutgoingMailServerTLSプロパティはtrue(デフォルトはfalse)に設定する必要があります。SSL/TLSをtrueに設定し、さらに、Enterprise Manager内のSSLまたはTLSの設定に基づいて送信ポートを構成する必要があります。これにより、TLS暗号化でSMTPサーバーと通信できるようになります。

11.2.2.3.3 クラスタでのインバウンド受信通知(ポーリングまたはリスナーを使用)

標準のインバウンドUMSアダプタ構成ウィザード・フローを使用し、追加構成を使用することで、デプロイメントのクラスタ化環境をターゲットにできます。UMS APIは、クラスタ環境内でUMSサーバーとそのクライアントがデプロイされている環境をサポートします。また、UMSアダプタは、アクティブ/アクティブ設定での高可用性もサポートしています。

クラスタ化環境で適切に動作するUMSアダプタの構成の詳細は次のとおりです。

同じコンポジット・アプリケーションのすべてのUMSアダプタのアクティブ化において、同じ独自のApplicationName構成パラメータが使用されます。UMSアダプタでは、特定のエンドポイントがリッスンされている受信アドレスからアプリケーション名パラメータを合成します。

この合成により、クラスタ内の特定のコンポジットのすべてのアクティブ化において、アクセス・ポイントやメッセージ・フィルタなど、すべての構成およびアーティファクトの共有が可能になります。

ApplicationInstanceName構成パラメータはUMS API実装を使用して自動合成され、UMSアダプタはその合成に依存します。

さらに、UMSアダプタのAPI実装では、クラスタ環境内で2つのアプリケーションが同じメッセージを受信しないことが保証されます。

UMSアダプタは、クラスタ化環境でアクティブ/パッシブであるインバウンド・サービスのアクティブ・フェイルオーバーもサポートします。このアクティブ・フェイルオーバーは、JCAサービスのバインディング・プロパティ(composite.xml)シングルトンをtrueに設定することで、UMSアダプタ・サポートにおいて有効化できます。

リスニングおよびポーリングは、クラスタ化環境でもUMSアダプタを使用して非クラスタ化環境と同じ方法で動作します。

11.2.2.3.4 UMSアダプタのプロパティおよびMIMEタイプの構成

追加構成を指定するために使用可能なUMSアダプタと関連付けられたプロパティがいくつか存在します。これらの一部は、UMSアダプタ構成のアダプタ・ウィザードを使用する際にすでに設定されています。適用可能なすべてのインターネット・メール・ヘッダーおよびMIMEヘッダーは、正規化されたメッセージ・プロパティ/ヘッダーを使用して構成できます。

次の表には、UMSアダプタに適用可能なアクティブ化仕様プロパティがリストされています。

表11-2 UMSアダプタのアクティブ化仕様プロパティ

プロパティ名 説明

JavaCalloutImpl

メッセージ・フィルタまたはその他のチェックにカスタム・ロジックを定義するJavaクラス名。このクラスは、ICustomCalloutインタフェースの具体的な実装です。

ConsumeMode

アダプタによってUMSからメッセージを受信する方法を指定します。ポーリング・モードではポーラーに設定され、リスナー・モードではリスナーに設定されます。

To

受信メッセージの受信元となるアドレス。電子メール配信タイプにおける1つまたは複数のカンマ区切り電子メール・アドレスです。

Delivery Type

送信メッセージの受信および送信用に電子メール・サポートを提供します。

PollingInterval

ポーラー・コンシューム・モードでのポーリング間隔(秒)です。

MessageFilters

1つまたは複数のメッセージ・フィルタが指定されます。単一フィルタの場合は、フィールド・タイプおよび取得されるアクション(同意または拒否)に対して受信メッセージを適合させるため、Javaのパターン文字列で構成されます。


表11-3「UMSアダプタの相互作用仕様プロパティ」には、使用可能な相互作用仕様プロパティのリストが示されています。

表11-3 UMSアダプタの相互作用仕様プロパティ

プロパティ名 説明

Delivery Type

送信メッセージの受信および送信のみに対する電子メール・サポート。

Subject

送信メッセージの件名。

From

送信メッセージの送信者アドレス。

To

1つまたは複数の受信者アドレス。

Reply-to

返信先アドレス。

CC

電子メール配信の1つまたは複数のCCアドレス。

Bcc

電子メール配信の1つまたは複数のBccアドレス。

SendEmailAsAttachment

添付ファイルとして電子メールを送信するにはTrueにします。


UMSアダプタでは、適用可能なすべてのインターネット・メッセージ・ヘッダーおよびMIMEメッセージ・ヘッダー、さらにMIMEパート・ヘッダー(マルチパート構成内)が公開されます。

MIMEヘッダーは、メッセージ本文の最初の部分であるUMSアダプタのペイロードにのみ適用できます。

添付ファイルのMIMEヘッダーは、BPELプロセス内から操作可能な正規化されたメッセージ・プロパティとして、添付ファイルとともに格納されます。

表11-4「メッセージ・ヘッダー」では、インターネット・メッセージ・フォーマットで定義された適用可能なすべてのヘッダーのほか、アダプタ・ヘッダーのマッピングおよび対応関係について説明します。

表11-4 メッセージ・ヘッダー

ヘッダー・フィールド名 最小発生数 最大発生数 マップされたアダプタのヘッダー・フィールド名

Return-path

0

1

jca.ums.return-path

Received

0

無制限

jca.ums.received

Resent-Date

0

無制限

jca.ums.received

Resent-From

0

無制限

jca.ums.resent-from

Resent-Sender

0

1

jca.ums.resent-sender

Resent-To

0

無制限

jca.ums.resent-to

Resent-Cc

0

無制限

jca.ums.resent-cc

Resent-Bcc

0

無制限

jca.ums.resent-bcc

Resent-Message-ID

0

無制限

jca.ums.resent-message-id

Date

1

無制限

jca.ums.date

From

1

無制限

jca.ums.from

Sender

0

1

jca.ums.sender

Reply-to

0

1

jca.ums.reply-to

To

0

1

jca.ums.to

Cc

0

1

jca.ums.cc

Bcc

0

1

jca.ums.bcc

Message-ID

0

1

jca.ums.message-id

In-Reply-To

0

1

jca.ums.in-reply-to

References

0

1

jca.ums.references

Subject

0

1

jca.ums.subject

Comments

0

無制限

jca.ums.comments

Keywords

0

無制限

jca.ums.keywords


表11-5「MIMEパート・メッセージ・ヘッダー」は、適用可能なすべてのMIMEメッセージ・ヘッダーについて説明しています。


注意:

アウトバウンドUMSアダプタの場合、JCA.UMS.MSG.CONTENT-TYPEプロパティを使用して、エンコーディングを指定できます。値を設定しない場合、アウトバウンドUMSアダプタでは、デフォルトで電子メールにサーバーのエンコーディングが使用されます。

SOAサーバーをネイティブ・エンコーディング(たとえば、ISO-8859-1)で起動した場合、CCJK文字は処理できません。内容が文字化けします。回避策として、アウトバウンドUMSアダプタのJCAプロパティを次のとおり設定します。

JCA.UMS.MSG.CONTENT-TYPE = 'text/plain; charset=utf-8'


表11-5 MIMEパート・メッセージ・ヘッダー

ヘッダー・フィールド名 マップされたアダプタのヘッダー・フィールド名 ノート

Content-Type

jca.ums.part.content-type


Content-Transfer-Encoding

jca.ums.part.content-
transfer-encoding


Content-ID

jca.ums.part.content-id


Content-Description

jca.ums.part.content-
description


Content-Disposition

jca.ums.part.content-
disposition


Content-Language

jca.ums.msg.content-language


Mime-Extension-field

jca.ums.part.mime-extension-headers

その他のMIMEヘッダー・フィールドは、文字列のContent-で開始されます。次のように2つ以上のヘッダーを追加できます。
Content-* : value CRLF Content*- : value

CRLF - \r\n


11.2.2.3.5 固有のヘッダー

.

UMSアダプタでは、固有のヘッダーを任意に追加できます。次の表は、そのメカニズムを示しています。

表11-6 固有のヘッダー

ヘッダー名 ノート

jca.ums.msg.proprietary-headers

2つ以上の固有のヘッダーを次の書式で追加できます。

Header Name : value CRLF Header Name : value

(ヘッダー名は、ums.adapter.xxxxxのCRLF - \r\nに類似させる必要があります。)


11.2.2.4 電子メールの添付ファイル

UMSメッセージのXMLには、href属性を持つ添付要素のリストを含めることができます。Attachment Managerでは、MIMEタイプ、コンテンツIDのほか、ストリーム・オブジェクト(アタッチメント・コンテンツ)などの添付ファイルと関連付けられた他のMIMEの詳細を格納します。

現在は、UMSアダプタでインバウンドとアウトバウンドの両方の添付ファイルがサポートされています。

添付要素を含むXMLメッセージの例は、次の例を参照してください。

<Receive1_ReceiveEmail_InputVariable>
<part name="body" >
  <Email>
    <payload>This is a test mail.-Sagar</payload>
    <attachment>
      <Attachment href="0DF86C104BF511EoAF5977BAA7C7CFD9"/>
    </attachment>
  </Email>
  </part>
</Receive1_ReceiveEmail_InputVariable>

インバウンド側では、UMSアダプタにより、Attachment Managerに添付ファイルを渡す前にすべてのMIMEの詳細が設定されます。

11.2.2.5 メールの添付ファイルの処理

UMSアダプタでは、Fabric Attachment Managerを使用して、添付ファイルの格納および取得が行われます。

UMSメッセージ・スキーマでは、次に示すhref属性を使用して添付要素が定義されます。

<copy>
   <from expression="ora:readBinaryFromFile('/home/testuser
/oracle_sig_log0.gif')"/> <to variable="Invoke1_SendNotification_inputVariable" part="body" query="/ns2:message/ns2:attachment[1]"/> </copy>

UMSメッセージのXMLには、href属性を持つ添付要素のリストを含めることができます。Attachment Managerでは、MIMEタイプ、コンテンツIDのほか、ストリーム・オブジェクト(アタッチメント・コンテンツ)などの添付ファイルと関連付けられた他のMIMEの詳細を格納します。添付要素を含むXMLメッセージの例。

インバウンド側では、アダプタにより、添付ファイルをAttachment Managerに渡す前にすべてのMIMEの詳細を設定します。アウトバウンド側では、アダプタにより、添付オブジェクトと一緒に受信したすべてのMIMEの詳細を抽出し、送信SDPメッセージ通知の作成中に使用します。

Fabric Attachment Managerでは、添付ファイルをデータベースに格納した後に、キーを使用してhref属性を更新します。このキーは、後でアタッチメント・コンテンツの取得に使用されます。

UMSアダプタからBPEL/Mediatorのサービス・エンジンに渡される添付要素を含むXML構造を使用した正規化メッセージ・ペイロードのマップの例は後述で確認できます。

添付要素を含むXMLメッセージの例は次のとおりです。

<Receive1_ReceiveEmail_InputVariable>
<part name="body" >
  <Email>
    <payload>This is a test mail</payload>
    <attachment href="0DF86C104BF511EoAF5977BAA7C7CFD9"/>
  </Email>
  </part>
</Receive1_ReceiveEmail_InputVariable>
11.2.2.5.1 BPEL内の添付ファイルと関連付けられたMIME情報の取得

後述のスニペットでは、BPELでの添付ファイルの取得方法が示されています。

最初に、添付ファイルと関連付けられたMIME情報を取得します。

<assign name"Assign1">
<copy>
   <from exporession="oraReadBnaryFromFileWithMimeHeaders('/home/testuser/oracle_  sig_logo.gif','one','image/gif', ", '7bit', 'oracle_logo_gif_file', 'en/ja')"/>
   <to variable="invoke="1_SendNotification_InputVariable" part="body"
    query='/ns3:message/ns3:attachment[1]"/>
</copy>
<bpelx:InsertAfter>
    <bpelx:from variable=Invoke1_SendNotification_InputVariable"
            part="body" query=/ns3:message:/ns3:attachment"/>
<bpelx:to variable=Invoke1_SendNotification_InputVariable" part="body"
            part="body" query=/ns3:message:/ns3:attachment"/>

</bpelx:insertAfter>
<copy>
    <from expression="ora.readBinaryFromFileWithMimeHeaders{'/home/testuser/
install-mq-7.0.txt',",","," 'install_mq_file',''}"/> <to variable="Invoke1_SendNotification_InputVariable" part="body" query="/ns3:message/ns3:attachment[2]"/> </copy>
11.2.2.5.2 BPEL内の複数の添付ファイルに対するMIME情報の設定

次のスニペットでは、BPEL内の複数の添付ファイルに対するMIME情報の設定方法を示します。

<assign name="Assign1">
<copy>
<from exporession="oraReadBnaryFromFileWithMimeHeaders('/home/testuser/oracle_sig_logo.gif','one','image/gif', ", '7bit', 'oracle_logo_gif_file', 'en/ja')"/>
<to variable="invoke="1_SendNotification_InputVariable" part="body"
    query='/ns3:message/ns3:attachment[1]"/>

</copy>
<bpelx:InsertAfter>
  <bpelx:from variable=Invoke1_SendNotification_InputVariable"
        part="body" query=/ns3:message:/ns3:attachment"/>
<bpelx:to variable=Invoke1_SendNotification_InputVariable" part="body"
      part="body" query=/ns3:message:/ns3:attachment"/>

</bpelx:insertAfter>
   <from exporession="oraReadBnaryFromFileWithMimeHeaders('/home/
testuser/oracle_ sig_logo.gif','one','image/gif', ", '7bit',
'oracle_logo_gif_file', 'en/ja')"/> <copy> <to variable="invoke="1_SendNotification_InputVariable" part="body" query='/ns3:message/ns3:attachment[2]"/> </copy>

11.2.2.6 UMSアダプタのインバウンド操作およびアウトバウンド操作

UMSアダプタ構成ウィザードを使用して構成する操作には、次のインバウンド操作およびアウトバウンド操作が含まれます。

  • Inbound Receive Notification

  • Outbound Send Notification

  • Outbound Send Notification (Message ID as Reply)


注意:

多くの場合は、BPEのinvokeアクティビティのプロパティ・タブを使用してjca.propertiesを選択し、その起動アクティビティから値を設定できます。ただし、jca.ums.message-idは、このメッセージIDが自動生成のため、設定できません。


1)BPELのinvokeアクティビティには、プロパティ・タブがあります。

11.2.2.6.1 Oracle UMSアダプタのインバウンド通知の受信の概念

このシナリオでは、UMSアダプタにより、UMSサーバーのアクセス・ポイントを登録し、受信通知の消費と処理を実行します。この項では、Oracle UMSアダプタのインバウンド受信通知に関連付けられた様々な構成と概念の概要を示します。

電子メールのWSDLを受信する例は次のとおりです。

<wsdl:definitions name="ReceiveEmail"
                  targetNamespace="http://xmlns.oracle.com/pcbpel/adapter/ums/
                  UMSAdapter_In_SinglePart_Xlation/
                  SOAComposite_email_poller_bpel/ReceiveEmail"
                  xmlns:jca="http://xmlns.oracle.com/pcbpel/wsdl/jca/"
                  xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
                  xmlns:tns="http://xmlns.oracle.com/pcbpel/adapter/ums/
                  UMSAdapter_In_SinglePart_Xlation/
                  SOAComposite_email_poller_bpel/ReceiveEmail"
                  xmlns:pc="http://xmlns.oracle.com/pcbpel/"
                  xmlns:imp1="http://platform.integration.oracle/blocks/adapter/
                  fw/metadata/UMSAdapter"
                  xmlns:plt="http://schemas.xmlsoap.org/ws/2003/05
                  /partner-link/">
    <plt:partnerLinkType name="ReceiveEmail_plt">
        <plt:role name="ReceiveEmail_role">
            <plt:portType name="tns:ReceiveEmail_ptt"/>
        </plt:role>
 
    </plt:partnerLinkType>
    <wsdl:types>
        <schema xmlns="http://www.w3.org/2001/XMLSchema">
            <import namespace="http://platform.integration.oracle/blocks/adapter
            /fw/metadata/UMSAdapter"
                    schemaLocation="xsd/UMS.xsd"/>
        </schema>
    </wsdl:types>
    <wsdl:message name="ReceiveEmail_msg">
        <wsdl:part name="body" element="imp1:Email"/>
    </wsdl:message>
    <wsdl:portType name="ReceiveEmail_ptt">
        <wsdl:operation name="ReceiveEmail">
            <wsdl:input message="tns:ReceiveEmail_msg"/>
        </wsdl:operation>
    </wsdl:portType>
</wsdl:definitions>
11.2.2.6.2 Oracle UMSのアウトバウンド通知の送信の概念

このシナリオでは、UMSアダプタにより、送信通知の送信を処理します。この項では、Oracle UMSアダプタのアウトバウンド送信通知に関連付けられた様々な構成と概念の概要を示します。この送信通知には、通常送信と、メッセージIDのリプライ・リクエストとしての受信を使用した送信の2種類があります。

11.2.2.6.3 メッセージIDのリプライ・リクエストとしての受信

アウトバウンド同期リクエストのタイプとして、「メッセージIDをリプライ・リクエストとして受信」があります。これは、起動方法の1つのバリエーションですが、「メッセージIDをリプライ・リクエストとして受信」を使用する場合は、UMSサーバーから一意のメッセージIDが返信されます。このメッセージIDを取得してメッセージの配信状態の情報をチェックする場合は、当該タイプのリクエストを使用できます。

このタイプのリクエストを使用する場合は、操作の選択時にメッセージIDをリプライ・リクエストとして受信チェック・ボックスを選択します。

11.2.3 Oracle UMSアダプタの構成

UMSアダプタを構成するには、Enterprise ManagerコンソールおよびJDeveloperの電子メール・アダプタ構成ウィザードを使用してユーザー・メッセージ・サービスを構成します。

ユーザー・メッセージ・サービス・ドライバを構成するには、Enterprise Managerコンソールからタスクを実行します。特に、電子メール・メッセージング・チャネルを使用するためには、電子メール・ドライバ・プロパティを構成する必要があります。次の項では、UMSアダプタの電子メール・ドライバの構成に関する情報を示します。

11.2.3.1 UMSアダプタの電子メール・ドライバの構成 - アウトバウンド接続性

このプロシージャでは、必要な入力を指定して、電子メール・サーバーでのアウトバウンド接続性のためにUMSの電子メール・ドライバを設定します。

  1. Enterprise Managerを使用して電子メール・ドライバを構成するには、「ユーザー・メッセージング電子メール・ドライバ」→「電子メール・ドライバ・プロパティ」の順にクリックします。

  2. OutgoingMailServerの場所にSMTPサーバー名を入力します。

  3. OutgoingMailServerPortにSMTPサーバーのポート番号を入力します。通常は25です。

  4. SMTPサーバーで使用するセキュリティのタイプを入力します。設定可能な値は「なし」「TLS」および「SSL」です。デフォルト値は、Noneです。

  5. OutgoingDefaultFromAddrでSMTP認証に使用するユーザー名を入力します。SMTP認証がSMTPサーバーでサポートされている場合のみ必要です。(かわりにOutgoingUsernameフィールドも使用できます。)

  6. OutgoingPasswordにSMTP認証で使用するパスワードを指定します。これは、SMTP認証がSMTPサーバーでサポートされている場合に必要です。

    図11-2 「電子メール・ドライバ・プロパティ」画面を表示するEnterprise Managerコンソール

    図11-2の説明が続きます
    「図11-2 「電子メール・ドライバ・プロパティ」画面を表示するEnterprise Managerコンソール」の説明

11.2.3.2 UMSアダプタの電子メール・ドライバの構成 - インバウンド接続性

インバウンド・シナリオにおいて、UMSの電子メール・ドライバの設定で使用する必要がある最小構成は次のとおりです。

  1. MailAccessProtocolと入力します。これは、電子メールの受信プロトコルです。設定可能な値はIMAPおよびPOP3です。この値は、電子メールの受信がドライバ・インスタンスでサポートされている場合のみ必要です。

  2. ReceiveFolderの値を入力します。ドライバがメッセージをポーリングするフォルダの名前。デフォルト値は受信ボックスです。

  3. IncomingMailServerの値を入力します。これは、受信メール・サーバーのホスト名です。電子メールの受信がドライバ・インスタンスでサポートされている場合のみ必要です。

  4. IncomingMailServerPortの値を入力します。これは、IMAP4サーバー(143または993)あるいはPOP3サーバー(110または995)のポート番号です。

  5. IncomingMailServerSSLの値を入力します。これにより、IMAP4サーバーまたはPOP3サーバーへの接続時にSSLを有効にするかどうかを指定します。デフォルト値は無効です。

  6. IncomingMailIDsに電子メール・アドレスを入力します。これらは、ユーザー名に対応する電子メール・アドレスです。電子メールの受信がドライバ・インスタンスでサポートされている場合のみ必要になります。

  7. IncomingUserIDsにユーザー名のリストを入力します。これは、ドライバ・インスタンスのポーリング元のメール・アカウントにおけるユーザー名のリストです。各名前はカンマで区切られている必要があります(例: foo,bar)。電子メールの受信がドライバ・インスタンスでサポートされている場合のみ必要です。

  8. IncomingUserPasswordsと入力します。これは、ユーザー名に対応するパスワードのリストです。ドライバ・インスタンスで電子メールの受信をサポートする場合にのみ必要となります。

構成の詳細は、『Oracle Fusion Middleware Oracle SOA SuiteおよびOracle Business Process Management Suite管理者ガイド』を参照してください。

11.2.3.3 インバウンド接続性のためのアダプタ・サービスおよびBPELプロセスの設計

JDeveloper内のUMSアダプタ構成ウィザードを使用して、インバウンドUMSアダプタ参照を設計します。

  1. 「コンポーネント・パレット」から「外部参照」スイムレーンに「UMSアダプタ」をドラッグ・アンド・ドロップします。アダプタ構成ウィザードの「ようこそ」ページが表示されます。

    図11-3 UMSアダプタ構成ウィザードの「ようこそ」画面

    図11-3の説明が続きます
    「図11-3 UMSアダプタ構成ウィザードの「ようこそ」画面」の説明

  2. 「次へ」をクリックします。「サービス名」ページが表示されます。

  3. 「サービス名」画面の「サービス名」テキスト・ボックスにReceiveEmailなどのサービス名を入力します。

    図11-4 UMSアダプタ構成ウィザードの「サービス名」画面

    図11-4の説明が続きます
    「図11-4 UMSアダプタ構成ウィザードの「サービス名」画面」の説明

  4. 図11-5 UMSアダプタ構成ウィザードの「接続」画面

    図11-5の説明が続きます
    「図11-5 UMSアダプタ構成ウィザードの「接続」画面」の説明

  5. 「UMSアダプタ接続」ページで、接続JNDI名を入力します。ここでは、eis/ums/UMSAdapterInboundがJNDI名として指定されます。これは、インバウンド接続のデフォルトのJNDI名です。UMSアダプタ構成ウィザードの「操作タイプ」画面で、実行する操作を選択します。選択内容に応じて、アダプタ構成ウィザードの別のページが表示され、構成情報の入力を求められます。インバウンド接続性の場合は、「操作」画面で、操作タイプとして「インバウンド受信通知」を選択し、「次へ」をクリックします。

    図11-6 UMSアダプタ構成ウィザードの「操作」画面でのインバウンド受信操作タイプの選択

    図11-6の説明が続きます
    「図11-6 UMSアダプタ構成ウィザードの「操作」画面でのインバウンド受信操作タイプの選択」の説明

  6. アダプタ構成ウィザードの「通知の詳細」ページでは、「ポーリング」または「リスナー」のモードを指定して、UMSサーバーから受信通知を受け取ることができます。

    図11-7 UMSアダプタ構成ウィザードの「通知の詳細」画面

    図11-7の説明が続きます
    「図11-7 UMSアダプタ構成ウィザードの「通知の詳細」画面」の説明

  7. 「ポーリング」モードを選択すると、インバウンド・ポーリング・パラメータを指定できます。

    • 「ポーリング頻度」。新規通知を取得するためにUMSをポーリングする頻度です。

    • 「頻度単位」。頻度の単位として秒、時間、日または週を指定します。

    • 「インバウンド・スレッド数」。ポーリング・スレッド数を指定します。

    UMSアダプタは、受信ボックスでメッセージが使用可能になるまでメッセージを受信します。メッセージがまったくない場合にのみ、UMSアダプタは、この画面で指定するポーリング間隔においてスリープします。このスリープ・アクティビティにより、受信の多いメッセージ・ボリューム・シナリオにおいて、受信ボックスに大量のメッセージがマウントされることを回避します。各ポーリング・スレッドでは、1回に1つのメッセージが取得され、その処理と公開が実行されます。

    図11-8 インバウンド受信操作での「ポーリング」の選択時の「通知の詳細」画面

    図11-8の説明が続きます
    「図11-8 インバウンド受信操作での「ポーリング」の選択時の「通知の詳細」画面」の説明

  8. リスニング・モードを選択すると、「リスナー・スレッドのメッセージ」を指定できます。このプロパティでは、UMSサーバー側のリスナー・ワーカー・スレッド数が制御されます。デフォルト値は1です。このプロパティを指定すると、UMSサーバーでは、受信通知を受け取るマルチスレッド非同期が指定されます。

    図11-9 UMSアダプタ構成ウィザードの「通知の詳細」での「リスナー」モードの選択

    図11-9の説明が続きます
    「図11-9 UMSアダプタ構成ウィザードの「通知の詳細」での「リスナー」モードの選択」の説明

  9. UMSアダプタ構成ウィザードの「通知の詳細」の第2ページでは、通知エンドポイント構成を使用して受信する通知のタイプを選択できます。電子メール通知の受信元となるカンマ区切りの電子メール・メールボックス・アドレスを2つ以上指定できます。

    図11-10 UMSアダプタ構成ウィザードの「インバウンド通知の詳細」画面の第2ページ

    図11-10の説明が続きます
    「図11-10 UMSアダプタ構成ウィザードの「インバウンド通知の詳細」画面の第2ページ」の説明

  10. 「次へ」をクリックして続行するか、または「終了」をクリックし、受信メッセージに対してメッセージ・フィルタを構成せずに、UMSアダプタ構成ウィザードの使用を終了します。

  11. メッセージ・フィルタには、一致基準とアクションが含まれています。一連のメッセージ・フィルタの指定が可能です。これは、指定された基準がメッセージと一致し、アクションを取得した場合に、着信(受信)メッセージに順番に適用されます。

    たとえば、任意の必要なブラックリストを実装すると、指定した送信者アドレスからのすべてのメッセージを拒否できます。

    この画面では、3つの異なるタイプのフィルタを指定できます。(Javaパターンまたは正規表現の詳細は、http://download.oracle.com/javase/7/docs/api/java/util/regex/Pattern.htmlで参照を参照し、http://download.oracle.com/javase/tutorial/essential/regexでチュートリアルを参照してください。)

    1. ブラックリスト・フィルタ: ブラックリスト・フィルタは、受信メッセージの送信者アドレスを照合し、その送信者アドレスが指定のJavaパターンと一致した場合にそのメッセージを拒否します。(つまり、Java正規表現です。)

    2. ホワイトリスト・フィルタ: ホワイトリスト・フィルタは、受信メッセージの送信者アドレスを照合し、その送信者アドレスが指定のJavaパターンと一致した場合にそのメッセージを承認します。

    3. メッセージ・フィルタ: メッセージ・フィルタは、指定のパターンで示した任意のフィールドを照合し、指定したアクションに応じてメッセージを承認または拒否します。このフィールドには、CONTENTHEADERMETADATARECIPIENTREPLYTOSENDERSUBJECTが含まれます。

    メッセージ・フィルタに適用されるアクションは、メッセージのACCEPTまたはREJECTの2種類のみです。メッセージ・フィルタは、「メッセージ・フィルタ」ページで定義した順番と同じ順番で適用されます。

    「終了」をクリックしてウィザードを使用した構成を完了するか、「次へ」をクリックして「Javaコールアウト」画面を続行し、追加フィルタの適用に使用可能なJavaクラスを指定します。

    図11-11 UMSアダプタの「メッセージ・フィルタ」画面

    図11-11の説明が続きます
    「図11-11 UMSアダプタの「メッセージ・フィルタ」画面」の説明

  12. 「Javaコールアウト」画面で、UMSアダプタによって呼び出し、指定したカスタム・ロジックを実行するJavaクラスの名前を指定します。

    図11-12 UMSアダプタ構成ウィザードの「カスタムJavaコールアウト」画面

    図11-12の説明が続きます
    「図11-12 UMSアダプタ構成ウィザードの「カスタムJavaコールアウト」画面」の説明

  13. カスタムJavaコールアウトを指定する場合は、チェック・ボックスを選択し、テキスト・ボックスにクラス名を指定します。詳細は、この章のカスタムJavaコールアウト・クラスに関する項を参照してください。

  14. 後に示すページで「終了」をクリックし、UMSアダプタ・サービスの構成を完了します。Oracle UMSアダプタの構成が終了すると、インバウンド・サービスにJCAファイルが生成されます。ファイル名は、アダプタ構成ウィザードの「サービス名」ページで指定したサービス名と同じです。後からウィザードを再起動して、操作定義を変更できます。

11.2.3.4 アウトバウンド接続性のためのアダプタ・サービスおよびBPELプロセスの設計

JDeveloper内のUMSアダプタ構成ウィザードを使用して、アウトバウンドUMSアダプタ参照を設計します。

  1. 「コンポーネント・パレット」から「外部参照」スイムレーンに「データベース・アダプタ」をドラッグ・アンド・ドロップします。アダプタ構成ウィザードの「ようこそ」ページが表示されます。

    図11-13 UMSアダプタ構成ウィザードの「ようこそ」画面

    図11-13の説明が続きます
    「図11-13 UMSアダプタ構成ウィザードの「ようこそ」画面」の説明

  2. UMSアダプタの「サービス名」画面が表示されます。たとえば、アウトバウンド・サービス名にSendMailと入力します。

  3. 図11-14 UMSアダプタ構成ウィザードの「サービス名」画面のアウトバウンド送信メール操作

    図11-14の説明が続きます
    「図11-14 UMSアダプタ構成ウィザードの「サービス名」画面のアウトバウンド送信メール操作」の説明

  4. 接続JNDI接続名を含むUMSアダプタ接続名画面が表示されます。

    図11-15 UMSアダプタの「接続JNDI名」

    図11-15の説明が続きます
    「図11-15 UMSアダプタの「接続JNDI名」」の説明

  5. 「操作」画面で、「操作タイプ」としてOutboundを選択します。「操作名」のデフォルトはSendNotificationです。

    図11-16 UMSアダプタ構成ウィザードの「操作」画面でのアウトバウンド送信操作の選択

    図11-16の説明が続きます
    「図11-16 UMSアダプタ構成ウィザードの「操作」画面でのアウトバウンド送信操作の選択」の説明

  6. 「アウトバウンド通知の詳細」画面が表示されます。「電子メール」ボタンを選択します。「エンドポイントの構成」の詳細項目を入力するか、参照してそれらを検索します。また、指定したプライマリ・アドレスにフェイルオーバー・アドレスを指定できます。たとえば、scott.tiger@sport.com:failover-id@example.comなどです。このフェイルオーバー・アドレッシングは、To、CCおよびBccの各アドレスに適用されます。

    「参照」ボタンをクリックし、「アイデンティティ・ルックアップ・ダイアログ」を使用してアイデンティティ・サービスを参照した上で、必要に応じてアドレス属性を検索および入力できます。「次へ」をクリックして続行するか、「終了」をクリックしてウィザードの使用を完了します。

  7. 「メッセージ」画面を使用して、UMS送信操作にメッセージを定義します。「不透明なメッセージ(Base64Binary)」または「文字列タイプのメッセージ」を選択する場合は、スキーマの「URL」および「スキーマ要素」を指定する必要はありません。スキーマの「URL」を選択する場合は、「スキーマ要素」を指定する必要があります。

    図11-17 UMSアダプタ構成ウィザードの「メッセージ」画面

    図11-17の説明が続きます
    「図11-17 UMSアダプタ構成ウィザードの「メッセージ」画面」の説明

  8. 「終了」をクリックし、UMSアダプタ構成ウィザードの使用を完了します。

  9. 「終了」画面が表示されます。UMSアダプタ構成ウィザードの使用を完了しておきます。「終了」をクリックして、画面上の指定された場所でのXSDおよびWSDLの作成を完了します。

11.3 サンプル

サンプルは、Oracle SOA Samples Webサイトから入手できます。サンプルを使用するには、コンポジットを作成し、デプロイした上で、使用する電子メール・サーバーを電子メール・クライアントで構成する必要があります。

11.3.1 コンポジットの作成

電子メール・アダプタのSOAコンポジットを含んだJDeveloperアプリケーションを作成する必要があります。適切なアプリケーションおよびプロジェクトを作成するには次を実行します。

  1. JDeveloperの「アプリケーション・ナビゲータ」で、「新規アプリケーション」をクリックします。SOAアプリケーションとしてのアプリケーション・テンプレートを選択します。

  2. 「アプリケーション名」フィールドにSOA-Email-AutoReplyと入力して、「次へ」をクリックします。

  3. 「プロジェクト名」フィールドにSOA-Email-AutoReplyと入力します。

  4. 後続の図に示すように、「コンポジット・テンプレート」ボックスで「BPELを使用するコンポジット」を選択して、「終了」をクリックします。「BPELプロセスの作成 - BPELプロセス」ページが表示されます。

  5. 「名前」フィールドにBPEL_Email_AutoReplyと入力し、「テンプレート」ボックスから「サービスを後で定義」を選択します。

  6. 「OK」をクリックします。SOA-Email-AutoReplyアプリケーションとプロジェクトが設計領域に表示されます。

11.3.2 インバウンドのOracle UMSアダプタ・サービスの作成

次のタスク・グループにより、インバウンドのOracle UMSアダプタ・サービスを作成して、指定の電子メール受信アドレスから受信電子メールを読み込むことができます。

  1. 「コンポーネント・パレット」から「公開されたサービス」スイムレーンにOracle UMSアダプタをドラッグ・アンド・ドロップします。「アダプタ構成ウィザード - ようこそ」ページが表示されます。

  2. 「次へ」をクリックします。「サービス名」ページが表示されます。

  3. 「サービス名」フィールドにReceiveEmailと入力します。

  4. 「次へ」をクリックします。「アダプタ接続」ページが表示されます。

  5. 「次へ」をクリックします。アダプタ操作ページが表示されます。

  6. 後述のように、「インバウンド受信通知」として「操作タイプ」を選択して、「次へ」をクリックします。「インバウンド操作の詳細」ページが表示されます。

  7. 操作モード・ポーリング(デフォルト)を選択して、「次へ」をクリックします。アダプタのインバウンド通知の詳細ページが表示されます。

  8. test2@blr2240893.idc.oracle.comを「電子メール・エンドポイント構成」テキスト・ボックスに入力します。これは、後述のように、受信メッセージの受信元となる電子メール・アドレスです。「次へ」をクリックします。「アダプタ・メッセージ」ページが表示されます。

  9. 「メッセージ」ページで、後述のように「文字列タイプのメッセージ」チェック・ボックスを選択します。「次へ」をクリックします。「メッセージ・フィルタ」ページが表示されます。

  10. 「メッセージ・フィルタ」ページで、「次へ」をクリックします。「カスタムJavaコールアウト」ページが表示されます。

  11. 「Javaコールアウト」ページで、「次へ」をクリックします。アダプタ・ウィザードの終了ページが表示されます。

  12. 「終了」ページで、「終了」をクリックします。

  13. ここで、インバウンドのOracle UMSアダプタが構成され、composite.xmlファイルが表示されます。

11.3.3 アウトバウンドUMSアダプタ・サービスの作成

電子メールを送信するために、アウトバウンドのOracle UMSアダプタ・サービスを作成するには、次の手順を実行します。

  1. 「コンポーネント・パレット」から「外部参照」スイムレーンに「UMSアダプタ」をドラッグ・アンド・ドロップします。「アダプタ構成ウィザード - ようこそ」ページが表示されます。

  2. 「次へ」をクリックします。「サービス名」ページが表示されます。「サービス名」フィールドにSendReplyEmailと入力します。

  3. 「次へ」をクリックします。「接続」ページが表示されます。

  4. 「次へ」をクリックします。「操作」ページが表示されます。「操作タイプ」として「アウトバウンド送信通知」を選択します。

  5. 「次へ」をクリックします。「アウトバウンド通知の詳細」ページが表示されます。「To」フィールドにdummyと入力します。

  6. 「次へ」をクリックします。「メッセージ」ページが表示されます。「文字列タイプのメッセージ」チェック・ボックスを選択します。

11.3.4 サービスとアクティビティのワイヤリング

作成した3つのコンポーネント(インバウンド・アダプタ・サービス、BPELプロセスおよびアウトバウンド・アダプタ参照)をアセンブルまたは接続する必要があります。コンポーネントを接続する手順は、次のとおりです。

  1. 「公開されたサービス」領域にあるReceiveEmail内の小さい三角形を、「コンポーネント」領域のBPELプロセス内に緑の三角形として表示されるドロップ・ゾーンにドラッグします。

  2. 「コンポーネント」領域にあるBPELプロセス内の小さい三角形を、「外部参照」領域のSendEmailReply内に緑の三角形として表示されるドロップ・ゾーンにドラッグします。JDeveloperのcomposite.xmlが表示されます。

  3. 「ファイル」「すべて保存」を順番にクリックします。

11.3.5 receiveアクティビティの追加

次の一連の手順により、receiveアクティビティを追加できます。

  1. 「BPEL_Email_AutoReply」をダブルクリックします。「BPEL_Email_AutoReply.bpel」ページが表示されます。

  2. JDeveloperの「コンポーネント・パレット」から「設計」領域にreceiveアクティビティをドラッグ・アンド・ドロップします。

  3. receiveアクティビティをダブルクリックします。「Receive」ダイアログが表示されます。

  4. 「名前」フィールドにReceiveEmailと入力します。

  5. 「パートナ・リンク」フィールドの端にある「パートナ・リンクの参照」をクリックします。「パートナ・リンク・チューザ」ダイアログが表示されます。

  6. 「ReceiveEmail」を選択して、「OK」をクリックします。

  7. 「Receive」ダイアログで、「変数」フィールドの右にある「変数の自動作成」アイコンをクリックします。「変数の作成」ダイアログが表示されます。

  8. デフォルトの変数名を選択し、「OK」をクリックします。デフォルトの変数名が「変数」フィールドに移入されます。

  9. 「インスタンスの作成」を選択して、「OK」をクリックします。後述のように、JDeveloperの「BPEL_Email_AutoReply.bpel」ページが表示されます。

11.3.6 電子メール・ヘッダー情報の取得

電子メール・ヘッダー情報を抽出する次の手順を実行します。receiveコンストラクトおよびプロパティ・タブを使用して、受信メールの任意のヘッダー・プロパティをフェッチできます。この値は、BPELのassignアクティビティですでに作成されている変数に割り当てることができます(後で使用します)。アウトバウンド・メールにはヘッダー・プロパティの設定機能もあります。これは、invokeアクティビティの「プロパティ」タブを使用して実行することもできます。このようにして、メールの受信(インバウンドUMSアダプタを使用)および送信(アウトバウンドUMSアダプタを使用)が可能となり、編成はBPELまたはMediatorを使用して実行されます。BPEL/Mediator APIを使用して、様々なヘッダーおよびペイロードを操作できます。

  1. ヘッダー情報を保持するための一時変数を作成します。新規変数を追加するには、「変数」アイコンをクリックします。「変数」ダイアログ・ボックスが表示されます。後述のように、単純型stringの新規変数fromを追加します。

  2. 前述と同じ手順に従って、もう1つの変数であるsubjectを作成します。

  3. receiveアクティビティをダブルクリックします。「Receive」ダイアログが表示されます。「プロパティ」タブをクリックします。

  4. jca.ums.fromプロパティ値をfrom変数に割り当てるには、後述のように、「変数の参照」ダイアログを使用して選択します。

11.3.7 IBM WebSphere ServerのUMSアダプタ構成の変更

IBM WebSphere Application Serverのインストール時にUMSアダプタのインバウンド側でポーラー・モードとリスナー・モードを動作させる場合は、IBM WebSphere Application Serverコンソールで設定を少し作成する必要があります。

  1. IBM WebSphere Application ServerにLRC/Last参加者サポートを構成します。

  2. スケジューリング・スレッドからターゲット・スレッドにJAASサブジェクトが伝播していることを確認します。

  3. ヒューリスティックな終了の方向をCOMMITに設定します。

  4. マスター構成の変更を保存します。

  5. サーバーを再起動します。

  6. composite.xml内の次のコード・スニペットに示すように、コンポジット・レベルで非同期が保持されていることを確認します。

    <component name="BPELProcess1" version="1.1"> 
      <implementation.bpel src="BPELProcess1.bpel"/> 
        <property name="bpel.config.transaction" type="xs:string" 
    many="false">requiresNew</property> 
        <property name="bpel.config.oneWayDeliveryPolicy" type="xs:string" 
                  many="false">async.persist</property>