מה תרצה/י לחפש?
Fault Sequence
תפקידו של הfault sequence הוא לייצר רצף פעולות מסוים במקרה של שגיאה ולספק לנו מידע אודותיה.
ישנם 4 מאפיינים המספקים מידע על השגיאה:
ERROR_CODE – מזהה השגיאה
ERROR_MESSAGE – הודעת השגיאה
ERROR_DETAIL – פרטים נוספים אודות השגיאה
ERROR_EXCEPTION – השגיאה שנזרקה
כאשר מילים אלו הן מילים שמורות במערכת.
נצטרך להגדיר אותו בתוך הresource בצורה הבאה:
<resource faultSequence="Sequence_name" methods="POST">
וכעת נצטרך לייצר את ה sequence שנרצה שיפעל בעת שגיאה.
בהמשך לדוגמא שלנו- "Sequence_name" שולח מייל באמצעות mailgun עם פרטים אודות השגיאה ובנוסף מדפיס log עם פרטי השגיאה:
<sequence name="Sequence_name" trace="disable" xmlns="http://ws.apache.org/ns/synapse">
<property name="RecpMail" scope="default" type="STRING" value="[email protected]"/>
<property name="RecpMail2" scope="default" type="STRING" value="[email protected]"/>
<log>
<property expression="get-property('ERROR_EXCEPTION')" name="ERROR_EXCEPTION"/>
<property expression="get-property('ERROR_MESSAGE')" name="ERROR MESSAGE"/>
<property expression="get-property('ERROR_DETAIL')" name="ERROR DETAIL"/>
<property expression="get-property('ERROR_CODE')" name="ERROR CODE"/>
</log>
<payloadFactory media-type="json">
<format>{"domain":"domain","from":"[email protected];","to":"$5,$6","subject":"Test Mail","template":Fault Seq Mail",
"h:X-Mailgun-Variables":"{\"ERROR_CODE\":\"$1\",\"ERROR_MESSAGE\":\"$2\",\"ERROR_DETAIL\":\"$3\",\"ERROR_EXCEPTION\":\"$4\"}"}</format>
<args>
<arg evaluator="xml" expression="get-property('ERROR_CODE')"/>
<arg evaluator="xml" expression="get-property('ERROR_MESSAGE')"/>
<arg evaluator="xml" expression="get-property('ERROR_DETAIL')"/>
<arg evaluator="xml" expression="get-property('ERROR_EXCEPTION')"/>
<arg evaluator="xml" expression="get-property('RecpMail')"/>
<arg evaluator="xml" expression="get-property('RecpMail2')"/>
</args>
</payloadFactory>
<header name="Content-Type" scope="transport" value="application/x-www-form-urlencoded"/>
<header name="Authorization" scope="transport" value="ghgjgjgggjgjgjgygugbhhhkjhkjTUyMjJkYjU1"/>
<property name="messageType" scope="axis2" type="STRING" value="application/x-www-form-urlencoded"/>
<property name="DISABLE_CHUNKING" scope="axis2" type="STRING" value="true"/>
<call>
<endpoint>
<http method="post" uri-template="https://api.eu.mailgun.net/v3/mg.doxi-sign.com/messages">
<suspendOnFailure>
<initialDuration>-1</initialDuration>
<progressionFactor>-1</progressionFactor>
<maximumDuration>0</maximumDuration>
</suspendOnFailure>
<markForSuspension>
<retriesBeforeSuspension>0</retriesBeforeSuspension>
</markForSuspension>
</http>
</endpoint>
</call>
</sequence>