微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用Mule 4

如何解决如何使用Mule 4

我正在尝试在java类修改有效负载(Excel文件)。我的要求是从该java类调用多个外部服务,DB等,并用数据丰富有效负载。我能够在Java方法中获得有效负载和变量。我无法修改有效负载。我尝试将有效负载转换为byte [],但尚未成功。 有什么方法可以从有效负载访问文件内容并在Java中对其进行修改

这是我的流程

<flow name="sftp-destination-Flow" doc:id="3d106103-4c59-49f6-a503-5553a23fd7c1">
    <set-variable value="#[attributes.fileName]" doc:name="FileName-Variable" doc:id="774b0e76-5407-42ce-a893-251dbb844630" variableName="fileName" />
    <set-variable value="${destination.folder}" doc:name="Folder-Variable" doc:id="cf45a917-456a-49b4-837b-15a1da0c2eb5" variableName="Folder" />
    <set-variable value="${destination.file.pad.timestamp}" doc:name="FolderPadTimeStamp-Variable" doc:id="855b9d92-cde9-4431-8c67-bbaa274a9fce" variableName="FilePadTimeStamp" />
    <java:invoke doc:name="File modification after encryption" doc:id="3e94f1e1-d878-447e-9289-1e4b43c7cd9a" instance="fileManager" class="com.company.FileManager" method="modifyMessage(Message,Map)">
        <java:args><![CDATA[#[{arg0 : message,arg1 : vars}]]]></java:args>
    </java:invoke>
</flow>

这是Java代码

public Object modifyMessage(Message message,Map<String,TypedValue<String>> vars) throws MessageTransformerException {
    byte[] fileContent = {};
    String archieveFilePath = "";
    
    TypedValue<Object> payload = message.getPayload();

    try {
        String fileName = vars.get("fileName").getValue();
        String dir = vars.get("Folder").getValue(); 
        String timestamp = vars.get("FilePadTimeStamp").getValue();
        // Todo Get data from web services and DB
        if (StringUtils.isNotBlank(dir)) {
            // Todo convert the payload into byte array and modify
        }
    } catch (Exception te) {
        logger.error("Exception caught during file modification operation: " + te.getMessage());
    }
    return payload;
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。