基本自定义 > Windchill 自定义基础 > 管理自定义 > 使用 Windchill 队列进行自定义
使用 Windchill 队列进行自定义
Windchill 队列提供了一种方法,用于安排可在后台运行的低优先级工作。许多预设 Windchill 服务会针对低优先级工作活动创建和使用队列。这些功能也适用于用户自定义。
在不断努力提高 Windchill 的安全性和稳定性过程中,已将访问控制检查添加到所有公共队列 API 中。对于所有未来的自定义 (使用队列),这意味着对队列服务的所有调用都必须先设置管理员或绕过访问控制。否则,系统会抛出未授权异常。
示例代码
设置管理员时,应遵循以下代码模式:
SessionContext previous = SessionContext.newContext();
try {
SessionHelper.manager.setAdministrator();
// make calls to Queue Service
}
finally {
SessionContext.setContext(previous);
}
绕过访问控制时,应遵循以下代码模式:
boolean previous = SessionServerHelper.manager.setAccessEnforce(false);
try {
// make calls to Queue Service
}
finally {
SessionServerHelper.manager.setAccessEnforced(previous);
}
大型序列化队列参数的性能影响
在 Windchill 中,队列条目参数通常作为 BLOB 以序列化 Java 对象的形式存储在数据库中。如果这些对象较大,会通过以下方式对系统性能产生负面影响:
拖慢队列处理速度 - 大型 BLOB 的反序列化需要较长时间,从而延迟执行任务。
增加内存使用量 - 反序列化大型对象会占用更多的堆空间,这会导致频繁的垃圾收集和潜在的内存问题。
降低 UI 和系统性能 - 繁重的队列处理任务会降低 UI 呈现和整体系统响应速度。
配置队列输入参数的最佳做法
保持队列参数精简 - 确保目标大小在几兆字节以内。由此降低内存开销,提高处理效率。
避免直接传递大型数据 - 不要序列化和传递大型数据结构,如映射、列表或自定义对象。大型序列化对象可能会引发性能瓶颈。
使用可扩展的可持续对象 - 将复杂数据或大型数据建模为 Windchill 可扩展的可持续对象。这些对象是版本化的可持续对象,可以在不破坏兼容性的情况下进行扩展。
传递对象参考而非完整对象 - 通过 ObjectReference 引用可持续对象。这样可以保持队列条目轻量化,并且只有在需要时才允许检索数据。
这对您有帮助吗?