מה תרצה/י לחפש?
שמירת ZIP במחשב
כללי
קיימים מצבים, כמו לדוגמה בעבודה מול Doxi, שאנחנו צריכים לפנות ל API שיחזיר לנו ZIP. (למשל Attachments של תהליך)
במקרה כזה, כאשר נבצע קריאה ל API (או קריאה ישירה להורדת ZIP) נקבל הודעת שגיאה.
במקרה זה יש לאפשר גישה לסוג הקובץ הזה לעבור את EI.
הגדרת EI על מנת לאפשר גישה
- יש לפתוח את הקובץ axis2.xml במצב עריכה.
הקובץ נמצא בנתיב:
wso2ei-6.6.0\conf\axis2\axis2.xml - יש להוסיף רשימה לתגית messageBuilders –
<messageBuilder contentType="application/zip" class="org.apache.axis2.format.BinaryBuilder"/>
- יש להוסיף רשומה לתגית messageFormatters –
<messageFormatter contentType="application/zip" class="org.wso2.carbon.relay.ExpandingMessageFormatter"/>
הגדרות שמירת קובץ
לאחר הקריאה לקובץ (או ל API שיחזיר PDF), יש להוסיף שני מאפיינים (Properties):
שם הקובץ – אפשר לשים אותו קבוע או כמובן לשנות אותו עם expression
<property name="transport.vfs.ReplyFileName" scope="transport" type="STRING" value="attachments.zip"/>
OUT_ONLY – מאפיין חובה עם הערך true כדי לומר ל EI שאין צפי ל Response אחרי שהפעולה הבאה תתבצע (במקרה שלנו אחרי שמירת קובץ אין תגובה)
<property name="OUT_ONLY" scope="default" type="STRING" value="true"/>
- ביצוע קריאה לקובץ מקומי – הוא תקיית היעד אליה אנחנו רוצים לשמור את הקובץ
דוגמת קוד:
<?xml version="1.0" encoding="UTF-8"?>
<sequence name="saveAttachmentsFromDoxi" trace="disable" xmlns="http://ws.apache.org/ns/synapse">
<call>
<endpoint>
<http method="get" uri-template="https://doxi-sign.com/api/ex/flow/{uri.var.signFlowId}/attachments">
<suspendOnFailure>
<initialDuration>-1</initialDuration>
<progressionFactor>1</progressionFactor>
</suspendOnFailure>
<markForSuspension>
<retriesBeforeSuspension>0</retriesBeforeSuspension>
</markForSuspension>
</http>
</endpoint>
</call>
<property name="transport.vfs.ReplyFileName" scope="transport" type="STRING" value="attachments.zip"/>
<property name="OUT_ONLY" scope="default" type="STRING" value="true"/>
<call>
<endpoint>
<address uri="vfs:file:///C:/WSO2/Files/Globrands">
<suspendOnFailure>
<initialDuration>-1</initialDuration>
<progressionFactor>1</progressionFactor>
</suspendOnFailure>
<markForSuspension>
<retriesBeforeSuspension>0</retriesBeforeSuspension>
</markForSuspension>
</address>
</endpoint>
</call>
<respond/>
</sequence>