12.1.3. OAF. Как присоединиться к 2 View Object, которые заполняются программно?

У меня есть 2 View Object, которые заполняются программно, то есть эти объекты не имеют SQL-запроса в области оператора запроса. Есть HeaderVO и LinesVO. Моя задача - отобразить расширенную таблицу в расширенной таблице. И это продвинутые таблицы на основе HeaderVO и LinesVO. Если я использую View Link, тогда в таблице HeaderVO отображаются данные, а в таблице LinesVO отображается только "Поиск не проводился". Это логично, и я понимаю, почему это так.

введите описание изображения здесь

Но как мне соединить эти 2 таблицы (View Objects)?

2 ответа

Поскольку VO заполняется программно, вы можете попытаться создать ссылку View между этими VO также программно. Вы можете использовать метод ниже для того же:

Предположим, что Master VO - это deptVO, а Detail VO - как empVO.

  // Build an attribute array, consisting of deptVO.DeptNum for Master VO
  AttributeDef[] deptAttrs = new AttributeDef[1];
  deptAttrs[0] = deptVO.findAttributeDef("DeptNum");

  // Build an attribute array, consisting of empVO.DeptNum for Detail VO
  AttributeDef[] empAttrs = new Attributedef[1];
  empAttrs[0] = empVO.findAttributeDef("DeptNum");

  ViewLink vl = myAM.createViewLinkBetweenViewObjects("yourVLName",
  "VLAccessor", //accessor name
  deptVO, //master VO
  deptAttrs, //master VO attribute
  empVO, //detail VO
  empAttrs, //detail VO attribute
  null); //association clause

Чтобы иметь отношение Master-Detail в компоненте OTF advancedTable, дочерний атрибут VO detail должен быть правильно сопоставлен. Поскольку вы программно определяете Master VO и Child VO, убедитесь, что этот шаг выполнен. Вы создаете AdvancedTable декларативно или программно?

API createViewLinkBetweenViewObjects

ViewObject voDept = am.createViewObject("MyDeptVO", "package1.DeptView");
    ViewObject voEmp = am.createViewObject("MyEmpVO", "package1.EmpView");

    AttributeDef[] deptLinkAttrs = new AttributeDef[] { voDept.findAttributeDef("Deptno") };
    AttributeDef[] empLinkAttrs = new AttributeDef[] { voEmp.findAttributeDef("Deptno") };

    ViewLink vl = am.createViewLinkFromEntityAssocName("MyDeptEmpLink",
                        "Employees",
                        voDept, deptLinkAttrs,
                        voEmp, empLinkAttrs,
                        null);
Другие вопросы по тегам