2015-10-27 3 views
0

Я очень много нового в Filenet. У меня есть требование, когда мне нужно извлечь метаданные каждого документа/записей в определенной папке. Затем мне нужно экспортировать эти метаданные в XML. Сначала мне нужно проверить, есть ли какие-либо документы, связанные с этой папкой, и тогда мне нужно сделать этот шаг для ex: Folder1 имеет 4 файла, а именно File1, File2, File3 и File4. Теперь мне нужно извлечь метаданные (для ex: createdBy, createdDate и т. Д.) Всех этих файлов в виде xml. Я знаю, что могу получить метаданные, запросив, но не получая точно, как я могу получить количество документов/записей внутри папки и перебирать метаданные. Мне нужно, чтобы эти вещи выполнялись с помощью Java.Нужна помощь по Filenet Enterprise Records

Немедленная помощь/исходные материалы приветствуются.

Спасибо, Марк

ответ

1

Лучше всего было бы запросить все документы в папке, а затем перебирать их, извлекать метаданные, и построить свой XML любым способом, который вы видите лучше.

Вы можете найти образцы кода, показывающие, как использовать запросы через API here. Синтаксис построения запроса можно найти here (проверьте Операторы папки раздел в частности).

Теперь, когда у вас есть документы, просто перебирать на них, и получить коллекцию свойств, получить индивидуальные свойства, и считывать значения с помощью соответствующих методов (getStringValue, getInt32Value и т.д.)

ПРИМЕЧАНИЕ:, если вы хотите, чтобы ваш запрос включать текущие версии только, а не рассматривать старые версии, добавить этот пункт к вашему запросу: ([IsCurrentVersion] = TRUE)

в общем, с шаблонного кода, вы должны иметь что-то например: (Скопируйте вставленные разделы из старого кода, а не guara nted to work с самого начала)

// Set connection parameters; usually loaded from a properties file. 
    String uri = "http://server:port/wsi/FNCEWS40MTOM/"; 
    String username = "username"; 
    String password = "password"; 

    // Make connection. 
    Connection conn = Factory.Connection.getConnection(uri); 
    Subject subject = UserContext.createSubject(conn, username, password, null); 
    UserContext.get().pushSubject(subject); 

    try 
    { 
     // Get default domain. 
     Domain domain = Factory.Domain.fetchInstance(conn, null, null); 
     System.out.println("Domain: " + domain.get_Name()); 

     // Get object stores for domain. 
     ObjectStore os = Factory.ObjectStore.fetchInstance(domain, "OS_Name", null); 

     // Build the query you want to use here 
     // Add the attributes you want, the document class you're interested in, etc. 
     String sqlstr = "SELECT [This], [createdBy], [createdDate] FROM [docClass] WHERE ([IsCurrentVersion] = TRUE) AND Document.This INFOLDER '/f1/f2'"; 

     SearchSQL sql = new SearchSQL(sqlstr) 
     SearchScope scope = new SearchScope(os); 
     IndependentObjectSet docs = scope.fetchObjects(sql, 1000, null, true); 
     // Get the page iterator 
     PageIterator p = docs.pageIterator(); 

     // Loop through each page 
     while(p.nextPage()) 
     { 
      // Loop through each item in the page 
      for(Object objct : p.getCurrentPage()) 
      { 
       // Get the document object and write Document Title 
       Document doc = (Document)objct; 
       Properties props = doc.getProperties(); 

       String creator = props.getStringValue("createdBy"); 
       Date creationDate = props.getDateTimeValue("creationDate"); 

       // Now that you have the values, do what you want with them :) 
      } 
     } 
    } 
+0

Привет, Поллонко, Большое вам спасибо за ответ. Есть ли способ получить информацию о записи (метаданные) в FPOS. Я смог сделать для документов в Рекордном магазине. Например: у меня есть запись с именем «Запись 1» внутри объема записи с именем «RecordV1», которая заходит внутри записи «RecordC1». Мне нужны все вышеперечисленные детали. Пожалуйста, дайте мне знать, если der - это образцы. Еще раз спасибо! – user1194310