シート セット修正のガイドライン(SSO)

シート セット API は、マルチクライアント API です。これは、複数のクライアントが所定の AcSmDatabase を随時表示し、互いに影響し合う可能性があることを意味します。つまり、データベース内のオブジェクトがどのように参照され、修正されたかについて、十分に注意する必要があります。

AcSmDatabase 内のオブジェクトを修正する場合は、必ずそのオブジェクトをロックし、修正を終えた後にロック解除する必要があります。修正する準備が整ったらデータベースをロックし、可能な限り早くロックを解除しなければなりません。パフォーマンスの面から、データベースがロックされている時間を可能な限り短くすべきです。複数の修正が必要な場合は、データベースをロックし、すべての修正を終えてからロック解除します。

複数のクライアントがデータベースを使用しているので、他のクライアントが修正したことにより、時折自動的に再ロードされることがあります。データベースが再ロードされると、含まれるすべてのオブジェクトのインスタンスは破棄され、読み込まれたデータベースに基づいて新しいインスタンスが作成されます。

このため、シート セット データベース内のオブジェクトを参照するときは、次に示す基本的な規則を守ることが重要です。

データベースが再ロードされると、データベース内のオブジェクトへのポインタは無効になります。しかし、オブジェクト ID を保管していた場合は、それを使用して、現在のオブジェクトのインスタンスへのポインタを安全に取得することができます。

この規則の唯一の例外は、データベースです。データベース オブジェクトは、再ロード中に破壊されたり再生成されることはないので、AcSmDatabaseAcSmDatabase へのポインタを保管することは可能です。

オブジェクトの GetObjectIdGetObjectId メソッドを使用して、データベース内のオブジェクトのオブジェクト ID を取得することができます。逆に、GetPeristentObjectGetPeristentObject メソッドを使用して、ID からオブジェクトのインスタンスを取得することができます。これは、一般的な IAcSmPersistIAcSmPersist インタフェース ポインタを返し、希望のインタフェースを指定することができます。

注:

DST ファイルを修正する場合は、シート セット マネージャを使用し、それ以外のものを使用しないでください。