מה תרצה/י לחפש?
שימוש במדיאטור Clone
מדיאטור זה מאפשר לשכפל הודעה למספר הודעות זהות, אך לא רק.
ניתן להשתמש בו גם לביצוע פעולות מקביליות שאינן תלויות אחת בשנייה.
להלן דוגמה – נניח ורוצים לבצע שתי קריאות (או יותר) ל-API של Doxi:
- פנייה ל-Sequence שנקרא SavePdfFromDoxi – כאן תבוצע פנייה ל-Doxi לקבלת Token ואחר כך תבוצע קריאה נוספת להורדת המסמך החתום.
בסיום, הקובץ ישמר על המחשב כ-PDF.
מאחר ואנו נעזרים ב-Property מסוג OUT_ONLY, הפעולה של השמירה מבוצעת מבלי להמתין לתגובה, וזה עלול להתנגש עם פעולות נוספות שקורות לאחר מכן. - פנייה ל-Sequence שנקרא SaveAttachmentFromDoxi – כאן תבוצע פנייה ל-Doxi לקבלת Token ואחר כך תבוצע קריאה נוספת להורדת כל הצרופות מתוך התהליך.
בסיום, הקובץ ישמר על המחשב כ-ZIP.
מאחר ואנו נעזרים ב-Property מסוג OUT_ONLY, הפעולה של השמירה מבוצעת מבלי להמתין לתגובה, וזה עלול להתנגש עם פעולות נוספות שקורות לאחר מכן.
את שתי הפעולות לעיל נדרש להריץ במקביל וללא הפרעות.
לשם כך, מדיאטור Clone יכול לסייע, להלן דוגמת קוד:
<clone continueParent="true">
<target>
<sequence>
<property action="remove" name="TRANSPORT_HEADERS" scope="axis2"/>
<header name="X-Tenant" scope="transport" value="hello-doxi"/>
<header expression="fn:concat('Bearer ', get-property('token'))" name="Authorization" scope="transport"/>
<sequence key="savePdfFromDoxi"/>
</sequence>
</target>
<target>
<sequence>
<property action="remove" name="TRANSPORT_HEADERS" scope="axis2"/>
<header name="X-Tenant" scope="transport" value="hello-doxi"/>
<header expression="fn:concat('Bearer ', get-property('token'))" name="Authorization" scope="transport"/>
<sequence key="saveAttachmentsFromDoxi"/>
</sequence>
</target>
</clone>
בדוגמה שלעיל, אנו מריצים שני Sequences שאינם תלויים אחד בשני וכל אחד מהם יכול להסתיים בזמן אחר.
בכל Target, אנו מפנים ל-Sequence אחר לביצוע הפעולות שתוארו לעיל, אך כמובן שניתן לבצע ישירות את הפעולות כאן.
האלמנט <Sequence> יכול להכיל End-Point או Sequence.