系统中有需求是将Siebel中的附件导出到指定目录并重命名,需要用到Clib.rename方法。
方法里两个参数中的FileName其实是指filePath+FileName,就是说此方法不仅可以改变方法名,而且连文件所在目录都可以修改。
值得一提的是,filePath既可以是本机目录,如“D:\XXXXX.XXX”,也可以是远程目录,如“192.168.XX.XX”。当filePath为远程目录时,需要注意两点:
- Siebel服务器的凭据管理器中,远程目录的用户名密码要写上,否则远程目录不能访问;
- 启动Siebel服务的用户需有远程目录的访问权限,否则你会发现用本地Client使用rename成功,Server使用失败;由于Win Server默认启动是本地系统账户,可能没有权限,这时Siebel服务须用Administrator启动(Linux环境不清楚。。)
Siebel附件导出到指定目录的步骤:
- 用附件BC.InvokeMethod("GetFile","XXXFileName")方法,解压文件到temp目录(与bin同级目录),参数XXXFileName是BC中存放文件名的字段名,返回filePath+fileName和是否成功;
- 如果成功,取得filePath+fileName,执行rename方法。
遗留问题:
- rename方法只返回成功失败,而不返回错误信息,需要知道错误信息日志在哪边查的到,否则只能猜。。
- 要达到移动文件的目的,Clib.system("copy ... ...")也可以,不过有系统局限性,另外需多加“\”转义,没有解决的问题是,中文文件名复制不了。