19 BPMでのフォルト処理の使用
Oracle BPMでのSOAフォルト管理フレームワークの使用方法を学習します。
19.1 フォルト管理フレームワークによるフォルト処理
Oracle SOA Suiteには、フォルトを処理するために一般的なフォルト管理フレームワークが用意されています。実行時にフォルトが発生すると、そのフォルトはフレームワークによって捕捉され、フォルト・ポリシー・ファイルに定義されているユーザー指定のアクションが実行されます。管理者操作が規定のアクションである状況でフォルトが発生した場合は、Oracle Enterprise Manager Fusion Middleware Controlからリカバリ・アクションを実行します。また、Oracle BPM Suiteに用意されているフォルト管理フレームワークを使用することもできます。
フォルト管理フレームワークの詳細は、『Oracle SOA SuiteでのSOAアプリケーションの開発』のフォルト管理フレームワークによるフォルトの処理に関する項を参照してください。
19.2 Oracle BPM Suiteのフォルト・ポリシーの設計
Oracle BPM Suiteに対してフォルト・ポリシーを設計し、実行できます。フォルト・ポリシー・ファイルには、フォルト条件および対応するフォルト・リカバリ・アクションを定義します。
フォルト・ポリシー・バインディング・ファイルによって、フォルト・ポリシー・ファイルに定義されているポリシーが次のいずれかに関連付けられます。
-
BPMNプロセスを含むコンポジット
-
Oracle BPMNプロセス・サービス・コンポーネント
-
参照バインディング・コンポーネント(別のBPMNプロセスやJCAアダプタなど)
Oracle BPM Suiteのフォルト・ポリシー・ファイルでサポートされているフォルト・リカバリ・アクションは、次のとおりです。
-
再試行
-
管理者操作
-
終了
-
Javaコード
-
スコープの再実行
-
フォルトの再スロー
ノート:
サポートされているフォルト・リカバリ・アクションの詳細は、『Oracle SOA SuiteでのSOAアプリケーションの開発』の自動フォルト・リカバリのフォルト・ポリシー・ファイルの作成に関する項を参照してください。
19.2.1 コンポジット・レベルのフォルト・ポリシーの設計
図19-1は、ProcessおよびFaultThrowerという名前のBPMNプロセス・サービス・コンポーネントが含まれたコンポジットを示しています。
図19-1 ProcessおよびFaultThrower BPMNプロセス・サービス・コンポーネントを含むコンポジット
「図19-1 ProcessおよびFaultThrower BPMNプロセス・サービス・コンポーネントを含むコンポジット」の説明
例19-1に、フォルト条件と、それに対応するfault-policies.xml
ファイルに定義されているフォルト・リカバリ・アクションを示します。条件は、実行時にフォルトを捕捉して、フォルトからリカバリするためのアクションに転送します。
例19-2に、fault-policies.xml
ファイルに定義されているフォルト・リカバリ・ポリシーをコンポジット全体に関連付けるフォルト・ポリシー・バインディング・ファイルを示します。
例19-1 フォルト・ポリシー・ファイル
<?xml version="1.0" encoding="UTF-8"?> <faultPolicies xmlns="http://schemas.oracle.com/bpel/faultpolicy" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <faultPolicy version="0.0.1" id="ravi_faultPolicy" xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.oracle.com/bpel/faultpolicy" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <Conditions> <!-- catches all --> <faultName> <condition> <action ref="Action-Retry"/> </condition> </faultName> </Conditions> <Actions> <Action id="Action-Abort"> <abort/> </Action> <Action id="Action-Retry"> <retry> <retryCount>3</retryCount> <retryInterval>10</retryInterval> <exponentialBackoff/> <retryFailureAction ref="Action-human-intervention"/> </retry> </Action> <Action id="Action-human-intervention"> <humanIntervention/> </Action> </Actions> </faultPolicy> </faultPolicies>
例19-2 フォルト・ポリシー・バインディング・ファイル
<?xml version="1.0" encoding="UTF-8" ?>
<faultPolicyBindings version="0.0.1"
xmlns="http://schemas.oracle.com/bpel/faultpolicy"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<composite faultPolicy="ravi_faultPolicy"/>
</faultPolicyBindings>
19.2.2 サービス・コンポーネント・レベルのフォルト・ポリシーの設計
図19-2は、BPMNThatFailsという名前のBPMNサービス・コンポーネントが参照バインディング・コンポーネント(この例では、ファイル・アダプタ)を呼び出すコンポジットを示します。
例19-3に、フォルト条件と、それに対応するfault-policies.xml
ファイルに定義されているフォルト・リカバリ・アクションを示します。条件は、実行時にフォルトを捕捉して、フォルトからリカバリするためのアクションに転送します。
例19-4に、fault-policies.xml
ファイルに定義されているフォルト・リカバリ・ポリシーをBPMNThatFails
BPMNサービス・コンポーネントに関連付けるフォルト・ポリシー・バインディング・ファイルを示します。
例19-3 フォルト・ポリシー・ファイル
<?xml version="1.0" encoding="UTF-8"?> <faultPolicies xmlns="http://schemas.oracle.com/bpel/faultpolicy" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <faultPolicy version="0.0.1" id="FailsTrulyPolicy" xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.oracle.com/bpel/faultpolicy" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <Conditions> <!-- catches all --> <faultName> <condition> <action ref="Action-human-intervention"/> </condition> </faultName> </Conditions> <Actions> <Action id="Action-Abort"> <abort/> </Action> <Action id="Action-Retry"> <retry> <retryCount>3</retryCount> <retryInterval>2</retryInterval> <exponentialBackoff/> </retry> </Action> <Action id="Action-human-intervention"> <humanIntervention/> </Action> </Actions> </faultPolicy> </faultPolicies>
例19-4 フォルト・ポリシー・バインディング・ファイル
<?xml version="1.0" encoding="UTF-8" ?> <faultPolicyBindings version="0.0.1" xmlns="http://schemas.oracle.com/bpel/faultpolicy" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <component faultPolicy="FailsTrulyPolicy"> <name>BPMNThatFails</name> </component> </faultPolicyBindings>
19.2.3 参照レベルのフォルト・ポリシー(BPMプロセスを呼び出す)の設計
図19-3は、Callerという名前のBPMNプロセスがProcessService1という名前の別のBPMNプロセスを参照として呼び出すコンポジットを示しています。
例19-5に、フォルト条件と、それに対応するfault-policies.xml
ファイルに定義されているフォルト・リカバリ・アクションを示します。条件は、すべてのフォルトを捕捉して、フォルトからリカバリするために管理者操作を必要とするアクションに転送します。
例19-6に、fault-policies.xml
に定義されているフォルト・ポリシーを参照に関連付けるfault-bindings.xml
ファイルを示します。
サービス参照を使用してプロセスを呼び出すときに、使用される参照はBPMNプロセス参照ではなく、BPMNプロセス(図19-3
のProcessService1)を呼び出すために作成された、Services.Externals.ProcessService1.reference
という名前の参照です。参照名は次のように作成されます。
-
ProcessService1
の参照名の先頭にServices.Externals.
が付きます。 -
ProcessService1
の参照名の末尾に.reference
が付きます。
fault-bindings.xml
ファイルに指定する参照名は、次のいずれかのファイルから取得できます。
-
例19-7に示すように、
process_name
.componentType
ファイルのreference
セクションから -
例19-8
に示すように、composite.xml
ファイルのwireセクションから
この参照は、BPMNプロセスを呼び出しますが、FTPサーバー、EJBコンポーネント、およびその他を呼び出すこともできます。
例19-5 フォルト・ポリシー・ファイル
<?xml version="1.0" encoding="UTF-8"?> <faultPolicies xmlns="http://schemas.oracle.com/bpel/faultpolicy" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <faultPolicy version="0.0.1" id="Policy0" xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.oracle.com/bpel/faultpolicy" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <Conditions> <!-- catches all --> <faultName> <condition> <action ref="Action-human-intervention"/> </condition> </faultName> </Conditions> <Actions> <Action id="Action-human-intervention"> <humanIntervention/> </Action> </Actions> </faultPolicy> </faultPolicies>
例19-6 フォルト・ポリシー・バインディング・ファイル
<faultPolicyBindings version="0.0.1"
xmlns="http://schemas.oracle.com/bpel/faultpolicy"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<!-- reference ProcessService1 calls BPMN component Process -->
<reference faultPolicy="Policy0">
<name>Services.Externals.ProcessService1.reference</name>
</reference>
</faultPolicyBindings>
例19-7 componentTypeファイル内の参照名
<componentType
. . .
. . .
<reference name="Services.Externals.ProcessService1.reference"
. . .
. . .
</reference>
</componentType>
例19-8 composite.xmlファイル内の参照名
<wire>
<source.uri>Caller/Services.Externals.ProcessService1.reference
</source.uri>
. . .
</wire>
19.2.4 参照レベルのフォルト・ポリシー(ファイル・アダプタを呼び出す)の設計
図19-4は、Callerという名前のBPMNプロセスがFolderListingという名前のファイル・アダプタを参照として呼び出すコンポジットを示しています。
例19-9に、フォルト条件と、それに対応するfault-policies.xml
ファイルに定義されているフォルト・リカバリ・アクションを示します。条件は、すべてのフォルトを捕捉して、フォルトからリカバリするために管理者操作を必要とするアクションに転送します。
例19-10に、fault-policies.xml
に定義されているフォルト・ポリシーを参照に関連付けるfault-bindings.xml
ファイルを示します。
例19-9 フォルト・ポリシー・ファイル
<?xml version="1.0" encoding="UTF-8"?> <faultPolicies xmlns="http://schemas.oracle.com/bpel/faultpolicy" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <faultPolicy version="0.0.1" id="Policy0" xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.oracle.com/bpel/faultpolicy" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <Conditions> <!-- catches all --> <faultName> <condition> <action ref="Action-human-intervention"/> </condition> </faultName> </Conditions> <Actions> <Action id="Action-human-intervention"> <humanIntervention/> </Action> </Actions> </faultPolicy> </faultPolicies>
例19-10 フォルト・ポリシー・バインディング・ファイル
<faultPolicyBindings version="0.0.1"
xmlns="http://schemas.oracle.com/bpel/faultpolicy"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<!-- reference FolderListing is a reference to a file adapter -->
<reference faultPolicy="Policy0">
<name>Services.Externals.FolderListing.reference</name>
</reference>
</faultPolicyBindings>
19.2.5 Oracle SOA SuiteとOracle BPM Suiteの参照命名規則の違いに関する必知事項
外部サービスの場合、フォルト・ポリシー・バインディング・ファイルで使用される参照名は、Oracle SOA SuiteとOracle BPM Suiteでは異なります。表19-1に詳細を示します。
表19-1 .componentTypeファイルとフォルト・ポリシー・バインディング・ファイルでの参照の命名規則
参照の命名規則 | .componentTypeファイル内のエントリ | フォルト・ポリシー・バインディング・ファイル内のエントリ |
---|---|---|
Oracle BPM Suiteの場合、命名規則は次のようになります。
|
<reference name= "Services.Externals.Synch_read. reference" ui:wsdlLocation="synch_read.wsdl"> <interface.wsdl interface= "http://xmlns.oracle.com/pcbpel/ adapter/file/UpdateTaskApps/ FaultPolicyApp/synch_read# wsdl.interface(SynchRead_ptt)"/> </reference> |
Oracle BPM Suiteの場合、次のように <reference faultPolicy="Policy0"> <name>Services.Externals.Synch_ read.reference</name> |
Oracle SOA Suiteの場合、参照名の先頭にも末尾にも名前は追加されません。 |
<reference name="Synch_read"
ui:wsdlLocation="synch_read.wsdl">
<interface.wsdl interface=
"http://xmlns.oracle.com/pcbpel/
adapter/file/UpdateTaskApps/
FaultPolicyApp/synch_read#
wsdl.interface(SynchRead_ptt)"/>
</reference> |
Oracle SOA Suiteの場合、次のように <reference faultPolicy="Policy0">
<name>Synch_read</name> |
ノート:
Oracle BPM SuiteとOracle SOA Suiteの両方からフォルトを捕捉する単一のフォルト・ポリシー・バインディング・ファイルを定義することもできます。