0

我在 mule 中构建了一个流程,该流程使用“Salesforce”连接器在 Salesforce 中创建了一个案例。现在我需要使用相同的 mule 流程将文件上传到该案例。这可以通过以下代码以编程方式完成:

尝试 {

    File f = new File("c:\java\test.docx");
    InputStream is = new FileInputStream(f);
    byte[] inbuff = new byte[(int)f.length()];        
    is.read(inbuff);

    Attachment attach = new Attachment();
    attach.setBody(inbuff);
    attach.setName("test.docx");
    attach.setIsPrivate(false);
    // attach to an object in SFDC 
    attach.setParentId("a0f600000008Q4f");

    SaveResult sr = binding.create(new com.sforce.soap.enterprise.sobject.SObject[] {attach})[0];
    if (sr.isSuccess()) {
        System.out.println("Successfully added attachment.");
    } else {
        System.out.println("Error adding attachment: " + sr.getErrors(0).getMessage());
    }


} catch (FileNotFoundException fnf) {
    System.out.println("File Not Found: " +fnf.getMessage());

} catch (IOException io) {
    System.out.println("IO: " +io.getMessage());            
}

但是为了简单起见,是否有任何骡子连接器可以自动完成所有这些并将文件附加到特定创建的案例中。

4

1 回答 1

0

是的,您可以为此使用 Salesforce Cloud 连接器。例子:

<file:file-to-byte-array-transformer />
<sfdc:create type="Attachment">
    <sfdc:objects>
        <sfdc:object>
            <body>#[payload]</body>
            <name>test.docx</name>
            <parentid>#[message.inboundProperties['mysfdcparentid']]</parentid>
        </sfdc:object>
    </sfdc:objects>
</sfdc:create>

在示例中,我将 sobject 类型设置为“附件”。

正文元素是文件本身。请注意,连接器将为您处理 base64 编码,您只需为其提供一个字节数组。如果您使用的是 File,则可以使用 file:file-to-byte-array-transformer 例如。

使用 MEL 设置 parentid 以从消息属性中获取值。因此,如果您有之前的 SFDC 操作,您可以使用 MEL 来提取之前 sobject 的值。

于 2013-04-10T09:21:06.653 回答