Файл копирования API Filnet - PullRequest
       50

Файл копирования API Filnet

0 голосов
/ 28 февраля 2019

Мне нужно продублировать файл в filenet с помощью API и обновить свойства из существующего файла. После поиска с помощью я сделал приведенный ниже пример, но получил ошибку

row = (RepositoryRow) it.next();
            Id id = row.getProperties().get("Id").getIdValue();
            Document document = Factory.Document.fetchInstance(os, id, null);

            System.out.println("current document is : "+document.get_Name());

            Document docCopy = (Document)Factory.Document.fetchInstance(os, id, null); 

            Properties prop = docCopy.getProperties();
                prop.putValue("PT_DocumentNumber", newDocNo);

            docCopy.checkin(AutoClassify.DO_NOT_AUTO_CLASSIFY, CheckinType.MAJOR_VERSION);
            docCopy.save(RefreshMode.NO_REFRESH);

            // file into folder
            folder = Factory.Folder.getInstance(os, ClassNames.FOLDER, new Id("myFOlder"));
            ReferentialContainmentRelationship rcr = folder.file(docCopy, AutoUniqueName.AUTO_UNIQUE, "New Document via Webservice", DefineSecurityParentage.DO_NOT_DEFINE_SECURITY_PARENTAGE);
            rcr.save(RefreshMode.NO_REFRESH);

ошибка, которую я получаю как следующее

[2/28/19 12:31:58:721 AST] 000000bc SystemErr     R com.filenet.api.exception.EngineRuntimeException: FNRCE0042E: E_NOT_SUPPORTED: This method is not supported in the context of this session or object. Checkin must be performed on a reservation object. failedBatchItem=0 errorStack={
at com.filenet.engine.persist.VersionablePersister.validateCheckin(VersionablePersister.java:558)
at 

1 Ответ

0 голосов
/ 29 июня 2019

Проще говоря, вы получаете ID

Id id = row.getProperties().get("Id").getIdValue();

Затем вы получаете исходный документ

Document document = Factory.Document.fetchInstance(os, id, null);

Затем вы получаете тот же исходный документ, сдругая ссылочная переменная

Document docCopy = (Document)Factory.Document.fetchInstance(os, id, null); 

Оба документа одинаковые, здесь копия не была сделана!и, следовательно, когда вы пытаетесь зарегистрировать документ, используя:

docCopy.checkin(AutoClassify.DO_NOT_AUTO_CLASSIFY, CheckinType.MAJOR_VERSION);
docCopy.save(RefreshMode.NO_REFRESH);

Механизм выдает ошибку, поскольку документ не был извлечен в первую очередь (и, следовательно, объект резервирования не был захвачен для внесения ваших изменений).

Checkin must be performed on a reservation object.
...