Как редактировать существующее отображение в ODI, используя groovy - PullRequest
1 голос
/ 18 июня 2019

Я пытаюсь понять, как использовать groovy для редактирования существующего сопоставления.

Я могу создать новое сопоставление.Я попытался удалить часть кода удаления, но при этом возникла бы ошибка, из-за которой мне нужно удалить существующее сопоставление

//delete old mapping
/* remove delete portion to use edit existing mapping
  removeMapping(folder, mappingName)

  txnDef = new DefaultTransactionDefinition()
  tm = odiInstance.getTransactionManager()
  tme = odiInstance.getTransactionalEntityManager()
  txnStatus = tm.getTransaction(txnDef)

  dsf = (IOdiDataStoreFinder)tme.getFinder(OdiDataStore.class)
  mapf = (IMappingFinder) tme.getFinder(Mapping.class)
*/
//create new mapping
  map = new Mapping(mappingName, folder);
  tme.persist(map)

. Из ошибки кажется, что сопоставление (Load_TRG_CUSTOMER) должно быть удалено.Пожалуйста, дайте мне знать, если вам нужно больше кода.

Ошибка:

ODI-16096: A mapping with name Load_TRG_CUSTOMER already exists in folder TEST_FOLDER.
(Subtract 18 from the error line number to account for the standard imports)
oracle.odi.domain.mapping.exception.MappingException: ODI-16096: A mapping with name Load_TRG_CUSTOMER already exists in folder TEST_FOLDER.
    at oracle.odi.domain.mapping.Mapping.checkName(Mapping.java:153)

Спасибо за помощь всем.

1 Ответ

0 голосов
/ 19 июня 2019

IMappingFinder предоставляет полезные методы для поиска существующего отображения. Поскольку вы уже знаете имя и папку, я предполагаю, что метод findByName лучше всего подходит для вас.

Я вижу, что у вас уже есть экземпляр IMappingFinder (хотя он уже прокомментирован). Так что вам нужно только заменить:

map = new Mapping(mappingName, folder);

от

map = (Mapping) mapf.findByName(folder, mappingName);
...