本篇文章主要提供苍穹与第三方系统附件集成的思路~
场景一:苍穹的附件信息同步至第三方系统
实现方案:采用接口集成的方式,有两种方案可以参考:
(1)苍穹自定义接口,第三方系统调用获取苍穹附件信息
(2)第三方定义接口,苍穹通过接口调用将附件信息传给第三方
注意事项:接口定义时,有以下两点需要关注:
(1)除了约定的业务需求字段外,还需要注意双方系统需存在唯一且具有相同的字段,可以是约定的编号或者是单据编号等;
(2)如果是第二种实现方式
根据调用第三方接口的触发时机,可以考虑定时任务传或者时实时触发调用,如果是定时任务传需注意考虑处理增量同步问题;
苍穹需要考虑已经同步过的是否能再次同步,同样的第三方需要考虑苍穹如果对同一个附件重复同步,需要覆盖或者是不做处理。
3. 附件信息的内容主要是苍穹提供一个url,第三方系统自行做处理
苍穹获取附件下载地址url:
//formId:单据编码,pkId:单据主键,attachKey:附件面板标识 List<Map<String, Object>> list = AttachmentServiceHelper.getAttachments( formId, pkId, attachKey) for (Map map : list) { String url = map.get("url").toString(); }
场景二:第三方系统将附件同步至苍穹
实现方案:调用苍穹的附件上传接口,attachment/upload.do或者/attachment/uploadFile.do,该接口会返回一个url地址,第三方获得该返回地址后,可以进行下一步的单据保存,即单据与附件进行绑定操作。如下说明:
(1)单个附件传输:参数为文件格式,即Multipart/form-data的请求方式,需注意处理请求头Content-Type,
设置为multipart/form-data; boundary=boundary,其中boundary分隔符可以自定义,如下图所示:
注:该方式attachment/upload.do与/attachment/uploadFile.do的区别是,/attachment/upload.do返回的是苍穹存储附件的真实地址,而attachment/uploadFile.do返回的是存储附件的临时地址,也可以通过参数tempstorage控制。
(2)多个附件传输:/attachment/uploadFile.do支持多个附件同步,files参数构造json数组,如下图所示:
推荐阅读