Использование флага OMI_IGNORE_NOTFOUND в интерфейсе OpenMetadata

В справке по открытым метаданным SAS (стр. 126) говорится: метод UpdateMetadata позволяет обновлять свойства существующих объектов метаданных. Он возвращает ошибку, если обновляемый объект метаданных не существует, если только не установлен флаг OMI_IGNORE_NOTFOUND (134217728).

Вот моя проблема: если я указываю флаг или не указываю флаг, я все равно получаю ту же ошибку: ("SASLibrary: A5X8AHW1.B40000SQ не может быть найден в контейнере wlibrary в хранилище Foundation".)

Вот фрагмент, который воспроизводит ошибку:

import com.sas.meta.SASOMI.IOMI;
import com.sas.metadata.MetadataUtil;
import org.omg.CORBA.StringHolder;

IOMI iOMI = ... // an instance of IOMI connection

StringHolder outputMeta = new StringHolder();

String request = ""
        + "<UpdateMetadata>"
        + "   <Metadata>"
        + "     <SASLibrary Id=\"A5X8AHW1.B40000SQ\"/>"
        + "   </Metadata>"
        + "   <NS>SAS</NS>"
        + "   <Flags>" + (MetadataUtil.OMI_IGNORE_NOTFOUND | MetadataUtil.OMI_TRUSTED_CLIENT | MetadataUtil.OMI_RETURN_LIST) + "</Flags>"
        + "   <Options/>"
        + "</UpdateMetadata>"
        ;

iOMI.DoRequest(request, outputMeta);

Есть идеи, что не так?

1 ответ

Решение

Вопреки тому, что говорится в этом документе, я видел только работу флага OMI_IGNORE_NOTFOUND с методом DeleteMetadata.

Javadoc также, кажется, поддерживает это, заявляя

OMI_IGNORE_NOTFOUND (134217728) Этот флаг предназначен для DeleteMetadata, чтобы он указывал игнорировать не найденные объекты, чтобы он не возвращался при ошибке.

com.sas.metadata.remote.MdOMIUtil Поле интерфейса Summery

Другие вопросы по тегам