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

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

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

Но как я могу связать эти 2 таблицы (представление объектов)?


person jayrumi    schedule 24.07.2018    source источник


Ответы (2)


Поскольку VO заполняется программно, вы можете попробовать создать View Link между этими 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
person RaniVerma    schedule 29.08.2018

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

createViewLinkBetweenViewObjects API

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);
person Jacob    schedule 29.08.2018