我的Siebel结构如下所示:
BusObj:基础
--BusComp:类别列表
----BusComp:产品列表
"产品列表"是"类别列表"的子组件,它们通过交叉表"S_CAT_PROD"链接类别列表/产品列表,该交叉表具有类别的CAT_ID和产品的PROD_ID。这允许将类别与产品进行N到N的链接。
现在的问题是,我已经从Java代码中检索到了两个SiebelBusComp,但不知道如何利用这个交集表来检索某个类别的所有产品。
有几个SiebelBusComp方法返回另一个SiebelBusComp,但我没能让它们工作。这些是:
getAssocBusComp()
getMVGBusComp(java.lang.String fieldName)
getPicklistBusComp(java.lang.String fieldName)
parentBusComp()
有人在Java中使用过这样的逻辑吗?任何帮助都将不胜感激,谢谢。
我在Siebel中找不到表S_CAT_PROD,假设它是自定义的。同样,假设您使用此交叉表正确配置了从目录到产品的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);
}