ヘッダーをスキップ
Oracle Fusion Middleware Oracle SOA SuiteおよびOracle Business Process Management Suite管理者ガイド
11g リリース1(11.1.1)
B55916-02
  ドキュメント・ライブラリへ
ライブラリ
製品リストへ
製品
目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

9 SOAコンポジット・アプリケーションのプログラムによる管理

この章では、SOAコンポジット・アプリケーションをプログラムで管理するためのFacade APIの概要を示します。

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

9.1 SOAコンポジット・アプリケーションのプログラムによる管理の概要

実行時に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 リファレンスを参照してください。


注意:

Infrastructure Management Java APIには、SOAコンポジット・アプリケーションのインバウンド呼出しおよびOracle Service Bus(OSB)または別のSOAコンポジット・アプリケーションのアウトバウンド呼出し用の直接バインディング呼出しAPIも含まれます。直接バインディング呼出しAPIの使用については、『Oracle Fusion Middleware Oracle SOA Suite開発者ガイド』を参照してください。

9.2 Facade APIインタフェース

表9-1に、Facade APIインタフェースの概要を示します。

表9-1 Facade APIインタフェース

インタフェース 説明

ActivityInstance

このアクティビティが属するインスタンスのインスタンスID(キー)、コンポーネント名、アクティビティの作成日、現在のアクティビティの有効期限などを取得します。

AsynchronousJob

非同期ジョブ・タイプに関する詳細を取得します。

AsynchronousResult

非同期プロセスの結果を取得します。

Binding

URI、タイプ、サブタイプなどのバインディングの詳細を取得します。

BindingComponent

特定のフォルト・フィルタで指定されたバインディング・タイプとフォルトのリストを取得します。

BusinessEventInfo

一貫性レベル、フィルタ・タイプ、ローカル名、ネームスペースURI、接頭辞など、ビジネス・イベントの詳細を取得します。

Component

識別名(DN)、アクティブなインスタンス、失敗したインスタンス、インスタンスの合計、デプロイメント時間など、コンポーネントの詳細を取得します。

ComponentInstance

監査証跡、コンポーネント・インスタンスの状態(正常に完了、失敗、実行中など)、対話ID、作成日など、コンポーネント・インスタンスの詳細を取得します。

Composite

識別名(DN)、アクティブなインスタンス、失敗したインスタンス、インスタンスの合計、デプロイメント時間など、コンポジットの詳細を取得します。

CompositeInstance

コンポジット・インスタンスの状態(正常に完了、失敗、実行中など)を取得します。

EventBridge

特定のフォルト・フィルタで指定されたイベント・ブリッジ・タイプとフォルトのリストを取得します。

Fault

フォルトがバインディング・コンポーネントで発生した場合のバインディング・タイプ、コンポーネント・インスタンスID、フォルトが発生したコンポーネントの名前、フォルトが生成された時刻、フォルトがサービス・エンジンで発生した場合のエンジン・タイプなど、フォルトの詳細を取得します。

FaultRecoveryActionTypeConstants

インスタンスの中断、失敗したアクティビティを完了としてマーク、拒否されたメッセージをファイルに格納、失敗したアクティビティをリカバリ済としてマーク、アクティビティの再試行など、アクションのタイプを提供します。

FaultRecoveryResult

フォルト、エラー、リカバリ可能なフォルト、リカバリできないフォルトなどを取得します。

FaultRecoveryServiceEngine

フォルト・リカバリ・サービス・エンジンを提供します。

ImportInfo

インポートされたリソースの場所とインポート・タイプを取得します。

InterfaceType

コールバック・インタフェースとインタフェースのプロパティを取得します。

Locator

Facade APIクライアントのエントリ・ポイントとしてメソッド・インタフェースを公開します。

Message

コンポーネント名、コンポジットDN、メッセージの内容、対話ID、メッセージの格納場所、メッセージのリカバリ可能状態など、メッセージの詳細を取得します。

Partition

パーティション内のすべてのコンポジットの開始、停止、アクティビティ化、リタイアなど、パーティション化のライフ・サイクル管理タスクを実行します。

Property

プロパティのデフォルト値、名前、オーバーライド属性値、プロパティ値のソースなど、プロパティの詳細を取得します。

Reference

ターゲット・サービスのWSDL URL、参照のプロパティ、参照名、参照バインディングなど、参照の詳細を取得します。

ReferenceInstance

バインディングのタイプを取得します。コンポジットのDN、コンポジット・インスタンスID、インスタンスの作成時刻などです。

ServerManager

パーティションを取得および作成します。

Service

バインディング、コンポジットDN、インタフェース・タイプ、名前、多重度など、サービスの詳細を取得します。

ServiceEngine

サービス・エンジンでデプロイされたコンポーネントのリスト、エンジン・タイプ、および特定のフォルト・フィルタで指定されたフォルトのリストを取得します。

ServiceInstance

バインディングのタイプなどのサービス・インスタンスの詳細を取得します。コンポジットのDN、コンポジット・インスタンスID、作成時刻などです。

WebServiceBinding

デフォルト・アドレスURI、エンドポイント・アドレスURI、ポート、トランスポート・タイプなどを取得します。

WebServiceBindingPort

ポート名、ポートURI、サービス名などを取得します。

WireInfo

ワイヤ参照、ワイヤ・サービス、ソースURIおよびターゲットURIを取得します。

WSDLInterfaceBinding

WSDL URLを取得します。


9.3 Facade APIの例

この項では、Facade APIを使用してコンポジット管理を実行する例をいくつか示します。

9.3.1 コンポジットの状態の取得

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

9.3.2 インスタンスの検索

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.*