Как получить путь к юниверсу отчета через BO API? путь к юниверсу отображать null

Я хочу получить вселенную отчета через API, шаги, как описано ниже

  1. Открыть отчетный документ
  2. DataProvider dp = dps.getItem(i); //get report data providers
  3. DataSource ds = dp.getDataSource(); //get data source
  4. universe.setFilePath(ds.getDomainName() + "/"+dp.getSource()+".unv"); //get datasource -- universe domain/path

в основном, я получил правильные данные, как это /DEV_folder/testUNV.unv

редко результат null/testUNV.unv или \DEV_folder\testUNV.unv

есть идеи, почему?

Версия сервера Business Objects — Enterprise XI 3.1 SP7 с использованием java SDK.


Спасибо, Джо. Но это может не решить мою проблему, вы предоставляете 3 возможности, см. мои комментарии ниже

  • Юниверс не находится в папке — Нет, отчеты используют один и тот же юниверс, один может получить путь, другой — нет.

  • Юниверс находится в папке, к которой у вас нет доступа (хотя у вас есть доступ к юниверсу) — Нет, отчеты с использованием того же юниверса, для которого у меня есть права на чтение и запись.

  • Источник данных — это не юниверс — это юниверс.

Извините, я не могу предоставить скриншот из-за отсутствия репутации.

Контракт – отчет о согласии поставщика с четвертой стороной

/eSourcing_Dev/Contract.unv

/eSourcing_Dev/Project Save.unv

Отчет о согласии поставщика с четвертой стороной контракта

null/Контракт.unv

null/Project Save.unv

Контракт — отчет формы согласия поставщика 4-й стороны и отчет формы согласия поставщика контракта 4-й стороны подключаются к одним и тем же юниверсам, Contract.unv и Project Save.unv, но путь отображается пустым.

Если я открою отчет формы согласия 4-й стороны контракта с поставщиком в BO Infoview и просто снова сохраню отчет, я смогу получить правильный путь.

Название отчета

Проект ? Вехи

Вселенная

/eSourcing/Project Save.unv

\eSourcing/Project Save.unv

Проект ? Отчет о вехах получает 2 разных пути

/eSourcing/Project Save.unv

\eSourcing/Project Save.unv

это должен быть один отчет, 2 запроса (2 поставщика данных) с использованием одного и того же юниверса.

Я уже предоставил фактический код/API, который я использовал, цикл опущен. Пожалуйста, проверьте шаги, которые я описал. Что я пытаюсь сделать, так это получить все отчеты и их вселенную в пакете.


person 蒋心怡    schedule 27.08.2014    source источник
comment
Было бы полезно, если бы вы указали, какую версию BusinessObjects вы используете и какой API (.NET, COM, …).   -  person ƘɌỈSƬƠƑ    schedule 27.08.2014


Ответы (2)


Я просмотрел документацию по API API Report Engine и не мог точно определить, что должен возвращать вызов getDomainName(). Домены, где понятие использовалось в выпусках до XI; Насколько я знаю, эта концепция больше не существует в версиях XI.

Если вы хотите получить путь вселенной, я делаю следующее:

  1. Получите идентификатор источника данных, используя метод getID() интерфейса DataSource.
  2. Получите InfoObject (используя BusinessObjects Enterprise API), используя идентификатор из шага 1.
  3. Получите идентификатор родителя для юниверса, используя метод getParentID() интерфейса IInfoObject, убедитесь, что это объект папки, и приведите его к интерфейсу IFolder.
  4. Используйте метод getPath() интерфейса IFolder, чтобы вернуть полный путь.

Имейте в виду, что иногда отчет Webi сообщает, что он не связан ни с каким юниверсом, так называемые несвязанные отчеты. См. эту сообщение в блоге для получения дополнительной информации об этой проблеме.

person ƘɌỈSƬƠƑ    schedule 01.09.2014
comment
Привет Кристоф, спасибо! Кроме того, знаете ли вы, как напрямую получить cuid dataSource? Поскольку метод dataSource.getID() возвращает длинную строку, подобную этой DS0.UnivCUID=M08xU2AACvD_AhcA4gAAQkUAAqmtID0AAAA;UnivID=339394;ShortName=Project Save;UnivName=Project Save, требуется substr. - person 蒋心怡; 02.09.2014
comment
Если вас просто интересуют юниверсы, используемые документом Webi, вы также можете использовать getUniverses() интерфейса IWebi. Это даст вам набор идентификаторов вселенной. Таким образом, вам не нужно смотреть на отдельных поставщиков данных или использовать API Report Engine. - person ƘɌỈSƬƠƑ; 02.09.2014
comment
то, что я пытаюсь сделать, это получить все вселенные, на которые ссылается отчет, и посмотреть на их путь. - person 蒋心怡; 03.09.2014
comment
Как я уже сказал, в этом случае вам не нужен API Report Engine. Просто используйте BusinessObjects Enterprise API; вы сможете получить всю необходимую информацию с помощью интерфейсов IInfoObject, IWebi и IFolder. - person ƘɌỈSƬƠƑ; 03.09.2014

Есть несколько причин для «нуля»:

  • Вселенная не в папке.
  • Юниверс находится в папке, к которой у вас нет доступа (хотя у вас есть доступ к юниверсу)
  • Источник данных не является юниверсом

Попробуйте распечатать результат ds.getUniverseID(), а затем выполните запрос CMS для этого идентификатора. Это может дать вам больше информации о проблеме.

Я не могу объяснить "\". Если бы вы могли предоставить больше своего кода и фактических результатов, которые вы получаете, я мог бы помочь.

person Joe    schedule 27.08.2014
comment
Спасибо за ваш ответ. Но это может не решить мою проблему, вы предоставляете 3 возможности, см. мои комментарии ниже • Вселенная не находится в папке. //Нет, отчеты с использованием одного и того же юниверса, один может получить путь, а другой – нет • Юниверс находится в папке, к которой у вас нет доступа (хотя у вас есть доступ к юниверсу) //Нет, отчеты с использованием одного и того же вселенная, которую я имею право читать и писать. • Источник данных не является юниверсом // это юниверс. Позвольте мне вставить скриншот в вопрос - person 蒋心怡; 28.08.2014
comment
Я не решил вашу проблему, но немного сузил ее. Из моего тестирования иногда домен юниверса имеет префикс \, а иногда нет. Я еще не нашел закономерности. Были ли отчеты, в которых отображаются нулевые значения, были перенесены из более старой версии BO? - person Joe; 28.08.2014
comment
Да, не знаю, когда \ произойдет. Мне интересно, использую ли я неправильный метод API, но мне не удалось найти другой. повторно оценивая нуль, мы обновили сервер BO до SP7, но только 1/30 отчетов имеют нулевую проблему. Я предположил, что это вызвано экспортом из веб-разведки, но я попробовал этот случай, я могу получить правильный путь. - person 蒋心怡; 01.09.2014