サポート > PC-MAPPING ヒント集 > その他 > 排他制御について
排他制御について
PC-MAPPINGには、以下のような「共有排他制御」機能があります。
「排他制御」は、"あるユーザーが使用中のファイルは、他のユーザーでは書き換えができないようにするもの"です。
この制御は、
  • レイヤーファイル(*.nav)
  • 属性データベースファイル(*.ndv)
  • プロジェクトファイル(*.pcm)
それぞれに独立して設定する事ができます。
■ 排他制御の種類
排他制御あり、外部読み出し許可
他者からの読み出しは許可しますが、更新・保存はできません。
保存しようとすると警告メッセージを出します。
排他制御あり、外部読み出し不許可
他者からはこのファイルを開く事はできません。
更新・保存もできません。
排他制御なし
何も制約をつけません。
ただし、そのファイルの最終更新時刻による管理(*1)は常に行われます。

(*1)PC-MAPPINGでは、ファイルを読み出した時点でそのファイルの最終更新時刻を取り出して保存しておき、そのファイルが保存されようとした時、もう一度そのファイルの最終更新時刻を見て、最初に読み出した時の物と比較しています。
比較の結果、もし、時刻が異なっていたら、警告メッセージを出して上書きしても良いかと問い合わせます。

■ 排他制御の設定
排他制御の設定は、対象ファイルによって異なります。
  • レイヤーファイル:[プロジェクトエキスパート]-[レイヤー]パネル(*2)
  • 属性データベースファイル:[プロジェクトエキスパート]-[属性データ]パネル(*2)
  • プロジェクトファイル:[プロジェクト]-[排他制御]
(*2)それぞれファイル保存されているレイヤー・属性データにのみ使用できます(内部データになっている場合は使用できません)。

■ 排他制御の設定:例@
以下のようにレイヤーに対し、
  • = 排他制御あり、外部読み出し不許可
  • = 排他制御あり、外部読み出し許可
が設定されている「プロジェクトA(⇒プロジェクト自体に排他制御はなし)」をユーザーAが開いて作業しているとします。
《ユーザーA》

  1. 別の《ユーザーC》が「レイヤーA-1.nav」を開く事はできません。
    = 外部読み出し不許可

  2. 別の《ユーザーC》が「レイヤーC-1.nav」を開く事はできます。
    = 外部読み出し許可

  3. 別の《ユーザーC》が「レイヤーC-1.nav」を開き、編集をした後で保存しようとすると、「上書きに失敗しました」と言う警告メッセージが表示されます。
    = 排他制御ありのため更新禁止

    <OK>ボタンを押すと、「レイヤーC-1.nav」には上書きできませんが、「レイヤーC-1-.nav」とハイフン付きのバックアップデータとして保存されます。

  4. 別の《ユーザーC》が「レイヤーC-2.nav」をエクスプローラー上で削除しようとすると、警告メッセージが表示されます。
    排他制御がされている「レイヤーA-1.nav」・「レイヤーA-2.nav」・「レイヤーC-2.nav」でも同様に警告が表示されます。
    排他制御がされていないレイヤーは削除が可能です。

  5. 別の《ユーザーC》が「プロジェクトA」を開く事はできます。
    ただし、プロジェクトを構成するレイヤー「レイヤーA-1.nav」・「レイヤーA-2.nav」を開こうとしても、「排他制御あり、外部読み出し不許可」で
    • 他者による更新禁止
    • 読み出し禁止
    になっているので、警告メッセージが表示されます。

    「レイヤーC-1.nav」・「レイヤーC-2.nav」は読み出しは許可されているので開く事は可能です。
    開かれた「プロジェクトA.pcm」の[プロジェクトエキスパート]-[レイヤー]パネルで、表示された2枚のレイヤー(「排他制御なし」になっています)に対し、再び「排他制御」を掛けようとすると、
    • 他者による更新禁止
    • 読み出し許可
    と設定されているため、警告メッセージが表示されます(設定変更はできません)。

■ 排他制御の設定:例A
プロジェクトB(⇒プロジェクト自体に排他制御はなし)」を《ユーザーB》が開いて作業しているとします。
  • = 排他制御なし
《ユーザーB》
「レイヤーC-1.nav」・「レイヤーC-2.nav」は前述「■ 排他制御の設定:例@」の「プロジェクトA」のものと同じですが、排他制御の設定情報はプロジェクト単位に管理されていますので、
  • 「プロジェクトA」において「レイヤーC-1.nav」・「レイヤーC-2.nav」は、 = 排他制御あり、外部読み出し許可
  • 「プロジェクトB」において「レイヤーC-1.nav」・「レイヤーC-2.nav」は、 = 排他制御なし
のような状況も可能となります。
ここで、先に《ユーザーB》が「プロジェクトB」を開いて作業しているとします。

  1. 後から《ユーザーA》が「プロジェクトA」を開いて作業を始めた場合、先に作業をしていた《ユーザーB》が「プロジェクトB」上で編集した「レイヤーC-1.nav」・「レイヤーC-2.nav」を上書き保存しようとすると、警告メッセージが表示されます。

    「レイヤーC-1.nav」・「レイヤーC-2.nav」は別名「レイヤーC-1-.nav」・「レイヤーC-2-.nav」として保存されます。
    そのため、再び「プロジェクトB」を開くと上書きされなかった「レイヤーC-1.nav」・「レイヤーC-2.nav」が読み込まれるため、せっかく更新した新しいデータ(「レイヤーC-1-.nav」・「レイヤーC-2-.nav」)は反映されません。

  2. 「プロジェクトA」を閉じている場合は「プロジェクトB」の「レイヤーC-1.nav」・「レイヤーC-2.nav」を上書き保存する事は可能です。

  3. また、《ユーザーB》の元で「プロジェクトB」が開かれており、その上で排他制御ありと設定した「プロジェクトA」を《ユーザーA》が開く事は可能で、「プロジェクトA」側でデータを更新して<保存>を実行した場合は、「排他制御」ではなく「ファイル監視報告」が有効となります。
    ▼「プロジェクトB」側に表示されるファイル監視報告のメッセージ

    ヒント集ファイル監視報告

■ 排他制御の設定:例B
プロジェクトC(⇒プロジェクト自体に排他制御あり)」を《ユーザーC》が開いて作業しているとします。
《ユーザーC》
ここで、先に《ユーザーC》が「プロジェクトC」を開いて作業しているとします。

  1. プロジェクト自体の排他制御が「排他制御あり、外部読み出し不許可」の場合は、別の《ユーザーA》が「プロジェクトC」を開く事はできません。
    = 外部読み出し不許可

  2. プロジェクト自体の排他制御が「排他制御あり、外部読み出し許可」の場合は、別の《ユーザーA》が「プロジェクトC」を開く事はできます。
    = 外部読み出し許可

    《ユーザーA》が「プロジェクトC」を開き、編集をした後で保存しようとすると、「上書きに失敗しました」と言う警告メッセージが表示されます。
    = 排他制御ありのため更新禁止

    <OK>ボタンを押すと、「プロジェクトC.pcm」には上書きできませんが、「プロジェクトC-.pcm」とハイフン付きのバックアップデータとして保存されます。

■ 注意点
「排他制御」の効果があるのは、「排他制御設定したプロジェクトが読み込まれている時」のみであって、ファイルそのものに更新禁止などの情報がある訳ではありません。
プロジェクトが開かれていなくても編集ができない・参照のみ、といった設定にするにはOSの機能を利用して「アクセス制御」を掛けるようにして下さい。