Content Engine Java API samples

You can get started with the following examples to get started with processing genAI query objects using the Content Engine Java API.

GenAI base query sample

import javax.security.auth.Subject;

import com.filenet.api.constants.RefreshMode;
import com.filenet.api.core.CmAbstractPersistable;
import com.filenet.api.core.Connection;
import com.filenet.api.core.Domain;
import com.filenet.api.core.Factory;
import com.filenet.api.core.ObjectStore;
import com.filenet.api.util.UserContext;


public class BaseQuerySample {

	
	
	public static void main(String[] args) {
	    
	String url = “<CE URL>”; //eg. "http://localhost:9080/wsi/FNCEWS40MTOM/";
	String objectStoreName = “<your object store name>”; 
	String username = "<login user>";
String password = "<password>";
	    
	    // connecting to the CE isntance
        Connection connection = Factory.Connection.getConnection(url);
        Subject sub = UserContext.createSubject(connection, username, password, 
"FileNetP8WSI");
        UserContext uc = UserContext.get();     
        uc.pushSubject(sub);

        //fetchless instantiation of CE domain and object store 
        Domain domain = Factory.Domain.getInstance(connection, null);            
        ObjectStore os = Factory.ObjectStore.getInstance(domain, objectStoreName); 
        
        //your question to generative AI model, here is an example
        String queryStr = "what is ECM? " ;  
        
        //create a query object with an optional LLM model name. 
        CmAbstractPersistable baseQuery = 
	Factory.CmAbstractPersistable.createInstance(os, "GenaiBaseQuery");
        baseQuery.getProperties().putObjectValue("GenaiLLMPrompt", queryStr);
        baseQuery.getProperties().putObjectValue("GenaiLLMModelName", "google/flan-ul2");
    	
        // create a query object, and change preprocessor will handle query execution in CE server and save the response. 
        baseQuery.save(RefreshMode.REFRESH);
        
        // retrieve the response to above query question
        String response = baseQuery.getProperties().getStringValue("GenaiLLMResponse");
    	
    	System.out.println( " --BaseLLMQuery response : " + response );

	}
}

GenAI vector query sample

import javax.security.auth.Subject;

import com.filenet.api.constants.RefreshMode;
import com.filenet.api.core.CmAbstractPersistable;
import com.filenet.api.core.Connection;
import com.filenet.api.core.Domain;
import com.filenet.api.core.Factory;
import com.filenet.api.core.ObjectStore;
import com.filenet.api.util.UserContext;


public class VectorQuerySample {

	
	
	public static void main(String[] args) {
	    
	 String url = “<CE URL>”; //eg. "http://localhost:9080/wsi/FNCEWS40MTOM/";
	 String objectStoreName = “<your object store name>”; 
	 String username = "<login user>";
	 String password = "<password>";
	    
	    // connecting to the CE isntance
        Connection connection = Factory.Connection.getConnection(url);
        Subject sub = UserContext.createSubject(connection, username, password,                   
                      "FileNetP8WSI");
        UserContext uc = UserContext.get();     
        uc.pushSubject(sub);

        //fetchless instantiation of CE domain and object store 
        Domain domain = Factory.Domain.getInstance(connection, null);            
        ObjectStore os = Factory.ObjectStore.getInstance(domain, objectStoreName); 
        
        //your question to generative AI model. Here is an example
        String queryStr = "what is ECM? " ;  

        //create a vector query object with an optional LLM model name. 
        CmAbstractPersistable query = Factory.CmAbstractPersistable.createInstance(os, 
                                      "GenaiVectorQuery");
    	query.getProperties().putObjectValue("GenaiLLMPrompt", queryStr);
    	
    	// whether perform LLM query after retrieving vector query chunks
    	query.getProperties().putObjectValue("GenaiPerformLLMQuery", true);
    	
    	// max document chunks retrieved
    	query.getProperties().putObjectValue("GenaiMaxDocumentChunks", 6);
    	
    	
    	query.save(RefreshMode.REFRESH);
    	
       	String vectoryChunksResponse =  
                          query.getProperties().getStringValue("GenaiVectorChunks");
       	String vectoryQueryResponse =  
                          query.getProperties().getStringValue("GenaiLLMResponse");
    	
       	System.out.println( " ----- VectorQuery chunks : " + vectoryChunksResponse);
       	System.out.println();
       	System.out.println( " ----- VectorQuery response : " + vectoryQueryResponse);
       

	}
}

GenAI document query sample

import javax.security.auth.Subject;

import com.filenet.api.constants.RefreshMode;
import com.filenet.api.core.CmAbstractPersistable;
import com.filenet.api.core.Connection;
import com.filenet.api.core.Domain;
import com.filenet.api.core.Factory;
import com.filenet.api.core.ObjectStore;
import com.filenet.api.util.UserContext;


public class DocumentQuerySample {

	
	
	public static void main(String[] args) {
	    
	String url = “<CE URL>”; //eg. "http://localhost:9080/wsi/FNCEWS40MTOM/";
	String objectStoreName = “<your object store name>”; 
	String username = "<login user>";
	String password = "<password>";
	    
	 // connecting to the CE isntance
        Connection connection = Factory.Connection.getConnection(url);
        Subject sub = UserContext.createSubject(connection, username, password, 
"FileNetP8WSI");
        UserContext uc = UserContext.get();     
        uc.pushSubject(sub);

        //fetchless instantiation of CE domain and object store 
        Domain domain = Factory.Domain.getInstance(connection, null);            
        ObjectStore os = Factory.ObjectStore.getInstance(domain, objectStoreName); 
        
        //your question to generative AI model. Here is an example
        String queryStr = "what is ECM? " ;  

		// creating an instance of GenaiDocumentQuery
        CmAbstractPersistable query= Factory.CmAbstractPersistable.createInstance(os, 
"GenaiDocumentQuery");
        
        // retrieving the document in your object store to be used as query context.
        Id contextDocId  = new Id("{A0D65A8F-0000-CF19-8BDD-394C4E5CAB01}"); 
	Document contextDoc  = Factory.Document.getInstance(os, "Document", contextDocId);
    	
    	
    	query.getProperties().putObjectValue("GenaiContextDocument", contextDoc);
    	query.getProperties().putObjectValue("GenaiLLMPrompt", queryStr);
    	query.getProperties().putObjectValue("GenaiMaxDocumentChunks", 6);
        query.getProperties().putObjectValue(“GenaiPerformLLMQuery”, true);
    	query.save(RefreshMode.REFRESH);
    	
    	String docQueryResponse =  
query.getProperties().getStringValue("GenaiLLMResponse");
    	System.out.println( " ----- DocumentQuery response : " + docQueryResponse);      
	}

}

GenAI multi document query sample

import javax.security.auth.Subject;

import com.filenet.api.constants.RefreshMode;
import com.filenet.api.core.CmAbstractPersistable;
import com.filenet.api.core.Connection;
import com.filenet.api.core.Domain;
import com.filenet.api.core.Factory;
import com.filenet.api.core.ObjectStore;
import com.filenet.api.util.UserContext;


public class MultiDocumentQuerySample {

	
	
	public static void main(String[] args) {
	    
	 String url = “<CE URL>”; //eg. "http://localhost:9080/wsi/FNCEWS40MTOM/";
	 String objectStoreName = “<your object store name>”; 
	 String username = "<login user>";
	 String password = "<password>";
	    
	 // connecting to the CE isntance
        Connection connection = Factory.Connection.getConnection(url);
        Subject sub = UserContext.createSubject(connection, username, password, 
"FileNetP8WSI");
        UserContext uc = UserContext.get();     
        uc.pushSubject(sub);

        //fetchless instantiation of CE domain and object store 
        Domain domain = Factory.Domain.getInstance(connection, null);            
        ObjectStore os = Factory.ObjectStore.getInstance(domain, objectStoreName); 
        
        //your question to generative AI model. Here is an example
        String queryStr = "what is ECM? " ;  

		// creating an instance of GenaiMultiDocumentQuery
        CmAbstractPersistable query = Factory.CmAbstractPersistable.createInstance(os, 
"GenaiMultiDocumentQuery");
        
        // create an IdList and add desired documents in your object store to be used as search context
    	IdList contextDocIds = Factory.IdList.createList();
    	String[] indexDocIds = {"{A0D65A8F-0000-CF19-8BDD-394C4E5CAB01}", 
" bd61ea46-4693-4d0e-bbeb-7fc1c5665073"};
    	for(String idStr:indexDocIds)
    	{
    		contextDocIds.add(new Id(idStr));
    	}

    	query.getProperties().putObjectValue("GenaiContextDocuments", contextDocIds);
    	query.getProperties().putObjectValue("GenaiLLMPrompt", queryStr);
    	query.getProperties().putObjectValue("GenaiMaxDocumentChunks", 6);
        query.getProperties().putObjectValue(“GenaiPerformLLMQuery”, true);
    	query.save(RefreshMode.REFRESH);
    	
    	String docQueryResponse = 
query.getProperties().getStringValue("GenaiLLMResponse");
    	System.out.println( " ----- DocumentQuery response : " + docQueryResponse);      

	}

}