プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle Business Process Managementによるプロセスの管理とモニタリング
12c (12.1.3)
E57558-04
目次へ移動
目次

前
次

A Oracle Business Process Management Workspaceのタスク・フローを使用したカスタムADFアプリケーションの作成

Oracle Business Process Management Workspace (プロセス・ワークスペース)で使用できる様々な機能は、タスク・フローと呼ばれるスタンドアロンの再利用可能なコンポーネントとして公開されます。この付録では、各タスク・フローの機能に関する基本的な情報を説明します。

タスク・フローは、Oracle Application Development Framework (ADF)アプリケーションに埋め込むことができます。これらのスタンドアロンのタスク・フローには多数のパラメータが用意されており、これらのパラメータを使用してカスタマイズ・アプリケーションを作成できます。タスク・フローはすべてADFライブラリにバンドルされており、ここから埋込み先のアプリケーションに組み込むことができます。

その後で、「サンプル: プロセス・ワークスペースのタスク・フローを使用したADFアプリケーションのカスタマイズ」で、TaskListTaskFlowを使用したサンプル・タスク・フローによって、アプリケーションにタスク・フローを埋め込むための詳細な手順、およびアプリケーションのカスタマイズ、デプロイ、実行方法を示します。

この付録の内容は次のとおりです。

注意:

この付録では、Oracle Application Development Frameworkとセキュリティの両方を詳しく理解していることを前提としています。

ユーザー関連のタスク・フロー

タスク・リストのタスク・フロー

タスク・フローでは、埋め込まれたリージョンの表示方法の制御にパラメータが使用されます。この項では、次のパラメータについて説明します。

federatedMode

このパラメータをtrueに設定すると、タスク・リストがフェデレーテッド・モードで表示されます。タスク・フローをフェデレーテッド・モードで実行するには、フェデレーテッド・サーバーのリストをタスク・フローに渡す必要があります。フェデレーテッド・サーバーのリストをタスク・フローに渡す方法の詳細は、federatedServersを参照してください。

federatedServers

フェデレーテッド・サーバー・リストをタスク・フローに渡すには、次のいずれかを実行します。

  • クライアント構成ファイルwf_client_config.xmlをクラス・パスに含めます。このクラス・パスは、earレベルのAPP-INF\classes\wf_client_config.xmlまたはWebアプリケーションのWEB-INF\classesです。クライアント構成ファイルには、すべてのフェデレーテッド・サーバーの詳細が含まれています。

    wf_client_config.xmlファイルのサンプルについては、「サンプル: Wf_client_config.xmlファイル」を参照してください。

  • フェデレーテッド・サーバー・リストを含んだJAXBオブジェクトを作成します。このJAXBオブジェクトをfederatedServersパラメータを介してタスク・フローに渡すことができます。オブジェクトはbacking bean methodによって戻される必要があります。

    WorkflowServicesClientConfigurationTypeオブジェクトを返すメソッドを持つサンプルBeanの詳細は、「サンプル: WorkflowServicesClientConfigurationTypeオブジェクトを返すBean」を参照してください。

クライアント構成ファイルwf_client_config.xmlとJAXBオブジェクトの両方をタスク・フローに提供した場合は、JAXBオブジェクトが優先されます。

showServerColumn

タスク・フローがフェデレーテッド・モードで実行される場合、デフォルトではタスク・リストのサーバー列は表示されません。タスク・リストにサーバー列を表示するには、このパラメータをtrueに設定して渡す必要があります。

wfCtxID

これはワークフロー・コンテキストのトークン文字列です。ワークフロー・コンテキストをタスク・フロー内部に作成する場合に使用します。

注意:

アプリケーションがSSO対応であるか、ADFセキュリティを使用して保護されている場合、このパラメータは必要ありません。それ以外の場合、このパラメータは必須です。

ワークフロー・コンテキスト識別子を取得する手順

次のコマンドを実行します。

IWorkflowContext wfCtx =  wfSvcClient.getTaskQueryService().authenticate(username,
password,
realm,
null);
wfCtxID = wfCtx.getToken();

証明書のタスク・フロー

デジタル証明書には、認証局のデジタル署名が含まれ、その証明書が真正なものであることを確認できます。参加者の資格証明は、デジタル証明書によって証明されます。証明書は認証機関によって発行されます。ユーザー名、シリアル番号、有効期限、証明書所有者の公開鍵のコピー(メッセージとデジタル署名の暗号化に使用)、および証明書発行者のデジタル署名が記載されているため、受信者は証明書が本物であることを確認できます。

図A-1に示すように、デシジョンに署名する場合は、デジタル証明書をアップロードできます。証明書を使用してタスクの結果に署名する場合は、認証機関によって発行された1つの証明書のみでなく、証明書のチェーン全体をアップロードする必要があります。チェーンを.P7B (PKCS7形式)ファイルとしてアップロードします。

図A-1 証明書のアップロード

図A-1の説明
「図A-1 証明書のアップロード」の説明

アプリケーションを作成し、証明書タスク・フローをアプリケーションに埋め込むには、「サンプル: プロセス・ワークスペースのタスク・フローを使用したADFアプリケーションのカスタマイズ」の手順を手順9を除いてすべて実行します。ステップ9は、証明書にパラメータがないため実行する必要はありません。

レポートのタスク・フロー

レポートのタスク・フローの詳細は、プロセス・ワークスペースでのレポートを使用したワークフローの管理を参照してください。

アプリケーションを作成し、レポート・タスク・フローをアプリケーションに埋め込むには、「サンプル: プロセス・ワークスペースのタスク・フローを使用したADFアプリケーションのカスタマイズ」の手順を手順9を除いてすべて実行します。ステップ9は、レポートにパラメータがないため実行する必要はありません。

アプリケーション・プリファレンスのタスク・フロー

アプリケーション・プリファレンスのタスク・フローの詳細は、プロセス・ワークスペースでの「作業アイテム」パネルの表示の設定を参照してください。

アプリケーションを作成し、アプリケーション・プリファレンス・タスク・フローをそれに埋め込むには、「サンプル: プロセス・ワークスペースのタスク・フローを使用したADFアプリケーションのカスタマイズ」の手順を手順9を除いてすべて実行します。ステップ9は、アプリケーション・プリファレンスにパラメータがないため実行する必要はありません。

フレックス・フィールドのタスク・フロー

フレックス・フィールドのタスク・フローの詳細は、プロセス・ワークスペースでのマップ済属性(フレックス・フィールド)の管理を参照してください。

アプリケーションを作成し、フレックス・フィールド・タスク・フローをそれに埋め込むには、「サンプル: プロセス・ワークスペースのタスク・フローを使用したADFアプリケーションのカスタマイズ」の手順を手順9を除いてすべて実行します。ステップ9は、フレックス・フィールドにパラメータがないため実行する必要はありません。

ルールのタスク・フロー

ルールのタスク・フローの詳細は、プロセス・ワークスペースでのユーザー・ルールの作成方法を参照してください。

showOtherUsersRulesパラメータはブール値を使用しますTrueを設定して渡した場合は、他のユーザーのルールが表示されます。Falseを設定して渡した場合、他のユーザーのルールは表示されません。また、このユーザーには他のユーザーのルールを表示するための権限が必要です。

アプリケーションを作成し、ルール・タスク・フローをそれに埋め込むには、「サンプル: プロセス・ワークスペースのタスク・フローを使用したADFアプリケーションのカスタマイズ」の手順を手順9を除いてすべて実行します。ステップ9は、ルール・フィールドにパラメータがないため実行する必要はありません。

プロセスのタスク・フロー

プロセス・アプリケーションのタスク・フロー

プロセス・ワークスペースで使用できるアプリケーションは、プロセス設計およびログイン中のユーザーに割り当てられているロールによって異なります。また、使用可能なアプリケーションのリストは、デプロイ済で実行中のBPMプロセスによって異なります。実行中のプロセスがない場合、または実行中のいずれかのプロセスでアプリケーションを実行する権限がユーザーにない場合、「アプリケーション」パネルには何も表示されません。図A-2に、プロセス・ワークスペースでの「アプリケーション」パネルの場所を示します。

図A-2 「アプリケーション」パネル

図A-2の説明が続きます
「図A-2 「アプリケーション」パネル」の説明

表A-1 プロセス・アプリケーションのタスク・フロー

フィールド 説明

タスク・フロー定義ファイル:

processApplicationsTaskflow.xml

説明:

ユーザーが使用できるアプリケーションのリスト(タスクのリスト)をレンダリングします。アプリケーションを実行すると、デプロイ済の様々なプロセスにインスタンスが作成されます。

引数:

なし。

プロセス・インスタンスのタスク・フロー

表A-2 プロセス・インスタンスのタスク・フロー

フィールド 説明

タスク・フロー定義ファイル:

processInstancesTaskflow.xmll

説明:

特定のビュー(デフォルトでは「受信ボックス」ビュー)に対応するインスタンスのリストを表形式でレンダリングします。この表に表示される列は、選択したビューに関連付けられているプレゼンテーションで定義され、ここから編集できます。また、検索機能もあります。

引数:

viewId: 最初にレンダリングされるビューを指定します。デフォルトでは受信ボックスがレンダリングされます。

プロセス・インスタンスの詳細のタスク・フロー


表A-3 プロセス・インスタンスのタスク・フロー

フィールド 説明

タスク・フロー定義ファイル:

processInstanceDetailTaskflow.xmll

説明:

オープン・アクティビティ、監査証跡(表およびグラフ形式の両方)、コメントおよび添付ファイルなど、インスタンスの詳細をレンダリングします。

引数:

instanceId: このインスタンスIDに関連付けられている詳細がレンダリングされます。


プロセス分析のタスク・フロー

ダッシュボード・ウィジェットのタスク・フロー

表A-4 ダッシュボード・ウィジェットのタスク・フロー

フィールド 説明

タスク・フロー定義ファイル:

widgetTaskflow.xml

説明:

ウィジェット(キューブに格納されている情報を表示するグラフ)をレンダリングします。このウィジェットは、定義済のウィジェット(「参加者ごとのワークロード」、「プロセスごとのパフォーマンス」など)のいずれか、またはカスタム・ウィジェットです。

引数:

widgetId: レンダリングされるウィジェットのID。

showSelector: ブール値(true/false)。使用可能なすべてのウィジェットをリストするドロップダウンをレンダリングするかどうかを示します。ユーザーがウィジェットを選択したり、あるウィジェットから他のウィジェットに変更できます。

図A-3 「プロセス・パフォーマンス」ダッシュボード

図A-3の説明が続きます
「図A-3 「プロセス・パフォーマンス」ダッシュボード」の説明

アプリケーション・ロールのタスク・フロー

アプリケーション・ロールのタスク・フローには、アプリケーション・コンテキストOracleBPMProcessRolesAppに対してシステムに定義されているアプリケーション・ロールのリストが表示されます。ユーザーは、アプリケーション・ロールを検索し、ロールを選択してメンバー(ユーザー、グループまたはその他のロール)を追加できます。また、ロールに対してビジネス・カレンダと組織単位のマッピングを定義することもできます。

図A-4は、ロールの「詳細」パネルを示しています。

図A-4 ロールの「詳細」パネル

図A-4の説明が続きます
「図A-4 ロールの「詳細」パネル」の説明

組織単位のタスク・フロー

このタスク・フローを使用すると、新しい組織単位の作成または既存の組織単位の編集ができます。

組織単位のタスク・フローの詳細は、プロセス・ワークスペースでの組織の管理 を参照してください。

図A-5に、組織単位の「詳細」パネルを示します。

図A-5 組織単位の「詳細」パネル

図A-5の説明が続きます
「図A-5 組織単位の「詳細」パネル」の説明

パラメータ・ロールのタスク・フロー

パラメータ・ロールのタスク・フローの詳細は、プロセス・ワークスペースでのパラメータ・ロールの管理を参照してください。

ビジネス・カレンダおよび休日リストのタスク・フロー

ビジネス・カレンダおよび休日リストのタスク・フローの詳細は、「プロセス・ワークスペースでのカレンダの管理」および「プロセス・ワークスペースでの休日ルールの管理」を参照してください。

拡張ユーザー・プロパティのタスク・フロー

拡張ユーザー・プロパティのタスク・フローの詳細は、プロセス・ワークスペースでの拡張ユーザー・プロパティの管理を参照してください。

タスク・フロー用の.JARファイル


表A-5 タスク・フロー用のJARファイル

JARファイル 場所

adflibTaskListTaskFlow.jar

$FMW_HOME/Oracle_WC1/soa/modules/oracle.bpm.spaces_11.1.1

oracle.bpm.workspace-adflib.jar

この.jarファイルは、プロセス・スペースのインストールにのみパッケージ化されています。次のライブラリが含まれており、これらをカスタムADFアプリケーションで指定する必要があります。

  • adf.oracle.domain

  • oracle.bpm.runtime

  • oracle.bpm.client

  • oracle.soa.workflow.wc

  • oracle.bpm.webapp.common

  • oracle.bpm.workspace

  • oracle.bpm.projectlib

adflibWorkspaceTaskFlows.jar

$FMW_HOME/AS11gR1SOA/soa/modules/oracle.soa.worklist_11.1.1


サンプル: プロセス・ワークスペースのタスク・フローを使用したADFアプリケーションのカスタマイズ

サンプル1: 埋込みタスクリストのタスク・フローを使用したアプリケーションの作成

このサンプルでは、アプリケーションを作成し、タスクリストのタスク・フローを埋め込む方法について説明します。

次と同じ手順を使用して新しいサンプルを作成します。

アプリケーションにタスクリストのタスク・フローを埋め込む手順は、次のとおりです。

  1. 図A-6に示すように、Oracle JDeveloperで新規Fusion Webアプリケーションを作成し、TaskListTaskFlowSampleという名前を付けます。

    図A-6 新規Oracle Fusion Middlewareアプリケーションの作成

    図A-6の説明が続きます
    「図A-6 新規Oracle Fusion Middlewareアプリケーションの作成」の説明
  2. 図A-7に示されているように、BPMワークリスト・コンポーネント、BPMサービスおよびWSRPコンテナの各ライブラリを組み込みます。

    1. プロジェクトを右クリックして、「プロジェクト・プロパティ」を選択します。

    2. 「プロジェクト・プロパティ」ウィンドウで、「ライブラリとクラスパス」を選択し、「ライブラリの追加」をクリックします。

    3. BPMワークリスト・コンポーネントBPMサービスおよびWSRPコンテナの各ライブラリを追加します。

    図A-7 BPMワークリスト・コンポーネント・ライブラリの追加

    図A-7の説明が続きます
    「図A-7 BPMワークリスト・コンポーネント・ライブラリの追加」の説明
  3. アプリケーションを非SOAサーバーで実行している場合は、Oracle Fusion Middleware Oracle SOA Suite開発者ガイドに記載されている2つの追加手順を実行する必要があります。

    1. oracle.soa.workflow共有ライブラリをインストールします。サーバーにoracle.soa.workflow.wcをインストール済の場合、oracle.soa.workflowをインストールする必要はありません。

      oracle.soa.workflow共有ライブラリのインストールの詳細は、『Oracle Fusion Middleware Oracle SOA Suite開発者ガイド』を参照してください。

    2. 非SOAサーバーで外部JNDIを構成します。

      非SOAサーバーでの外部JNDIの構成の詳細は、Oracle Fusion Middleware Oracle WebLogic ServerのJNDIのプログラミングを参照してください。

  4. 図A-8に示すように、JSPXファイルtestSample.jspxを作成します。

    図A-8 JSPXファイルの作成

    図A-8の説明が続きます
    「図A-8 JSPXファイルの作成」の説明
  5. コンポーネント・パレットから「adflibTaskListTaskFlow.jar」を選択します。

    図A-9に示すように、すべてのタスク・フローのリストが含まれています。

    図A-9 adflibTaskListTaskFlow.jarの選択

    図A-9の説明が続きます
    「図A-9 adflibTaskListTaskFlow.jarの選択」の説明
  6. いずれかのタスク・フローをリージョンとしてJSPXページにドラッグ・アンド・ドロップします。

    図A-10に、例として、TaskListTaskFlowをリージョンとしてJSPXページにドロップした場合を示します。

    図A-10 JSPXテスト・ページにTaskListタスク・フローがあるOracle JDeveloper

    図A-10の説明が続きます
    「図A-10 JSPXテスト・ページにTaskListタスク・フローがあるOracle JDeveloper」の説明

    タスク・フローをJSPXページにドラッグすると、ポップアップに使用可能なパラメータのリストが表示されます。

    「タスク・フロー・バインディングの編集」ダイアログ・ボックスが表示されます。

  7. 図A-11に示すように、「タスク・フロー・バインディングの編集」ダイアログ・ボックスで、タスク・フローのパラメータを渡します。

    図A-11 タスク・フロー・パラメータの受渡し

    図A-11の説明が続きます
    「図A-11 タスク・フロー・パラメータの受渡し」の説明

    testSamplePagedef.xml内に次のエントリを作成します。

    <taskFlow id="taskListtaskflowdefinition1"
    taskFlowId="/WEB-INF/taskList-task-flow-definition.xml#taskList-task-flow-definition"
    xmlns="http://xmlns.oracle.com/adf/controller/binding">
      <parameters>
    
        <parameter id="federatedMode" value="true" xmlns="http://xmlns.oracle.com/adfm/uimodel"/>
    
        <parameter id="showServerColumn" value="true" xmlns="http://xmlns.oracle.com/adfm/uimodel"/>
    
      </parameters>
    </taskFlow>
    

    注意:

    federatedModeの値を必要に応じて設定します。 タスク・フローの使用方法は、federatedModeを参照してください。

  8. WARデプロイメント・プロファイルを開いて編集します。手順は次のとおりです。

    1. 「ViewController」を右クリックします。

    2. 「デプロイメント」を選択します。

    3. 「WARファイル」を選択します。

    4. 「編集」をクリックします。

    5. adflibTaskListTaskFlow.jar」、「adflibWorklistComponents.jar」および「wsrp-container.jar」を選択します。

      図A-12は、編集済のWARデプロイメント・プロファイルを示しています。

    図A-12 WARデプロイメント・プロファイルの編集

    図A-12の説明が続きます
    「図A-12 WARデプロイメント・プロファイルの編集」の説明
  9. ADFセキュリティを使用してアプリケーションを保護します。保護するには、図A-13に示すように、アプリケーション・レベルのメニューから「保護」「ADFセキュリティの構成」の順に移動します。

    図A-13 アプリケーションを保護するための移動

    図A-13の説明が続きます
    「図A-13 アプリケーションを保護するための移動」の説明

    「ADFセキュリティの有効化」ダイアログ・ボックスが表示されます。

  10. 図A-14に示すように、「ADF認証」を選択します。

    「次へ」をクリックします。「認証タイプの選択」ダイアログ・ボックスが表示されます。

    注意:

    ADF認証および認可を選択する場合、次の手順を実行します。

    1. 「アプリケーション・リソース」、「ディスクリプタ」、「META-INFO」フォルダで、jazn-data.xmlを開きます。

    2. 「リソース権限」を選択します。

    3. タスク・フローのタイプを選択します。

    4. 「ADFライブラリからインポートされたタスク・フローを示します」を選択します。

      「リソース」リストにタスク・フローが表示されます。

    5. アプリケーションで使用した適切なタスクフロー(例: taskList-task-flow-definition)を選択します(タスクのドリル機能が動作するには、taskList-task-flow-definition/taskDetail-task-flow-definitionの権限も必要です)。

    6. "表示"権限に選択したロールに付与を追加します。

  11. oracle.soa.worklist.webappおよびoracle.soa.workflow共有ライブラリへの参照をアプリケーションに追加します。

    1. WebContent / WEB-INFフォルダでweblogic.xmlファイルを探します。

      注意:

      weblogic.xmlファイルがない場合は作成します。作成するには、「新規」「ギャラリから」「一般」「デプロイメント・ディスクリプタ」「Weblogicデプロイメント・ディスクリプタ」を選択し、結果の画面でweblogic.xmlを選択します。

    2. 次のエントリをweblogic.xmlに追加します。
      <library-ref>
          <library-name>oracle.soa.worklist.webapp</library-name>
      </library-ref>
      <library-ref>
         <library-name>oracle.soa.workflow</library-name>
      </library-ref>
  12. 図A-15に示すように、「HTTP Basic認証」を選択します。

    図A-15 「HTTP Basic認証」の選択

    図A-15の説明が続きます
    「図A-15 「HTTP Basic認証」の選択」の説明

    Fusion WebアプリケーションでのADFセキュリティの有効化については、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』を参照してください。

  13. 「終了」をクリックします。

    注意:

    タスク・フローをフェデレーテッド・モードで使用している場合は、次の手順を実行します。

    • フェデレーテッド・サーバーのリストをタスク・フローに渡します。詳細は、「federatedServers」を参照してください。

    • フェデレーテッド・サーバー間のグローバル・トラストを有効にします。有効にするのは、すでにフェデレートされたユーザー・トークンがすべてのフェデレーテッド・サーバーに渡されるようにするためです。次の手順を実行します。

      1. Oracle WebLogic Serverコンソールにログインします。

      2. 「ドメイン構造」で、ドメイン名base_domainを選択します。SOA以外のサーバーを使用している場合は、ドメイン名が異なる場合があります。ドメイン名は、構成時に変更できます。

      3. 「セキュリティ」タブを選択します。

      4. 「拡張」リンク(下部の「保存」ボタンの近くにあります)をクリックします。

      5. 「資格証明」フィールドにパスワードを指定します。(すべてのフェデレーテッド・サーバーに対して同じパスワードを指定する必要があります)

      6. 「保存」をクリックします。

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

  14. EARデプロイメント・プロファイルを作成し、EARを作成してデプロイします。

    EARをデプロイする手順は次のとおりです。

    1. 図A-16に示すように、アプリケーション・レベルのメニューから、「デプロイ」「TaskListTaskFlowSample_Appl...」の順に移動します。

      図A-16 アプリケーションのデプロイ

      図A-16の説明が続きます
      「図A-16 アプリケーションのデプロイ」の説明

      「デプロイメント・アクション」ダイアログ・ボックスが表示されます。

    2. 図A-17に示すように、「アプリケーション・サーバーへのデプロイ」を選択します。

      図A-17 アプリケーション・サーバーへのデプロイ

      図A-17の説明が続きます
      「図A-17 アプリケーション・サーバーへのデプロイ」の説明

      「次へ」をクリックします。「サーバーの選択」ダイアログ・ボックスが表示されます。

  15. サーバーを選択します。「ドメイン内の全サーバー・インスタンスへのデプロイ」チェック・ボックスの選択を解除します。「次へ」をクリックします。

    「サーバー・インスタンス」ダイアログ・ボックスが表示されます。

  16. サーバー・インスタンスを選択し、「終了」をクリックします。

  17. serverおよびportに適切な値を指定して、次のリンクにアクセスします。http://server:port/TaskListTaskFlowSample-ViewController-context-root/faces/testSample.jspx

    ログイン・ポップアップ・ウィンドウが表示されます。任意のユーザーでログインします。図A-18に示すように、ログインしたユーザー用のタスク・リストが表示されます。

    タスク・フローをフェデレーテッド・モードで使用している場合は、「表示」リストにサーバーのリストが表示されます。リストから任意の組合せのサーバーを選択すると、タスク・リストがリフレッシュされ、選択したサーバーに属しているすべてのタスクが表示されます。パラメータshowServerColumnをtrueに設定して渡した場合は、タスク・リストにサーバー列が表示され、タスクが属しているサーバーが示されます。

    図A-18 プロセス・ワークスペースのタスク・リスト

    図A-18の説明が続きます
    「図A-18 プロセス・ワークスペースのタスク・リスト」の説明

    いずれかのタスク・タイトルのリンクをクリックすると、新しいブラウザ・ウィンドウにタスクの詳細が表示されます。

アプリケーションがtaskList-task-flow-definition.xml (前述の手順でページにドロップしたタスクリスト)に対して認可されている場合、タスクの詳細への移動機能を使用するには、関連するセキュリティ権限が付与されている必要があります。

wlst.shを使用してCommonドメインに接続し、次のWLSTコマンドを実行して、/WEB-INF/taskDetail-task-flow-definition.xml#taskDetail-task-flow-definitionのタスク・フロー表示権限を認証ロールに付与します。

grantPermission(appStripe="YOUR_APP_STRIPE_NAME",
principalClass="oracle.security.jps.internal.core.principals.JpsAuthenticatedRoleImpl",
principalName="authenticated-role",
 permClass="oracle.adf.controller.security.TaskFlowPermission", 
permTarget="/WEB-INF/taskDetail-task-flow-definition.xml#taskDetail-task-flow-definition", 
permActions="view")

サンプル2: タスク・フローを使用したADFページの作成

このサンプルでは、ADFページを作成し、3つのタスク・フローを追加する方法について説明します。

このページは2つの部分に分かれています。左側からタスク・フローを選択すると、対応するタスク・フローが右側に表示されます。

タスク・フローを使用してADFページを作成する手順は、次のとおりです。

  1. サンプル1: 埋込みタスクリストのタスク・フローを使用したアプリケーションの作成の手順1から4を実行します。

  2. JSPXページを次のように構成します。

    1. コンポーネント・パレットで、「ADF Faces」を選択します。

    2. 「パネル・ストレッチ・レイアウト」をJSPXページにドラッグ・アンド・ドロップします。

    3. JSPXページから「上」、「開始」、「下」および「終了」を削除します。

      JSPXページは、図A-19のように表示されます。

    図A-19 JSPXページの構成

    図A-19の説明が続きます
    「図A-19 JSPXページの構成」の説明
  3. コンポーネント・パレットからJSPXページに「パネル・スプリッタ」をドラッグ・アンド・ドロップします。

    JSPXページは、図A-20のように表示されます。

    図A-20 JSPXページの分割パネル

    図A-20の説明が続きます
    「図A-20 JSPXページの分割パネル」の説明
  4. ナビゲータで、ビュー・コントローラを右クリックして新規のJavaクラスを作成します。それにSampleController.javaという名前を付けます。

    図A-21に示すように、getterおよびsetterを使用してprivate transient UIComponent rightPanel = null;を追加します。

    図A-21 SampleController.javaの作成

    図A-21の説明が続きます
    「図A-21 SampleController.javaの作成」の説明
  5. ナビゲータで、「Faces-config.xml」ファイルを選択します。図A-22に示すように、マネージドBeanを指定し、sampleControllerBeanという名前を付けます。

    図A-22 マネージドBeanの指定

    図A-22の説明が続きます
    「図A-22 マネージドBeanの指定」の説明
  6. 「パネル・ストレッチ・レイアウト」をsecondファセットにドラッグ・アンド・ドロップします。

    そこから「上」、「開始」、「下」および「終了」を削除します。プロパティ・インスペクタからPanelStrechLayout用のバインディングを#{sampleControllerBean.rightPanel}として指定します。

  7. コンポーネント・パレットからJSPXページにリンクをドラッグ・アンド・ドロップします。

    プロパティ・インスペクタで、テキストに「Rules」を指定します。SampleController Javaファイルに、次のコードを追加します。

    private String selectedLink = "RULES"; with getter and setters
    public void displayRules(ActionEvent event){
      setSelectedLink("RULES");
      if(getRightPanel()!= null){
        RequestContext.getCurrentInstance().addPartialTarget(getRightPanel());
      }
    }
    

    ルールの「アクション・リスナー」プロパティを次のように追加します。

    #{sampleControllerBean.displayRules}
    
  8. コンポーネント・パレットからJSPXページにリンクをドラッグ・アンド・ドロップします。

    プロパティ・インスペクタで、テキストに「Certificates」を指定します。SampleController Javaファイルに、次のコードを追加します。

    public void displayCertificates(ActionEvent event){
      setSelectedLink("CERTIFICATES");
      if(getRightPanel() != null){
        RequestContext.getCurrentInstance().addPartialTarget(getRightPanel());
      }
    }
    

    証明書の「アクション・リスナー」プロパティを次のように追加します。

    #{sampleControllerBean.displayCertificates}

  9. コンポーネント・パレットからJSPXページにリンクをドラッグ・アンド・ドロップします。

    プロパティ・インスペクタで、テキストに「Reports」を指定します。SampleController Javaファイルに、次のコードを追加します。

    public void displayReports(ActionEvent event){
      setSelectedLink("REPORTS");
      if(getRightPanel() != null){
        RequestContext.getCurrentInstance().addPartialTarget(getRightPanel());
      }
    }
    

    レポートの「アクション・リスナー」プロパティを次のように追加します。

    #{sampleControllerBean. displayReports}
    
  10. 図A-23に示すように、コンポーネント・パレットからsecondファセットのcenterファセットにスイッチャをドラッグ・アンド・ドロップします。

    プロパティ・インスペクタで、ファセット名として#{sessionScope.sampleControllerBean.selectedLink}"、デフォルト・ファセットとしてRULESを指定します。

    図A-23 スイッチャの追加および指定

    図A-23の説明が続きます
    「図A-23 スイッチャの追加および指定」の説明
  11. af:switcher内で、f:facet name="RULES"という名前のファセットを定義します。

    このファセット内に、コンポーネント・パレットから(adflibTaskListTaskFlow.jar内の)「Rules-Task-Flow-Definition」をドラッグ・アンド・ドロップします。

  12. af:switcher内で、f:facet name="CERTIFICATES"という名前の別のファセットを定義します。

    このファセット内に、コンポーネント・パレットから(adflibTaskListTaskFlow.jar内の)「Certificates-Task-Flow-Definition」をドラッグ・アンド・ドロップします。

  13. af:switcher内で、f:facet name="REPORTS"という名前の別のファセットを定義します。

    このファセット内に、コンポーネント・パレットから(adflibTaskListTaskFlow.jar内の)「Reports-Task-Flow-Definition」をドラッグ・アンド・ドロップします。

  14. 作業を保存します。

  15. サンプル1: 埋込みタスクリストのタスク・フローを使用したアプリケーションの作成GUID-8C39A546-EE86-4C9F-A250-FF70727F4839.htm#GUID-4276D322-A3AB-41E6-BE2D-C0D19171CB03__BACJAGFFから17の手順に従います。

サンプル: Wf_client_config.xmlファイル

この項では、クライアント構成ファイルWf_client_config.xmlの例を示します。

フェデレーテッド・サーバー・リストにサーバーを含めない場合は、<server>要素にexcludeFromFederatedList="true"を指定します。

XMLの<server>要素にクライアント・タイプを明示的に指定する必要があります。

  • リモート・クライアントを使用している場合は、clientType="REMOTE"と入力します。

  • SOAPクライアントを使用している場合は、clientType="SOAP"と入力します。

例A-1では、REMOTEクライアント・タイプを使用しています。

例A-1 Wf_client_config.xml

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<workflowServicesClientConfiguration
xmlns="http://xmlns.oracle.com/bpel/services/client">
<server name="default" default="true" excludeFromFederatedList="true" clientType="REMOTE">
  <localClient>
    <participateInClientTransaction>false</participateInClientTransaction>
  </localClient>
  <remoteClient>
    <serverURL>t3://sta00048.ex.example.com:7001</serverURL>
    <initialContextFactory>weblogic.jndi.WLInitialContextFactory</initialContextFactory>
    <participateInClientTransaction>false</participateInClientTransaction>
  </remoteClient>
  <soapClient>
    <rootEndPointURL>http://sta00048.ex.example.com:7001</rootEndPointURL>
      <identityPropagation mode="dynamic" type="saml">
        <policy-references>
          <policy-reference enabled="true" category="security"
            uri="oracle/wss10_saml_token_client_policy"/>
        </policy-references>
      </identityPropagation>
    </soapClient>
  </server>
<server name="ERP" clientType="REMOTE">
  <soapClient>
    <rootEndPointURL>http://sta00147.ex.example.com:7001</rootEndPointURL>
      <identityPropagation mode="dynamic" type="saml">
        <policy-references>
          <policy-reference enabled="true" category="security"
          uri="oracle/wss10_saml_token_client_policy"/>
        </policy-references>
      </identityPropagation>
    </soapClient>
  <remoteClient>
    <serverURL>t3://sta00147.ex.example.com:7001</serverURL>
    <initialContextFactory>weblogic.jndi.WLInitialContextFactory</initialContextFactory>
    <participateInClientTransaction>false</participateInClientTransaction>
  </remoteClient>
</server>
<server name="CRM" clientType="REMOTE">
  <soapClient>
    <rootEndPointURL>http://sta00048.ex.example.com:7001</rootEndPointURL>
    <identityPropagation mode="dynamic" type="saml">
      <policy-references>
        <policy-reference enabled="true" category="security"
        uri="oracle/wss10_saml_token_client_policy"/>
      </policy-references>
    </identityPropagation>
  </soapClient>
  <remoteClient>
    <serverURL>t3://sta00048.ex.example.com:7001</serverURL>
    <initialContextFactory>weblogic.jndi.WLInitialContextFactory</initialContextFactory>
    <participateInClientTransaction>false</participateInClientTransaction>
  </remoteClient>
</server>
</workflowServicesClientConfiguration>

サンプル: WorkflowServicesClientConfigurationTypeオブジェクトを返すBean

この項では、WorkflowServicesClientConfigurationTypeオブジェクトを戻すメソッドを使用するサンプルBeanを示します。

注意:

JAXBオブジェクトの作成時に、クライアント・タイプを明示的に設定する必要があります。次に例を示します。

ServerType server1 = new ServerType();
server1.setClientType("REMOTE"); // If REMOTE client is to be used.

または

server1.setClientType("SOAP"); // If SOAP client is to be used.

クライアント・タイプを指定しないと、デフォルトのSOAPになります。

package view;

import java.util.List;

import oracle.bpel.services.workflow.client.config.IdentityPropagationType;
import oracle.bpel.services.workflow.client.config.PolicyReferenceType;
import oracle.bpel.services.workflow.client.config.PolicyReferencesType;
import oracle.bpel.services.workflow.client.config.RemoteClientType;
import oracle.bpel.services.workflow.client.config.ServerType;
import oracle.bpel.services.workflow.client.config.SoapClientType;
import oracle.bpel.services.workflow.client.config.WorkflowServicesClientConfigurationType;
import weblogic.nodemanager.common.ServerType;

public class WorklistBackingBean {
  WorkflowServicesClientConfigurationType wscct = null;

  public WorklistBackingBean() {
    super();
  }

  public WorkflowServicesClientConfigurationType getWSCC() {
    if (wscct == null) {
      wscct = new WorkflowServicesClientConfigurationType();
      List<ServerType> servers = wscct.getServer();
      /**** Setting default server in the list ****/
      ServerType defaultServer = new ServerType();
      defaultServer.setClientType("SOAP");
      servers.add(defaultServer);
      defaultServer.setDefault(true);
      //If this is true, the server is excluded from federated server list
      //By defalut it is false
      //defalutServer.setExcludeFromFederatedList(true);
      defaultServer.setName("default");
      RemoteClientType rct = new RemoteClientType();
      rct.setServerURL("t3://defaultHost:port");
      rct.setInitialContextFactory("weblogic.jndi.WLInitialContextFactory");
      rct.setParticipateInClientTransaction(false);
      defaultServer.setRemoteClient(rct);
      SoapClientType sct = new SoapClientType();
      PolicyReferencesType prts = new PolicyReferencesType();
      PolicyReferenceType prt = new PolicyReferenceType();
      prt.setEnabled(true);
      prt.setCategory("security");
      prt.setUri("oracle/wss10_saml_token_client_policy");
      prts.getPolicyReference().add(prt);
      IdentityPropagationType ipt = new IdentityPropagationType();
      ipt.setMode("dynamic");
      ipt.setType("saml");
      ipt.setPolicyReferences(prts);
      sct.setRootEndPointURL("http://defaultHost:port");
      sct.setIdentityPropagation(ipt);
      defaultServer.setSoapClient(sct);
      /****** Setting Federated Server 1 to the list ****/
      ServerType server1 = new ServerType();
      server1.setClientType("SOAP");
      servers.add(server1);
      server1.setName("Human Resource");
      RemoteClientType rct1 = new RemoteClientType();
      rct1.setServerURL("t3://HumanResourcesHost:port");
      rct1.setInitialContextFactory("weblogic.jndi.WLInitialContextFactory");
      rct1.setParticipateInClientTransaction(false);
      server1.setRemoteClient(rct1);
      SoapClientType sct1 = new SoapClientType();
      PolicyReferencesType prts1 = new PolicyReferencesType();
      PolicyReferenceType prt1 = new PolicyReferenceType();
      prt1.setEnabled(true);
      prt1.setCategory("security");
      prt1.setUri("oracle/wss10_saml_token_client_policy");
      prts1.getPolicyReference().add(prt1);
      IdentityPropagationType ipt1 = new IdentityPropagationType();
      ipt1.setMode("dynamic");
      ipt1.setType("saml");
      ipt1.setPolicyReferences(prts1);
      sct1.setRootEndPointURL("http://HumanResourcesHost:port");
      sct1.setIdentityPropagation(ipt1);
      server1.setSoapClient(sct1);
    }
    return wscct;
  }
}