プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle Business Process Management Studioでのビジネス・プロセスの開発
12c (12.2.1.2.0)
E82789-01
目次へ移動
目次

前
次

31 ガイド付きビジネス・プロセスのクライアント・アプリケーションの構築

この章では、ガイド付きビジネス・プロセスの作成時に定義したマイルストンを使用して、プロセス・インスタンスを表示するクライアント・アプリケーションの構築方法について説明します。

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

31.1 ガイド付きビジネス・プロセスのクライアント・アプリケーションの構築の概要

ガイド付きビジネス・プロセスは、ガイド付きビジネス・プロセスを表示および実行するADFアプリケーションの構築に使用できる事前定義済ADFタスクフローを提供します。

提供されたADFタスクフローが要件を満たさない場合、UIクライアント・アプリケーションが表示する情報を取得するために、ガイド付きビジネス・プロセスが提供する一連のAPIを使用できます。これらのAPIを使用すると、WebサービスおよびEnterprise Java Beansを使用して、マイルストンおよびタスクに関するデータを取得できます。

31.2 Oracle ADFを使用したガイド付きビジネス・プロセスのクライアント・アプリケーションの開発

ガイド付きビジネス・プロセスのクライアント・アプリケーションは、ガイド付きビジネス・プロセスのタスク・フローのユーザー・インタフェースを提供します。任意の構成で、シンプルなADF JSPXページに、クライアント・アプリケーションを開発できます。

通常、クライアント・アプリケーションには、アクティビティ・ガイド・ツリーを表示するリージョンと、ツリーから選択された特定のノードの詳細を表示する別のリージョンが含まれます。これらの2つのリージョンを表示する方法として、JSPXページの左側に動的なリージョン、右側にヒューマン・タスク・フローを配置します。ただし、構成することはできます。

31.2.1 ガイド付きビジネス・プロセスのクライアント・アプリケーションを開発する方法

ガイド付きビジネス・プロセスのクライアント・アプリケーションを開発するには:

  1. JDeveloperで新しいアプリケーションを作成します。
  2. ViewControllerプロジェクトを右クリックし、「プロジェクト・プロパティ」を選択します。
  3. ライブラリとクラスパス」を選択します。
  4. 「JAR/ディレクトリの追加」をクリックします。

    ファイル・ブラウザ・ダイアログ・ボックスが開きます。

  5. <JDEV_HOME>/jdeveloper/soa/modulesの下にあるoracle.bpm.activityguide-ui.jarを選択します。
  6. 「選択」をクリックします。
  7. 次のコードを追加して、weblogic-application.xmlファイルにランタイム共有ライブラリoracle.soa.bpelとoracle.soa.workflow.wcの参照を追加します。
    <library-ref>  
      <library-name>oracle.soa.bpel</library-name></library-ref><library-ref>  
      <library-name>oracle.soa.workflow.wc</library-name>
    </library-ref>
    
  8. アクティビティ・ガイドを表示する新規JSFページ(.jspx)を作成します。
  9. 次のタスク・フローをJSFページ(.jspx)にドラッグ・アンド・ドロップします。
    • ag-tasktree-task-flow: アクティビティ・ガイド・ツリーを表示する場合

    • ag-humantask-task-flow: 個々のアクティビティ・ガイド・ノードを表示する場合

    注意:

    タスク・フローをドラッグ・アンド・ドロップすると、そのタスク・フローのリージョンが自動的に作成されます。

  10. アクティビティ・ガイド・プロパティを使用してファイルを作成します。

    注意:

    通常は、このファイルにactivityguide.propertiesという名前を付けます。別の名前を選択する場合は、パラメータAGPropsBeanNameを使用してag-tasktree-task-flowにその値を指定する必要があります。

    アクティビティ・ガイド・プロパティの詳細は、「アクティビティ・ガイド・プロパティの構成」を参照してください。

    アイデンティティ伝播を使用してアクティビティ・ガイドを保護する場合、WorkflowAdminUserプロパティおよびWorkflowAdminPasswordプロパティは必要ありません。

  11. サマリー情報を持つタスク・フローのポップアップを有効にするには、アクティビティ・ガイド・プロパティ・ファイルに次のプロパティを指定します。

    AGTasksPopupTaskFlowID: このパラメータを使用して、ADF動的リージョンにタスク・フロー・サマリーを表示します。関連するタスク・フローIDを入力します。

    このパラメータを設定しない場合、OutputTextの値が、デフォルトのタスク・サマリーとして、ポップアップに表示されます。

    無効なタスク・フローのリージョンIDを指定した場合、ガイド付きビジネス・プロセスでは、リージョンがレンダリングされず、サーバー・ログにメッセージが記録されます。

  12. 次のいずれかの方法を使用して、アクティビティ・ガイド・ツリーにリフレッシュ・ボタンを表示するように、アクティビティ・ガイドを構成します。
    • アクティビティ・ガイド・プロパティ・ファイルで、パラメータShowRefreshButtonを追加します。この値をtrueに設定すると、リフレッシュ・ボタンの表示が有効になり、falseまたはその他の値にすると、リフレッシュ・ボタンが無効になります。

    • アクティビティ・ガイド・ツリーのタスク・フローで、パラメータShowRefreshButtonを追加し、その値をtrueに設定します。このタスク・フロー・パラメータは、アクティビティ・ガイド・プロパティ・ファイルに設定されたパラメータの値をオーバーライドします。

      ShowRefreshButtonパラメータの値がemptyまたはnullの場合、ファイルactivityguide.propertiesのプロパティShowRefreshButtonでは、リフレッシュ・ボタンを表示するかどうかを定義します。activityguide.propertiesファイルにこのプロパティの値を指定しない場合、リフレッシュ・ボタンはクライアントに表示されません。

      例31-1は、ツリー・タスク・フローへのShowRefreshButtonパラメータの追加を示しています。

  13. activity.propertiesファイルの場所を含めるように、ファイルadfc-config.xmlを編集します。これは、activityguide.propertiesファイルへの絶対パスである必要があります。

    adfc-config.xmlの例を例31-2に示します。

  14. ワークフロー・サービス・クライアント構成ファイルを作成します。例を例31-3に示します。

例31-1 ツリー・タスク・フローへのShowRefreshButtonパラメータの追加

<taskFlow id="dynamicRegion1"
              taskFlowId="${backingBeanScope.dynamicLeft.dynamicTaskFlowId}"
              xmlns="http://xmlns.oracle.com/adf/controller/binding" >            
   <parameters>
      <parameter id="ShowRefreshButton" value="true"
                   xmlns="http://xmlns.oracle.com/adfm/uimodel"/>
   </parameters>
</taskFlow> 

例31-2 activityguide.propertiesファイルへの参照を使用したadfc-config.xmlファイル

<managed-bean id="__10">
   <managed-bean-name id="__12">agProps</managed-bean-name>
   <managed-bean-class id="__11">oracle.bpel.activityguide.ui.beans.model.AGProperties</managed-bean-class>
   <managed-bean-scope id="__9">session</managed-bean-scope>
   <managed-property id="__15">
    <property-name>agPropsFilePath</property-name>
    <property-class>java.lang.String</property-class>
    <value id="__14"><!-- relative path or absolute path should be given here-->/activityguide.properties</value>
  </managed-property>
 </managed-bean>

例31-3 ワークフロー・サービス・クライアント構成ファイル

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<workflowServicesClientConfiguration xmlns="http://xmlns.oracle.com/bpel/services/client">
   <server default="true" name="default">
      <localClient>
         <participateInClientTransaction>false</participateInClientTransaction>
      </localClient>
      <remoteClient>
         <serverURL>t3://host:port</serverURL>
         <initialContextFactory>weblogic.jndi.WLInitialContextFactory</initialContextFactory>
         <participateInClientTransaction>false</participateInClientTransaction>
      </remoteClient>
      <soapClient>
         <rootEndPointURL>http://host:port</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>

31.2.2 Oracle ADFを使用したガイド付きビジネス・プロセスのアプリケーションの開発時に行われる処理

ADF Webプロジェクトを使用したJDeveloperアプリケーションが作成されます。アプリケーションには次のものが含まれます。

  • 1つがアクティビティ・ガイド・ツリー用、もう1つがアクティビティ・ガイド・ノード詳細用の、2つのリージョンを持つJSFページ。

  • activityguide.propertiesファイル。

31.2.3 ランタイムで行われる処理: Oracle ADFを使用してガイド付きビジネス・プロセスのアプリケーションを開発する方法

ランタイムに、Oracle ADFアプリケーションでは、デザインタイムに開発されたガイド付きビジネス・プロセスが表示されます。共通のADFレイヤーのコンテキスト・イベント・メカニズムによって、対応するアクティビティ・ガイド・ツリーとアクティビティ・ガイド・ノード詳細の間の通信を処理します。

ガイド付きビジネス・プロセス・インスタンスを選択すると、アクティビティ・ガイド・ツリーにそのガイド付きビジネス・プロセス・インスタンスのアクティビティ・ガイド、マイルストンおよびタスクの情報が表示されます。

または、JSFページのactivityguide.propertiesファイルのAGInstanceIDプロパティを構成して、特定のガイド付きビジネス・プロセス・インスタンスの次の情報をレンダリングすることができます。

  • アクティビティ・ガイド

  • マイルストン

  • タスク

アクティビティ・ガイド・ツリーのマイルストン・ノードを選択すると、そのマイルストンの下のサブツリーが取得またはリフレッシュされます。

アクティビティ・ガイド・ツリーのタスク・ノードを選択すると、そのタスクの詳細タスク情報が表示されます。

31.3 ガイド付きビジネス・プロセスのクライアント・アプリケーションの保護

ガイド付きビジネス・プロセスのクライアント・アプリケーションを保護するには、適切な資格証明を持つユーザーのみが、ガイド付きビジネス・プロセスで説明されたタスクを完了できることを確認します。

セキュリティ機能には、認証、認可およびポリシー施行があります。

31.4 ガイド付きビジネス・プロセス・クライアント・アプリケーションのローカライズ

ガイド付きビジネス・プロセス・クライアント・アプリケーションをローカライズすると、定義したすべてのサポート言語でこのクライアントを実行できます。

ガイド付きビジネス・プロセス・アプリケーションをローカライズする場合は、ガイド付きビジネス・プロセスの設計時に次のコンポーネントをローカライズする必要があります。

  • AGのタイトル

  • AGの説明

  • マイルストンのタイトル

  • マイルストンの説明

  • ブロックされたタスクの説明テキスト

ガイド付きビジネス・プロセスは、ユーザー・インタフェースの一部である文字列(表示タイトル、説明など)を自動的に翻訳します。ガイド付きビジネス・プロセスは、次のロケールをサポートします。

  • フランス語

  • ドイツ語

  • イタリア語

  • スペイン語

  • ブラジル語

  • 日本語

  • 韓国語

  • 簡体字中国語

  • 繁体字中国語

  • アラビア語

  • チェコ語

  • デンマーク語

  • オランダ語

  • フィンランド語

  • ギリシャ語

  • ヘブライ語

  • ハンガリー語

  • ノルウェー語

  • ポーランド語

  • ポルトガル語

  • ルーマニア語

  • ロシア語

  • スロバキア語

  • スウェーデン語

  • タイ語

  • トルコ語

ガイド付きビジネス・プロセスのローカライズ方法の詳細は、「ガイド付きビジネス・プロセス・クライアント・アプリケーションでサポートされるロケールの構成方法」を参照してください。

31.4.1 ガイド付きビジネス・プロセス・クライアント・アプリケーションでサポートされるロケールの構成方法

ガイド付きビジネス・プロセス・アプリケーションで他のロケールをサポートするように構成するには、ガイド付きビジネス・プロセスの開発時に、そのロケールに必要なバンドルが提供されていることを確認します。

ガイド付きビジネス・プロセス・クライアント・アプリケーションでサポートされるロケールを構成するには:

  1. Oracle JDeveloperでクライアント・アプリケーションを開きます。
  2. jspxクライアント・ページを開きます。
  3. 「リンク元ビュー」を選択し、次のコードを使用してロケールを変更します。

    <f:view locale= #{view.locale}>

  4. Project_Root /public_html/WEB-INFの下にあるfaces-config.xmlファイルを編集します。
  5. エディタ・ウィンドウで「概要」タブをクリックします。
  6. エディタ・ウィンドウ内で「アプリケーション」を選択します。
  7. 「ロケール構成」領域で、「新規」をクリックして、サポートされるロケールを追加するプロパティ・インスペクタを開きます。
  8. サポートされるロケールを追加します。

    例31-4は、サポートされる一連のロケールを追加した後のfaces-config.xmlファイルを示しています。

  9. ブラウザのロケールを、サポートされるロケールに設定します。
  10. クライアント・ページを実行します。

例31-4 faces-config.xmlファイル

<locale-config>
  <default-locale>en</default-locale>
  <supported-locale>ar</supported-locale>
  <supported-locale>ca</supported-locale>
  <supported-locale>cs</supported-locale>
  <supported-locale>da</supported-locale>
  <supported-locale>de</supported-locale>
  <supported-locale>zh_CN</supported-locale>
</locale-config>

31.5 ガイド付きビジネス・プロセスのランタイムAPI

ガイド付きビジネス・プロセスでは、使用可能なマイルストンおよびマイルストンを構成するタスクに関する詳細を取得できる一連のAPIが提供されます。

事前定義されたアクティビティ・ガイドADFタスクフローが要件を満たさない場合、これらのAPIを使用して、クライアント・アプリケーションに表示する情報を取得できます。

31.5.1 ガイド付きビジネス・プロセス問合せサービスAPI

このAPIは、ガイド付きビジネス・プロセスを表示するアプリケーションの次のユーザー・ナビゲーション・シナリオをサポートするように設計されます。

フィルタを使用して、ガイド付きビジネス・プロセス・インスタンスのリストを表示します。使用可能なフィルタは次のとおりです。

  • MY: ユーザーに割り当てられたアクティブなタスクを含むガイド付きビジネス・プロセス・インスタンス。

  • REPORTEES: 現在のユーザーへの報告先に割り当てられたアクティブなタスクを含むガイド付きビジネス・プロセス・インスタンス。

  • PREVIOUS: ユーザーに割り当てられた完了済タスクを含むガイド付きビジネス・プロセス・インスタンス、および、特定のタスクを別のユーザーに再割当てするインスタンス。

  • ADMIN: ガイド付きビジネス・プロセス管理者に表示されるガイド付きビジネス・プロセス・インスタンス。アクティブなインスタンスは、すべてのユーザーに割り当てることができます。

注意:

BPMAGAdminロールは、管理者ロールが割り当てられたユーザーにマップされます。このロールによって、ユーザーは、完了済インスタンス、アクティブなインスタンスおよびエラーのあるインスタンスなど、サーバーで使用可能なすべてのガイド付きビジネス・プロセス・インスタンスを問合せできます。$DOMAIN_HOME/config/fmwconfig/system-jazn-data.xmlにある構成ファイルには、このロールの定義が含まれています。

注意:

ガイド付きビジネス・プロセスAPIを使用すると、タスクIDを指定して、詳細タスク情報を取得できますが、タスク情報は取得されません。これを行うには、ワークフロー・サービスAPIなど、別のAPIが必要です。

ワークフロー・サービスの詳細は、Oracle SOA SuiteでのSOAアプリケーションの開発のヒューマン・ワークフロー・サービスの概要に関する項を参照してください。

表31-1 ガイド付きビジネス・プロセス問合せサービスAPI

メソッド 説明

List queryAGDisplayInfos(String bpmProcessType,IWorkflowContext ctx,List agDisplayColumns,AGAssignmentFilter agAssignmentFilter,Predicate predicate,Ordering ordering,int startRow,int endRow)

displayColumnsに定義したフィールドで、assignmentFilterおよびpredicateで定義した基準を満たし、orderで指定した順序で、startRowendRowの間の行番号の、AGDisplayInfoオブジェクトのリストを戻します。

AGDisplayInfoオブジェクトには、関与するガイド付きビジネス・プロセス・インスタンスのメタデータとランタイム・データの両方が含まれ、プロセス・ワークスペースまたはカスタム・アプリケーションで、ガイド付きビジネス・プロセス・インスタンス・ビューのレンダリングに使用できます。

文字列パラメータbpmProcessTypeには、次の値を割り当てることができます。

  • IAGQueryService.AG_PROCESS_TYPE_BPM

  • IAGQueryService.AG_PROCESS_TYPE_BPEL

  • IAGQueryService.AG_PROCESS_TYPE_ANY

マイルストンおよびタスクはアクティビティ・ガイド・インスタンス・ビューに表示されないので、不要なパフォーマンスのオーバーヘッドを避けるために、MILESTONE_STATE列をdisplayColumnsに含めないことをお薦めします。

AGDisplayInfo getAGDisplayInfoDetailsById(String bpmProcessType,IWorkflowContext ctx,long ciKey,List taskDisplayColumns,String agAssignmentFilter)

アクティビティ・ガイド・インスタンスIDによって指定されたAGDisplayInfoオブジェクトを戻します。

戻されたAGDisplayInfoオブジェクトには、マイルストンおよびタスクの両方の情報が含まれ、カスタム・アプリケーションでアクティビティ・ガイド・ツリー構造をレンダリングするのに使用できます。

文字列パラメータbpmProcessTypeには、次の値を割り当てることができます。

  • IAGQueryService.AG_PROCESS_TYPE_BPM

  • IAGQueryService.AG_PROCESS_TYPE_BPEL

  • IAGQueryService.AG_PROCESS_TYPE_ANY

文字列パラメータagAssignmentFilterを使用すると、このメソッドのフィルタを指定できます。次のIAGQueryServiceパラメータを、このパラメータの値として使用できます。

  • IAGQueryService.AGASSIGNMENT_FILTER_MY

  • IAGQueryService.AGASSIGNMENT_FILTER_REPORTEES

  • IAGQueryService.AGASSIGNMENT_FILTER_PREVIOUS

  • IAGQueryService.AGASSIGNMENT_FILTER_ADMIN

MilestoneDisplayInfo getMilestoneDisplayInfo(String bpmProcessType,IWorkflowContext ctx,long cikey,String milestoneName,List taskDisplayColumns,String agAssignmentFilter)

アクティビティ・ガイド・インスタンス内のマイルストンの表示情報を戻します。

戻されたMilestoneDisplayInfoオブジェクトには、指定したマイルストンおよびマイルストン内のタスクのメタデータおよびランタイム・データが含まれます。これらを使用して、エンド・ユーザーがマイルストンをクリックしたときに、カスタム・アプリケーションのマイルストン・サブツリーをリフレッシュできます。

文字列パラメータbpmProcessTypeには、次の値を割り当てることができます。

  • IAGQueryService.AG_PROCESS_TYPE_BPM

  • IAGQueryService.AG_PROCESS_TYPE_BPEL

  • IAGQueryService.AG_PROCESS_TYPE_ANY

文字列パラメータagAssignmentFilterを使用すると、このメソッドのフィルタを指定できます。次のIAGQueryServiceパラメータを、このパラメータの値として使用できます。

  • IAGQueryService.AGASSIGNMENT_FILTER_MY

  • IAGQueryService.AGASSIGNMENT_FILTER_REPORTEES

  • IAGQueryService.AGASSIGNMENT_FILTER_PREVIOUS

  • IAGQueryService.AGASSIGNMENT_FILTER_ADMIN

31.5.2 ガイド付きビジネス・プロセスEnterprise Java BeansのJNDI名

次の表は、ガイド付きビジネス・プロセスEnterprise Java BeansのJNDI名を説明しています。

サービス名 Enterprise JavaBeansのJNDI名

アクティビティ・ガイド・メタデータ・ストア

ejb/bpel/services/workflow/AGMetadataService

アクティビティ・ガイド問合せサービス

ejb/bpel/services/workflow/AGQueryService

31.6 ガイド付きビジネス・プロセスのランタイム・サービスを使用したガイド付きビジネス・プロセスのタスクのユーザー・インタフェースの例の開発

APIによって、カスタム・アプリケーション内からガイド付きビジネス・プロセス問合せおよびメタデータ・サービスにアクセスできます。

次の例は、ガイド付きビジネス・プロセスのランタイム・サービスにアクセスするためのJava APIの使用を示しています。

例31-5 EJBを使用したガイド付きビジネス・プロセスのランタイム・サービスへのアクセス

package client;
import com.oracle.bpel.activityguide.metadata.definition.model.AGDefinition;
import java.util.ArrayList;
import java.util.List;
import oracle.bpel.services.workflow.IWorkflowConstants;
import oracle.bpel.services.workflow.task.model.Task;
import oracle.bpel.services.workflow.verification.IWorkflowContext;
import oracle.bpel.services.workflow.client.IWorkflowServiceClient;
import oracle.bpel.services.workflow.client.IWorkflowServiceClientConstants;
import oracle.bpel.services.workflow.client.WorkflowServiceClientFactory;
import oracle.bpel.services.workflow.query.ITaskQueryService;
import oracle.bpel.services.workflow.query.impl.TaskQueryService;
import oracle.bpel.services.workflow.client.WorkflowServiceClientContext;
import oracle.bpel.services.workflow.metadata.config.ResourceBundleInfo;
import oracle.bpel.services.workflow.activityguide.query.IAGQueryService;
import oracle.bpel.services.workflow.activityguide.query.impl.AGQueryService;
import oracle.bpel.services.workflow.activityguide.query.model.AGDisplayInfo;
import oracle.bpel.services.workflow.activityguide.query.model.MilestoneDisplayInfo;
import oracle.bpel.services.workflow.activityguide.metadata.IAGMetadataService;
import oracle.bpel.services.workflow.activityguide.metadata.impl.AGMetadataService;
import sun.security.util.Password;
public class AGServiceSampleCode {
 
    private static String USERNAME = "jcooper";
    private static String PASSWORD = "welcome1";
    private static IWorkflowServiceClient wfSvcClient;
    private static IWorkflowContext sJCooperCtx;
 
    public static void main(String[] args) 
    {
        try {
 
	    testSetUp();
	   
	    // GetAGDefinition API requires an AG instance as input, which is not easily accessible in customer's env.
	    // As a result, the sample code for invoking this API is not provided.
	    //testGetAGDefinition();
 
	    testGetAGDefinitionById();
	    testGetAGResourceBundleInfo();
 
	    testQueryAGDisplayInfos();
	    testQueryAGDisplayInfoDetailsById();
	    testQueryAGMilestoneDisplayInfo();
                
        } catch (Exception e) {
 
            e.printStackTrace();
        }
    }
 
    private static void testSetUp()
	throws Exception
    {
	wfSvcClient =
                WorkflowServiceClientFactory.getWorkflowServiceClient(WorkflowServiceClientFactory.REMOTE_CLIENT); 
 
	sJCooperCtx =
	    wfSvcClient.getTaskQueryService().authenticate(USERNAME, PASSWORD, null);
    }
 
    private static void testGetAGDefinitionById()
	throws Exception
    {
	String agDefinitionId = "HelpDeskRequestSCAApp/HelpDeskRequestComposite!1.0*2007-10-22_13-32-50_536//HelpDeskRequestProcess//HelpDeskRequestProcess.ag"; // Need to supply a valid AG definition id here
 
	AGDefinition agDefinition = 
	    wfSvcClient.getAGMetadataService().getAGDefinitionById (sJCooperCtx, agDefinitionId);
 
	if (agDefinition != null)
	{
	    System.out.println("ag def obtained");
	    System.out.println("ag def name: " + agDefinition.getName());
	    System.out.println("ag def milestone display mode: " + agDefinition.getMilestoneDisplayMode());
	}
    }
 
    private static void testGetAGResourceBundleInfo()
	throws Exception
    {
	String agDefinitionId = "HelpDeskRequestSCAApp/HelpDeskRequestComposite!1.0*2007-10-22_13-32-50_536//HelpDeskRequestProcess//HelpDeskRequestProcess.ag"; // Need to supply a valid AG definition id here
 
	ResourceBundleInfo resourceBundleInfo = wfSvcClient.getAGMetadataService().getResourceBundleInfo(sJCooperCtx, agDefinitionId, sJCooperCtx.getLocale());
 
	System.out.println("bundle name: " + resourceBundleInfo.getName());
    }
 
    private static void testQueryAGDisplayInfos()
	throws Exception
    {
	List agQueryColumns = new ArrayList();
	agQueryColumns.add("MILESTONE_STATE");     
	agQueryColumns.add("DEFINITION_ID");
 
	// Query for all AG instances belonging to user jcooper
	List agDisplayInfoList = 
	      wfSvcClient.getAGQueryService().queryAGDisplayInfos(sJCooperCtx, 
								  agQueryColumns,
								  IAGQueryService.AGAssignmentFilter.MY,
								  null, //agPredicate,
								  null, //ordering,
								  0,
								  0);
		
	System.out.println("ag display info list size:" +  agDisplayInfoList.size());
	if ( agDisplayInfoList.size() > 0 )
	{
	    AGDisplayInfo agDisplayInfo =  (AGDisplayInfo) agDisplayInfoList.get(0);
	    System.out.println("AG title:" +  agDisplayInfo.getTitle());
	    System.out.println("milestone display info list size:" +  agDisplayInfo.getMilestoneDisplayInfo().size());
	    for (int i=0; i< agDisplayInfo.getMilestoneDisplayInfo().size(); i++)
	    {
		System.out.println("i = " + i + " milestone display info:" + ((MilestoneDisplayInfo) agDisplayInfo.getMilestoneDisplayInfo().get(i)).getMilestoneInstance().getName());
	    }
	}
    }
 
    private static void testQueryAGDisplayInfoDetailsById()
	throws Exception
    {
	long cikey = 1; // Need to supply a valid AG cikey here
 
	List taskQueryColumns = new ArrayList();
	taskQueryColumns.add("TASKID");
	taskQueryColumns.add("TITLE");
	taskQueryColumns.add("OUTCOME");
 
	AGDisplayInfo agDisplayInfo = 
	      wfSvcClient.getAGQueryService().getAGDisplayInfoDetailsById (sJCooperCtx, cikey, taskQueryColumns);
	System.out.println("AG display info status:" +  agDisplayInfo.getAGInstanceInfo().getStatus());
	System.out.println("AG display info bpel status:" +  agDisplayInfo.getAGInstanceInfo().getBpelStatus());
    }
 
    private static void testQueryAGMilestoneDisplayInfo()
	throws Exception
    {
	long cikey = 1; // Need to supply a valid AG cikey here
	String milestoneName = "ApprovePricing"; //  Need to supply a valid AG milestone name here
 
	List taskQueryColumns = new ArrayList();
	taskQueryColumns.add("TASKID");
	taskQueryColumns.add("TITLE");
	taskQueryColumns.add("OUTCOME");
 
	MilestoneDisplayInfo milestoneDisplayInfo = null;
 
	milestoneDisplayInfo = 
	    wfSvcClient.getAGQueryService().getMilestoneDisplayInfo (sJCooperCtx, cikey, milestoneName, taskQueryColumns);
 
	System.out.println("milestone display info name:" +  milestoneDisplayInfo.getMilestoneInstance().getName());
	System.out.println("milestone display info title:" +  milestoneDisplayInfo.getTitle());
	System.out.println("milestone display info task list size:" +  milestoneDisplayInfo.getTask().size());
    }
 
}

EJBおよびWebサービスAPIの詳細は、Javadocを参照してください。

31.7 ガイド付きビジネス・プロセスのロギングの使用

ガイド付きビジネス・プロセスは、ログ・ファイルを使用して、実行する様々な操作に関する情報を格納します。このファイルには、アプリケーションの動作を追跡するログ・メッセージ、およびアプリケーションの実行中に発生する可能性のあるエラーが含まれます。

このログ・ファイルの情報を使用して、アプリケーションの予期しない動作の原因を見つけることができます。

ログ・メッセージの重要度は、メッセージのレベルに応じて異なります。デバッグ目的で使用されるメッセージのレベルは、警告またはエラーを含むメッセージのレベルと異なります。

ガイド付きビジネス・プロセスのロギングを構成して、必要に応じて、あるレベルのメッセージのみを記録できます。

31.7.1 クライアント側でロギングを行う方法

ガイド付きビジネス・プロセスを構成して、クライアント側にログ・ファイルを生成できます。

クライアント側でロギングを有効化するには:

  1. ディレクトリ<DOMAIN_HOME>/config/fmwconfig/servers/Server Nameで、logging.xmlファイルを検索します。
  2. logging.xmlファイルを編集のために開きます。
  3. <loggers>要素に次のエントリを追加します。
    <logger name="oracle.bpel.activityguide.ui" level="NOTIFICATION:1" useParentHandlers='false'>
    	<handler name="odl-handler"/>
    </logger>
    
  4. 変更を保存します。
  5. WebLogic Serverを再起動します。

31.7.2 サーバー側でロギングを行う方法

ガイド付きビジネス・プロセスを構成して、サーバー側にログを生成できます。

サーバー側でロギングを有効化するには:

  1. ディレクトリ<DOMAIN_HOME>/config/fmwconfig/servers/Server Nameで、logging.xmlファイルを検索します。
  2. logging.xmlファイルを編集のために開きます。
  3. <loggers>要素に次のエントリを追加します。

    <logger name="oracle.bpm.services.activityguide.query" level="NOTIFICATION:1" useParentHandlers='true'>

  4. 変更を保存します。
  5. WebLogic Serverを再起動します。

31.7.3 ログ・レベルの構成

ログ・メッセージには、問題の重大度を識別するレベルが含まれています。

表28-3は、使用可能なログ・レベルを示しています。重大度の列では、ある重大度を識別するのに使用される共通の用語を説明しています。ログ・レベル値の列では、logging.xmlファイルで使用する必要がある値を指定しています。

表31-2 ログ・レベル値

重大度 ログ・レベル値 説明

致命的

INCIDENT_ERROR:1

原因が不明の重大な問題を示しています。ユーザーは自分で問題を解決できないため、Oracleサポートに連絡する必要があります。

重大

ERROR:1

システム管理者がすぐに対処する必要がある重大な問題を示しています。

警告

WARNING:1

潜在的な問題を示しています。システム管理者は、これらのログ・メッセージを確認する必要があります。

情報

NOTIFICATION:1

主要サブコンポーネントや機能のアクティブ化または非アクティブ化などの、主要なライフサイクル・イベントを示しています。

構成

NOTIFICATION:16

下位レベルで発生した標準イベントを指定します。

普通

TRACE:1

パブリックAPIのエントリ・ポイント/終了ポイントなどの、製品のエンド・ユーザーにとって意味のあるイベントのトレースまたはデバッグ情報を示しています。

詳細

TRACE:16

Oracleサポートが特定のサブシステムでの問題を診断するのに役立つ可能性のある、詳細なトレースまたはデバッグ情報を指定します。

ガイド付きビジネス・プロセスのロギングを構成して、ガイド付きビジネス・プロセスのログに格納された情報の詳細のレベルを指定できます。

ログ・レベルを設定するには、logging.xmlファイルのロガー要素で、属性レベルの値を変更する必要があります。

ログ・レベルをある重大度に設定すると、それより高い重大度に対応するすべてのメッセージも格納されます。たとえば、ログ・レベルを「重大」に設定した場合、重大度が「致命的」のログ・メッセージも記録されます。

31.7.4 ガイド付きビジネス・プロセスのログ・メッセージを表示する方法

ログ・メッセージは、ファイル<DOMAIN HOME>/servers/<Server Name>/logs/Server Name-diagnostic.logに格納されています。

テキスト・エディタを使用して、ログ・メッセージを含むファイルを表示できます。

31.7.5 ガイド付きビジネス・プロセスのログ・メッセージについて

ログ・メッセージには、ガイド付きビジネス・プロセス・アプリケーションの問題を識別するのに役立つ情報が含まれています。

表28-3は、ログ・メッセージを構成する項目を説明しています。

表31-3 ログ・メッセージ項目

ログ・メッセージ項目 説明

日付と時間

このログ・メッセージが生成された日付および時間を指定します。

メッセージ・タイプ

メッセージの重大度を指定します。

実行コンテキストID (ECID)

元のコンポーネントが実行中のスレッドに対応するグローバル一意識別子および順序番号。これを使用して、同一のスレッドに含まれる可能性がある複数のコンポーネントからのメッセージを関連付けることができます。

アプリケーション名

ログ・メッセージを生成したアプリケーションの名前を指定します。

クラス・パッケージ名

ログ・メッセージを生成したクラスのパッケージを指定します。

メッセージID

メッセージを一意に識別する短い識別子を指定します。

メッセージ・テキスト

イベントを説明します。このメッセージはローカライズされているため、システムのロケールに対応した言語で表示されます。

ログ・ファイルを読む際には、メッセージ・テキストを見つける必要があります。このテキストは、何が発生したかを説明しています。メッセージ・タイプは、問題がどの程度重大かを識別するのに役立ちます。様々なメッセージ・タイプの詳細は、表31-2を参照してください。

ログ・メッセージの日付と時間を使用して、問題の原因となるアクションを特定できます。

注意:

Oracleサポートに連絡する前に、メッセージIDおよび実行コンテキストIDをOracleサポートに提供できることを確認してください。

例31-6 ログ・メッセージの例

DefaultServer-diagnostic.log:[2009-07-10T17:39:35.220-07:00] [DefaultServer] [NOTIFICATION] [AGU-12605] [oracle.bpel.activityguide.ui.beans] [tid: [ACTIVE].ExecuteThread: '1' for queue: 'weblogic.kernel.Default (self-tuning)'] [userId: jstein] [ecid: 0000I9bG2R3DScQ6ube9UH1ALxd1000007,0] [APP: AGNonUIshellApp#V2.0] [arg: jstein] Setting user, jstein as the loginUserId in server interfacing bean.[[

例28-12は、loginUserIdの変更に関する情報を含む通知ログ・メッセージを示しています。この例での各ログ・メッセージ項目は、次のとおりです。

  • 日付と時間: 2009-07-10T17:39:35.220-07:00

  • メッセージ・タイプ: NOTIFICATION

  • 実行コンテキストID: ecid: 0000I9bG2R3DScQ6ube9UH1ALxd1000007,0

  • アプリケーション名: APP: AGNonUIshellApp#V2.0

  • クラス・パッケージ名: oracle.bpel.activityguide.ui.beans

  • メッセージID: AGU-12605

  • メッセージ・テキスト: Setting user, jstein as the loginUserId in server interfacing bean.