高度なカスタマイズ > ビジネスロジックのカスタマイズ > 予約サービス
  
予約サービス
予約サービスは、複数のユーザーが 1 つのオブジェクトを同時に編集することを防止します。
このサービスは、「チェックアウト」操作と「チェックイン」操作、またはオブジェクト自体を修正するその他のロックメカニズムを使用することなく、複数のユーザーが 1 つのオブジェクトを同時に修正することを制限するために使用します。
予約サービスの主要な構成要素は以下のとおりです。
永続オブジェクトの予約を管理する Windchill サービス。
編集ウィンドウに予約制御を追加するためのクライアントツール。
編集ウィンドウにオブジェクト更新カウント制御を追加するためのクライアントツール。
バックグラウンド
予約サービスは、元々は変更管理オブジェクト (問題レポート、変更リクエスト、変更通知など) を編集する際の同時制御をサポートするために開発されました。
変更管理オブジェクトには「チェックアウト」操作と「チェックイン」操作を使用できません。このため、2 人のユーザーが 1 つのオブジェクトに対して同時に「編集」操作を開始することが可能でした。これが発生すると、最初に変更を保存したユーザーの更新が保存されていました。別のユーザーにはエラーメッセージが表示され、そのユーザーのすべての更新が失われていました。
予約サービスが実装されていると、変更管理オブジェクトは、「編集」操作が起動されると同時に、それを起動した 1 人のユーザーに対して予約されます。別のユーザーがそのオブジェクトを編集しようとすると、ただちに次のようなエラーメッセージが表示されます。
予約サービスは、元々は変更管理オブジェクトを対象に開発されましたが、ほかのさまざまな同時修正シナリオに使用できる汎用ツールとして設計されています。
範囲と適用性
予約サービスを使用して、複数のユーザーによる 1 つのオブジェクトに対する同時更新を管理します。
予約サービスは、wt.reservation.Reservable インタフェースを実装する Windchill オブジェクトのみに使用できます。
サイトおよび組織管理者は、予約されているオブジェクトを別のユーザーが修正できるように解放できます。
制限事項
オブジェクトは、1 つのセッションまたはスレッドではなく、1 人のユーザーに対して予約されます。したがって、1 人のユーザーが実行しているセッションまたはスレッドから 1 つのオブジェクトを同時に修正することが可能です。
予約サービスを使用する場合、以下の処理が行われます。
予約されているオブジェクトへの更新が検出され、PersistenceManagerEvent.UPDATE リスナーによって拒否されます。
予約されているオブジェクトの削除が検出され、PersistenceManagerEvent.PRE_DELETE リスナーによって拒否されます。
このレベルの処理がユーザーのアプリケーションにとって不適切な場合は、予約サービス処理オプションを無効にする必要があります。代わりに、必要な処理が行われるようにアプリケーション固有のサービスを作成する必要があります。
オブジェクトの予約は一定の期間に限られ、予約の期限が切れると、別のユーザーが修正できるように解放されます。デフォルトは 2 時間です。この時間制限は、次のプロパティによって制御されています。
名前
ReservationService.expiresAfter
場所
<Windchill>\codebase\wt.properties
デフォルト
120
概要
予約の期限が切れるまでの時間 (分)。
説明
予約は、ユーザーがバージョン管理されていないオブジェクト (変更管理オブジェクトなど) を修正すると付与されます。
予約は、ユーザーが変更を完了するかキャンセルするまで、または一定の時間が経過するまで保持されます。このプロパティは、予約が自動的に解除されるまでの時間 (分) を制御します。
予測される結果
複数のユーザーが意図せず予約可能なオブジェクトを同時に修正することを、予測可能でわかりやすい方法によって防止します。
たとえば、Jane Smith という名前のユーザーによってすでに編集されている問題レポートを別のユーザーが編集しようとすると、次のメッセージが表示されます。
ユーザーが「OK」をクリックすると、このメッセージと編集ウィンドウが閉じます。ユーザーは後で再試行できます。
別の例として、Jane Smith という名前のユーザーによって現在編集されている問題レポートに対して別のユーザーが「状態を設定」操作を実行しようとすると、次のメッセージが表示されます。
予約サービスは、ユーザーインタフェースが提供されていないときに (たとえば別の Windchill サービスによって) オブジェクトが同時に修正されることを防止するためにも使用できます。