条件

条件によって、エラーまたはフォルト条件を識別し、特定のエラーやフォルト条件が発生した際に、実行するアクションを指定できます。たとえば、サービスを利用できないことで発生する特定のエラーに対しては、再試行などを実行できます。同様に、Schematron検証に失敗して発生するエラーに対しては、管理者操作のアクションを実行できます。このフォルトは、Oracle Enterprise Manager Fusion Middleware Controlを使用して、ペイロードを編集して再送信することによって手動でリカバリできます。

条件は、次の例に示すようにfault-policies.xmlファイルに定義されます。

<Conditions>
      <faultName xmlns:medns="http://schemas.oracle.com/mediator/faults"
       name="medns:mediatorFault">
          <condition>
            <test>contains($fault.mediatorErrorCode,"TYPE_DATA_TRANSFORMATION")</test>
             <action ref="ora-java"/>
          </condition>
      </faultName>
      <faultName xmlns:medns="http://schemas.oracle.com/mediator/faults"
name="medns:mediatorFault">
        <condition>
         <test>contains($fault.mediatorErrorCode, "TYPE_FATAL_MESH")</test>
          <action ref="ora-retry"/>
        </condition>
      </faultName>
      <faultName xmlns:medns="http://schemas.oracle.com/mediator/faults"
name="medns:mediatorFault">
        <condition>
         <test>contains($fault.mediatorErrorCode,"TYPE_DATA_ASSIGN")</test>
          <action ref="ora-retry-crm-endpoint"/>
        </condition>
      </faultName>
</Conditions>

条件を使用したフォルト・タイプの識別

条件を使用して取得可能なフォルトは、次のタイプに分類できます。

  • メディエータ固有のフォルト

    すべてのメディエータ固有のフォルトに対して、メディエータ・サービス・エンジンは1つのフォルト({http://schemas.oracle.com/mediator/faults}mediatorFault)のみをスローします。すべてのメディエータ・フォルトがこのフォルトにラップされています。メディエータによって生成されたエラーまたはフォルトは、次の例に示す形式を使用して取得できます。

    <faultName xmlns:medns="http://schemas.oracle.com/mediator/faults" name="medns:mediatorFault">
    <!-- mediatorFault is a bucket for all the mediator faults -->
         <condition>
           <test>
     contains($fault.mediatorErrorCode, "TYPE_FATAL_MESH")
     </test> 
    <!-- Captures TYPE_FATAL_MESH errors -->
           <action ref="ora-retry"/>
         </condition>
       </faultName>
    
  • ビジネス・フォルトおよびSOAPフォルト

    エラーまたはフォルトは、フォルト・ペイロードに基づいたXPath条件を定義することで取得できます。次の例に詳細を示します。

    <faultName xmlns:ns1="http://xmlns.oracle.com/Customer"
     name="ns1:InvalidCustomer"> <!-- Qname of Business/SOAP fault -->
           <condition>
             <test>
    contains($fault.<PART_NAME>/custid, 1011)
     </test>
    <!-- xpath condition based on fault payload -->
             <action ref="ora-retry"/>
           </condition>
       </faultName>
    

    参照サービスがビジネス・フォルトを返した場合、そのフォルトはメディエータ・サービス・コンポーネントで処理できます。返されたフォルトは別のコンポーネントに転送したり、ファイル・アダプタなどのアダプタ・サービスにリダイレクトできます。また、イベントを発生させることもできます。ただし、ビジネス・フォルトに対してフォルト・ポリシーとフォルト・ハンドラの両方が定義されている場合は、フォルト・ポリシーがフォルト・ハンドラより優先されます。この場合、フォルト・ポリシーが正常に実行されると、メディエータ・サービス・コンポーネント内のフォルト・ハンドラは無視されます。

  • アダプタ固有のフォルト

    アダプタによって生成されたエラーまたはフォルトは、次の例に示す形式を使用して取得できます。

    <faultName xmlns:medns="http://schemas.oracle.com/mediator/faults" name="medns:mediatorFault">
       <condition>
         <test>$fault.faultCode = "1"</test> <!-- unique constraint violation in DB adapter-->
         <action ref="ora-retry"/>
       </condition>
     </faultName>