Raise Error コンポーネント

このコアコンポーネントは、障害が発生したかのように Mule エラーを生成し、その説明および種別をカスタマイズできます。

このコンポーネントは、次のエラーを生成するためにのみ使用します。

  • MULE:SECURITY​、MULE:CONNECTIVITY​ などのコアランタイムエラー。

  • カスタムエラー種別。

別のコネクタや FILE:FILE_NOT_FOUND​ や JSON:INVALID_SCHEMA​ などのモジュールからエラーを発生させることはできません。. コネクタの既存の名前空間を使用することはできません。

エラー生成設定

項目 説明

説明

String (文字列) または DataWeave 式

エラーの説明を指定します。

description="Error description message."

String (文字列)

エラーの種別を指定します。

type="CUSTOM:CUSTOM_ERROR"

コアランタイムエラー生成種別

コアランタイムエラー種別では、暗黙的な名前空間および識別子を使用する必要があり、エラーの説明メッセージのみカスタマイズできます。次に例を示します。

<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 &lt; 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>

Was this article helpful?

💙 Thanks for your feedback!