среда, 3 сентября 2014 г.

Исправление дефекта с иерархическим LOV

Обнаружился баг(Bug) связанный с классом бизнес-компоненты(BusComp) List Of Values.
Если сделать линк связывающий какую-либо бизнес компоненту с компонентой List Of Values через интерсекшн таблицу, то при отвязке(дизассоциации) записей LOV, являющихся родителями к другим записям LOV, происходит физическое удаление родительской и дочерних записей LOV из базы. При этом если у записи дочерних LOV нет, то при отвязке, запись просто отвязывается и удаления не происходит, как и должно быть.

 Особенность данной компоненты (List Of Values), основанной на классе CSSBCListOfValues, заключается в том, что при удалении значения, являющегося родителем к другому значению в LOV, удаляются также все его связанные дочерние LOV записи. Например в таблице приведенной ниже удаление значения Type 1 из типа MY_TYPE приведет к удалению записей Sub Type 1 и Sub Type 2 из типа MY_SUB_TYPE.




TypeNameValueParent LIC
LOV_TYPEMY_TYPEMY_TYPE
LOV_TYPEMY_SUB_TYPEMY_SUB_TYPE
MY_TYPEType 1Type 1
MY_TYPEType 2Type 2
MY_SUB_TYPESub Type 1Sub Type 2Type 1
MY_SUB_TYPESub Type 2Sub Type 2Type 1
MY_SUB_TYPESub Type 3Sub Type 3

По багу, при использовании линка с интерсекшн таблицей: При отвязке значения Type 2, значение корректно отвязывается. При отвязке значения Type 1, значение Type 1 удаляется, а также удаляются Sub Type 1 и Sub Type 2.