高级自定义 > 业务逻辑自定义 > 保留服务 > 使用保留服务
  
使用保留服务
创建保留对象
许多保留服务 API 使用 Reservation 对象来包含描述所需保留的参数。
创建 Reservation 对象时,必须始终指定 Reservable 对象的参考。其他参数是可选参数:
保留类型 (默认值 - ReservationType.MODIFY)
保留对象的用户 (默认值 - 当前用户)
保留过期之前可保存的分钟数 (默认值 - 120 分钟)
启用或禁用保留服务的强制保留 (默认值 - 禁用)
启用或禁用强制保留的管理员覆盖 (默认值 - 禁用)
启用或禁用强制保留的工作流进程覆盖 (默认值 - 禁用)
有关详细信息,请参阅 Reservation 类的 Windchill Javadoc 说明。
典型保留服务实现步骤
1. 保留对象:
a. 调用 ReservationHelper.getService().requestReservation(…) 以保留对象。
b. 调用返回的 Reservation 对象上的 isGranted() 方法,以确定预留是否成功。
如果未成功,则可以调用 getErrorMessage() 方法来获取用于说明请求失败原因的可本地化消息。
例如,当启动更改管理“编辑”操作时,将执行此步骤。
2. 如果已授权保留,则此操作可继续。否则,请执行相应的步骤以等待并重试,或通知用户该操作无法继续。
例如,更改管理“编辑”操作将允许用户继续进行修改,或显示一条错误消息:
3. 如果操作成功完成:
a. 要验证保留是否仍存在 (例如,操作是否尚未到期或是否已被管理员撤消),请调用以下命令:
ReservationHelper.getService().checkGranted(…)
如果保留已不存在,则可以再次请求保留或者中止该操作。为了防止同时进行修改,在未授权保留的情况下,不应修改对象。
b. 对保留的对象进行数据库更新。
c. 要释放对象以供其他用户修改,请调用以下命令:
ReservationHelper.getService().releaseReservation(…)
此调用可包括在上一步 (3b) 所使用的同一事务处理中,并且只有在事务处理完全提交后才会释放保留。如果事务处理无法提交,则必须单独释放保留。
例如,当用户单击“完成”时,将执行此步骤。
4. 如果操作已取消或未成功完成:
a. 要释放对象以供其他用户修改,请调用以下命令:
ReservationHelper.getService().releaseReservation(…)
例如,当用户单击“取消”时,将执行此步骤。