关于上传附件的流程设计方案
最近在进行流程配置的时候遇到一个问题。就是在系统中需要做一个通过 RPA 上传附件。
场景是这样的,创建企业档案,分别上传客户的基本信息(营业执照)和业务信息(资质证书等)的扫描件或者 PDF 格式的文件。
问题是,上传附件的时候,每次上传的附件数以及名称是不确定的。如何识别需要上传的附件成为了困难。好在我们有强大后备服务保障团队,最后有了完美的解决方案。在这里跟大家一起分享一下,如果大家有好的建议,也可以跟帖留言我们一起学习进步。
我们的方案是这样的:
1、统一附件上传路径,所有企业的附件信息放在统一的路径下,供后续文件上传识别固定的路径;
2、规范需要上传的附件名称,比如 企业编码 + 业务类型码(基本信息 01;业务信息 02)+ 流水;
3、根据不同的业务类型分别创建流程,索引所有需要上传的附件。我有两个业务类型所以创建了两个流程。在系统界面获取客商编码,在使用【查找文件】组件,设置包含条件为【企业编码 + 业务类型编码】。这样就会获取到对应该企业的所有文件。
4、解析查找到的文件获取文件名称,循环执行附件上传。通过【查找文件】组件获取的是带路径的文件
其实我们只需要获取文件夹下的文件名就行,所以这时候我们可以通过两种方式来实现转换
第一种,通过【split】组件获取文件名称
第二种就是写全局函数了,将查找的文件的结果传进来,通过 os.path.basename 返回名称
import os.path
import ubpa.ifile as ifile
def com(mom_str):
file = os.path.basename(mom_str)
return file
到现在,文件路径解决了,文件名称命名和获取解决了。就可以通过循环去执行上传的流程了。但是还有一个问题。解决附件重复上传的问题。
5、再单独创建一些文件夹,用来存放已经上传过的附件。附件创建成功后,将其剪切到到这个路径下。保证第一个路径下的附件都是需要上传的。可以考虑【拷贝文件】、【删除文件】。
我最开始使用的是【移动文件】,但是在流程执行的时候,会报错,提示程序正在使用进程无法访问。我把日志也贴出来,供大家分析讨论。
原因可能是查找文件后用到了 for 循环,这时候文件是被占用状态,直到循环结束占用锁才会被释放。所以我的处理方式是,创建 Excel 文件。记录查找文件的路径。在附件上传完毕后,再读取 Excel 的记录移除文件。这时候文件状态是自由状态的是可以被删除修改的。
很遗憾,这是个 windows 问题,windows 文件有占用机制,一个文件被占用了,别的程序就不能使用,和 rpa 没关系,你要找出谁在占用他,并关掉那个程序