如何在Siebel中压缩文件?

时间:2015-09-22 16:06:05

标签: compression siebel

我需要从Siebel服务器读取几个文本文件并将它们附加到电子邮件中。但是,其中一些文件可能太大而无法邮寄。压缩它们肯定会解决问题,因为它们是纯文本文件。

这引出了我的问题:如何在Siebel中压缩文件?在Siebel 7.8中是否有任何内置的业务服务/工作流/提供压缩功能?我不关心文件格式:zip,tar.gz,7z ......,只要我可以提取Siebel文件(请不要.SAF格式)。

我们的存储库中有1.041个vanilla业务服务。有人可能认为,如此庞大的数字,应该有一个压缩文件,对吧?我希望如此......但我还没有找到它。

我知道我可以编写一个非常简单的Java类来执行压缩,然后将其作为Java BS从Siebel中使用...但是如果有替代方法,我宁愿避免使用此选项。

1 个答案:

答案 0 :(得分:1)

我还没有找到任何压缩文件的内置业务服务。但是,我已经设法构建了自己的,使用Clib.system来调用Solaris命令targzip。这很简单,你只需将它包装在商业服务中:

// 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";
  }
}