Oracle Fusion Middleware Oracle SOA SuiteおよびOracle Business Process Management Suite管理者ガイド 11g リリース1(11.1.1) B55916-02 |
|
![]() 戻る |
![]() 次へ |
この章では、SOAコンポジット・アプリケーションをプログラムで管理するためのFacade APIの概要を示します。
この章の内容は、次のとおりです。
実行時にFacade APIを使用してSOAコンポジット・アプリケーションをプログラムで管理できます。Facade APIは、Oracle SOA SuiteのInfrastructure Management Java APIの一部です。Facade APIは、コンポジット、コンポーネント、サービス、参照などの操作と属性を公開します。Facade APIでは、Oracle Enterprise Manager Fusion Middleware Controlコンソールでのコンポジットの管理の代替方法が提供されます。
oracle.soa.management.facade.Locator
インタフェースは、Facade APIクライアントのエントリ・ポイントとしてメソッド・インタフェースを公開します。
Facade APIの詳細は、Oracle Fusion MiddlewareのOracle SOA Suite Infrastructure Management Java API リファレンスを参照してください。
表9-1に、Facade APIインタフェースの概要を示します。
表9-1 Facade APIインタフェース
インタフェース | 説明 |
---|---|
|
このアクティビティが属するインスタンスのインスタンスID(キー)、コンポーネント名、アクティビティの作成日、現在のアクティビティの有効期限などを取得します。 |
|
非同期ジョブ・タイプに関する詳細を取得します。 |
|
非同期プロセスの結果を取得します。 |
|
URI、タイプ、サブタイプなどのバインディングの詳細を取得します。 |
|
特定のフォルト・フィルタで指定されたバインディング・タイプとフォルトのリストを取得します。 |
|
一貫性レベル、フィルタ・タイプ、ローカル名、ネームスペースURI、接頭辞など、ビジネス・イベントの詳細を取得します。 |
|
識別名(DN)、アクティブなインスタンス、失敗したインスタンス、インスタンスの合計、デプロイメント時間など、コンポーネントの詳細を取得します。 |
|
監査証跡、コンポーネント・インスタンスの状態(正常に完了、失敗、実行中など)、対話ID、作成日など、コンポーネント・インスタンスの詳細を取得します。 |
|
識別名(DN)、アクティブなインスタンス、失敗したインスタンス、インスタンスの合計、デプロイメント時間など、コンポジットの詳細を取得します。 |
|
コンポジット・インスタンスの状態(正常に完了、失敗、実行中など)を取得します。 |
|
特定のフォルト・フィルタで指定されたイベント・ブリッジ・タイプとフォルトのリストを取得します。 |
|
フォルトがバインディング・コンポーネントで発生した場合のバインディング・タイプ、コンポーネント・インスタンスID、フォルトが発生したコンポーネントの名前、フォルトが生成された時刻、フォルトがサービス・エンジンで発生した場合のエンジン・タイプなど、フォルトの詳細を取得します。 |
|
インスタンスの中断、失敗したアクティビティを完了としてマーク、拒否されたメッセージをファイルに格納、失敗したアクティビティをリカバリ済としてマーク、アクティビティの再試行など、アクションのタイプを提供します。 |
|
フォルト、エラー、リカバリ可能なフォルト、リカバリできないフォルトなどを取得します。 |
|
フォルト・リカバリ・サービス・エンジンを提供します。 |
|
インポートされたリソースの場所とインポート・タイプを取得します。 |
|
コールバック・インタフェースとインタフェースのプロパティを取得します。 |
|
Facade APIクライアントのエントリ・ポイントとしてメソッド・インタフェースを公開します。 |
|
コンポーネント名、コンポジットDN、メッセージの内容、対話ID、メッセージの格納場所、メッセージのリカバリ可能状態など、メッセージの詳細を取得します。 |
|
パーティション内のすべてのコンポジットの開始、停止、アクティビティ化、リタイアなど、パーティション化のライフ・サイクル管理タスクを実行します。 |
|
プロパティのデフォルト値、名前、オーバーライド属性値、プロパティ値のソースなど、プロパティの詳細を取得します。 |
|
ターゲット・サービスのWSDL URL、参照のプロパティ、参照名、参照バインディングなど、参照の詳細を取得します。 |
|
バインディングのタイプを取得します。コンポジットのDN、コンポジット・インスタンスID、インスタンスの作成時刻などです。 |
|
パーティションを取得および作成します。 |
|
バインディング、コンポジットDN、インタフェース・タイプ、名前、多重度など、サービスの詳細を取得します。 |
|
サービス・エンジンでデプロイされたコンポーネントのリスト、エンジン・タイプ、および特定のフォルト・フィルタで指定されたフォルトのリストを取得します。 |
|
バインディングのタイプなどのサービス・インスタンスの詳細を取得します。コンポジットのDN、コンポジット・インスタンスID、作成時刻などです。 |
|
デフォルト・アドレスURI、エンドポイント・アドレスURI、ポート、トランスポート・タイプなどを取得します。 |
|
ポート名、ポートURI、サービス名などを取得します。 |
|
ワイヤ参照、ワイヤ・サービス、ソースURIおよびターゲットURIを取得します。 |
|
WSDL URLを取得します。 |
この項では、Facade APIを使用してコンポジット管理を実行する例をいくつか示します。
Facade APIでコンポジットの状態を取得できます。
コンポジットの状態には2つの部分があります。
アクティブ | リタイア:
この設定では、新規インスタンスを作成できるか(アクティブ)、または新しいインスタンスを作成せずに古いインスタンスを完了できるか(リタイア)を決定します。これをコンポジット・モードと呼びます。
オン | オフ:
この設定はコンポジット状態であり、コンポジット・リビジョンへのコール・アクセス(呼出し/コールバック)を許可するか(オン)、コール・アクセスを許可しないで(オフ)、「アクティブ」または「リタイア」コンポジット・モードをオーバーライドします。これをコンポジット状態と呼びます。
oracle.soa.management.facade.Locator
から、次のコードを使用します。
getComposite(CompositeDN)
これにより、コンポジット(oracle.soa.management.facade.Composite
の実装)が取得されます。
モードと状態を取得するには、APIと実装を使用します。
System.out.println("Mode: " + composite.getMode() + " state: " + ((oracle.soa.management.internal.facade.CompositeImpl)composite).getState());
このアクションによって、次のようなデータが返されます。
Mode: active state: on
Facade APIでインスタンスを検索できます。
Locator
インタフェースを使用してComposite (locator.lookupComposite(compositeDN);)
を検索し、DeliveryService
で呼び出します。
次に、APIを使用してそのインスタンスを検索し、情報(インスタンスID、実行されたコンポーネントなど)を取得します。
Composite composite = locator.lookupComposite("default/OrderBookingComposite!1.0"); /* * retrieve instances, we are already on a composite, no need to set the * DN */ CompositeInstanceFilter filter = new CompositeInstanceFilter(); filter.setMinCreationDate( new java.util.Date((System.currentTimeMillis() - 20000))); // get composite instances by filter .. List obInstances = composite.getInstances(filter); // for each of the returned composite instances.. for (CompositeInstance instance : obInstances) { System.out.println(" DN: " + instance.getCompositeDN() + "Instance: " + instance.getId() + " creation-date: " + instance.getCreationDate() + " state (" + instance.getState() + "): " + getStateAsString(instance.getState())); // setup a component filter ComponentInstanceFilter cInstanceFilter = new ComponentInstanceFilter (); // get child component instances .. List childComponentInstances = instance.getChildComponentInstances(cInstanceFilter); // for each child component instance (e.g. a bpel process) for (ComponentInstance cInstance : childComponentInstances) { System.out.println(" -> componentinstance: " + cInstance.getComponentName() + " type: " + cInstance.getServiceEngine().getEngineType()+ " state: " + getStateAsString(cInstance.getState())); } // retrieve composite sensors List sensorData = instance.getSensorData(); for (SensorData data : sensorData) { System.out.println(" -> Sensor: " + data.getSensor().getName() + " data: " + data.getData());} }
コンポジットとコンポーネントの状態を読取り可能にするには、次の変換メソッドを使用します。
private String getStateAsString (int state) { // note that this is dependent on wheter the composite state is // captured or not if (state == CompositeInstance.STATE_COMPLETED_SUCCESSFULLY) return ("success"); else if (state == CompositeInstance.STATE_FAULTED) return ("faulted"); else if (state == CompositeInstance.STATE_RECOVERY_REQUIRED) return ("recovery required"); else if (state == CompositeInstance.STATE_RUNNING) return ("running"); else if (state == CompositeInstance.STATE_STALE) return ("stale"); else return ("unknown"); }
たとえば、このコードをFusion OrderデモBamOrderBookingComposite
に対して実行すると、次のデータが返されます。
DN: default/BamOrderBookingComposite!1.0Instance: 40103 creation-date: Thu Jul 30 12:31:24 PDT 2009 state (-1): unknown -> componentinstance: EvaluatePreferredSupplierRule type: decision state: success -> componentinstance: FulfillOrder type: mediator state: success -> componentinstance: InternalWarehouseService type: bpel state: unknown -> componentinstance: OrderProcessor type: bpel state: unknown -> componentinstance: RequiresApprovalRule type: decision state: success -> componentinstance: PartnerSupplierMediator type: mediator state: success -> Sensor: CreditCardAuthResultSensor data: APPROVED -> Sensor: OrderBookingCompositeProcessorResult data: 900 -> Sensor: OrderProcessingStart data: Order 900
APIとパッケージの検索を開始しない場合、使用されるすべてのクラスは次の場所にあります。
oracle.fabric.common.*
oracle.soa.management.facade.*
oracle.soa.management.util.*