Oracle® Fusion Middleware Oracle User Messaging Serviceによるアプリケーションの開発 リリース12c (12.1.2) E47999-02 |
|
前 |
次 |
この章では、ユーザー通信プリファレンス(UCP)について説明します。ここでは、通信チャネルの使用方法、およびメッセージング・フィルタを使用した連絡ルールの作成方法について説明します。この章では、Webインタフェースからチャネルとフィルタを管理することにより、通信プリファレンスを管理する方法についても説明します。また、ユーザー通信プリファレンスの構成に関するシステム管理者向けの情報と、アプリケーションとユーザー通信プリファレンスの統合に関するの開発者向けの情報も提供します。
注意: Oracle User Messaging Serviceのアーキテクチャとコンポーネントの詳細は、『Oracle User Messaging Serviceの管理』を参照してください。 |
この章の内容は次のとおりです。
ユーザー通信プリファレンスを使用すると、複数のチャネルにアクセスするユーザーは、メッセージを受信する方法、タイミングおよび場所を制御できます。ユーザーは、フィルタ(配信プリファレンス)を定義して、メッセージの配信先チャネルとその環境を指定します。ユーザーのチャネルおよびフィルタに関する情報は、Oracle Fusion Middlewareでの使用がサポートされているデータベースに格納されます。プリファレンスはデータベースに格納されるため、プリファレンスの情報は、ドメイン内のユーザー通信プリファレンスの全インスタンス間で共有されます。
UCPは、メッセージ配信サービスを提供するのではなく、ユーザーのチャネルと配信プリファレンスに対するアクセスと管理を行うためのユーザー・インタフェースおよびAPIを提供します。メッセージがユーザーにアドレス指定されると、UMSは、UCPサービスからそのユーザーの配信プリファレンスを取得し、ユーザーのプリファレンスに応じてメッセージを送信します。アプリケーション開発者にとっては、ユーザー通信プリファレンスを使用すると柔軟性が増します。UMSを介してメッセージを送信することにより、アプリケーションは間接的にUCPサービスを使用します。アプリケーションは、UCP APIをコールしてユーザーのプリファレンスにアクセスし、これを管理したり、タスク・フロー・ライブラリを使用してUCPと統合することによりWebユーザー・インタフェースを提供することで、UCPサービスに直接アクセスすることもできます。
ユーザー通信プリファレンスでは、次のように用語を定義しています。
チャネル: 配信タイプと配信アドレスの組合せです。たとえば、携帯電話番号6503334444は、2つのチャネルSMS:650333444とVOICE:650333444で使用できます。SMSとVOICEは配信タイプで、6503334444は配信アドレスです。
チャネル・アドレス: チャネルが通信できるアドレスの1つ。
フィルタ: ユーザーがメッセージを受信する方法、タイミングおよび場所を制御するメッセージ配信プリファレンス・ルール。
システム条件: 事前定義済ビジネス条件。条件のファクトは自動的にUCPサービスにより提供されます。
ビジネス条件: 件名などメッセージの名前つき属性。ビジネス条件のファクトは、メッセージから抽出するか、アプリケーションで提供でき、フィルタ条件内の指定値と比較してフィルタを選択するために使用できます。
ファクト: メッセージから抽出されるか、アプリケーションにより提供されるビジネス条件の実際値。
条件: ビジネス条件、演算子および指定値の組合せ。メッセージについてのファクトは、条件の真偽を評価する値との比較に使用されます。
アクション: メッセージを送信しない、使用可能な最初のチャネルに送信する、選択された全チャネルに送信するなど、フィルタ内の指定条件が真の場合に実行されるアクション。
ここでは、Webユーザー・インタフェースを使用したユーザー・プリファレンスの管理について説明します。この項は、次の項目で構成されています。
通信チャネルは、メッセージ配信用のアドレス(電話番号など)とタイプ(ショート・メッセージ・サービス(SMS)など)を定義します。
ユーザー通信プリファレンスで(UCP)は、アイデンティティ・ストアのユーザー・プロファイル設定に基づいて、いくつかのチャネルが自動的に作成されます。これらのチャネルは、IDMチャネルと呼ばれ、メッセージ配信用に使用できます。対応するドライバをデプロイすると、POPUPチャネルまたはWORKLISTチャネルが自動的に作成されます。作成されたチャネルは、ドライバのアンデプロイ時に削除されます。このチャネルのアドレス値は、ユーザーのログインIDです。ユーザーがUCP UIでこれらのチャネルを変更することはできません。
注意: メッセージング・ドライバでは、空白を含むチャネル・アドレスを指定できません。チャネル・アドレスの値はログインIDであるため、ユーザーのログインIDを作成する際は、空白を使用しないでください。 |
かわりにユーザーは、ユーザー定義チャネルを作成、変更および削除できます。これらはUSERチャネルと呼ばれます。ユーザーが作成したすべてのチャネルは、そのユーザーのシステムIDに関連付けられます。Oracle User Communication Preferencesにおけるチャネルは、携帯電話などの物理的なチャネルおよびデスクトップで実行している電子メール・クライアント・アプリケーションの両方を表し、UCP UIで構成できます。
USERチャネルを作成するには、次のタスクを実行します。
「使用可能なチャネル」の下のツールバーにある「作成」アイコン(図6-1)をクリックします。
「チャネルの作成」ダイアログ・ボックス(図6-2)が表示されます。
「名前」フィールドにチャネルの名前を入力します。
「タイプ」ドロップダウン・リストから配信タイプを選択します。
選択した配信タイプに適したアドレスを入力します。
このチャネルをデフォルト・チャネルとして設定するには、「デフォルト」チェック・ボックスを選択します。デフォルト・チャネルは複数指定できます。
「OK」をクリックしてチャネルを作成します。「使用可能なチャネル」セクションに新しいチャネルが表示されます。「使用可能なチャネル」ページでは、チャネルを変更または削除できます。
USERチャネルを変更するには、「使用可能なチャネル」セクションのチャネル・リストからこのチャネルを選択し、「変更」アイコン(図6-3)をクリックします。
「チャネルの変更」ダイアログ・ボックス(図6-4)が表示されます。このページでは、第6.2.1.1項「チャネルの作成」で説明したチャネル・プロパティを変更できます。
USERチャネルを削除するには、「使用可能なチャネル」セクションのチャネル・リストからこのチャネルを選択し、「削除」アイコン(図6-5)をクリックします。
特定のチャネルは、アイデンティティ・ストアのユーザー・プロファイルから取得される情報に基づきます。これらはIDMチャネルと呼ばれます。ユーザーは、このチャネルをこのインタフェース経由で変更したり削除したりできません。このようなチャネルに対して実行できるのは、これをデフォルト・チャネルに設定する操作のみです。IDMチャネル・アドレスは、アイデンティティ管理システムを介して管理されます。
1つ以上のチャネルをデフォルト・チャネルとして構成できます。チャネル・リストから直接チャネルを作成している途中、またはチャネルを作成した後に、チャネルをデフォルトのメッセージング・チャネルとして設定できます。
チャネルをデフォルト・チャネルとして設定するには、チャネル・リストからそのチャネルを選択し、「デフォルト」アイコン(図6-6)をクリックします。選択したチャネルの横にチェックマークが表示され、デフォルトのメッセージ受信方法として指定されます。必要な場合は、この手順を繰り返してさらにデフォルト・チャネルを追加します。
すでにデフォルトとして設定されているチャネルのデフォルト設定を削除するには、チャネル・リストからそのチャネルを選択し、図6-7に示されているアイコンをクリックします。
注意: アイデンティティ・ストア属性から自動的に作成される「勤務先電子メール」チャネルは、デフォルト・チャネルとして設定されます。「勤務先電子メール」チャネルのデフォルト設定は、他のデフォルト・チャネルを設定するまで削除できません。 LDAP設定の構成の詳細は、『Oracle User Messaging Serviceの管理』のユーザー・メッセージング・サービスのLDAPユーザー・プロファイルへのアクセスの構成に関する項を参照してください。 |
メッセージング・フィルタは、ユーザーにアドレス指定される着信メッセージの処理方法に関するルールを定義します。ユーザー通信プリファレンスページの「メッセージング・フィルタ」セクション(図6-8)では、受信するメッセージのタイプのみでなく、メッセージを受信するチャネルも指定するフィルタを作成できます。
フィルタは、条件(「条件」セクション)とアクション(「次を実行」セクション)の2つの主要なセクションで構成されます。各着信メッセージに対してフィルタが評価され、メッセージ処理用に選択する必要のある適切なフィルタが決定されます。条件セクションは、フィルタが選択される状況を決定します。アクション・セクションは、フィルタが選択された場合にメッセージをどのように処理するかを指定します。
フィルタを作成するには、次のタスクを実行します。
「メッセージング・フィルタ」の下のツールバーの「作成」アイコン(図6-1)をクリックします。「フィルタの作成」ページ(図6-9)が表示されます。
「名前」フィールドにフィルタの名前を入力します。
必要に応じて、「説明」フィールドにフィルタの説明を入力します。
チェック・ボックスでフィルタを一時的に有効または無効にできます。
「次のすべての条件に一致」オプションまたは「次の条件のいずれかと一致」オプションを選択して、メッセージがすべての条件を満たす必要があるのか、それともいずれかの条件なのかを選択します。
次のように、「条件」セクションでフィルタ条件を作成します。
ツールバーの「作成」アイコンをクリックします。「条件の作成」ダイアログ・ボックスが表示されます。
使用可能なビジネス条件のリストが表示される「属性」ドロップダウン・リストからメッセージの属性を選択します。これらの属性のリストは、表6-1を参照してください。
選択した属性を、「演算子」ドロップダウン・リストのいずれかの比較演算子と組み合せます。
「オペランド」フィールドに適切な値を入力します。これは、選択されている属性のファクトが選択した演算子を使用して比較される値です。
たとえば、「日付」属性を選択する場合は、比較演算子を1つ選択し、次に日付チューザから適切な日付を選択します。「次の間」などの範囲演算を選択した場合、下限値と上限値を入力するための2つのオペランド・フィールドが表示されます。
「OK」をクリックして、表に条件を追加します。
この手順を繰り返してフィルタ条件をさらに追加します。フィルタ条件を削除するには、表内の条件リストから条件を選択し、「削除」アイコン(図6-5)をクリックします。
メッセージがユーザーにアドレス指定されると、そのユーザーのフィルタの「条件」セクションが、メッセージ内のファクトに対して評価されます。「条件」セクションでフィルタが選択されると、「次を実行」セクションにより、メッセージの処理方法が決定されます。「次を実行」セクションは、アクション・タイプとチャネル・リストで構成されます。次のアクションの1つを選択します。
メッセージを送信しない -- フィルタ条件に一致するメッセージの受信をブロックするには、このオプションを選択します。
最初の使用可能なチャネルに送信(順にフェイルオーバー) -- フィルタ基準に一致するメッセージを優先チャネル(上矢印や下矢印を使用して設定)または次の使用可能なチャネルに送信するには、このオプションを選択します。
選択したすべてのチャネルに送信 -- リストしたすべてのチャネルにメッセージを送信するには、このオプションを選択します。
メッセージを送信するアクション・タイプを選択したら、ツールバーのドロップダウン・リストからチャネルを選択して、このフィルタのアクション・チャネル・リストに追加する必要があります。チャネルを選択したら、「追加」(図6-10)をクリックします。チャネルを削除するには、「削除」(図6-5)をクリックします。
必要に応じて、上矢印や下矢印を使用してチャネルに優先順位を付けます。「最初の使用可能なチャネルに送信」を選択すると、最上位のチャネル(使用可能な場合)がフィルタ基準に一致したメッセージを受信します。
「OK」をクリックしてフィルタを作成するか、「取消」をクリックしてフィルタを破棄します。
フィルタを変更するには、メッセージング・フィルタのリストからフィルタを選択し、「変更」(図6-3)をクリックします。「フィルタの変更」ページが表示されます。このページでは、フィルタ名以外のフィルタ・プロパティを追加または変更できます。第6.2.2.1項「フィルタの作成」を参照してください。
UCP UIの右上にある「設定」タブにアクセスして、プリファレンス設定を構成できます。次のパラメータを設定できます。
ロケール・ソース: 「アイデンティティ・ストアから」または「ブラウザから」を選択します。
アクセシビリティ・モード: 「標準」または「スクリーン・リーダー」を選択します。
テキストを高コントラストで表示する場合、「テキストの強調表示」チェック・ボックスを選択します。
テキストを大きなフォントで表示する場合、「さらに大きいテキスト」チェック・ボックスを選択します。
変更内容を保存する場合は「変更の保存」をクリックし、デフォルト設定に戻す場合は「デフォルトにリセット」をクリックします。
ここでは、WebLogic Scripting Tool (WLST)を使用したプロファイルの構成とユーザー・データの管理について説明します。また、プロファイル構成中に使用するビジネス条件についても説明します。
前述したように、各フィルタ条件はビジネス条件に対して定義されます。UCPは、次の表のビジネス条件をサポートします。ビジネス条件は、名前、データ型およびオプションの説明で構成されます。
表6-1に、ユーザー通信プリファレンスによってサポートされる事前定義済のビジネス条件を示します。
表6-1 ユーザー通信プリファレンス用の事前定義済ビジネス条件
ビジネス条件 | データ型 |
---|---|
組織 |
文字列 |
優先度 |
文字列 |
アプリケーション |
文字列 |
アプリケーション・タイプ |
文字列 |
有効期限 |
日付 |
送信元 |
文字列 |
宛先 |
文字列 |
顧客名 |
文字列 |
顧客タイプ |
文字列 |
ステータス |
文字列 |
金額 |
数値(小数) |
期日 |
日付 |
プロセス・タイプ |
文字列 |
支出タイプ |
文字列 |
コスト合計 |
数値(小数) |
処理時間 |
数値(小数) |
順序タイプ |
文字列 |
サービス・リクエスト・タイプ |
文字列 |
グループ名 |
文字列 |
ソース |
文字列 |
分類 |
文字列 |
期間 |
数値(小数) |
ユーザー |
文字列 |
ロール |
文字列 |
件名 |
文字列 |
サービス名 |
文字列 |
プロセス名 |
文字列 |
システム・コード |
文字列 |
エラー・コード |
文字列 |
発生数 |
数値(小数) |
UCPは、表6-2の2つのシステム条件をサポートします。システム条件は、事前定義済のビジネス条件です。管理者はシステム条件を拡張できません。システム条件は、条件の定義用に使用できますが、ここでは管理されていません。システム条件のファクトは、現在の時刻とユーザーのタイム・ゾーンに基づいて自動的に取得されます。したがって、ビジネス条件とは異なり、メッセージ処理中に、アプリケーションはシステム条件のファクトを提供する必要がありません。
表6-2 ユーザー通信プリファレンスでサポートされるシステム条件
システム条件 | データ型 | サポートされる値 |
---|---|---|
日付 |
日付 |
日付は、 |
時間 |
時間 |
時刻を表す4桁のHHMM形式の整数。最初の2桁は24時間形式の時間です。後半の2桁は分です。 |
注意: Oracle Enterprise Managerの「サーバー・プロパティ」ページから、ビジネス条件を管理できます(ビジネス条件の追加または削除)。ただし、この機能はまもなく非推奨になる予定なので、ビジネス条件の追加または削除にこのページを使用しないでください。第6.3.2項「Oracle Enterprise Managerを使用したプロファイルの構成」で説明されているように、ビジネス条件のサブセットをプロファイル構成時に使用できます。 |
複数のアプリケーションが1つのUCPサービス・インスタンスを消費する場合があります。ただし、すべてのアプリケーションが同じUCP機能セットを消費するとはかぎりません。異なるアプリケーションの様々な要件を満たすために、UCP機能はプロファイルで仮想化されます。これにより、各アプリケーションはターゲットをUCP機能のサブセットをカプセル化する特定のプロファイルに指定することが可能になります。
各プロファイルはプロファイルIDで識別されます。Oracle UCPサービスでは、プロファイルIDを指定することにより、クライアント・アプリケーションがプロファイルにターゲット設定できるようにAPIを提供します。アップグレード後、プロファイルIDなしで古いUCP APIを使用するレガシー・アプリケーションは、デフォルト・プロファイルにターゲット設定して、デフォルト・プロファイルにターゲット設定する他のアプリケーションと共有します。各アプリケーションが、他のアプリケーションと共有しないで特定のプロファイルにターゲット設定できるように、レガシー・アプリケーションを移行して最新のAPIを使用することをお薦めします。UCP APIの詳細は、ユーザー・メッセージング・サービスJava APIリファレンスを参照してください。
メッセージング・プリファレンス・プロファイルはOracle Enterprise Manager Fusion Middleware Controlを使用して管理できます。このインタフェースは、既存の構成済プロファイルをリストし、これによってユーザーはプロファイルを追加、変更または削除できます。プリファレンス・プロファイルを構成するには、次のタスクを実行します。
Oracle Enterprise Managerでユーザー・メッセージング・サーバーのホーム・ページを開き、次の図に示されているようにドロップダウン・リストから「サーバー・プロパティ」を選択します。
次の図のような「サーバー・プロパティ」ページが表示されます。既存プロファイルはすべて「メッセージング・プリファレンス・プロファイル」セクションに表示されます。
新しいプロファイルを追加するには、「メッセージング・プリファレンス・プロファイル」セクションの「追加」アイコンをクリックします。次の図のようなダイアログ・ボックスが表示されます。新しいプロファイルを追加するには構成の詳細を指定する必要があります。
「OK」をクリックして、新しいプロファイルを保存します。
ロケール・ソース、IDMとユーザー・チャネルの可用性およびビジネス条件のサブセットを選択することにより、プロファイル機能を定義できます。UCPは、3つの異なるロケール・ソース(クライアント・ブラウザ、アイデンティティ・ストアおよびシステム・デフォルト)のロケールに基づいてWebユーザー・インタフェースをレンダリングします。「ロケール・ソース」フィールドでは、「クライアント・ブラウザのロケール」と「アイデンティティ・ストアのロケール」という2つのソースから選択できます。これにより、UIレンダリングのためのロケール参照順序が決まります。「クライアント・ブラウザのロケール」を選択すると、参照順序は(1)「クライアント・ブラウザのロケール」、(2)「アイデンティティ・ストアのロケール」、(3)システム・デフォルト・ロケールになります。そうでない場合は、参照順序は(1)「アイデンティティ・ストアのロケール」、(2)「クライアント・ブラウザのロケール」、(3)システム・デフォルト・ロケールになります。各順序において、UCPは、サポートされている最初のロケールを使用してUIをレンダリングします。
前述の図に示されているユーザー・チャネルのチェック・ボックスは、そのプロファイル用のユーザー定義チャネルの可用性を定義します。このチェック・ボックスを選択すると、ユーザーは、UCP Webユーザー・インタフェースからユーザー・チャネルを作成できるようになります。IDMチャネルのチェック・ボックスは、アイデンティティ・ストアの自動同期化チャネルの可用性を決定します。チャネルは、ユーザーのプロパティです。これらのチェック・ボックスは、各プロファイルに対するチャネルの可視性を決定します。
各プロファイルは、前述の図の「選択したビジネス条件」の下に表示されているビジネス条件のサブセットをカプセル化します。この例では、「送信元」、「宛先」および「件名」の3つの条件のみが選択されています。さらに条件を追加するには、左側の「使用可能なビジネス条件」リストから条件を選択し、右向き矢印(>)をクリックして、「選択したビジネス条件」リストにこれを移動します。ユーザーは、特定プロファイル内でのフィルタ条件の定義に、選択したビジネス条件のみを使用できます。つまり、フィルタ条件を定義する際、選択されたビジネス条件のみが、UCP Webユーザー・インタフェースの「属性」ドロップダウン・リストに表示されます。
既存のプロファイルを変更するには、「メッセージング・プリファレンス・プロファイル」セクションの「編集」アイコンをクリックします。次の図のようなダイアログ・ボックスが表示されます。プロファイルを編集するには構成の詳細を指定する必要があります。
「OK」をクリックして、プロファイルを保存します。
メッセージング・プリファレンス・プロファイルを削除するには、プロファイル・リストからプロファイルを選択し、「削除」をクリックします。
「適用」をクリックし、ユーザー・メッセージング・サーバー・インスタンス内の変更を適用します。変更内容が反映されるようにサーバーを再起動します。
UCPが提供するコマンドライン・スクリプティング・ツールであるOracle Weblogic Scripting Tool (WLST)を使用して、ユーザー・プリファレンス・データをUCPリポジトリから指定のXMLファイルにダウンロードしたり、XMLファイルからUCPリポジトリにアップロードできます。
WLSTを使用してユーザー・プリファレンス・データをアップロードまたはダウンロードする方法については、Oracle Fusion Middlewareコア・コンポーネントWLSTコマンド・リファレンスのmanageUserCommunicationPrefsに関する項を参照してください。WLSTの開始方法については、『Oracle Fusion Middleware Oracle Fusion Middlewareの管理』のOracle Weblogic Scripting Tool (WLST)の使用のスタート・ガイドを参照してください。
あるユーザーをアイデンティティ・ストアから削除するとします。引き続き、削除された古いユーザーと同じ名前の新しいユーザーを作成すると、その新しいユーザーは、同じ名前の古いユーザーのユーザー通信プリファレンス(UCP)データにアクセスできます。このようなデータには、古いユーザーによって構成されていた通信チャネル、メッセージ配信プリファレンスおよびメッセージング・フィルタが含まれます。削除された古いユーザーと同じ名前の新しいユーザーによるこのようなアクセスを回避するには、アイデンティティ・ストアからユーザーを削除した後、次の手順に従います。
次のWLSTコマンドを使用して、すべてのユーザーのUCPデータをXMLファイル(たとえばuserdata.xml)にダウンロードします。
wls:/offline> manageUserCommunicationPrefs(operation='download', filename='userdata.xml', url='t3://<hostname>:<portnumber>', username='<adminusername>', password='<adminpassword>')
XMLファイルのバックアップ・コピーを作成します。userdata.xmlファイルを編集して、削除した古いユーザーの全データを削除します。各ユーザー・データ・セクションは、XMLファイル内の<user guid=
username>
要素で編成されています。古いユーザーのguidでユーザー要素を見つけ、ユーザー要素からそのユーザーの全データを削除します。次の例は、たとえばdavidというユーザーの全データを削除した後のユーザー要素を示しています。
<user guid="david"> <devices> </devices> </user>
userdata.xmlファイルを保存した後、次のWLSTコマンドを使用して、変更したファイルをアップロードします。
wls:/offline> manageUserCommunicationPrefs(operation='upload', filename='userdata.xml', merge='overwrite', url='t3://<hostname>:<portnumber>', username='<adminusername>', password='<adminpassword>')
UCPサービスでは、エンド・ユーザーは、Webインタフェースから自分のチャネルとフィルタを管理することにより、通信プリファレンスを管理できます。エンド・ユーザーが自分の通信プリファレンスを制御できるようにするには、アプリケーション開発者は、アプリケーションにUCP Webユーザー・インタフェースを統合させる必要があります。UCPが提供するADFタスク・フロー・ライブラリにより、エンド・ユーザーがWebアプリケーションから自分のプリファレンスに直接アクセスできるリージョンをWebアプリケーションに簡単に追加できます。
ここでは、ADFタスク・フロー・ライブラリを使用し、特定のプロファイルをターゲット指定して、Webユーザー・インタフェースを実装する方法について説明します。ADFタスク・フロー・ライブラリにより、新規または既存のアプリケーションとWebインタフェースを簡単に統合させることができます。ADFタスク・フローの詳細は、『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』のADFタスク・フローの作成に関する項を参照してください。UCPインスタンスとWebユーザー・インタフェースを統合するには、この項のタスクを実行します。
ここでは、ADF Webアプリケーションを作成する方法、およびOracle JDeveloperのADFタスク・フロー・ライブラリを使用して既存のWebアプリケーションにページまたはリージョンを追加する方法について説明します。
UCPを新しいアプリケーションまたは既存アプリケーションと統合させることができます。Oracle Jdeveloperで新しいADF Webアプリケーションを作成するには、次のタスクを実行します。
Oracle JDeveloper 12cウィザードを開きます。左側の「アプリケーション・ナビゲータ」から「新規アプリケーション」を選択します。「新規ギャラリ」ウィンドウが表示されます。
「新規ギャラリ」ウィンドウで、項目リストから「ADF Fusion Webアプリケーション」を選択し、「OK」をクリックします。次の図のように、ADF Fusion Webアプリケーションの作成ウィンドウが表示されます。
このウィンドウで、アプリケーション名(たとえばMyApp)を入力します。また、アプリケーション・パッケージ接頭辞(たとえばoracle.ucp)を入力します。「終了」をクリックすると、新しいADFアプリケーションが作成されます。
UCPライブラリのバインド・タスク・フローを任意のリージョンに追加することにより、アプリケーションにシームレスな統合を提供できます。この項では、UCPタスク・フロー用のリージョンをホストするデモADF Webページを作成します。新しいADF Webページを作成するには、次のタスクを実行します。
左側のウィンドウ・ペインで、「ViewController」を右クリックしし、コンテキスト・メニューを表示します。
ViewControllerのコンテキスト・メニューで「新規」メニューから「ページ」を選択します。次の図のような「JSFページの作成」ウィンドウが表示されます。
このウィザードで、ファイル名(たとえばMyPage.jspx)を入力します。「ドキュメント・タイプ」メニューから「JSP XML」を選択します。
「ページ・レイアウト」メニューから「空白ページの作成」を選択します。「OK」をクリックします。新しいMyPage.jspxが作成されます。
ナビゲーション・ペインの「ViewController」ノードの下の「MyPage.jspx」をダブルクリックして、新しく作成したページを開きます。「MyPage.jspx」ウィンドウで、下のツールバーから「ソース」を選択し、次の図のように、ページのソース・コードを表示します。
UMSをWeblogic Serverにデプロイしている場合、UCPタスク・フロー・ライブラリもサーバーにデプロイされています。ただし、JDeveloperインスタンスからUCPタスク・フロー・ライブラリにアクセスできない場合があります。したがって、タスク・フロー・ライブラリをアプリケーションに接続することが重要です。まず、JDeveloperインスタンスからライブラリへのファイルシステム接続を作成する必要があります。これを実行する手順を次に示します。
上のペインにあるツールバーの「ウィンドウ」タブをクリックし、ドロップダウン・リストを表示します。リストから「リソース」を選択し、Jdeveloperウィンドウの右側のペインに「リソース」タブを追加します。
「リソース」タブで、フォルダ・アイコンをクリックし、ドロップダウン・リストを表示します。リストで「IDE接続」に移動し、「ファイルシステム」を選択します。次の図のように、「ファイルシステム接続の作成」ウィザードが表示されます。
接続名(たとえばUCP Task Flow)を入力します。
「参照」をクリックし、UCPタスク・フロー・ライブラリが含まれるフォルダを選択します。このフォルダは、oracle_common
ディレクトリ内にあり、次のようなパスになります。
oracle_common/communications/modules/oracle.ucs.userprefs.webapp_xx.x.x
xx.x.xはバージョン番号です(12.1.2など)。
このフォルダに移動し、「選択」をクリックします。
「OK」をクリックします。ファイルシステム接続が作成されます。確認するには、右側のペインの「ファイルシステム」ナビゲーション・ツリーを開きます。「ADF Task Flows」フォルダを開くと、次の図のように、UserCommunicationPreferencesが表示されます。
ADFタスク・フロー・ライブラリのサポートにより、エンド・ユーザーがWebアプリケーションから直接自分のプリファレンスにアクセスできるリージョンをWebアプリケーションに追加できます。これを実現するには、次の手順を実行します。
新しく作成したページMyPage.jspxの「ソース」タブをクリックします。
右側のペインの「ファイルシステム」ナビゲーション・ツリーからUserCommunicationPreferencesタスク・フローをドラッグして、ページ・ソースの<af:form> </af:form>
タグ内にドロップし、このタグ内にリージョンを作成します。
次の図のようなコンテキスト・メニューが表示されます。
コンテキスト・メニューから、「リージョン」を選択します。確認ウィンドウが表示されます。
「ライブラリの追加」をクリックします。「タスク・フロー・バインディングの編集」ウィザードが表示されます。
「入力パラメータ」の表に、profield
の値を入力します(たとえばsoa)。プロファイルID値を指定すると、作成したユーザー・インタフェースが、このプロファイル内のユーザー・フィルタとチャネルにしかアクセスできないようになります。これは、アプリケーションで指定するプロファイルと同じプロファイルにする必要があります。「OK」をクリックします。これで、リージョンがページに追加されました。
ユーザー・プリファレンス・ページを追加して既存のADF WebアプリケーションとUCPを統合する場合、この項で説明した同じ方法で、既存または新規のADFページにリージョンを追加できます。
UMSおよびUCPタスク・フロー・ライブラリがWebLogic Serverにデプロイされている場合、アプリケーションにこれらのライブラリを組み込む必要はありません。weblogic.xml
ファイルからこれらのライブラリを参照する必要があります。これを実現するには、次の手順を実行します。
ナビゲーション・ペインで「ViewController」ノードを右クリックします。コンテキスト・メニューが表示されます。
コンテキスト・メニューから「新規」を選択し、「ギャラリから」をクリックします。「新規ギャラリ」ウィザードが表示されます。
ナビゲーション・ペインで「一般」を開き、「デプロイメント・ディスクリプタ」を選択します。右側のペインの項目リストから「WebLogicデプロイメント・ディスクリプタ」を選択します。「OK」をクリックします。次の図を参照してください。
「WebLogicデプロイメント・ディスクリプタの作成」ウィザードが表示されます。
デプロイメント・ディスクリプタのリストから「weblogic.xml」を選択し、「次へ」をクリックします。次の画面で、デプロイメント・ディスクリプタのバージョンとして12.1.1以降を選択し、「次へ」をクリックします。「サマリー」ページで「終了」をクリックします。
ナビゲーション・ペインの「ViewController」ノードの下の「weblogic.xml」をダブルクリックして、新しく作成したページを開きます。「weblogic.xml」ウィンドウで、下のツールバーから「ソース」を選択し、ページのソース・コードを表示します。
weblogic.xmlファイルで、UMSライブラリ(oracle.sdp.client)とUCPライブラリ(oracle.ucs.userprefs.webapp)の2つのライブラリを参照します。次の図に示されているように、次のライブラリ参照を追加します。
<library-ref><library-name>oracle.sdp.client</library-name></library-ref> <library-ref><library-name>oracle.ucs.userprefs.webapp</library-name></library-ref>
weblogic.xmlファイルで2つのライブラリを参照しているので、アプリケーションでこれらのライブラリをパッケージ化する必要はありません。これはプロジェクト・デプロイメント・プロファイル経由で管理できます。これを実現するには、次の手順を実行します。
まずプロジェクト・デプロイメント・プロファイルを作成する必要があります。ナビゲーション・ペインで「ViewController」ノードを右クリックします。コンテキスト・メニューが表示されます。
コンテキスト・メニューで「デプロイ」をクリックし、「新規デプロイメント・プロファイル」を選択します。「デプロイメント・プロファイルの作成」ウィザードが表示されます。
「プロファイル・タイプ」ドロップダウン・リストから「WARファイル」を選択し、「OK」をクリックします。
プロジェクト・デプロイメント・プロファイルが作成されます。次に、ライブラリがアプリケーション内で確実にパッケージ化されないようにする必要があります。
「一般」タブで「Java EE Webコンテキスト・ルートを指定」オプションを選択し、次の図に示されているように、アプリケーション・コンテキスト・ルート(たとえばmyapp)を入力します。
ナビゲーション・ツリーから「WEB-INF/lib」の下の「フィルタ」を選択します。次の図に示されているように、右側のペインに表示されているすべての.jar
ファイルの選択を解除します。「OK」をクリックして、変更内容をデプロイメント・プロファイルに保存します。
これで、ライブラリは確実にアプリケーション内でパッケージ化されないようになりました。前述したように、重要なライブラリはweblogic.xml
ファイル内で参照されています。
新しいアプリケーション・デプロイメント・プロファイルを作成するには、次のタスクを実行します。
左側のペインの「アプリケーション」ドロップダウン・リストから「デプロイ」を選択し、コンテキスト・メニューの「新規デプロイメント・プロファイル」をクリックします。
「デプロイメント・プロファイルの作成」ウィザードが表示されます。
「プロファイル・タイプ」ドロップダウン・リストから「EARファイル」を選択し、アプリケーション・デプロイメント・プロファイルの名前(たとえばMyApp)を入力します。
「OK」をクリックすると、アプリーション・デプロイメント・プロファイルが作成されます。「EARデプロイメント・プロファイルのプロパティの編集」ウィザードが表示されます。
ナビゲーション・ツリーから「アプリケーション・アセンブリ」を選択します。
右側のペインで、「ViewController.jpr」ノードを開いて、次の図に示されているように、「webapp1」を選択してアプリケーションに組み込みます。
ツールバーで「すべて保存」をクリックし、アプリケーションを保存します。
次に、アプリケーションをWebLogicアプリケーション・サーバーにデプロイする必要があります。アプリケーション・サーバーをまだ構成していない場合、まず、アプリケーション・サーバー接続を構成する必要があります。
アプリケーションをデプロイするには、次のタスクを実行します。
「アプリケーション」ドロップダウン・リストから「デプロイ」を選択し、コンテキスト・メニューの「MyApp」をクリックします。「MyAppのデプロイ」ウィザードが表示されます。
「デプロイメント・アクション」画面で、「アプリケーション・サーバーへのデプロイ」を選択し、「次へ」をクリックします。
「サーバーの選択」画面で、アプリケーション・サーバーのリストからサーバーを選択し、「終了」をクリックして、アプリケーションをデプロイします。
目的のサーバーがアプリケーション・サーバーのリストに含まれていない場合は、第6.4.2.2項「アプリケーション・サーバー接続の構成」の手順に従って、サーバー接続を構成してください。
アプリケーション・サーバー接続が構成されていない場合、まず、次のタスクを実行してこれを構成する必要があります。
「アプリケーション」ドロップダウン・リストから「デプロイ」を選択し、コンテキスト・メニューの「MyApp」をクリックします。「MyAppのデプロイ」ウィザードが表示されます。
「デプロイメント・アクション」画面で、「アプリケーション・サーバーへのデプロイ」を選択し、「次へ」をクリックします。
「サーバーの選択」画面で、右上隅のプラス・アイコンをクリックします。
「アプリケーション・サーバー接続の作成」ウィザードが表示されます。
「接続名」フィールドに、サーバー接続名(MyServerなど)を入力します。「次へ」をクリックします。
「認証」画面で、アプリケーション・サーバーの管理者のユーザー名とパスワードを入力します。「次へ」をクリックします。
「構成」画面で、次の図に示されているように、ホスト名、ポート番号およびドメイン名を指定します。
「次へ」をクリックします。
「テスト」画面で、「接続のテスト」をクリックし、接続を検証します。テストが成功した場合は、「終了」をクリックします。これで、次の図に示されているように、アプリケーション・サーバー・リストに目的のアプリケーション・サーバーが表示されます。
新しく構成したアプリケーション・サーバーにアプリケーションをデプロイするには、リストからそのサーバーを選択し、「終了」を選択します。アプリケーションのデプロイメント成功の確認メッセージが表示されます。
アプリケーションにアクセスして、ユーザー・プリファレンスを管理できます。アプリケーションを検証するには、ブラウザを開いて、新しく作成したページのURL (たとえばhttp://localhost:7001/myapp/faces/MyPage.jspx)を指定します。次の図に示されているように、通信プリファレンスWebインタフェースが表示されます。
注意: ブラウザでアプリケーションに初めてアクセスする場合、空白ページが表示される場合があります。これは、アプリケーションに認証が含まれていない場合の予想される動作です。このデモでは、簡素化のため、認証は含まれていません。実際には、Webアプリケーションは適切な認証により保護することをお薦めします。 デモ・アプリケーションを認証なしでテストする場合、次の回避策を試すことができます。Oracle SSO保護Webアプリケーションが別にある場合は、このアプリケーションにまずログインして、同じブラウザから目的のアプリケーションにアクセスできます。このようにすると、空白ページではなく、認証ユーザーのチャネルとフィルタが表示されます。 |
UCPサービスは、アプリーションから直接または間接的に消費できます。UCPサービスを間接的に消費するには、UMS APIをコールする必要があります。すると、メッセージがユーザーに送信されます。UMSは、ユーザーのプリファレンスに基づいて、最適なチャネルにメッセージを配信します。UCPサービスを直接消費する場合、UCP Java APIをコールする必要があります。たとえば、ユーザーが好むチャネルの配信タイプに応じてメッセージ形式を制御する場合、UCPサービスを直接消費することが必要になります。また、たとえば、特定のイベントでアプリケーションのユーザーにメッセージを送信する新しいアプリケーションを構築する場合、まずアプリケーションのデプロイメント時に各ユーザーがメッセージを受信できるように、UCP APIを使用してプログラムにより各ユーザーのデフォルト電子メール・チャネルを作成できます。ユーザーがデフォルト・チャネルとして電子メールを希望しない場合、後で自分でプリファレンスを変更できます。
UCP Java APIは、アプリーションを実装してUCPサービスを消費するためのプログラム・インタフェースを提供します。また、UCPは、チャネルとフィルタを管理するためのJava APIも提供します。Javaインタフェースoracle.ucs.userprefs.UserCommunicationPreference
は、クライアントがUCPサービスにアクセスするためのプライマリ・インタフェースです。oracle.ucs.userprefs
パッケージには、ユーザー通信プリファレンスのAPIクラスが含まれています。詳細は、ユーザー・メッセージング・サービスJava APIリファレンスを参照してください。これは、アドレス、フィルタセットなどのユーザーのプリファレンス・オブジェクトを管理するためのルート・インタフェースです。UCPサービスのAPIとインタフェースの詳細は、ユーザー・メッセージング・サービスJava APIリファレンスを参照してください。
ユーザーの配信プリファレンスは、JavaメソッドgetDeliveryPreference(String guid, String profileID, MapString,Object facts)
を呼び出すことにより取得できます。guid
は大文字と小文字が区別されます。12cで導入されたprofileID
パラメータは、特定プロファイルのユーザー・プリファレンスをターゲット設定するのに使用されます。各アプリケーションが特定のプロファイルをターゲットとすることをお薦めします。getDefaultProfileId
メソッドをコールしてアプリケーションにより取得できるデフォルトのプロファイルIDがあります。11g APIを呼び出す(プロファイルIDを使用しない)アプリケーションでは、デフォルト・プロファイルが自動的に使用されます。最終的に、このAPIをコールするアプリケーションは、ターゲット・プロファイルで一致するフィルタをUCPが選択できるように必要なファクトをすべて提供する必要があります。ファクトは、名前/値ペアのMap<String,Objectとします。ここで名前はビジネス条件とマップ内のキーです。このAPIの使用の詳細は、ユーザー・メッセージング・サービスJava APIリファレンスを参照してください。
次のコードの抜粋は、testUser1の配信プリファレンスを取得する方法を示しています。
// Obtain a UserCommunicationPreference object UserCommunicationPreference ucp = UserPrefsServicesFactory.createUserCommunicationPreference(); // Set target user ID String userId = “testUser1”; // Specify the Profile ID, or default id from ucp.getDefaultProfileId() String profileId = “soa”; // Add all facts into Hashtable facts. Facts for Date and Time are not needed. Map <String, String> facts = new HashMap<String, Object>(); facts.put(“Application”, “BPEL”); // Add application name facts.put(“Due Date”, new Date()); // Use current date facts.put(“Amount”, new Double(“678.00”)); // Set number for 678 // Invoke getDeliveryPreference() function with userId, profileId and and facts. DeliveryPreference dp = ucp.getDeliveryPreference(userId, profileId, facts); // Retrieve Action Type and delivery Channels from the returned DeliveryPreference object. ActionType at = dp.getActionType(); //Get Action Type Vector <DeviceAddress> channels = dp.getDevices(); //Get delivery Channels
UCPには、UCPリポジトリをアイデンティティ・ストア(通常はLDAP)と同期する自動チャネル管理機能があります。電子メール・アドレスがアイデンティティ・ストアに追加されると、UCPリポジトリに、その電子メール・アドレスに対応するEMAILチャネルが自動的に作成されます。このチャネルは、対応する電子メール・アドレスがアイデンティティ・ストアから削除されると、リポジトリから削除されます。UCPは、電子メール、IM、勤務先電話、自宅電話および携帯電話のチャネルを自動的に作成します。これらのチャネルはIDMチャネルと呼ばれます。
これらのチャネルは自動的にUCPにより管理されるので、アプリケーション側でチャネルの作成または削除は行わないでください。アプリケーション側では、これらのチャネルをデフォルト・チャネルとして設定または設定解除することのみ可能です。ただし、アプリケーションは、createDeviceAddress
、getDeviceAddresses
などのAPIを使用してUSERチャネルを作成、変更または削除できます。1つのチャネルを、setDefaultChannel
APIを使用してデフォルト・チャネルとして設定できます。
次のコードの抜粋は、特定の電子メール・アドレスを持つユーザーtestUser1の通信チャネルを作成する方法を示しています。
// Create an email channel for testUser1 DeviceAddress channel = ucp.createDeviceAddress(“testUser1”, // User ID “myEmail”, // Channel name DeliveryType.EMAIL, // Delivery Type for email “myemail@somecompany.com”); // Email address ucp.save(channel); // without this line, the Channel will not be persisted in UCP repository
チャネル名は各ユーザーで一意である必要があります。配信タイプと配信アドレスの組合せも、各ユーザーで一意である必要があります。次に、チャネルを管理する方法を示すサンプル・コードの抜粋をいくつか示します。
// Set the Channel as a default Channel ucp.setDefaultAddress(“testUser1”, // User ID “soa”, // Profile ID channel); // Channel to be flagged // Unset a default Channel ucp.removeDefaultAddress(“testUser1”, // User ID “soa”, // Profile ID channel); // Channel to be unset // Modify the Channel's address channel.setAddress(newemail@somecompany.com); ucp.save(channel); // without this line, the change will not be persisted in UCP repository // Remove the Channel ucp.delete(channel);
フィルタは、プロファイルごとのセットで管理されます。次のコードの抜粋は、ユーザーtestUser1のsoaプロファイルに対してメッセージング・フィルタを作成する方法を示しています。
// Get, or create if not exist, user's Filter Set for Profile “soa” FilterSet filterSet = ucp.getFilterSet(“testUser1” // User ID “soa”); // Profile ID // Create a new Filter Filter filter = filterSet.createFilter(“Test Email Filter”); // Create a new Filter named “Test Email Filter” filter.setConditionType(ConditionType.MATCH_ANY). // Set the Condition Type to logical OR // Create a new Condition Condition condition = filter.createCondition(); // Create a new Condition first Map<String, BusinessRuleTerm> terms = ucp.getBusinessTerms(); BusinessRuleTerm term = terms.get(“Subject”); // Business Term for “Subject” condition.setFilterTerm(term); condition.setTermOperation(TermOperationType.Contains); condition.setOperandOne(“approved”); // Set value “approved” ArrayList<Condition> conditions = new ArrayList<Condition>(); conditions.add(condition); fitler.setConditions(conditions); // Add the Condition list to the Filter // Set Action Type Filter.setActionType(ActionType.SERIAL); // Set Action Type for SERIAL // Get all the Channels for “soa” Profile Set<DeviceAddress> allAddresses = ucp.getDeviceAddress(“testUser1”, // User ID “soa”); // Profile ID ArrayList<DeviceAddress> channels = new ArrayList(allAddresses); // Convert to a List filter.setDeviceAddressList(channels); // Add to the Filter as target Channels // Add the Filter to the Filter Set filterSet.addFilter(filter); // Finally persist the FilterSet object ucp.save(filterSet); // Required to persist the Filter
アプリケーションをデプロイするには、アプリケーションの開発ディスクリプタから共有ライブラリoracle.sdp.client
を参照する必要があります。アプリケーションは、UCPサービスと同じドメインにデプロイする必要があります。
UCPにはアプリケーションがチャネルとフィルタを管理するためのJava APIが用意されていますが、ユーザーが、UCPタスク・フロー・ライブラリを使用してWebアプリケーションに統合されたUCP Webインタフェースから、自分のプリファレンスを管理することをお薦めします。