Documentum DQL: изменение типа пользователя

Можно ли изменить тип объекта пользователей?

CHANGE dm_user OBJECT TO my_user WHERE r_object_id = '{some id}'

Учитывая, что my_user является подтипом dm_user, приведенный выше запрос приводит к следующему сообщению об ошибке:

[DM_QUERY_E_CHANGE_NON_SYSOBJECT]error:  "The CHANGE OBJECT statement can only be used on dm_sysobject or its subtypes."

Итак, хотя это кажется невозможным, есть ли способ взломать это?


person eivamu    schedule 17.09.2014    source источник
comment
Вы создали тип my_user как подтип dm_user?   -  person Miki    schedule 17.09.2014
comment
@Miki Да :) Я знаю, что это не рекомендуется. Во всяком случае, мне удалось решить реальную проблему, уничтожив dm_user и воссоздав их как my_user. Я все еще задаюсь вопросом, однако, если это было необходимо сделать.   -  person eivamu    schedule 17.09.2014
comment
Какая у вас дилемма с этим? Относительно изменения типа объекта; вы можете имитировать это на уровне БД, хотя я думаю, что эти объекты, скорее всего, не будут использоваться в качестве объектов dm_user. В этом случае вам не нужно было создавать новый подтип dm_user. Вы упомянули проблему реального мира. Что это было?   -  person Miki    schedule 17.09.2014
comment
Реальная проблема: плохая синхронизация LDAP привела к тому, что большинство пользователей стали dm_user вместо желаемого подтипа. Решение состояло в том, чтобы удалить всех пользователей, восстановить конфигурацию синхронизации и выполнить повторную синхронизацию. Однако, если бы я не восстановил конфигурацию синхронизации, было бы необходимо каким-то образом преобразовать пользователей.   -  person eivamu    schedule 18.09.2014


Ответы (1)


Есть способ, я его проверил, он работает. Вам нужно создать новый пользовательский объект типа, который вы создали ранее, например:

CREATE custom_user OBJECT SET user_name = 'Test user' SET user_os_name = 'test_user' 
    SET user_address = '[email protected]' 
    SET default_folder = '/Temp' 
    SET description = 'Test' 
    SET user_login_name = 'test_user'

После этого я сделал окончательную настройку пользовательского объекта через Documentum Administrator (DA): установил встроенный пароль, привилегии пользователя и т. д. Я валидировал пользователя, войдя в систему через DA. Все отлично работает!

Я настроил детали переназначения для какого-то другого пользовательского объекта в репозитории и запустил задание переназначения. Все пользовательские данные настроенных пользователей были успешно переданы моему тестовому объекту пользователя, как и должно быть с этой стандартной процедурой переназначения пользователей OOTB.

person Miki    schedule 18.09.2014
comment
Здорово! Переназначение задания — очень изящный обходной путь, о котором я не подумал. Однако в нашем конкретном случае это не помогло бы, так как нам нужно сохранить имя пользователя для входа из-за единого входа и т. д. По крайней мере, не без какого-либо пользовательского скрипта, чтобы сначала изменить имена для входа на что-то устаревшее/временно. Я отмечу это как правильное, так как я думаю, что это самое близкое, что мы получим :) Спасибо! - person eivamu; 18.09.2014
comment
Вы всегда можете установить данные для входа в систему для этого пользовательского объекта пользовательского типа впоследствии, это должно работать. - person Miki; 18.09.2014