Auditing code 举例来说

Auditing code 举例
package com.testAuditing;

import java.util.Iterator;

import org.apache.log4j.Logger;

import com.filenet.api.collection.EventSet;
import com.filenet.api.collection.VersionableSet;
import com.filenet.api.core.Connection;
import com.filenet.api.core.Document;
import com.filenet.api.core.Factory;
import com.filenet.api.core.ObjectStore;
import com.filenet.api.core.Versionable;
import com.filenet.api.events.Event;
import com.filenet.api.util.Id;
import com.util.CEHelper;

import junit.framework.TestCase;

public class AuditingTest extends TestCase {
	
	Logger logger = Logger.getLogger(AuditingTest.class.toString());

	/**
	 * auditing一个文档的getContent、checkout、checkin等事件,
	 * 一旦一个文档当前版本(A1)发生checkin到另一个主版本(A2)后,则checkin被auditing到A2版本上。
	 */
	public void testRetrive(){
		
		Connection conn = CEHelper.getConnection();
		CEHelper.pushSubject(conn, "administrator", "filenet");
		ObjectStore os = CEHelper.getObjectStore(conn);
		
		Document doc = Factory.Document.fetchInstance(os, new Id("{413083CB-9D09-4666-A348-9D4B3AC135D1}"), null);
		
		EventSet events = doc.get_AuditedEvents();
		Iterator<Event> iter = events.iterator();
		Event e = null;
		while(iter.hasNext()){
			e = (Event)iter.next();
			logger.info("e.get_Creator() = " + e.get_Creator());
			logger.info("e.get_EventStatus() = " + e.get_EventStatus());
			logger.info("e.get_ClassDescription().get_DisplayName() = " + e.get_ClassDescription().get_DisplayName());
			logger.info("e.get_DateCreated() = " + e.get_DateCreated());
			logger.info("e.get_Name() = " + e.get_Name());
		}
		
		Document doc1 = Factory.Document.fetchInstance(os, new Id("{157BE333-70AB-4B85-8F0E-9AC587E26FF2}"), null);
		EventSet events1 = doc1.get_AuditedEvents();
		Iterator<Event> iter1 = events1.iterator();
		Event e1 = null;
		while(iter1.hasNext()){
			e1 = (Event)iter1.next();
			logger.info("e1.get_Creator() = " + e1.get_Creator());
			logger.info("e1.get_EventStatus() = " + e1.get_EventStatus());
			logger.info("e1.get_ClassDescription().get_DisplayName() = " + e1.get_ClassDescription().get_DisplayName());
			logger.info("e1.get_DateCreated() = " + e1.get_DateCreated());
			logger.info("e1.get_Name() = " + e1.get_Name());
		}
		
		CEHelper.popSubject();
	}
	
	/**
	 *  通过一个ID获取到该文档的各个版本,将对应版本转化为Document后即可获取到该版本的auditing
	 */
	public void testVersions(){
		
		Connection conn = CEHelper.getConnection();
		CEHelper.pushSubject(conn, "administrator", "filenet");
		ObjectStore os = CEHelper.getObjectStore(conn);
		
		Document doc = Factory.Document.fetchInstance(os, new Id("{157BE333-70AB-4B85-8F0E-9AC587E26FF2}"), null);
		VersionableSet versions = doc.get_Versions();
		Iterator<Versionable> iter = versions.iterator();
		Document doc_temp = null;
		Event e1 = null;
		while(iter.hasNext()){
			doc_temp = (Document)iter.next();
			EventSet events = doc_temp.get_AuditedEvents();
			logger.info("doc_temp.get_Id().toString() = " + doc_temp.get_Id().toString() );
			Iterator<Event> iter1 = events.iterator();
			while(iter1.hasNext()){
				e1 = (Event)iter1.next();
				logger.info("e1.get_Creator() = " + e1.get_Creator());
				logger.info("e1.get_EventStatus() = " + e1.get_EventStatus());
				logger.info("e1.get_ClassDescription().get_DisplayName() = " + e1.get_ClassDescription().get_DisplayName());
				logger.info("e1.get_DateCreated() = " + e1.get_DateCreated());
				logger.info("e1.get_Name() = " + e1.get_Name());
			}
		}
		
		CEHelper.popSubject();
	}
	
	public void testDeletion(){
		
	}
}