Расширение бизнес-объекта Kuali Document
Я столкнулся с проблемой с расширенными атрибутами в документе (пытаясь расширить таблицу документов). Я создал PK исходной таблицы (FDOC_NBR) в расширенной таблице и связал их с помощью foreignKey записи ojb настроенной исходной таблицы (в качестве ссылочного дескриптора "расширения"). Я создал bo и dd для расширения и настроил dd исходного документа, чтобы добавить новые атрибуты. На самой расширенной BO я также добавил членов (с установщиками и получателями) для 2 новых столбцов + для PK столбца documentNumber. Я также добавил новые атрибуты в jsp документа. Соответствующее определение модуля уже было расширено, чтобы включить пользовательские файлы dd, ojb и т. Д.
Действительно, при открытии документа отображаются новые поля, однако при попытке отправить документ (независимо от того, что я делал с новыми полями), я получаю сообщение об ошибке.
Сведения об ошибках: операция OJB; SQL []; ORA-01400: невозможно вставить NULL в ("KFSTEM"."TEM_TRVL_ARRANGER_DOC_EXT_T"."FDOC_NBR"); вложенным исключением является java.sql.SQLIntegrityConstraintViolationException: ORA-01400: невозможно вставить NULL в ("KFSTEM". "TEM_TRVL_ARRANGER_DOC_EXT_T". "FDOC_NBR")
Похоже, система каким-то образом пытается вставить значение NULL в поле расширения PK вместо фактического номера документа. Пытаясь отладить это, в методе маршрута действия и вплоть до DocumentDaoOjb.save (который находится настолько далеко, насколько я могу), я вижу, что документ с реальным номером документа передается, поэтому проблема кажется чисто с ojb пытается установить этот номер в таблице расширений.
У кого-нибудь есть опыт работы с расширенными атрибутами документов, которые могут помочь пролить свет на это?
1 ответ
KFS использует KNS, а в нервной системе Kuali первичный ключ для объекта расширенных атрибутов должен быть установлен посредством ручного вмешательства.
В этом случае создается впечатление, что вы добавляете расширенный атрибут в транзакционный документ, документ Travel Arranger (TAA), который упрощает работу. По сути, вам нужно расширить org.kuali.kfs.module.tem.document.TravelArrangerDocument и переопределить prepareForSave, чтобы установить там номер документа (это может быть установлено уже, так как prepareForSave должен вызываться несколько раз в процессе маршрутизации, но есть никакого реального вреда от перезаписи этой информации, так как номер базового документа останется прежним).
Надеюсь это поможет!