其他功能 > 服务信息管理 > 自定义 Windchill Service Information Manager 和 Windchill Service Parts > 将自定义内容或文件添加到翻译包
  
将自定义内容或文件添加到翻译包
仅具有 Java 专业知识的 Windchill 管理员可执行此自定义操作。
您可以自定义翻译包创建过程,以将其他文件包含在翻译包中。例如,采用文本格式或 xml 文件格式的截止日期等元数据。自定义“核心翻译进程”工作流模板时,可向翻译包添加文件。执行此自定义的步骤如下:
1. 在工作流模板编辑器中打开“核心翻译进程”工作流模板。
2. Build Translation Package 节点后插入表达式自动机。
3. 配置此自动机节点的表达式,以调用根据业务需求来修改翻译包内容的自定义代码。
升级到 Windchill 的新版本后,将覆盖工作流进程模板的自定义。您需要在升级后的系统中重新应用自定义。
对于在翻译包创建完成后可调用自定义代码对该翻译包进行访问和修改的工作流代码,其相关示例如下所示:
String oldUser = null;
try {
String wfCreator = com.ptc.tml.utils.TMLUtils.getUserName(main.getCreator());
oldUser = com.ptc.tml.utils.TMLUtils.switchSessionPrincipal(wfCreator);
wt.fc.Persistable sourceObj = wt.primaryBusinessObject;
wt.vc.baeline.ManagedBaseline baseline = (wt.vc.baeline.ManagedBaseline) com.ptc.tml.utils.TMLUtils.getPersistable(baselineOid);
java.io.File packageFile = new java.io.File(newTranslationPackageName);

custom.doSomething(sourceObj, baseline, packageFile);

} catch (java.lang.Throwable t) {
Log.addError(t);
} finally {
com.ptc.tml.utils.TMLUtils.switchSessionPrincipal(oldUser);
}
需要在工作流自动机中分配会话承担者,以确保该工作流能够访问所有相关 Windchill 对象。默认情况下,将以管理员身份执行工作流;如果没有需要访问的 Windchill 对象,则不需要更改会话承担者。
下面的示例代码可用于通过翻译基线中的内容进行迭代来查找要添加到翻译包中的附加内容或元数据:
void doSomething(Persistable sourceObj, ManagedBaseline baseline, File packageFile) {
// open zip
for (EPMDocument doc : com.ptc.tml.utils.TranslationBaselineUtils.getBaselineDocuments(baseline))
Object extra = custom.traverse(doc);
custom.addToZip(zipFile, extra);
}
//close zip
}
无法通过标准 Java API 将文件附加到现有翻译 ZIP 文件。要修改翻译包压缩,请将翻译包中的全部内容复制到可更改或附加内容的新压缩文件中。新翻译包压缩文件创建完成后,自定义代码即可使用新翻译包文件替换原始文件。