Teamcenter SQL: Быстрый поиск связей и обратных указателей по PUID

При кастомизации и глубоком администрировании Siemens Teamcenter стандартных средств трассировки связей в RAC или через SOA не всегда достаточно. Когда нужно мгновенно проанализировать дерево отношений объекта или найти скрытые зависимости в базе данных Oracle, на помощь приходит прямой SQL.

В этой заметке я поделюсь двумя проверенными запросами, которые регулярно использую для диагностики данных и отладки плагинов.

Анализ отношений бизнес-объектов (ImanRelation)

Этот запрос позволяет вытащить полную информацию обо всех отношениях (ImanRelation), в которых участвует целевой объект. Он полезен, когда нужно понять, как связаны вторичные и первичные объекты, а также увидеть имена классов из PPOM_CLASS.

/* Информация об отношениях объекта */
SELECT
  t001.puid, t001.rprimary_objectu, t001.rprimary_objectc, t001.rprimary_pname,
  t001.rsecondary_objectu, t001.rsecondary_objectc, t001.rsecondary_pname,
  t001.rrelation_typeu, t001.rrelation_typec,   t002.ptype_name 
FROM (
  SELECT 
    T03.*, T04.PNAME AS RSECONDARY_PNAME 
  FROM (
    SELECT 
      T01.*, T02.PNAME AS RPRIMARY_PNAME 
    FROM 
      INFODBA.PIMANRELATION T01
    LEFT OUTER JOIN (
      SELECT 
        PNAME, PCPID 
      FROM INFODBA.PPOM_CLASS) T02
    ON 
      T01.RPRIMARY_OBJECTC=T02.PCPID
    WHERE 
      T01.RPRIMARY_OBJECTU=:param1 
        OR T01.RSECONDARY_OBJECTU=:param1) T03 
  LEFT OUTER JOIN (
    SELECT 
      PNAME, PCPID 
    FROM 
      INFODBA.PPOM_CLASS) T04 
  ON 
    T03.RSECONDARY_OBJECTC=T04.PCPID
  WHERE (T03.RPRIMARY_OBJECTU=:param1 
    OR T03.RSECONDARY_OBJECTU=:param1)) t001
LEFT OUTER JOIN 
  INFODBA.PIMANTYPE t002
ON 
  t001.rrelation_typeu = t002.puid; 

Примечание: в качестве :param1 подставляйте PUID интересующего вас объекта. DBeaver вывод диалог для запроса значения параметра

Поиск обратных связей через POM_BACKPOINTER

Иногда связь не прописана в PIMANRELATION, но объект ссылается на другой через атрибуты. В таких случаях мы используем таблицу обратных указателей POM_BACKPOINTER. Этот запрос незаменим при поиске ответа на вопрос «Кто ссылается на этот объект?», когда встроенный «Where Used» работает слишком медленно.

SELECT 
  T03.*, T04.PNAME AS FROM_CLASS_PNAME 
FROM (
  SELECT 
    T01.*, T02.PNAME AS TO_CLASS_PNAME 
  FROM 
    INFODBA.POM_BACKPOINTER T01
  LEFT OUTER JOIN (
    SELECT 
      PNAME, PCPID FROM INFODBA.PPOM_CLASS) T02
  ON 
    T01.TO_CLASS=T02.PCPID
  WHERE 
    T01.TO_UID=:param1 
      OR T01.FROM_UID=:param1) T03 
LEFT OUTER JOIN (
  SELECT 
    PNAME, PCPID FROM INFODBA.PPOM_CLASS) T04 
ON 
  T03.FROM_CLASS=T04.PCPID
WHERE 
  T03.TO_UID=:param1 
    OR T03.FROM_UID=:param1;

Почему это важно?

Использование прямого доступа к схеме INFODBA позволяет:

  • Ускорить генерацию отчетов в десятки раз по сравнению с классическими ITK/SOA методами.
  • Находить битые связи, которые не отображаются в интерфейсе Teamcenter из-за ошибок в метаданных.
  • Видеть «изнанку» системы, понимая, как именно распределены классы и типы объектов в базе данных Oracle.

Clean Code в Teamcenter RAC: Почему стоит забыть о Hardcode строках в Java-плагинахИнтерфейсы и классы констант в Teamcenter RAC

При разработке кастомизаций для Rich Client (RAC) на языке Java велик соблазн использовать строковые литералы (Hardcode) для обращения к типам, связям или свойствам. Например, писать «ItemRevision» или «contents» прямо в коде. Однако такой подход — это «мина замедленного действия». Опечатка в одном символе приведет к ошибке, которую компилятор не увидит, а отладка в рантайме отнимет … Читать далее

Работа со структурой продукта в Teamcenter

Teamcenter позволяет определить одну общую структуру продукта, из которой может быть создан полный спектр вариантов продукта. Для настройки структуры изделия можно использовать вариантные условия, ограничения и правила ревизии. Например, компания предлагает персональные компьютеры, позволяя потребителям выбрать: 8 опций процессора, 2 звуковые опции, 4 опции памяти. В этом сценарии у компании есть 1536 возможных вариантов продукта. … Читать далее