Service Registry 3.1 開発ガイド

オブジェクトの監査証跡の取得

オブジェクトが Service Registry に発行されるたび、およびオブジェクトに何らかの変更が加えられるたびに、AuditableEvent と呼ばれる別のオブジェクトが JAXR プロバイダによって作成されます。また、JAXR プロバイダは、一部のオブジェクトが特定の方法で変更されるときに、AuditableEvent オブジェクトを作成することもできます。JAXR プロバイダは、発行されたオブジェクトの監査証跡に AuditableEvent オブジェクトを追加します。監査証跡には、そのオブジェクトに関するすべてのイベントのリストが含まれています。監査証跡を取得するには、RegistryObject.getAuditTrail を呼び出します。監査証跡内の個別のイベントを取得し、そのイベントタイプを調べることもできます。JAXR では、表 3–4 で一覧表示したイベントタイプがサポートされています。

表 3–4 AuditableEvent のタイプ

イベントタイプ 

説明 

EVENT_TYPE_CREATED

オブジェクトが作成され、レジストリに発行されました。 

EVENT_TYPE_DELETED

LifeCycleManager または BusinessLifeCycleManager のいずれかの削除メソッドによってオブジェクトが削除されました。

EVENT_TYPE_DEPRECATED

LifeCycleManager.deprecateObjects メソッドによってオブジェクトが非推奨にされました。

EVENT_TYPE_UNDEPRECATED

LifeCycleManager.unDeprecateObjects メソッドによってオブジェクトが非推奨解除されました。

EVENT_TYPE_VERSIONED

オブジェクトの新しいバージョンが作成されました。バージョン管理が有効な場合、オブジェクトの属性のいずれかが変更されると、通常、このイベントが発生します。 

EVENT_TYPE_UPDATED

オブジェクトが更新されました。 

EVENT_TYPE_APPROVED

LifeCycleManagerImpl.approveObjects メソッドによってオブジェクトが承認されました (実装に固有)。

EVENT_TYPE_DOWNLOADED

オブジェクトがダウンロードされました (実装に固有)。 

EVENT_TYPE_RELOCATED

オブジェクトが別のレジストリから再配置されました (実装に固有)。 

次のコードは、レジストリオブジェクトの監査証跡を取得し、各イベントのタイプとタイムスタンプを表示します。

Collection events = obj.getAuditTrail();
String objName = obj.getName().getValue();
Iterator eventIter = events.iterator();
while (eventIter.hasNext()) {
    AuditableEventImpl ae = (AuditableEventImpl) eventIter.next();
    int eType = ae.getEventType();
    if (eType == AuditableEvent.EVENT_TYPE_CREATED) {
        System.out.print(objName + " created ");
    } else if (eType == AuditableEvent.EVENT_TYPE_DELETED) {
        System.out.print(objName + " deleted ");
    } else if (eType == AuditableEvent.EVENT_TYPE_DEPRECATED) {
        System.out.print(objName + " deprecated ");
    } else if (eType == AuditableEvent.EVENT_TYPE_UNDEPRECATED) {
        System.out.print(objName + " undeprecated ");
    } else if (eType == AuditableEvent.EVENT_TYPE_UPDATED) {
        System.out.print(objName + " updated ");
    } else if (eType == AuditableEvent.EVENT_TYPE_VERSIONED) {
        System.out.print(objName + " versioned ");
    } else if (eType == AuditableEventImpl.EVENT_TYPE_APPROVED) {
        System.out.print(objName + " approved ");
    } else if (eType == AuditableEventImpl.EVENT_TYPE_DOWNLOADED) {
        System.out.print(objName + " downloaded ");
    } else if (eType == AuditableEventImpl.EVENT_TYPE_RELOCATED) {
        System.out.print(objName + " relocated ");
    } else {
        System.out.print("Unknown event for " + objName + " ");
    }System.out.println(ae.getTimestamp().toString());
}

一部のサンプルには、これに似たコードを使用する showAuditTrail メソッドがあります。たとえば、INSTALL/registry-samples/search-name/src ディレクトリにある JAXRSearchByName.java を参照してください。

レジストリオブジェクトの状態を変更する方法については、「レジストリ内のオブジェクトの状態の変更」を参照してください。