Получить данные Siebel на основе таблицы пересечений с помощью SiebelDataBean

У меня есть структура Siebel, выглядящая так:

BusObj: База
--BusComp: Список категорий
----BusComp: Список продуктов

«Список продуктов» является дочерним компонентом «Списка категорий», у них есть ссылка «Список категорий/список продуктов» посредством таблицы пересечений «S_CAT_PROD», которая имеет CAT_ID для категории и PROD_ID для продукта. Это позволяет N-к-N связывать категории с продуктами.

Теперь проблема в том, что я получил оба SiebelBusComp из кода Java, но понятия не имею, как использовать эту таблицу пересечений для получения всех продуктов для некоторой категории.

Есть несколько методов SiebelBusComp, которые возвращают другой SiebelBusComp, но мне не удалось заставить их работать. Это:

getAssocBusComp()
getMVGBusComp(java.lang.String fieldName)
getPicklistBusComp(java.lang.String fieldName)
parentBusComp()

Есть ли у кого-нибудь опыт использования такой логики в Java? Любая помощь будет оценена, спасибо.


person Mordavolt    schedule 08.02.2015    source источник


Ответы (1)


Я не смог найти таблицу S_CAT_PROD в Siebel, предполагая, что она сделана на заказ. Опять же, если у вас есть ссылка M:M из Каталога в Товары, правильно настроенная с использованием этой таблицы пересечений, сама ссылка позаботится о фильтрации дочерних записей на основе родительской категории.

//make variable instances
var BO = TheApplication().GetBusObject("Base");
var bcCat = BO.GetBusComp("Category list");
var bcProd = BO.GetBusComp("Product  list");

//search for category

bcCat.ClearToQuery();
bcCat.SetSearchSpec("Id", "1-234");
bcCat.ExecuteQuery(True);

// When using the ExecuteQuery method with Java Data Bean, use True for //ForwardOnly and False for ForwardBackward.

if (bcCat.FirstRecord())
{
//the link will automatically filter and bring only those products for this //category

    bcProd.ClearToQuery();
    bcProd.ExecuteQuery(True);
}
person Ranjith R    schedule 09.02.2015
comment
Это действительно работает, огромное спасибо вам, я боролся с этим, по крайней мере, слабо. - person Mordavolt; 09.02.2015