ここでは,DocumentBrokerオブジェクトとデータベースの関係について説明します。
DocumentBrokerオブジェクトは,複数のDMAオブジェクトを包含した形で表現されるメモリ上のオブジェクトです。データベースのスキーマは,DMAのオブジェクトモデルと対応して構成されています。なお,DMAオブジェクトは,各DMAクラスに対応する表の1レコードになります。通常,DocumentBrokerオブジェクトに対してメソッドを発行すると,構成している複数のDMAオブジェクトへのメソッドとして配置され,該当する表が操作されます。
例えば,dmaClass_DocVersionクラスには,一つの表が対応します。この場合,DocVersionオブジェクトは,その表のレコードとして格納されます。また,dmaClass_DocVersionクラスのサブクラスには,(dmaClass_DocVersionクラスに対応する表と異なる)別の表が対応します。したがって,このサブクラスのオブジェクトは,サブクラスに対応する表のレコードとして格納されます。
DocumentBrokerオブジェクトおよびDMAオブジェクトとデータベースの対応を次の図に示します。
図2-14 DocumentBrokerオブジェクトおよびDMAオブジェクトとデータベースの対応
この図では,バージョンなし文書を構成するDMAオブジェクトとデータベースとの関係を示しています。バージョンなし文書は,次に示すDMAオブジェクトを包含したオブジェクトです。
データベースの表は,各DMAクラスに対応しており,DMAオブジェクトは,各DMAクラスに対応する表の1レコードに相当します。ただし,文書中の一つ目のRenditionオブジェクトのレコードは,dmaClass_DocVersionクラスに対応する表と同じ表に格納されます。二つ目のRenditionオブジェクトのレコードは,dmaClass_Renditionクラスに対応する表に格納されます。この例では,レンディションが一つだけ存在するので,Renditionオブジェクトのレコードが格納されているのは,dmaClass_DocVersionクラスに対応する表と同じ表です。
また,DMAオブジェクト同士の関連は,各オブジェクトが属性として保持する参照先のOIIDによって表現します。この場合,DocVersionオブジェクトは,ContentTransferオブジェクトのOIIDの値(この例では「302」です。実際はこれと異なる値が格納されます)を保持することで,参照先のContentTransferオブジェクトを特定します。