ロックモデルは GeneXus Server の
バージョン管理モデルの 1 つです。
最初に、それぞれの GeneXus 開発者が
GeneXus Server からナレッジベースを作成する操作を行い、同じ GeneXus Server インスタンスからナレッジベースを作成します。
ナレッジベースの作成が完了すると、ローカルのナレッジベース内のオブジェクトはすべて
読み取り専用になります。開発者が特定のオブジェクトを変更するには、先にオブジェクトの編集権限、つまりオブジェクトの
ロックを取得する必要があります。
オブジェクトの変更が完了したら、ローカルオブジェクトのコピーが GeneXus Server のナレッジベースにコミットされます。
このモデルは、
複数の開発者が同じオブジェクトを同時に編集することはほとんどないという考えに基づいています。開発者がオブジェクトを編集するには、先にオブジェクトのロックを GeneXus Server から取得する必要があります。
ロックは、同時変更を防ぐために一度に 1 人の開発者にのみ付与されます。
開発者 A および
開発者 B が、それぞれ同じ GeneXus Server ナレッジベースの作業コピーを作成するものとします。2 人は並行して作業を進め、それぞれのローカルコピー内で
異なるオブジェクトを変更します。
開発者 A はオブジェクト A のロックを取得し、
開発者 B はオブジェクト B のロックを取得します。2 人はそれぞれローカルで変更内容を保存します。
開発者 B がオブジェクト A のロックを取得しようとすると、GeneXus Server インスタンスから、オブジェクト A が
開発者 A によってロックされていることが通知されます。これは、
開発者 A がロックを解除するまでこのオブジェクトを編集できないことを意味します。そのためには、開発者 A が
コミットするか、
元に戻すか、または
ロック解除する必要があります。
オブジェクト A のロックが解除されたら、
開発者 B がロックを要求し、
更新操作の実行後に変更を開始できます。
注: 1 つのオブジェクトに複数のユーザーが同時に変更を加えることはできないため、変更内容のマージは必要ありません。
ロックはサーバーのナレッジベースとクライアントのナレッジベースの両方でキャンセルされる可能性があります。これは、承認済みユーザーなら誰でも
強制ロックオプションを実行できるからです。
そのため、サーバーでどのロックが有効になっているか (ローカルのナレッジベースではなく、サーバーのナレッジベースでのロックについての確かな情報) を確認したい開発者にとっては、再同期の操作が役立ちます。
サーバーに接続しているナレッジベースがあり、
ロックを使用している場合、GeneXus のメインメニューから [
ナレッジマネージャ ] > [
チーム開発 ] の順に選択して、開いたダイアログで [ ロック ] タブを表示すると、ロックされているオブジェクトを確認できます。その画面には、 [
GeneXus Server でロックを再同期 ] ボタンが表示されます: