Я использую Documentum Developer Edition 6.6. Я запустил следующий DQL: выберите "r_object_id", "r_modify_date", "r_version_label", "i_position", "object_name" из "dm_document", где FOLDER (ID ('0bde75d18000cfa4')) и "r_object_type" = "dm_document" порядок по возрастанию "r_modify_date", по убыванию "i_position"
Я ожидал: DQL вернет одну строку для каждого объекта dm_documentum. Помню — мои ранние запросы с этим DQL делали это — по одной икры на каждый документ. Но сегодня я вижу: для некоторых объектов dm_document возвращается только одна строка; тогда как для других объектов dm_document возвращается несколько строк на объект! Как следующее:
09de75d18000d514 28.07.2011 15:41 1.0,CURRENT -1,-2 Док1
Другими словами, для документа 09de75d18000d514 была возвращена одна строка (с повторяемыми «r_version_label» и «i_position» в виде массивов), тогда как для другого документа 09de75d18000d515 повторяющиеся свойства были возвращены в виде отдельных строк. Почему это так? Для меня это выглядит как баг - потому что документы 09de75d18000d514 и 09de75d18000d515 не имеют существенных отличий, это просто обычные экземпляры dm_document, не более того.
И еще более важный вопрос: что я могу сделать? Я вижу, что проблема исчезает, если я удаляю «i_position» desc из DQL — тогда каждый dm_object возвращается как одна строка. Но мне нужна была эта сортировка «i_position» desc», чтобы «r_version_label» отсортировался в соответствии с соответствующими значениями «i_position» (каждый элемент массива «r_version_label» соответствует элементу массива «i_position», который содержит его «позицию»). номер"). Может быть, это мое предположение — что Documentum должен упорядочивать «r_version_label» в соответствии с «i_position», потому что я указал «i_position» desc» — было неверным? Если да, то теперь я вижу единственный способ справиться с этим:
- Я использую DQL без описания "i_position"
- Моя программа (она использует DFS) сама отсортирует элементы «r_version_label» — после того, как DQL принесет результаты — используя их индексы из «i_position»
Может быть, есть какое-то лучшее решение?