11 UMS用のOracle JCAアダプタ
11.1 UMSおよびUMSアダプタの概念
この項には次のトピックが含まれます:
11.1.1 ユーザー・メッセージング・サービス
User Messaging Serviceは、ユーザーとアプリケーション間の通信を可能にするOracle Fusion Middlewareコンポーネントです。内容は次のとおりです。
-
UMSサーバー: UMSサーバーは、アプリケーションとユーザー間のメッセージ・フローを統合します。サーバーは、アウトバウンド・メッセージをクライアント・アプリケーションから適切なドライバにルーティングし、インバウンド・メッセージを適切なクライアント・アプリケーションにルーティングします。また、サーバーは、すでに送信されたメッセージのリポジトリを永続ストアに保持し、すでに送信されたメッセージに配信ステータス情報を関係付けます。
-
UMSドライバ: UMSドライバは、UMSをメッセージング・ゲートウェイに接続し、UMSでサポートされている様々なプロトコルに対してコンテンツを適合させます。これらのドライバは、特定のインストールで使用できるメッセージング・チャネルに従って、相互に独立してデプロイまたはアンデプロイできます。
-
UMSクライアント・アプリケーション: UMSクライアント・アプリケーションは、メッセージの送受信に関するビジネス・ロジックを実装します。UMSクライアント・アプリケーションは、BPELワークフローの1ステップとしてメッセージを送信するSOAアプリケーション、またはWebインタフェースからメッセージを送信できるWebCenterスペース・アプリケーションの場合があります。
UMSサーバーのコンテキストの詳細は、図11-1を参照してください。
UMSでは、電子メール、SMS、インスタント・メッセージ、ボイスなどの様々なメッセージング・チャネルがサポートされます。UMSでは、Oracle BPELまたはMediator製品と外部間のメッセージング・プロキシが提供されます。User Messaging Serviceでは、インバウンド・メッセージングとアウトバウンド・メッセージングの2通りのメッセージングが提供され、配信ステータスの配信などの強固なメッセージ配信と、エンタープライズ・メッセージを使用したメッセージの再送信が可能です。また、UMSでは、フェイルオーバー・アドレスをサポートできます。つまり、UMSでは、ユーザーとアプリケーション間の通信に対して、スケーラブルで可用性の高いソリューションが提供されます。
ユーザー・メッセージング・サービスの詳細は、『Oracle User Messaging Serviceの管理』のOracle User Messaging Serviceの構成を参照してください。
11.1.2 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.3 UMSアダプタの概念
UMSアダプタでは、異なるメッセージの書式を指定できます。
多くの電子メールのユース・ケースでは、メッセージ・ペイロードが平文に指定されているため、スキーマを指定する必要がなく、そのままで受信することが必要な場合もあります。このケースでは、「メッセージ」画面で「文字列タイプのメッセージ」
チェック・ボックスを選択できます。
メッセージの変換には、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
要素を参照します。
例 - SingleString.xsdのスキーマ・スニペット
<?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
11.1.3.1 カスタムJavaコールアウト
「Javaコールアウト」画面では、電子メール、SMSまたはIMメッセージがUMSアダプタで処理される前に起動可能なカスタム・ロジックを使用してカスタムJavaクラスを指定できます。
11.1.3.1.1 カスタムJavaコールアウトのユース・ケース
カスタムJavaコールアウトのユース・ケースとして、送信者のアドレスをLDAP内のアドレス、またはステージング領域に存在し以前に記録されていたアドレスに一致させる例があります。このユース・ケースを作成するには、インタフェースのoracle.tip.pc.services.translation.util.ICustomCallout
を実装する必要があります。
このインタフェースでは、boolean
の戻り値で単一のメソッド実行が定義されます。戻り値に応じて、メッセージは処理されるか、または拒否されます。
public Interface CustomCallout{ public boolean execute (Message message) throws exception; }
ここでのMessage
は、UMSセッション記述プロトコル(SDP)というJava APIのMessage
クラスを示し、これは、UMSサーバーで指定され、適切に定義されたJava APIで、$MW_HOME./oracle_common/modules/oracle.sdp.client_12.1.2/messaging-api.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.1.4 トランザクション・サポート
UMSアダプタは、デフォルトで、ポーリング・モードとリスナー・モードの両方に対してインバウンド・シナリオとともにXAトランザクションを使用します。そのために、アダプタは、プロパティXATransaction
をtrueに設定してコネクション・ファクトリ・インスタンスを構成します。デフォルトでXAを使用するように構成されたデフォルトJNDIインスタンスを使用できます。このデフォルトJNDIインスタンスの名前はeis/ums/UMSAdapterInbound
です。アウトバウンド・シナリオでは、UMSアダプタはUMSからのXAサポートを活用します。UMSは、BPELなどを介してすでに開始されている場合、グローバル・トランザクションに参加します。独自のJNDIインスタンスを定義して使用することを選択できますが、前述の説明に留意する必要があります。
11.1.4.1 インバウンド・エラー処理
UMSアダプタでは、悪質なメッセージを拒否するために、アダプタのインバウンド側でデフォルトの拒否処理メカニズムを使用します。たとえば、変換関連のエラーが生じると、メッセージ拒否が発生します。フォルト・ポリシーおよびアダプタの詳細は、このガイドの「フォルト・ポリシーの作成」を参照してください。
再試行可能なエラー状態で、再試行関連のエンドポイント・プロパティを指定している場合は、UMSアダプタにより、メッセージの拒否前に構成されていた再試行数でインバウンド・メッセージを再発行します。次に、前述のJNDIおよびXAの説明に従って、XAの下にあるロールバックにトランザクションが設定されます。
11.1.4.2 アウトバウンド・エラー処理
UMSアダプタは、接続エラーなどの一時(リカバリ可能)エラー状態に対して例外をスローします。再試行可能なエラーでは、アダプタ・フレームワークでサポートされている再試行ポリシーを使用できます。これを実行するには、必要な再試行カウントに対してバインディング・プロパティのjca.retry.count
を設定できます。さらに、他のアダプタにおいて、プロパティを設定していない場合は、フォルト・ポリシーに従って再試行が実行されます。
アウトバウンド・トランザクションには、フォルト・ポリシーを使用して再試行不可能な接続エラーを定義できます。再接続の試行の最大数は、fault-policy.xml
を使用して定義できます。
アダプタでは、アダプタ構成ウィザードを使用して、設計時の作業で取得したメタデータに基づき、データをネイティブ表現と標準XML形式間で変換します。変換の実行によりスローされる例外が発生すると、変換エラーがスローされ、さらに対応するバインディング・フォルトもスローされます。
表11-1に示すように、アウトバウンド再試行可能エラーに関連するエンドポイント・プロパティを設定できます
表11-1 UMSアダプタのアウトバウンド・エンドポイント・プロパティ
プロパティ | 説明 |
---|---|
|
再試行可能エラー状態をスローして起動中のサービス・エンジンに戻す前の再試行の最大数を示します。 |
|
再試行の時間間隔(秒単位)を示します。 |
|
再試行間隔の増分ファクタ(正の整数)を示します。 |
|
再試行の間隔の最大値(値が1より大きい場合の上限)を示します。 |
|
再試行の合計最大期間を示します。このパラメータに指定した値を超えて、再試行が発生することはありません。 |
11.1.4.2.1 ステータス・レポートでの失敗した送信通知の再試行メカニズム
UMSアダプタでは、UMSが提供する既存のインフラストラクチャを使用して、失敗した送信の例外を再試行します。現行のUMSサーバーでは、Fusion Middleware Controlからの通知の失敗の確認に加えて、メッセージの再送信もサポートしています。
11.1.4.2.2 クラスタでのインバウンド受信通知(ポーリングまたはリスナーを使用)
UMS APIは、クラスタ環境内でUMSサーバーとそのクライアントがデプロイされている環境をサポートします。また、UMSアダプタは、アクティブ/アクティブ設定での高可用性もサポートしています。
クラスタ化環境で適切に動作するUMSアダプタの構成の詳細は次のとおりです。クラスタでのUMSデプロイメントも同じようにする必要があります。クラスタのノードには、UMSアダプタ、UMSサーバーEARおよびすべてのドライバEARがあります。すべてがノード上に共存する必要があります。たとえば、クラスタを作成する場合にアダプタ構成ウィザードで、UMSアダプタとすべてのUMSをクラスタに対してターゲット指定します。後のステップでは、構成ウィザードでクラスタの一部になるすべてのサーバーを表示します。
同じコンポジット・アプリケーションのすべてのUMSアダプタのアクティブ化において、同じ独自のApplicationName
構成パラメータが使用されます。UMSアダプタでは、特定のエンドポイントがリッスンされている受信アドレスからアプリケーション名パラメータを合成します。
この合成により、クラスタ内の特定のコンポジットのすべてのアクティブ化において、アクセス・ポイントやメッセージ・フィルタなど、すべての構成およびアーティファクトの共有が可能になります。
ApplicationInstanceName
構成パラメータはUMS API実装を使用して自動合成され、UMSアダプタはその合成に依存します。
さらに、UMSアダプタのAPI実装では、クラスタ環境内で2つのアプリケーションが同じメッセージを受信しないことが保証されます。
UMSアダプタは、クラスタ化環境でアクティブ/パッシブであるインバウンド・サービスのアクティブ・フェイルオーバーもサポートします。このアクティブ・フェイルオーバーは、JCAサービスのバインディング・プロパティ(composite.xml
)シングルトンをtrue
に設定することで、UMSアダプタ・サポートにおいて有効化できます。
リスニングおよびポーリングは、クラスタ化環境でもUMSアダプタを使用して非クラスタ化環境と同じ方法で動作します。
11.1.4.2.3 UMSアダプタのプロパティおよびMIMEタイプの構成
追加構成を指定するために使用可能なUMSアダプタと関連付けられたプロパティがいくつか存在します。これらの一部は、UMSアダプタ構成のアダプタ・ウィザードを使用する際にすでに設定されています。適用可能なすべてのインターネット・メール・ヘッダーおよびMIMEヘッダーは、正規化されたメッセージ・プロパティ/ヘッダーを使用して構成できます。
表11-2には、UMSアダプタに適用可能なアクティブ化仕様プロパティがリストされています。
表11-2 UMSアダプタのアクティブ化仕様プロパティ
プロパティ名 | 説明 |
---|---|
|
メッセージ・フィルタまたはその他のチェックにカスタム・ロジックを定義するJavaクラス名。このクラスは、ICustomCalloutインタフェースの具体的な実装です。 |
|
アダプタによってUMSからメッセージを受信する方法を指定します。ポーリング・モードではポーラーに設定され、リスナー・モードではリスナーに設定されます。 |
|
受信メッセージの受信元となるアドレス。IM、SMSまたは電子メール配信タイプにおける1つまたは複数のカンマ区切りのIM、SMSまたは電子メール・アドレスです。 |
|
送信メッセージの受信および送信用に電子メール・サポートを提供します。 |
|
ポーラー・コンシューム・モードでのポーリング間隔(秒)です。 |
|
1つまたは複数のメッセージ・フィルタが指定されます。単一フィルタの場合は、フィールド・タイプおよび取得されるアクション(同意または拒否)に対して受信メッセージを適合させるため、Javaのパターン文字列で構成されます。 |
表11-3には、使用可能な相互作用仕様プロパティのリストが示されています。
表11-3 UMSアダプタの相互作用仕様プロパティ
プロパティ名 | 説明 |
---|---|
|
送信メッセージの受信および送信用の電子メール、IMおよびSMSサポート。 |
|
送信メッセージの件名。 |
|
送信メッセージの送信者アドレス。 |
|
1つ以上の受信者アドレス。 |
|
返信先アドレス。 |
|
電子メール配信の1つまたは複数のCCアドレス。 |
|
電子メール配信の1つ以上のBccアドレス。 |
|
添付として電子メールを送信するには |
UMSアダプタでは、適用可能なすべてのインターネット・メッセージ・ヘッダーおよびMIMEメッセージ・ヘッダー、さらにMIMEパート・ヘッダー(マルチパート構成内)が公開されます。
MIMEヘッダーは、メッセージ本文の最初の部分であるUMSアダプタのペイロードにのみ適用できます。
添付のMIMEヘッダーは、BPELプロセス内から操作可能な正規化されたメッセージ・プロパティとして、添付とともに格納されます。
表11-4では、インターネット・メッセージ・フォーマットで定義された適用可能なすべてのヘッダーの他、アダプタ・ヘッダーのマッピングおよび対応関係について説明します。
表11-4 メッセージ・ヘッダー
ヘッダー・フィールド名 | 最小発生数 | 最大発生数 |
---|---|---|
|
0 |
1 |
|
0 |
unlimited |
|
0 |
unlimited |
|
0 |
unlimited |
|
0 |
1 |
|
0 |
unlimited |
|
0 |
unlimited |
|
0 |
unlimited |
|
0 |
unlimited |
|
1 |
unlimited |
|
1 |
unlimited |
|
0 |
1 |
|
0 |
1 |
|
0 |
1 |
Cc |
0 |
1 |
Bcc |
0 |
1 |
|
0 |
1 |
|
0 |
1 |
|
0 |
1 |
|
0 |
1 |
|
0 |
unlimited |
|
0 |
unlimited |
ノート:
多くの場合は、BPELのinvokeアクティビティのプロパティ・タブを使用してjca.propertiesを選択し、その起動アクティビティから値を設定できます。ただし、jca.ums.message-id
は、このメッセージIDが自動生成のため、設定できません。
表11-5は、適用可能なすべてのMIMEメッセージ・ヘッダーについて説明しています。
アウトバウンドUMSアダプタの場合、JCA.UMS.MSG.CONTENT-TYPE
プロパティを使用して、エンコーディングを指定できます。値を設定しない場合、アウトバウンドUMSアダプタでは、デフォルトで電子メールにUTF-8エンコーディングが使用されます。
表11-5 MIMEパート・メッセージ・ヘッダー
ヘッダー・フィールド名 | マップされたアダプタのヘッダー・フィールド名 | ノート |
---|---|---|
Content-Type |
|
- |
Content-Transfer-Encoding |
|
- |
Content-ID |
|
- |
Content-Description |
|
- |
Content-Disposition |
|
- |
Content-Language |
j |
- |
Mime-Extension-field |
|
その他のMIMEヘッダー・フィールドは、文字列のContent-で開始されます。次のように2つ以上のヘッダーを追加できます。
|
11.1.4.2.4 固有のヘッダー
表11-6に示すように、UMSアダプタでは、固有のヘッダーを任意に追加できます。
表11-6 固有のヘッダー
ヘッダー名 | ノート |
---|---|
|
2つ以上の固有のヘッダーを次の書式で追加できます。
説明
|
11.1.4.3 電子メールの添付
UMSメッセージのXMLには、href
属性を持つ添付要素のリストを含めることができます。Attachment Managerでは、MIMEタイプ、コンテンツIDの他、ストリーム・オブジェクト(アタッチメント・コンテンツ)などの添付と関連付けられた他のMIMEの詳細を格納します。
現在は、UMSアダプタでインバウンドとアウトバウンドの両方の添付がサポートされています。
添付要素を含むXMLメッセージの例は、次の例を参照してください。
例 - 添付要素を含むXMLメッセージの例
<Receive1_ReceiveEmail_InputVariable> <part name="body" > <Email> <payload>This is a test mail.-Sagar</payload> <attachment href= "0DF86C104BF511EoAF5977BAA7C7CFD9"/> </Email> </part> </Receive1_ReceiveEmail_InputVariable>
インバウンド側では、UMSアダプタにより、Attachment Managerに添付を渡す前にすべてのMIMEの詳細が設定されます。Attachment Managerは、Fabric Attachment Managerの内部コンポーネントで、添付コンテンツおよびMIMEヘッダーをデータベースに格納します。この機能により、異なるSOAコンポーネント間でリンク/href IDを渡すことができるようになります。
11.1.4.4 メールの添付の処理
UMSアダプタでは、Fabric Attachment Managerを使用して、添付の格納および取得が行われます。
UMSメッセージ・スキーマでは、href属性を使用して添付要素が定義されます。
例 - href要素を使用して添付要素を定義するUMSメッセージ・スキーマ
<Receive1_ReceiveEmail_InputVariable> <part name="body" > <Email> <payload>This is a test mail.-Sagar</payload> <attachment href= "0DF86C104BF511EoAF5977BAA7C7CFD9"/> </Email> </part> </Receive1_ReceiveEmail_InputVariable>
UMSメッセージのXMLには、href属性を持つ添付要素のリストを含めることができます。Attachment Managerでは、MIMEタイプ、コンテンツIDの他、ストリーム・オブジェクト(アタッチメント・コンテンツ)などの添付と関連付けられた他のMIMEの詳細を格納します。添付要素を含むXMLメッセージの例。
インバウンド側では、UMSアダプタにより、添付をAttachment Managerに渡す前にすべてのMIMEの詳細を設定し、アウトバウンド側では、UMSアダプタにより、添付オブジェクトと一緒に受信したすべての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.1.4.4.1 BPEL内の添付と関連付けられたMIME情報の取得
次の例に、BPELでの添付の取得方法を示します。最初に、添付と関連付けられたMIME情報を取得します。
例 - 添付と関連付けられたMIME情報の取得
<copy> <from expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0">ora:readBi naryFromFileWithMimeHeaders('/home/testuser/test.txt','one','text/plain','atta chment; filename="test.txt"','7bit','text file','en')</from> <to expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0">$Invoke1_S endNotification_InputVariable.body/ns2:attachment[1]</to> </copy> <copy> <from expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0">ora:readBi naryFromFileWithMimeHeaders('/home/testuser/oracle_logo.gif','two','image/gif' ,'attachment; filename="oracle_logo.gif"','7bit','oracle logo','en/ja')</from> <to expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0">$Invoke1_S endNotification_InputVariable.body/ns2:attachment[2]</to> </copy>
この例では、BPEL XPath拡張関数readBinaryFromFileWithMimeHeaders(...)
がMIMEヘッダーを含むバイナリ・ファイルのコンテンツを返します。この関数の署名は、ora:readBinaryFromFileWithMimeHeaders(fileName, contentId, contentType, contentDisposition, contentTransferEncoding, contentDescription, contentLanguage
です。
hrefを直接コピーし、jca.ums.part.content-disposition
を使用して、1つの添付のコンテンツ配置を設定することもできます。たとえば、添付のコンテンツを、Oracle File Adapter SynchReadのファイルを添付として読取り
操作を使用して取得する場合、次のBPELコードを使用して添付をコピーし、UMSアダプタのアウトバウンド送信通知
操作を呼び出します。
<assign name="Assign1"> <copy> <from>$Invoke2_SynchRead_OutputVariable.attach/@href</from> <to expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0">$Invoke1_S endNotification_InputVariable.body/ns2:attachment/@href</to> </copy> <copy> <from>'This is a test message.'</from> <to expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0">$Invoke1_S endNotification_InputVariable.body/ns2:payload</to> </copy> </assign> <invoke name="Invoke1" partnerLink="umsReference" portType="ns1:SendNotification_ptt" operation="SendNotification" inputVariable="Invoke1_SendNotification_InputVariable" bpelx:invokeAsDetail="no"> <bpelx:toProperties> <bpelx:toProperty name="jca.ums.part.content-disposition">'attachment; filename="test.txt"'</bpelx:toProperty> </bpelx:toProperties> </invoke>
11.1.4.4.2 BPEL内の複数の添付に対するMIME情報の設定
次のスニペットでは、BPEL内の複数の添付に対するMIME情報の設定方法を示します。
<copy> <from expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0">ora:readBi naryFromFileWithMimeHeaders('/home/testuser/test.txt','one','text/plain','atta chment; filename="test.txt"','7bit','text file','en')</from> <to expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0">$Invoke1_S endNotification_InputVariable.body/ns2:attachment[1]</to> </copy> <copy> <from expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0">ora:readBi naryFromFileWithMimeHeaders('/home/testuser/oracle_logo.gif','two','image/gif' ,'attachment; filename="oracle_logo.gif"','7bit','oracle logo','en/ja')</from> <to expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0">$Invoke1_S endNotification_InputVariable.body/ns2:attachment[2]</to> </copy>
この例では、BPEL XPath拡張関数readBinaryFromFileWithMimeHeaders(...)
がMIMEヘッダーを含むバイナリ・ファイルのコンテンツを返します。この関数の署名は、ora:readBinaryFromFileWithMimeHeaders(fileName, contentId, contentType, contentDisposition, contentTransferEncoding, contentDescription, contentLanguage
です。
11.1.4.5 UMSアダプタのインバウンド操作およびアウトバウンド操作
UMSアダプタ構成ウィザードを使用して構成する操作には、次のインバウンド操作およびアウトバウンド操作が含まれます。
-
Inbound Receive Notification
-
Outbound Send Notification
-
アウトバウンド送信通知
(メッセージIDのリプライとしての受信
) -
アウトバウンド取得メッセージ・ステータス
(UMSからメッセージ配信ステータス情報を受信するためにメッセージIDおよびオプションの受信者情報を指定するアウトバウンド同期リクエスト/リプライ)
11.1.4.5.1 Oracle UMSアダプタのインバウンド通知の受信の概念
このシナリオでは、UMSアダプタにより、UMSサーバーのアクセス・ポイントを登録し、受信通知の消費と処理を実行します。この項では、Oracle UMSアダプタのインバウンド受信通知に関連付けられた様々な構成と概念の概要を示します。
11.1.4.5.2 Oracle UMSのアウトバウンド通知の送信の概念
このシナリオでは、UMSアダプタにより、送信通知の送信を処理します。この項では、Oracle UMSアダプタのアウトバウンド送信通知に関連付けられた様々な構成と概念の概要を示します。この送信通知には、通常送信と、メッセージIDのリプライ・リクエストとしての受信を使用した送信の2種類があります。
11.1.4.5.3 メッセージIDのリプライ・リクエストとしての受信
アウトバウンド同期リクエストのタイプとして、「メッセージIDをリプライ・リクエストとして受信」
があります。これは、起動方法の1つのバリエーションですが、
メッセージIDをリプライ・リクエストとして受信
を使用する場合は、UMSサーバーから一意のメッセージIDが返信されます。このメッセージIDを取得してメッセージの配信状態の情報をチェックする場合は、当該タイプのリクエストを使用できます。UMSは、メッセージング・ゲートウェイから受信したすべての配信ステータス情報を格納します。Fusion Middleware Controlを使用すると、メッセージIDを使用してこのステータス情報を取得できます。
このタイプのリクエストを使用する場合は、操作の選択時にメッセージIDをリプライ・リクエストとして受信
チェック・ボックスを選択します。
11.2 Oracle UMSアダプタの機能
Oracle UMSアダプタについて、アウトバウンドおよびインバウンドの機能を概観します。
UMSアダプタには、次のアウトバウンド機能が含まれます
-
電子メール・メッセージング、IMおよびSMSチャネルのサポート。
-
メッセージ・フィルタの使用。UMSアダプタでは、内容、受信者、送信者および件名を使用してIMおよびSMSメッセージをフィルタできます。
-
件名と本文および1つ以上の添付を含む電子メール・メッセージの送信。ユーザーはIM、SMSメッセージも送信できます。
-
UMSからのメッセージ配信ステータス情報の受信。
-
メッセージの本文の変換サポート。
-
アウトバウンドSMTPサーバーのSSL/TLSセキュリティ(Java Messaging Serviceの使用が必要です)。
-
アウトバウンド・トランザクションのXAまたはグローバル・トランザクションのサポート。
UMSアダプタには、次のインバウンド機能があります。
-
電子メール、IMおよびSMSメッセージング・チャネルのサポート。
-
メッセージ・フィルタの使用。UMSアダプタでは次の2つの方法で電子メール・メッセージをフィルタできます。
-
アダプタ構成ウィザードの「メッセージ・フィルタ」画面を使用したメッセージ・フィルタの設定。これには、メッセージ・フィルタ、ブラックリスト・フィルタおよびホワイトリスト・フィルタが含まれます。メッセージ・フィルタでは、電子メール宛先アドレス、送信元アドレス、CCアドレス、件名およびメール・ヘッダーを基準にして受信メッセージをフィルタする機能が提供されます。同様に、このフィルタリングを使用してメールを無視することもできます。ノート: BCCアドレスに使用できるフィルタはありません。
-
Javaコールアウトの作成およびパッケージング、ならびにアダプタ構成ウィザードを使用したコールアウト名の指定。詳細は、「カスタムJavaコールアウト」を参照してください。
-
-
件名、本文および1つ以上の添付を含むメッセージの他、インターネット・メールおよびMIMEヘッダーの受信。
-
ポーリング/リスナー・インタフェース。UMSアダプタでは、作成した様々なスケジュール上の受信電子メールのメールボックスがポーリング(順次とパラレルのどちらも指定可能)されます。
-
メッセージの本文の変換サポート。
-
インバウンドのXAまたはグローバル・トランザクションのサポート(ポーリングおよびリスナー・モードの両方に適用可能)。UMSアダプタのフローがアウトバウンドの場合は、UMSアダプタでXAトランザクションがFalseに設定されている場合でも、フローがBPELまたはインバウンド・アダプタからすでに開始済のトランザクションの一部であれば、同じアウトバウンドUMSアダプタはXAトランザクションを実行している場合と同様に動作します。
-
SSLを使用したIMAP/POP3サーバー(UMSサーバーの使用が必要)。
ノート:
UMSアダプタを使用したMS-2010メール・サーバーの使用時は、キーワード・ヘッダーを含むヘッダーの設定および取得はできません。
11.3 Oracle UMSアダプタの構成
UMSアダプタを構成するには、Fusion Middleware ControlコンソールおよびJDeveloperの電子メール・アダプタ構成ウィザードを使用してユーザー・メッセージ・サービスを構成します。
ユーザー・メッセージング・サービス・ドライバを構成するには、Fusion Middleware Controlコンソールを使用します。特に、電子メール・メッセージング・チャネルを使用するには、特定のプロパティを構成する必要があります。
SMPP、XMPPおよびVoiceXMLドライバの構成の詳細は、『Oracle User Messaging Serviceの管理』のOracle User Messaging Serviceの構成を参照してください。
次の項では、UMSアダプタの構成に関する情報を示します:
- UMSアダプタの電子メール・ドライバの構成 - アウトバウンド接続性
- UMSアダプタの電子メール・ドライバの構成 - インバウンド接続性
- UMSアダプタ用の電子メール・ドライバの構成 - Google OAuth 2.0
- UMSアダプタ用の電子メール・ドライバの構成 - Microsoft Azure AD OAuth 2.0
- ユーザー・メッセージングXMPPドライバの構成
- ユーザー・メッセージングSMPPドライバの構成
- ファイアウォール・トラバースのためのHTTPプロキシの構成
- インバウンド接続性のためのアダプタ・サービスおよびBPELプロセスの設計
- アウトバウンド接続性のためのアダプタ・サービスおよびBPELプロセスの設計
11.3.1 UMSアダプタの電子メール・ドライバの構成 - アウトバウンド接続性
このプロシージャでは、必要な入力を指定して、電子メール・サーバーでのアウトバウンド接続性のためにUMSの電子メール・ドライバを設定します。
11.3.3 UMSアダプタ用の電子メール・ドライバの構成 - Google OAuth 2.0
OAuth 2.0でGoogle電子メール・サーバーに接続するようUMSアダプタ用の電子メール・ドライバを構成すると、電子メール・ドライバのセキュリティが大幅に向上します。
ノート:
次のステップを実行するには、まず、パッチ31340781をインストールする必要があります。次にサイン・インします: パッチ番号を検索して、パッチを見つけたらダウンロードします。ノート:
電子メール・ドライバを変更する必要がある場合は、Oracle_Home/user_projects/domains/WLS_SOA/config/fmwconfig/usermessagingconfig.xml
ファイルを直接編集する必要があります。通常、usermessagingconfig.xmlのプロパティ名は、Fusion Middleware Controlコンソールの該当するフィールド・ラベルに一致しますが、単語の間のスペースは省かれています。また、Fusion Middleware Controlのフィールド・ラベルの上にカーソルを置いて、対応するxmlプロパティ名を確認することもできます。
Fusion Middleware Controlコンソールで変更を行うには、既存の電子メール・ドライバを削除して、新しいドライバを作成する必要があります。
11.3.4 UMSアダプタ用の電子メール・ドライバの構成 - Microsoft Azure AD OAuth 2.0
OAuth 2.0でMicrosoft Azure Active Directory電子メール・サーバーに接続するようUMSアダプタ用の電子メール・ドライバを構成すると、電子メール・ドライバのセキュリティが大幅に向上します。
ノート:
次のステップを実行するには、まず、パッチ31340781をインストールする必要があります。次にサイン・インします: パッチ番号を検索して、パッチを見つけたらダウンロードします。O365リフレッシュ・トークンは、30日から90日ごとに定期的に期限切れになります。有効期限が切れると、新しいトークンを生成して電子メール・ドライバを更新する必要があります。
ノート:
電子メール・ドライバを変更する必要がある場合は、Oracle_Home/user_projects/domains/WLS_SOA/config/fmwconfig/usermessagingconfig.xml
ファイルを直接編集する必要があります。通常、usermessagingconfig.xmlのプロパティ名は、Fusion Middleware Controlコンソールの該当するフィールド・ラベルに一致しますが、単語の間のスペースは省かれています。また、Fusion Middleware Controlのフィールド・ラベルの上にカーソルを置いて、対応するxmlプロパティ名を確認することもできます。
Fusion Middleware Controlコンソールで変更を行うには、既存の電子メール・ドライバを削除して、新しいドライバを作成する必要があります。
11.3.5 ユーザー・メッセージングXMPPドライバの構成
UMS側では、図11-4に示すように、Fusion Middleware ControlコンソールからXMPPドライバを構成する必要があります。
11.3.7 ファイアウォール・トラバースのためのHTTPプロキシの構成
電子メール/XMPPまたはSMPPサーバーがファイアウォールの外側にあり、HTTPプロキシを構成する必要がある場合、UMSアダプタを構成する以外にトラバースを構成する必要があります。
たとえば、このようなトラバースは、setDomainEnv.sh.ファイルでJVM引数として構成できます。たとえば、
JAVA_OPTIONS="${JAVA_OPTIONS} -Dhttp.proxySet=true -Dhttp.proxyHost=www.proxy.myserver.com -Dhttp.proxyPort=80
11.3.8 インバウンド接続性のためのアダプタ・サービスおよびBPELプロセスの設計
JDeveloper内のUMSアダプタ構成ウィザードを使用して、インバウンドUMSアダプタ参照を設計します。
-
「コンポーネント」ウィンドウから「外部参照」スイムレーンに「UMSアダプタ」をドラッグ・アンド・ドロップします。アダプタ構成ウィザードの「ようこそ」ページが表示されます。UMSアダプタには、必要に応じて、変更するために選択できるサービス名または参照名も表示されます。
-
「UMSアダプタ接続」ページで、「接続JNDI名」を入力します。ここでは、インバウンド接続のデフォルトJNDI名である
eis/ums/UMSAdapterInbound
をJNDI名として指定します。 -
UMSアダプタ構成ウィザードの「操作タイプ」画面で、実行する操作を選択します。選択内容に応じて、アダプタ構成ウィザードの別のページが表示され、構成情報の入力を求められます。インバウンド接続性の場合は、「操作」画面で、操作タイプとして
「インバウンド受信通知」
を選択し、「次へ」をクリックします。 -
アダプタ構成ウィザードの「通知の詳細」ページでは、
「ポーリング」
または「リスナー」
のモードを指定して、UMSサーバーから受信通知を受け取ることができます。 -
「ポーリング」モードを選択すると、インバウンド・ポーリング・パラメータを指定できます。
-
「ポーリング頻度」。新規通知を取得するためにUMSをポーリングする頻度です。表示されるデフォルト値は、「ポーリング頻度」は6、「頻度単位」はseconds、「インバウンド・スレッド数」は1です。
-
「頻度単位」。頻度の単位として秒、時間、日または週を指定します。
-
「インバウンド・スレッド数」。ポーリング・スレッド数を指定します。
UMSアダプタは、受信ボックスでメッセージが使用可能になるまでメッセージを受信します。メッセージがまったくない場合にのみ、UMSアダプタは、この画面で指定するポーリング間隔においてスリープします。このスリープ・アクティビティにより、受信の多いメッセージ・ボリューム・シナリオにおいて、受信ボックスに大量のメッセージがマウントされることを回避します。各ポーリング・スレッドでは、1回に1つのメッセージが取得され、その処理と公開が実行されます。
-
-
「リスナー」モードを選択すると、「リスナー・スレッドのメッセージ」の数を指定できます。このプロパティでは、UMSサーバー側のリスナー・ワーカー・スレッド数が制御されます。デフォルト値は1です。このプロパティを指定すると、UMSサーバーでは、受信通知を受け取るマルチスレッド非同期が指定されます。
ポーリング・モードは、メッセージを断続的にフェッチするために使用できるプル・メカニズムです。リスニング・モードを使用すると、メッセージが到着したときにリアルタイムで取得できます。どちらを使用するかは、ビジネスの実施シナリオによって変わります。
-
UMSアダプタ構成ウィザードの「通知の詳細」の第2ページでは、通知エンドポイント構成を使用して受信する通知のタイプを選択できます。通知のタイプに電子メール、SMSまたはIMを選択した後に、エンドポイント属性を構成します。たとえば、電子メールを選択した場合は、1つ以上の受信メール・アドレスとして他の属性の詳細を入力します。電子メール通知の受信元となるカンマ区切りの電子メール・メールボックス・アドレスを2つ以上指定できます。
SMSを選択した場合、受信者アドレスは携帯電話番号になります。携帯電話番号の範囲も指定可能で、たとえば「16501230000, 16501234999」は16501230000から16501234999 (これを含む)までのすべての番号を意味します。
インスタント・メッセージングのインバウンド通知では、インスタント・メッセージングIDを指定できます。
-
「次へ」をクリックして続行するか、または「終了」をクリックし、受信メッセージに対してメッセージ・フィルタを構成せずに、UMSアダプタ構成ウィザードの使用を終了します。
-
受信メッセージに対してメッセージ・フィルタを使用できます。メッセージ・フィルタには、一致基準とアクションが含まれています。一連のメッセージ・フィルタの指定が可能です。これは、指定された基準がメッセージと一致し、アクションを取得した場合に、着信(受信)メッセージに順番に適用されます。
たとえば、任意の必要なブラックリストを実装すると、指定した送信者アドレスからのすべてのメッセージを拒否できます。
この画面では、3つの異なるタイプのフィルタを指定できます。(Javaパターンまたは正規表現の詳細は、http://download.oracle.com/javase/7/docs/api/java/util/regex/Pattern.htmlで参照を参照し、http://download.oracle.com/javase/tutorial/essential/regexでチュートリアルを参照してください。)
-
ブラックリスト・フィルタ: ブラックリスト・フィルタは、受信メッセージの送信者アドレスを照合し、その送信者アドレスが指定のJavaパターンと一致した場合にそのメッセージを拒否します。(つまり、Java正規表現です。)
-
ホワイトリスト・フィルタ: ホワイトリスト・フィルタは、受信メッセージの送信者アドレスを照合し、その送信者アドレスが指定のJavaパターンと一致した場合にそのメッセージを承認します。
-
メッセージ・フィルタ: メッセージ・フィルタは、指定のパターンで示した任意のフィールドを照合し、指定したアクションに応じてメッセージを承認または拒否します。このフィールドには、
CONTENT
、HEADER
、RECIPIENT
、REPLYTO
、SENDER
、SUBJECT
が含まれます。
メッセージ・フィルタに適用されるアクションは、メッセージの
ACCEPT
またはREJECT
の2種類のみです。メッセージ・フィルタは、「メッセージ・フィルタ」ページで定義した順番と同じ順番で適用されます。「終了」をクリックしてウィザードを使用した構成を完了するか、「次へ」をクリックして「Javaコールアウト」画面を続行し、追加フィルタの適用に使用可能なJavaクラスを指定します。
-
-
「Javaコールアウト」ページで、UMSアダプタによって呼び出し、指定したカスタム・ロジックを実行するJavaクラスの名前を指定します。
-
カスタムJavaコールアウトを指定する場合は、チェック・ボックスを選択し、テキスト・ボックスにクラス名を指定します。詳細は、この章のカスタムJavaコールアウト・クラスに関する項を参照してください。
-
後に示すページで「終了」をクリックし、UMSアダプタ・サービスの構成を完了します。Oracle UMSアダプタの構成が終了すると、インバウンド・サービスにJCAファイルが生成されます。ファイル名は、アダプタ構成ウィザードの「サービス名」ページで指定したサービス名と同じです。後からウィザードを再起動して、操作定義を変更できます。