このトピックでは、ClearQuest におけるロックされたレコードの保守に関する一般的なガイドラインを示します。
ロックされたレコードを検出するためのスキャン
ロックされたレコードを検出するために、定期的にデータベースをスキャンすることは、よい習慣です。ロックされたレコードを検出するには、レコードと、各ロックを保持するユーザーを識別する、クエリーを作成して実行します。ロックされたレコードを検出したら、必要に応じて、適切なアクションを行ってロックを削除します。
タイムアウト機能によるレコードのアンロック
ロックされたレコードを識別して自動的にアンロックできるスクリプトを作成できます。タイムアウト スクリプトは、次のタスクを実行します。
- スキーマによって定義される一連のレコード タイプを収集します。
- 各レコード タイプについて、ロックされたすべてのレコードを識別するデータ構造をビルドします。この構造には、ロックを保持するユーザー、ロックされているバージョン、ロックが監視された時間などの情報が含まれます。この構造は、最初は空です。
- レコード ID、locked_by 列、lock_version 列を選択して、現在ロックされているレコードを検出するクエリーをビルドします。
- 現在ロックされている一連のレコードと、すでに認識されていてデータ構造内に記録されているレコードを比較します。この検査では、ロックしているユーザーと、ロックされたレコードのバージョンの両方が一致する必要があります。同じユーザーがレコードの新しいバージョンを使用した場合のロックと、異なるユーザーによるロックを区別するためです。
- 選択した間隔より長く保持されたロックは、エンティティをロードし、Unlock API メソッドを呼び出すことで、削除します。
- データ構造を更新して、新しくロックされることがわかったレコードへの参照を追加し、ロックされなくなったレコードへの参照を削除します。
スクリプトでは、アクティビティの記録や、保持していたロックが削除されたときのユーザーへの通知も行います。
スクリプトは、定期的に実行するように設定してください。スクリプトがスキャンを実行するタイムアウト間隔と頻度の選択によって、ロックがタイムアウトになる予想最大時間と予想最小時間が決まります。これらの値は次のことに影響を与えるため、ユーザーに知らせてください。
- ロックを失う前に、ユーザーがレコードの編集作業に使用できる時間。
- 中止されたロックが自動的に解放されるまで、ユーザーが待機する必要のある時間。
ロックを保守するための findrecordlocks_pl の使用
Rational
ClearQuest には findrecordlocks_pl スクリプトが用意されており、レコードのロックを検索して、ロックのタイムアウトを設定するために使用できます。スクリプトの詳細および使用方法について詳しくは、
findrecordlocks.pl の参照ページを参照してください。