मैंने एक खच्चर प्रवाह बनाया है जो यह निर्धारित करता है कि एसएफटीपी के माध्यम से फाइलों का एक समूह डाउनलोड करना है या नहीं, बशर्ते वे सभी मौजूद हों।

मैं इसे जावा विधि का उपयोग करके निर्धारित करता हूं जो किसी फ़ोल्डर की सामग्री को पढ़ता है और फिर true या false देता है।

खच्चर प्रवाह की संरचना इस तरह दिखती है:

<spring:beans>
    <spring:bean class="com.test.FileCheck" name="invokeFileChecks"> 
</spring:bean>
</spring:beans>


<flow name="check-files" processingStrategy="synchronous">
<set-variable variableName="allFilesPresent" value="False" doc:name="Variable - all files present boolean"/>

        <invoke object-ref="invokeFileChecks" 
                method="checkFiles" 
                doc:name="Invoke folder scan" 
                methodArguments="#[flowVars.sftpHost], #[flowVars.sftpPort], #[flowVars.sftpUserName], #[flowVars.sftpPassword], #[flowVars.sftpRequestedFiles]"/>
        <echo-component doc:name="Echo"/> 

जावा विधि इस तरह दिखती है:

public boolean checkFiles(String hostname, int port, String username, String password, String fileList){        
    boolean filesPresentTrueOrFalse;

//logic to list folder contents of SFTP:
//If all files are present, return true, otherwise false.

return filesPresentTrueOrFalse;
}

मैं allFilesPresent को filesPresentTrueOrFalse का मान कैसे निर्दिष्ट कर सकता हूं?

1
Dev 26 फरवरी 2019, 20:59

2 जवाब

सबसे बढ़िया उत्तर

एक समृद्ध में आह्वान लपेटें। इस तरह परिणाम लक्ष्य संस्करण में जाएगा और पेलोड को अधिलेखित नहीं करेगा। यह आपके जावा को खच्चर के अंदरूनी हिस्सों से भी अलग रखेगा:

<enricher target="#[flowVars.allFilesPresent]">
            <invoke object-ref="invokeFileChecks" 
                    method="checkFiles" 
                    doc:name="Invoke folder scan" 
                    methodArguments="#[flowVars.sftpHost], #[flowVars.sftpPort], #[flowVars.sftpUserName], #[flowVars.sftpPassword], #[flowVars.sftpRequestedFiles]"/>
</enricher>

Enricher के पास केवल एक प्रोसेसर हो सकता है, इसलिए किसी भी समय किसी और चीज की जरूरत होती है, प्रोसेसर-चेन या फ्लो में रैप करें और फ्लो-रेफ का उपयोग करें।

0
Ryan Carter 27 फरवरी 2019, 00:37

खच्चर चरों को MuleMessage वर्ग।

MuleMessage का एक उदाहरण MuleEventContext से getMessage विधि से प्राप्त किया जा सकता है। घटना के संदर्भ को onCall को लागू करके अंतःक्षिप्त किया जाता है। rel="nofollow noreferrer">कॉल करने योग्य इंटरफ़ेस।

तो, आप बीन में Callable इंटरफ़ेस को लागू करने के साथ शुरू करें।

0
Yuri 26 फरवरी 2019, 21:16