保留服务
保留服务可防止多个用户同时编辑一个对象。
使用此服务可限制两个或多个用户并行修改对象,而无需使用“检出”和“检入”操作或修改对象所需的其他锁定机制。
保留服务包含以下主要组件:
• 用于管理持久化对象保留的 Windchill 服务。
• 用于向编辑窗口添加保留控制的客户端工具。
• 用于向编辑窗口添加对象更新计数控制的客户端工具。
背景
保留服务最初创建时支持在编辑更改管理对象 (例如问题报告、更改请求和更改通告) 时进行并行控制。
更改对象不支持“检出”和“键入”操作。因此,两个用户可以同时对同一对象启动“编辑”操作。在这种情况下,系统将保存最先保存其更改的用户所做的更新。另一用户将收到一条错误消息,并且会丢失所有更新。
实现保留服务后,会在单个用户启动“编辑”操作后立即为其保留更改对象。如果其他用户尝试编辑该对象,则立即显示一条错误消息,如下所示:
保留服务最初为更改对象创建,是一款常规用途工具,旨在用于各种其他并行修改情景。
范围和适用性
• 使用保留服务可管理两个或多个用户对同一对象的并行更新。
• 保留服务仅限于实现 wt.reservation.Reservable 接口的 Windchill 对象。
• 站点和组织管理员可以发布可供不同用户进行修改的保留对象。
限制
• 将为用户而不是会话或线程保留对象。这将允许在为同一用户运行的多个会话或线程中同时修改对象。
• 使用保留服务时,将实行以下强制选项:
◦ 由 PersistenceManagerEvent.UPDATE 监听程序检测和否决对保留对象的更新。
◦ 由 PersistenceManagerEvent.PRE_DELETE 监听程序检测和否决对保留对象的删除。
如果此强制级别不适用于您的应用程序,则应禁用保留服务强制选项。并且应创建应用程序特定的服务,以提供所需的强制。
• 对象仅会在有限的时段内保留,保留过期后会发布以允许其他用户进行修改。默认值为两小时。此时间限制由以下特性控制:
名称 | ReservationService.expiresAfter |
位置 | <Windchill>\codebase\wt.properties |
默认值 | 120 |
简介 | 保留过期之前经过的分钟数。 |
说明 | 当用户修改非版本控制的对象 (例如,更改对象) 时,会进行保留。 保留将一直持续到用户完成他们的更改、取消更改或设定的时间量已经过去为止。此特性用于控制自动释放保留之前的分钟数。 |
预期结果
以可预测且简单易用的方式防止两个或多个用户对可保留对象进行意外的并行修改。
例如,当用户尝试编辑已由名为 "Jane Smith" 的用户编辑的问题报告时,将出现以下消息:
用户单击“确定”时,消息和编辑窗口随即关闭。该用户可以稍后重试。
另一示例,如果用户尝试对当前由名为 "Jane Smith" 的用户编辑的问题报告执行“设置状态”操作,则会出现以下消息:
保留服务还可用于防止在未显示用户界面时对对象进行同步修改 (例如,由另一个 Windchill 服务)。