BPELアクティビティ・レベルでのSOAコンポジット・アプリケーションの監査

監査証跡データは、データベースに永続保存される状態データの大きな割合を占めることがよくあります。永続保存される状態データの量を削減するために、BPELプロセス・アクティビティ・レベルで細分性の高い監査レベルを指定できます。これらの設定は、サービス・コンポーネント、SOAコンポジット・アプリケーション、BPELプロセス・サービス・エンジン、およびSOAインフラストラクチャのレベルで構成された監査証跡設定より優先されます。

次の手順を実行します。

  • SOAコンポジット・アプリケーション内でBPELアクティビティに対して実行する監査のレベルを定義する、監査ポリシーXMLファイルを作成および構成します。

  • 監査ポリシーをBPELプロセスにバインドする監査ポリシー・バインディングXMLファイルを作成し、構成します。

  • composite.xmlファイルと同じディレクトリ・ロケーション、またはcomposite.xmlファイル内のプロパティで指定した別のディレクトリに、これらのファイルを配置します。

  • SOAコンポジット・アプリケーションをSOAインフラストラクチャにデプロイします。

  • Oracle Enterprise Manager Fusion Middleware ControlのSOAコンポジット・アプリケーションのフロー・トレース内で、BPELプロセス・アクティビティの監査証跡を表示します。

次のガイドラインに留意してください。

  • 監査ポリシーは、標準のBPEL 1.1および2.0のアクティビティおよびスコープと、BPEL拡張アクティビティ(たとえば、電子メール、通知、その他すべて)の両方の監査をサポートします。親スコープ内で、監査対象にする特定の子スコープ、および監査対象にしないその他の子スコープを構成できます。

  • サポートされる監査レベルを表50-7に示します。

    表50-7 監査レベル

    レベル 説明

    Inherit

    ロギングは、Oracle Enterprise Manager Fusion Middleware Controlの「SOAインフラストラクチャの共通プロパティ」ページで設定したSOAインフラストラクチャ監査レベルと一致します。これがデフォルトの設定です。

    Production

    ビジネス・フロー・インスタンスに関する最小限の情報が収集されます。たとえば、BPELプロセス・サービス・エンジンはペイロードを収集しません。したがって、フローの監査証跡でペイロード詳細は使用できません。このレベルは、標準の操作とテストに最適です。

    Development

    BPELプロセス・アクティビティに関する完全な情報が収集されます。このオプションを選択すると、コンポジット・インスタンスのトラッキングとペイロード・トラッキングの両方が実行されます。ただし、メッセージ・フローの各ステップでペイロードが格納されるため、パフォーマンスに影響を与える可能性があります。この設定は、デバッグする際に便利です。

    Off

    ロギングは実行されません。コンポジット・インスタンスのトラッキング情報とペイロード・トラッキング情報は収集されません。

  • フォルト・ポリシー・バインディング・ファイルでは、プロセス名とリビジョン番号のワイルドカード・マッチングがサポートされています。例:

    • Order*と入力すると、コンポジットOrderProcessOrderRejected、およびOrderConfirmedに含まれるBPELプロセス・サービス・コンポーネントに一致します。

      <process auditPolicy="noLoops" name="Order*"/>
      
    • 1*と入力すると、コンポジット・リビジョン1.01.1、および1.2に一致します。

      <process auditPolicy="noAssign" name="*" revision="1.*"/>
      

次の例は、使用する監査ポリシー・スキーマを示しています。

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://schemas.oracle.com/bpel/auditpolicy"
   xmlns:xs="http://www.w3.org/2001/XMLSchema"
   xmlns:tns="http://schemas.oracle.com/bpel/auditpolicy"
   elementFormDefault="qualified">
   <!-- activity can have a type or a name as optional attribute.-->
   <!-- Audit rules apply to all activities if no specific type or name is -->
   <!-- provided -->
   <xs:complexType name="Activity">
        <xs:attribute name="type" type="xs:QName" use="optional"/>
        <xs:attribute name="name" type="tns:idType" use="optional"/>
        <xs:attribute name="auditLevel" type="tns:auditLevelType" use="required"/>
   </xs:complexType>
   <xs:simpleType name="idType">
        <xs:restriction base="xs:string">
             <xs:minLength value="1"/>
         </xs:restriction>
   </xs:simpleType>
   <xs:simpleType name="auditLevelType">
         <xs:restriction base="xs:string">
              <xs:enumeration value="off"/>
              <xs:enumeration value="minimal"/>
              <xs:enumeration value="production"/>
              <xs:enumeration value="development"/>
         </xs:restriction>
   </xs:simpleType>
   <xs:element name="auditPolicy">
        <xs:complexType>
             <xs:sequence>
                  <xs:element name="activity" type="tns:Activity" minOccurs="0"
                   maxOccurs="unbounded"/>
             </xs:sequence>
             <xs:attribute name="id" type="tns:idType" use="required"/>
             <xs:attribute name="version" type="xs:string" default="1.0"/>
        </xs:complexType>
        <!-- we restrict users to provide mulitple rules for same activity -->
        <xs:key name="UniqueActivity">
             <xs:selector xpath="tns:activity"/>
             <xs:field xpath="@type"/>
             <xs:field xpath="@name"/>
        </xs:key>
     </xs:element>
</xs:schema>

次の例は、使用する監査ポリシー・バインディング・スキーマを示しています。

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://schemas.oracle.com/bpel/auditpolicyBinding"
     xmlns:tns="http://schemas.oracle.com/bpel/auditpolicy"
      xmlns:xs="http://www.w3.org/2001/XMLSchema"
      elementFormDefault="qualified">
        <xs:complexType name="Process">
             <xs:attribute name="auditPolicyId" type="tns:idType" use="optional"/>
             <xs:attribute name="name" type="tns:idType" use="optional"/>
             <xs:attribute name="revision" type="tns:idType" use="optional"/>
        </xs:complexType>
        <xs:simpleType name="idType">
                <xs:restriction base="xs:string">
                       <xs:minLength value="1"/>
                </xs:restriction>
        </xs:simpleType>
        <xs:element name="auditPolicyBinding">
                <xs:complexType>
                       <xs:sequence>
                            <xs:element name="process" type="tns:Process"
                             minOccurs="0" maxOccurs="unbounded"/>
                        </xs:sequence>
                        <xs:attribute name="version" type="xs:string"
                         default="1.0"/>
                 </xs:complexType>
                 <xs:key name="UniqueActivity">
                       <xs:selector xpath="tns:process"/>
                       <xs:field xpath="@name"/>
                       <xs:field xpath="@revision"/>
                 </xs:key>
         </xs:element>
</xs:schema>