суббота, 27 апреля 2013 г.

OIM: Замена Lookup на select и локализация названий столбцов


В OIM лукапы используются в двух местах:
  1. На различных формах, например на форме редактирования и на форме просмотра пользователя (список организаций, список руководителей и т.д.)
  2. В дочерних формах - список ролей/прав
Лукап можно заменить на произвольную выборку из базы: из таблицы, из VIEW или из тех же таблиц, на основе которых строится лукап.
 
select lkv.lkv_encoded, lkv.lkv_decoded
from lkv
join lku on lku.lku_key = lkv.lku_key and lku.lku_type_string_key='Имя лукапа';

Для Oracle Identity Manager версии 9.X

Замена на формах

Для того, что бы заменить на формах, нужно отредактировать файл FormMetaData.xml Пример. Атрибут описан как лукап:
<Attribute name="-19" label="global.label.managerid" displayComponentType="LookupField" variantType="long" dataLength="50" map="Users.Manager Login">
<ValidValues lookupMethod="findUsersFiltered" operationClass="Thor.API.Operations.tcUserOperationsIntf" displayColumns="Users.User ID,Users.Last Name,Users.First Name" selectionColumn="Users.User ID"> 
</Attribute>


Атрибут описан как выборка из таблицы:
<Attribute name="-19" label="global.label.managerid" displayComponentType="LookupField" variantType="long" dataLength="50" map="Users.Manager Login">
<ValidValues lookupQuery="select usr_login, usr_last_name from usr" 
selectionColumn="USR_LOGIN"
columnNames="USR_LOGIN"/>
</Attribute>

Замена на дочерних формах


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

1. В файл локализации xlWebAdmin_ru.properties в блок "# ----- LOOKUPFIELD column headers -----" добавляем строку: lookupfield.header.test_lookup_name.CustomField=tname
(в имени лукапа пробелы заменяются знаком "_", название лукапа обязательно записываем маленькими буковками)

2. Создаем лукап:
Название лукапа (Code): Test Lookup Name.CustomField
Поле (Field): SOME_FIELD_ALIAS
Тип лукапа: Field Type
Группа (Group): Lookup Definition
Добавить строку в лукап, в которой: Code Key=CustomField, Decode=Любая строка

3. В Property лукап поля указываем:
Lookup Query=Select SOME_FIELD1 AS SOME_FIELD_ALIAS, SOME_FIELD2 from TABLE
Lookup Column Name = SOME_FIELD2 (поле из селекта, которое будет записано в форму как значение)
Column Names = SOME_FIELD_ALIAS, SOME_FIELD2
Column Captions = ...(тут можно указать что угодно)

Для Oracle Identity Manager версии 11.1.1.X

Проверено на версии 11.1.1.3.8, скорее всего подойдет и для других версий

Замена на формах

См. раздел документации Creating Entity Attributes, в таблице типов атрибутов это LOV Type -> By Query

Замена на дочерних формах

Пункты 1 и 2 см. для версии 9.X

3. В Property лукап поля указываем:
Lookup Query=Select SOME_FIELD1 AS SOME_FIELD_ALIAS, SOME_FIELD2 from TABLE
Lookup Column Name = SOME_FIELD2 (поле из селекта, которое будет записано в форму как значение)
Column Names = SOME_FIELD2
Column Captions = ...(тут можно указать что угодно)



Комментариев нет: