Oracle® Fusion Middleware Oracle Business Process Managementモデリングおよび実装ガイド 11g リリース1(11.1.1) B61409-01 |
|
前 |
次 |
この章では、ガイド付きビジネス・プロセスの作成時に定義したマイルストンを使用して、プロセス・インスタンスを表示するクライアント・アプリケーションの構築方法について説明します。
この章の内容は次のとおりです。
ガイド付きビジネス・プロセスは、ガイド付きビジネス・プロセスを表示および実行するADFアプリケーションを構築するのに使用できる事前定義済ADFタスクフローを提供します。
提供されたADFタスクフローが要件を満たさない場合、UIクライアント・アプリケーションが表示する情報を取得するために、ガイド付きビジネス・プロセスが提供する一連のAPIを使用できます。これらのAPIを使用すると、WebサービスおよびEnterprise Java Beansを使用して、マイルストンおよびタスクに関するデータを取得できます。
ガイド付きビジネス・プロセスのクライアント・アプリケーションは、ガイド付きビジネス・プロセスのタスク・フローのユーザー・インタフェースを提供します。任意の構成で、シンプルなADF JSPXページに、クライアント・アプリケーションを開発できます。通常、クライアント・アプリケーションには、アクティビティ・ガイド・ツリーを表示するリージョンと、ツリーから選択された特定のノードの詳細を表示する別のリージョンが含まれます。
これらの2つのリージョンを表示する方法として、JSPXページの左側に動的なリージョン、右側にヒューマン・タスク・フローを配置します。ただし、構成することはできます。
ガイド付きビジネス・プロセスのクライアント・アプリケーションを開発するには:
JDeveloperで、ADF Webプロジェクトを使用して、新規アプリケーションを作成します。
アプリケーションViewControllerを選択し、アクティビティ・ガイド・ライブラリactivityguide-ui.jar
をアプリケーション・クラスパスに追加します。
次の.jarファイルを追加します。
<FMW_home>/AS11gR1SOA/soa/modules/activityguide-ui_11.1.1.jar/activityguide-ui.jar
<FMW_home>/AS11gR1SOA/soa/modules/oracle.soa.workflow_11.1.1/bpm-services.jar
<FMW_home>/AS11gR1SOA/soa/modules/oracle.soa.bpel_11.1.1/orabpel-common.jar
<FMW_home>/AS11gR1SOA/soa/modules/oracle.soa.bpel_11.1.1/orabpel.jar
<FMW_home>/oracle_common/modules/oracle.xdk_11.1.0/xml.jar
<FMW_home>/AS11gR1SOA/soa/modules/oracle.soa.fabric_11.1.1/bpm-infra.jar
<FMW_home>/AS11gR1SOA/soa/modules/oracle.soa.fabric_11.1.1/fabric-runtime.jar
<FMW_home>/oracle_common/modules/oracle.webservices_11.1.1/wsclient.jar
wf_client_config.xml
ファイルを使用して、Config.jar
と呼ばれるファイルを作成し、アプリケーション・クラスパスに追加します。wf_client_config.xml
ファイルには、ガイド付きビジネス・プロセス・インスタンスを実行するWLSインスタンスのホスト名およびポートが含まれる必要があります。
注意: スタンドアロンOracle WebLogic Serverの最新バージョンからのみ、これらのJARファイルを追加します。 |
アクティビティ・ガイドを表示する新規JSPXページを作成します。
タスク・フローをJSPXページにドラッグ・アンド・ドロップし、1つをアクティビティ・ガイド・ツリーの表示に使用し、1つを個別のアクティビティ・ガイド・ノードの表示に使用します。
タスク・フローをドラッグ・アンド・ドロップすると、そのタスク・フローのリージョンが自動的に作成されます。
activityguide.properties
と呼ばれるファイルを作成します。
このファイルで指定できるプロパティを示します。
例24-1は、一般的なactivityguide.properties
ファイルを示しています。
表24-1 アクティビティ・ガイド・プロパティ
プロパティ | 説明 | 設定可能な値 |
---|---|---|
ServerAuthenticationMethod |
SOAエンジンにデプロイされたサービスへの接続に使用する認証モードを指定します。 |
IDENTITY_PROPAGATION |
ServerConnectionMode |
データの伝送のモードを指定します。 |
|
WorklistHttpURL |
ワークリスト・アプリケーションにアクセスするためのURLを指定します。 |
http://host:port/integration/worklisapp |
SelectionFilter |
アクティビティ・ガイドのプロセスをフィルタ処理するのに使用するフィルタを指定します。 |
|
AGDefinitionFilter |
アクティビティ・ガイドのプロセスをフィルタ処理するのに使用する定義IDを指定します。アクティビティ・ガイドは、このIDに一致するプロセスの表示のみを行います。 |
アクティビティ・ガイドの定義ID |
AGInstanceOrdering |
アクティビティ・ガイドのプロセスの表示に使用する順序を指定します。 例: CREATION_DATE:ASC |
|
AGInstanceID |
アクティビティ・ガイド・ツリーの表示に使用するインスタンスIDを指定します。 例: 10001 |
アクティビティ・ガイドのインスタンスID |
CustomPredicate1 |
アクティビティ・ガイドのプロセスのリストをフィルタ処理するための、追加の述語を指定します。 例: CREATOR、EQ、jstein |
列名, 演算子, 値 |
CustomPredicate2 |
アクティビティ・ガイドのプロセスのリストをフィルタ処理するための、別の追加の述語を指定します。この述語はCustomPredicate1で使用されます。 |
列名, 演算子, 値 |
ShowAllAGTreeNodesProperties |
アクティビティ・ガイドで、アクティビティ・ガイド、マイルストンおよびタスクのプロパティを説明するセクションを、上部に表示するかどうかを指定します。 |
|
ShowRefreshButton |
リージョン領域でリフレッシュ・ボタンを表示するかどうかを指定します。デフォルト値はtrueです。 |
|
ShowGaugeTickMarks |
ゲージ・インジケータでティック・マーカーおよびラベルを表示するかどうかを指定します。デフォルト値はfalseです。 |
|
ShowGaugePercentLabel |
ゲージ・インジケータで完了率の数値のラベルを表示するかどうかを指定します。デフォルト値はfalseです。 |
|
AGTasksPopupTaskFlowID |
タスクのポップアップに表示する内容を指定します。 |
完全修飾されたタスクフローID |
AGDoneButtonLabel |
「終了」ボタンのラベルを、終了、次のアクティビティまたは次のタスクの値で構成するのに使用します。値を構成しない場合、プロパティはデフォルト値である次のアクティビティを使用します。設定可能な値のリストに含まれない値を割り当てると、エラーが発生します。 |
|
例24-1 activityguide.properties
ファイル
ServerAuthenticationMethod=IDENTITY_PROPAGATION ServerConnectionMode=SOAP SelectionFilter=MY #AGInstanceOrdering=CREATION_DATE:ASC #ShowAllAGTreeNodesProperties=false #CustomPredicate1=abcd,EQ,abcd #AGInstanceID=#34 #CustomPredicate2=CREATOR,EQ,jcooper
アイデンティティ伝播を使用してアクティビティ・ガイドを保護する場合、WorkflowAdminUser
プロパティおよびWorkflowAdminPassword
プロパティは必要ありません。
サマリー情報を持つタスク・フローのポップアップを有効にするには、activityguide.properties
ファイルに次のプロパティを指定します。
AGTasksPopupTaskFlowID
: このパラメータを使用して、ADF動的リージョンにタスク・フロー・サマリーを表示します。関連するタスク・フローIDを入力します。
このパラメータを設定しない場合、OutputText
の値が、デフォルトのタスク・サマリーとして、ポップアップに表示されます。
無効なタスク・フローのリージョンIDを指定した場合、ガイド付きビジネス・プロセスでは、リージョンがレンダリングされず、サーバー・ログにメッセージが記録されます。
アクティビティ・ガイドUIの進捗状況インジケータを有効にするには:
デフォルトでは、ゲージはシンプルなバーです。ただし、バー上のティック、完了率または両方で表示するように、進捗状況インジケータを構成できます。
ティック・マークを有効にするには、タスク・フロー・パラメータShowGaugeTickMarks
をtrueに設定します。
完了率のラベルを有効にするには、タスク・フロー・パラメータShowGaugePercentLabel
をtrueに設定します。
両方の機能を有効にするには、両方のタスク・フロー・パラメータをtrueに設定します。
進捗状況インジケータは、ガイド付きビジネス・プロセスの完了率を示します。この値は、SOAコンポジットの設計時に各マイルストンに割り当てられた割合の重みに基づいて計算されます。
次のいずれかの方法を使用して、アクティビティ・ガイド・ツリーにリフレッシュ・ボタンを表示するように、アクティビティ・ガイドを構成します。
ファイルactivityguide.properties
で、パラメータShowRefreshButton
を追加します。この値をtrueに設定すると、リフレッシュ・ボタンの表示が有効になり、falseまたはその他の値にすると、リフレッシュ・ボタンが無効になります。
アクティビティ・ガイド・ツリーのタスク・フローで、パラメータShowRefreshButton
を追加し、その値をtrueに設定します。このタスク・フロー・パラメータは、activityguide.properties
ファイルに設定されたパラメータの値をオーバーライドします。
ShowRefreshButton
パラメータの値がempty
またはnull
の場合、ファイルactivityguide.properties
のプロパティShowRefreshButton
では、リフレッシュ・ボタンを表示するかどうかを定義します。activityguide.properties
ファイルにこのプロパティの値を指定しない場合、リフレッシュ・ボタンはクライアントに表示されません。
例24-2は、ツリー・タスク・フローへのShowRefreshButton
パラメータの追加を示しています。
例24-2 ツリー・タスク・フローへの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>
activity.properties
ファイルの場所を含めるように、ファイルadfc-config.xml
を編集します。これは、activityguide.propertiesファイルへの絶対パスである必要があります。
adfc-config.xml
の例を例24-3に示します。
例24-3 activityguide.properties
ファイルへの参照を使用したadfc-config.xml
ファイル
<managed-bean> <managed-bean-name>agProps</managed-bean-name> <managed-bean-class>oracle.bpel.activityguide.ui.beans.model.AGProperties</managed-bean-class> <managed-bean-scope>request</managed-bean-scope> <managed-property> <property-name>absAgPropsFileName</property-name> <property-class>java.lang.String</property-class> <value> C:\Projects\AG\activityguide.properties</value> </managed-property> </managed-bean>
ワークフロー・サービス・クライアント構成ファイルを作成します。例を例24-4に示します。
例24-4 ワークフロー・サービス・クライアント構成ファイル
<?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:7001</serverURL> <initialContextFactory>weblogic.jndi.WLInitialContextFactory</initialContextFactory> <participateInClientTransaction>false</participateInClientTransaction> </remoteClient> <soapClient> <rootEndPointURL>http://host: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>
ADF Webプロジェクトを使用したJDeveloperアプリケーションが作成されます。アプリケーションには次のものが含まれます。
1つがアクティビティ・ガイド・ツリー用、もう1つがアクティビティ・ガイド・ノード詳細用の、2つのリージョンを持つJSFページ。
activityguide.properties
ファイル。
ランタイムに、Oracle ADFアプリケーションでは、デザインタイムに開発されたガイド付きビジネス・プロセスが表示されます。共通のADFレイヤーのコンテキスト・イベント・メカニズムによって、対応するアクティビティ・ガイド・ツリーとアクティビティ・ガイド・ノード詳細の間の通信を処理します。
ガイド付きビジネス・プロセス・インスタンスをクリックすると、アクティビティ・ガイド・ツリーには、そのガイド付きビジネス・プロセス・インスタンスのアクティビティ・ガイド、マイルストンおよびタスクの情報が表示されます。または、アプリケーションでは、プログラムによってガイド付きビジネス・プロセス・インスタンスIDを検索および指定し、関連するインスタンスおよびツリーの情報を表示できます。
アクティビティ・ガイド・ツリーのマイルストン・ノードをクリックすると、そのマイルストンの下のサブツリーを取得またはリフレッシュします。
アクティビティ・ガイド・ツリーのタスク・ノードをクリックすると、そのタスクの詳細タスク情報が表示されます。
ガイド付きビジネス・プロセスのクライアント・アプリケーションを保護するには、適切な資格証明を持つユーザーのみが、ガイド付きビジネス・プロセスで説明されたタスクを完了できることを確認します。セキュリティ機能には、認証、認可、レルム検証およびポリシー施行があります。
ADFガイド付きビジネス・プロセスのクライアント・アプリケーションを保護するには、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』の「Fusion WebアプリケーションでのADFセキュリティの有効化」で説明されている、Webアプリケーションを保護する手順に従います。
ガイド付きビジネス・プロセスのスキーマおよびソフトウェア・コンポーネントは、次のとおりです。
com.oracle.bpel.activityguide
サブパッケージは、ガイド付きビジネス・プロセス・インスタンスの管理に使用され、ガイド付きビジネス・プロセス・メタデータ・サービスを有効にします。
このサブパッケージには、次のサブパッケージが含まれます。
schema
: ガイド付きビジネス・プロセス・インスタンス、ガイド付きビジネス・プロセス定義、およびガイド付きビジネス・プロセス・メタデータ・サービスのXSDおよびWSDLファイル。
instance
: ガイド付きビジネス・プロセス・インスタンス管理コード。
metadata
: ガイド付きビジネス・プロセス・メタデータ・サービス。
oracle.bpel.service.workflow.activityguide
サブパッケージは、ガイド付きビジネス・プロセスのメタデータ・サービスおよび問合せサービスを有効にします。
ガイド付きビジネス・プロセス・メタデータ・サービス
ガイド付きビジネス・プロセス・メタデータ・サービスの実装は、SOAコンポジット・パッケージcom.oracle.bpel.activityguide.metadata
の一部です。SOAコンポジット・パッケージのガイド付きビジネス・プロセス・インスタンス管理コードおよびデプロイメント・マネージャは、ガイド付きビジネス・プロセス・メタデータ・サービス・クラスへのローカルJavaコールを行います。
ガイド付きビジネス・プロセス・メタデータ・サービスは、ガイド付きビジネス・プロセス問合せサービスと同様、いずれの場所からでも起動できるように、EJBおよびWebサービスとしても公開されます。ガイド付きビジネス・プロセス・メタデータ・サービスは、同じsoa-infra-wls.ear
ファイルにパッケージ化されます。
ガイド付きビジネス・プロセス問合せサービス
ガイド付きビジネス・プロセスでは、WorkflowServiceLocator
、Ejbgenerator
などのワークフロー・サービス、および、EJBおよびWebサービスの構成ファイルを使用します。
ガイド付きビジネス・プロセス問合せサービスは、ワークフロー・パッケージのサブパッケージに作成され、oracle.bpel.services.workflow.activityguide.query
と呼ばれます。
このサブパッケージには、次のサブパッケージが含まれます。
bpelmetadata
: プロセス分析スキーマとの相互作用を行うためのユーティリティ・クラスが含まれます。ブランチ化および将来のタスクに使用されます。
client
: ガイド付きビジネス・プロセス問合せサービスのEJBおよびWebサービス・クライアント。
ejb
: ガイド付きビジネス・プロセス問合せサービスのEJBインタフェース。
impl
: ガイド付きビジネス・プロセス問合せサービスの実装。
model
: XSDファイルに基づいて自動生成されたガイド付きビジネス・プロセス問合せサービス・クラス。
soap
: ガイド付きビジネス・プロセス問合せサービスのWebサービス・インタフェース。
ガイド付きビジネス・プロセスでは、使用可能なマイルストンおよびマイルストンを構成するタスクに関する詳細を取得できる一連のAPIが提供されます。事前定義されたアクティビティ・ガイドADFタスクフローが要件を満たさない場合、これらのAPIを使用して、クライアント・アプリケーションに表示する情報を取得できます。
このAPIは、ガイド付きビジネス・プロセスを表示するアプリケーションの次のユーザー・ナビゲーション・シナリオをサポートするように設計されます。
フィルタを使用して、ガイド付きビジネス・プロセス・インスタンスのリストを表示します。使用可能なフィルタは次のとおりです。
MY
: ユーザーに割り当てられたアクティブなタスクを含むガイド付きビジネス・プロセス・インスタンス。
REPORTEES
: 現在のユーザーへの報告先に割り当てられたアクティブなタスクを含むガイド付きビジネス・プロセス・インスタンス。
PREVIOUS
: ユーザーに割り当てられた完了済タスクを含むガイド付きビジネス・プロセス・インスタンス、および、特定のタスクを別のユーザーに再割当てするインスタンス。
CREATOR
: ユーザーによって開始されたガイド付きビジネス・プロセス・インスタンス。
ADMIN
: ガイド付きビジネス・プロセス管理者に表示されるガイド付きビジネス・プロセス・インスタンス。アクティブなインスタンスは、すべてのユーザーに割り当てることができます。
注意: BPMAGAdminロールは、管理者ロールが割り当てられたユーザーにマップされます。このロールによって、ユーザーは、完了済インスタンス、アクティブなインスタンスおよびエラーのあるインスタンスなど、サーバーで使用可能なすべてのガイド付きビジネス・プロセス・インスタンスを問合せできます。$DOMAIN_HOME/config/fmwconfig/system-jazn-data.xmlにある構成ファイルには、このロールの定義が含まれています。 |
注意: ガイド付きビジネス・プロセスAPIを使用すると、タスクIDを指定して、詳細タスク情報を取得できますが、タスク情報は取得されません。これを行うには、ワークフロー・サービスAPIなど、別のAPIが必要です。ワークフロー・サービスの詳細は、『Oracle Fusion Middleware Oracle SOA Suite開発者ガイド』の「ヒューマン・ワークフロー・サービスの概要」を参照してください。 |
表24-2 ガイド付きビジネス・プロセス問合せサービスAPI
メソッド | 説明 |
---|---|
|
文字列パラメータ
マイルストンおよびタスクはアクティビティ・ガイド・インスタンス・ビューに表示されないので、不要なパフォーマンスのオーバーヘッドを避けるために、 |
|
アクティビティ・ガイド・インスタンスIDによって指定された 戻された 文字列パラメータ
文字列パラメータ
|
|
アクティビティ・ガイド・インスタンス内のマイルストンの表示情報を戻します。 戻された 文字列パラメータ
文字列パラメータ
|
APIによって、カスタム・アプリケーション内からガイド付きビジネス・プロセス問合せおよびメタデータ・サービスにアクセスできます。
次の例は、ガイド付きビジネス・プロセスのランタイム・サービスにアクセスするためのJava APIの使用を示しています。
例24-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 String REALM = "jazn.com"; 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, REALM, 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を参照してください。
ガイド付きビジネス・プロセスは、ログ・ファイルを使用して、実行する様々な操作に関する情報を格納します。このファイルには、アプリケーションの動作を追跡するログ・メッセージ、およびアプリケーションの実行中に発生する可能性のあるエラーが含まれます。
このログ・ファイルの情報を使用して、アプリケーションの予期しない動作の原因を見つけることができます。
ログ・メッセージの重要度は、メッセージのレベルに応じて異なります。デバッグ目的で使用されるメッセージのレベルは、警告またはエラーを含むメッセージのレベルと異なります。
ガイド付きビジネス・プロセスのロギングを構成して、必要に応じて、あるレベルのメッセージののみを記録できます。
ガイド付きビジネス・プロセスを構成して、クライアント側にログ・ファイルを生成できます。
クライアント側でロギングを有効化するには:
ディレクトリ<DOMAIN_HOME>/config/fmwconfig/servers/AdminServer
で、logging.xmlファイルを検索します。
logging.xml
ファイルを編集のために開きます。
<loggers>
要素に次のエントリを追加します。
<logger name="oracle.bpel.activityguide.ui" level="NOTIFICATION:1" useParentHandlers='false'>
<handler name="old-handler"/>
</logger>
変更内容を保存します。
WebLogic Serverを再起動します。
ガイド付きビジネス・プロセスを構成して、サーバー側にログを生成できます。
サーバー側でロギングを有効化するには:
ディレクトリ<DOMAIN_HOME>/config/fmwconfig/servers/AdminServer
で、logging.xmlファイルを検索します。
logging.xml
ファイルを編集のために開きます。
<loggers>
要素に次のエントリを追加します。
<logger name="oracle.soa.services.workflow.ag" level="NOTIFICATION:1" useParentHandlers='false'>
<handler name="oracle-soa-handler"/>
</logger>
変更内容を保存します。
WebLogic Serverを再起動します。
ログ・メッセージには、問題の重大度を識別するレベルが含まれています。
表28-3は、使用可能なログ・レベルを示しています。重大度の列では、ある重大度を識別するのに使用される共通の用語を説明しています。ログ・レベル値の列では、logging.xmlファイルで使用する必要がある値を指定しています。
表24-3 ログ・レベル値
重大度 | ログ・レベル値 | 説明 |
---|---|---|
致命的 |
INCIDENT_ERROR:1 |
原因が不明の重大な問題を示しています。ユーザーは自分で問題を解決できないため、Oracleサポートに連絡する必要があります。 |
重大 |
ERROR:1 |
システム管理者がすぐに対処する必要がある重大な問題を示しています。 |
警告 |
WARNING:1 |
潜在的な問題を示しています。システム管理者は、これらのログ・メッセージを確認する必要があります。 |
情報 |
NOTIFICATION:1 |
主要サブコンポーネントや機能のアクティブ化または非アクティブ化などの、主要なライフサイクル・イベントを示しています。 |
構成 |
NOTIFICATION:16 |
下位レベルで発生した標準イベントを指定します。 |
普通 |
TRACE:1 |
パブリックAPIのエントリ・ポイント/終了ポイントなどの、製品のエンド・ユーザーにとって意味のあるイベントのトレースまたはデバッグ情報を示しています。 |
詳細 |
TRACE:16 |
Oracleサポートが特定のサブシステムでの問題を診断するのに役立つ可能性のある、詳細なトレースまたはデバッグ情報を指定します。 |
ガイド付きビジネス・プロセスのロギングを構成して、ガイド付きビジネス・プロセスのログに格納された情報の詳細のレベルを指定できます。
ログ・レベルを設定するには、logging.xmlファイルのログ出力要素で、属性レベルの値を変更する必要があります。
ログ・レベルをある重大度に設定すると、それより高い重大度に対応するすべてのメッセージも格納されます。たとえば、ログ・レベルを「重大」に設定した場合、重大度が「致命的」のログ・メッセージも記録されます。
ログ・メッセージは、ファイル<DOMAIN HOME>/servers/<Server Name>/logs/DefaultServer-diagnostic.log
に格納されています。
テキスト・エディタを使用して、ログ・メッセージを含むファイルを表示できます。
ログ・メッセージには、ガイド付きビジネス・プロセス・アプリケーションの問題を識別するのに役立つ情報が含まれています。
表28-3は、ログ・メッセージを構成する項目を説明しています。
表24-4 ログ・メッセージ項目
ログ・メッセージ項目 | 説明 |
---|---|
日付と時間 |
このログ・メッセージが生成された日付および時間を指定します。 |
メッセージ・タイプ |
メッセージの重大度を指定します。 |
実行コンテキストID (ECID) |
元のコンポーネントが実行中のスレッドに対応するグローバル一意識別子および順序番号。これを使用して、同一のスレッドに含まれる可能性がある複数のコンポーネントからのメッセージを関連付けることができます。 |
アプリケーション名 |
ログ・メッセージを生成したアプリケーションの名前を指定します。 |
クラス・パッケージ名 |
ログ・メッセージを生成したクラスのパッケージを指定します。 |
メッセージID |
メッセージを一意に識別する短い識別子を指定します。 |
メッセージ・テキスト |
イベントを説明します。このメッセージはローカライズされているため、システムのロケールに対応した言語で表示されます。 |
ログ・ファイルを読む際には、メッセージ・テキストを見つける必要があります。このテキストは、何が発生したかを説明しています。メッセージ・タイプは、問題がどの程度重大かを識別するのに役立ちます。様々なメッセージ・タイプの詳細は、表24-3を参照してください。
ログ・メッセージの日付と時間を使用して、問題の原因となるアクションを特定できます。
注意: Oracleサポートに連絡する前に、メッセージIDおよび実行コンテキストIDをOracleサポートに提供できることを確認してください。 |
例24-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.