Flex Gateway新着情報
Governance新着情報
Monitoring API Managerこのコアコンポーネントは、障害が発生したかのように Mule エラーを生成し、その説明および種別をカスタマイズできます。
このコンポーネントは、次のエラーを生成するためにのみ使用します。
MULE:SECURITY
、MULE:CONNECTIVITY
などのコアランタイムエラー。
カスタムエラー種別。
別のコネクタや FILE:FILE_NOT_FOUND や JSON:INVALID_SCHEMA などのモジュールからエラーを発生させることはできません。コネクタの既存の名前空間を使用することはできません。
|
項目 | 値 | 説明 | 例 |
---|---|---|---|
説明 |
String (文字列) または DataWeave 式 |
エラーの説明を指定します。 |
|
型 |
String (文字列) |
エラーの種別を指定します。 |
|
コアランタイムエラー種別では、暗黙的な名前空間および識別子を使用する必要があり、エラーの説明メッセージのみカスタマイズできます。次に例を示します。
<raise-error type="MULE:CONNECTIVITY" description="Error description message"/>
カスタムエラー種別では、新しい名前空間を宣言します。エラー種別の名前空間は、エラーの起源を特定するのに役立ちます。次に例を示します。
<raise-error type="ORDER:INVALID_DATA" description="Email is invalid. Cannot complete transaction"/>
コネクタまたはモジュールでは定義済みの名前空間があるため、これらから既存の名前空間を使用することはできません。
raise-error
で使用することでカスタム名前空間を宣言した場合は、他の raise-error
コンポーネントおよびカスタム種別で使用できます。
次の運転教習プラットフォームの例では、ユーザーが運転可能な 16 歳以上であることを確認します。ユーザーが 16 歳未満の年齢を入力すると、フローで PRECONDITIONS:INCORRECT_AGE
エラーが生成されます。
Choice Router コンポーネントにより、条件処理がフローに追加されます。
要求で送信された age パラメーターが 16 http://localhost:8081/test?age=15
未満の場合、Raise Error コンポーネントでエラー種別 PRECONDITIONS:INCORRECT_AGE
と説明 Minimum age of 16 required to drive
が生成されます。
次に、On-Error Continue コンポーネントでエラー PRECONDITIONS:INCORRECT_AGE
の種別が照合され、そのスコープ内で Logger コンポーネントが実行されます。Logger コンポーネントによってエラーメッセージ Minimum age of 16 required to drive
が記録されます。
要求 http://localhost:8081/test?age=17
の age パラメーターが 16 より大きい場合、Logger コンポーネントでデフォルトのメッセージ「User age above 16 years.
」が返されます。` Allowed to drive` が返されます。
要求 http://localhost:8081/test
で age パラメーターが渡されない場合、式 #[message.attributes.queryParams.age < 16]
を評価しようとしたときに Choice コンポーネントで自動的に MULE:EXPRESSION
エラーが生成されます。これは、要求で age パラメーターが指定されなかったことで、その値が null になっているためです。
次に、On-Error Continue コンポーネントでエラー MULE:EXPRESSION
の種別が照合され、そのスコープ内で Logger コンポーネントが実行されます。Logger コンポーネントによってメッセージ The parameter age is missing or invalid
が返されます。
フローの XML 設定:
<http:listener-config name="HTTP_Listener_config">
<http:listener-connection host="0.0.0.0" port="8081" />
</http:listener-config>
<flow name="raise-error-example-flow">
<http:listener config-ref="HTTP_Listener_config" path="/test"/>
<choice>
<when expression="#[message.attributes.queryParams.age < 16]">
<raise-error type="PRECONDITIONS:INCORRECT_AGE" description="Minimum age of 16 required to drive" />
</when>
<otherwise >
<logger level="INFO" message="User age above 16 years. Allowed to drive"/>
</otherwise>
</choice>
<error-handler >
<on-error-continue enableNotifications="true" logException="true" type="PRECONDITIONS:INCORRECT_AGE">
<logger level="INFO" message="Minimum age to drive is 16 years old"/>
</on-error-continue>
<on-error-continue enableNotifications="true" logException="true" type="MULE:EXPRESSION">
<logger level="INFO" message="The parameter age is missing or invalid"/>
</on-error-continue>
</error-handler>
</flow>
https://unsecurebank.com/balance
に対して要求を行ったときに勘定残高を返す API を考えます。
次の例では、この API に対する要求を行って値を balance
変数に保存し、payload.amount
と比較して操作が可能かどうかを判断します。
振込金額が利用可能残高を超えると Choice Router で ACCOUNT:INSUFFICIENT_FUNDS
エラーが生成され、振込が行われないようにします。さらに、失敗の詳細が含まれる式を提供することで、動的な説明が生成されます。
フローの XML 設定:
<flow name="raise-error-example-flow">
<http:request url="https://unsecurebank.com/balance" target="balance"/>
<choice>
<when expression="#[payload.amount > vars.balance]">
<raise-error type="ACCOUNT:INSUFFICIENT_FUNDS" description="#['Cannot transfer $(payload.amount) since only $(vars.balance) are available.']"/>
</when>
</choice>
<http:request url="https://unsecurebank.com/transfer"/>
</flow>