2013-04-10 43 views
0

将文件上传到salesforce我构建了一个使用'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());    
} 

但是,为了简单起见,确实有它自动完成这一切,一个文件附加到特定的创建情况下,任何骡子连接器。

回答

0

是的,您可以使用Salesforce云连接器。示例:

<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类型设置为'Attachment'。

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

使用MEL设置parentid以从消息属性中获取值。所以如果你有一个以前的SFDC操作,你可以使用MEL来提取前一个sobject的值。

+0

是否可以创建一个案例并一次附加到该案例 – 2013-04-25 05:48:47

+0

要创建案例,我将sobject类型设置为'案例'。并附上一个文件,我正在设置sobject类型为'附件',如你所说。是否可以在单个Salesforce云连接器上执行这两个操作。 – 2013-04-25 05:57:50