Roland Brandfellner
Roland ist Leiter unserer Development Abteilung.
Bisher musste man, wenn man bei der Ausführung einer ODI-Procedure der Technologie „Groovy“ am Agent die SDK ansprechen wollte, manuell im Sourcecode eine Connection zum Master- und Workrepository herstellen. Das macht es notwendig, dass die Connect-Info in einer Konfiguration hinterlegt werden musste.
Seit dem ODI der Version 12.2 gibt es aber eine odiRef-Funktion, die all diesen Aufwand obsolet macht und eine Instanz der Klasse OdiInstance direkt verfügbar macht.
Im Sourcecode schaut der Unterschied folgendermaßen aus:
pre ODI 12.2:
| // Master Respository |
| String masterRepositoryJdbcDriver = „oracle.jdbc.OracleDriver“; |
| masterRepositoryJndiName = null; // if agent is running on WLS you could use a JDNI data source for repo connection |
| MasterRepositoryDbInfo mRepDbInfo = null |
| if (masterRepositoryJndiName) |
| mRepDbInfo = new MasterRepositoryDbInfo(masterRepositoryJndiName, new PoolingAttributes()); |
| else { |
| masterRepositoryJdbcUrl = „jdbc:oracle:thin:@host:port/service“; |
| masterRepositoryJdbcUser = „ODI_REPO_SCHEMA“; |
| masterRepositoryJdbcPassword = „*****“; |
| mRepDbInfo = new MasterRepositoryDbInfo(masterRepositoryJdbcUrl, masterRepositoryJdbcDriver, masterRepositoryJdbcUser, masterRepositoryJdbcPassword.toCharArray(), new PoolingAttributes()); |
| } |
| // Work Repository |
| workRepositoryName = „WORKREP“; |
| WorkRepositoryDbInfo wRepDbInfo= new WorkRepositoryDbInfo(workRepositoryName, new PoolingAttributes()); |
| // ODI Instance |
| OdiInstance odiInstance = OdiInstance.createInstance(new OdiInstanceConfig(mRepDbInfo, wRepDbInfo)); |
| // Authentication |
| odiUser = „SUPERVISOR“; |
| odiPassword = „*****“; |
| Authentication auth = odiInstance.getSecurityManager().createAuthentication(odiSupervisorUser, odiSupervisorPassword.toCharArray()); |
| odiInstance.getSecurityManager().setCurrentThreadAuthentication(auth); |
| // Transaction |
| ITransactionDefinition txnDef = new DefaultTransactionDefinition(); |
| ITransactionManager tm = odiInstance.getTransactionManager(); |
| tme = odiInstance.getTransactionalEntityManager(); |
| ITransactionStatus txnStatus = tm.getTransaction(txnDef); |
| // |
| // … place your SDK code here … |
| // |
| tm.commit(txnStatus); // or tm.rollback(txnStatus); |
| auth.close(); |
| odiInstance.close(); |
ab ODI 12.2:
| OdiInstance odiInstance = odiRef.getOdiInstance(); |
| // Transaction |
| ITransactionDefinition txnDef = new DefaultTransactionDefinition(); |
| ITransactionManager tm = odiInstance.getTransactionManager(); |
| tme = odiInstance.getTransactionalEntityManager(); |
| ITransactionStatus txnStatus = tm.getTransaction(txnDef); |
| // |
| // … place your SDK code here … |
| // |
| tm.commit(txnStatus); // or tm.rollback(txnStatus); |
| odiInstance.close(); |







