我需要从Siebel服务器读取几个文本文件并将它们附加到电子邮件中。但是,其中一些文件可能太大而无法邮寄。压缩它们肯定会解决问题,因为它们是纯文本文件。
这引出了我的问题:如何在Siebel中压缩文件?在Siebel 7.8中是否有任何内置的业务服务/工作流/提供压缩功能?我不关心文件格式:zip,tar.gz,7z ......,只要我可以提取Siebel文件(请不要.SAF格式)。
我们的存储库中有1.041个vanilla业务服务。有人可能认为,如此庞大的数字,应该有一个压缩文件,对吧?我希望如此......但我还没有找到它。
我知道我可以编写一个非常简单的Java类来执行压缩,然后将其作为Java BS从Siebel中使用...但是如果有替代方法,我宁愿避免使用此选项。
答案 0 :(得分:1)
我还没有找到任何压缩文件的内置业务服务。但是,我已经设法构建了自己的,使用Clib.system
来调用Solaris命令tar
和gzip
。这很简单,你只需将它包装在商业服务中:
// Input:
// - files: array of files to compress (each element should contain the full path)
// - target: full path to the file to be created, without the .tar.gz extension
function compress (files, target)
{
// Build the tar file. We add the files one each time because passing long command lines
// to Clib.system crashes the server
for (var i = 0; i < files.length; i++) {
var mode = (i == 0 ? "c" : "r");
var command = "tar -" + mode + "f " + target + ".tar " + files[i].replace(/\s/g, "?");
if (Clib.system(command) != 0) {
throw "Error creating tar file";
}
}
// Build the tar.gz file
var command = "gzip -c " + target + ".tar > " + target + ".tar.gz";
if (Clib.system(command) != 0) {
throw "Error creating tar.gz file";
}
}