I' m trying to automate the import of mappings (XML) in ODI 12c, using a Groovy script and the ODI SDK. But my code just keeps running without any result. Here's is my code.
txnDef = new DefaultTransactionDefinition()
tm = odiInstance.getTransactionManager()
tme = odiInstance.getTransactionalEntityManager()
txnStatus = tm.getTransaction(txnDef)
ImportServiceImpl importSrv = new ImportServiceImpl(odiInstance);
importSrv.importObjectFromXml(importSrv.IMPORT_MODE_SYNONYM_INSERT, filename, parentObj, true, null, true);
tm.commit(txnStatus)
The code runs for indefinite amount of time until I manually terminate the program. I don't understand what is the problem. Link to javadoc: https://docs.oracle.com/middleware/1213/odi/reference-java-api/oracle/odi/impexp/IImportService.html#importObjectFromXml(int,%20java.lang.String,%20boolean,%20char[],%20boolean)
And also, I don't understand the fourth parameter in the method
void importObjectFromXml(int pImportMode,
java.lang.String pFileName,
IImportRoot pObjectParent,
boolean pDeclareMissingRepository,
char[] pExportKey,
boolean pImportWithoutCipherData)
throws OdiImportNotSupportedException,
OdiImportException,
java.io.IOException
I tried using both true and false for pDeclareMissingRepository but none works. Please help, if I'm missing something.
Thanks.
You should use
importObjectFromXmlinstead ofimportFromXmlwhich is specific to SmartImport.Try with
importSrv.importObjectFromXml(IImportService.IMPORT_MODE_SYNONYM_INSERT, filename, parentObj, true, null, true)The pDeclareMissingRepository is linked to the way objects were identified in 11g, with an internal ID and a repository ID. When importing it would check if it could recognize the repository ID from where the object is exported. I don't think it's used anymore but for your usage you can safely leave the value to true.