You may generate a lot of scenarii when developping ODI projet. When promoting, commiting to git… …you are usually only interested in the last functionnal scenario.
All the past being stored in git or promoted, you may like to clear all all scenarii. If yes, this groovy script may help you. It will delete all scenarii but the last version (sorted by version name, take care…).
The code has two parameters, the project code and a pattern for the package. May help you target specific scenario.
//Imports core import oracle.odi.core.persistence.transaction.ITransactionDefinition; import oracle.odi.core.persistence.transaction.support.DefaultTransactionDefinition; import oracle.odi.core.persistence.transaction.ITransactionManager; import oracle.odi.core.persistence.transaction.ITransactionStatus; //Imports odi Objects import oracle.odi.domain.project.OdiPackage; import oracle.odi.domain.runtime.scenario.OdiScenario; import oracle.odi.domain.project.finder.IOdiPackageFinder; import oracle.odi.domain.runtime.scenario.finder.IOdiScenarioFinder; // Parameters -- TO FILL -- String sourceProjectCode = 'MY_PROJECT_CODE'; String sourcePackageRegexPattern = '*'; println " Start Scenarios Deletion"; println "-------------------------------------"; //Setup Transaction ITransactionDefinition txnDef = new DefaultTransactionDefinition(); ITransactionManager tm = odiInstance.getTransactionManager(); ITransactionStatus txnStatus = tm.getTransaction(txnDef); int scenarioDeletedCounter = 0; try { //Init Scenario Finder IOdiScenarioFinder odiScenarioFinder = (IOdiScenarioFinder)odiInstance.getTransactionalEntityManager().getFinder(OdiScenario.class); //Loops through all packages in target project/fodlers for (OdiPackage odiPackageItem : ((IOdiPackageFinder)odiInstance.getTransactionalEntityManager().getFinder(OdiPackage.class)).findByProject(sourceProjectCode)){ // Only generate Scenario for package matching pattenr if (!odiPackageItem.getName().matches(sourcePackageRegexPattern)) { continue; } println "Deleting Scenarii for Package " + odiPackageItem.getName(); odiScenCollection = odiScenarioFinder.findBySourcePackage(odiPackageItem.getInternalId()); maxOdiScen = odiScenCollection.max{it.getVersion()}; if (maxOdiScen != null) { for (OdiScenario odiscen : odiScenCollection ) { if (odiscen != maxOdiScen){ println "Deleting Scenari "+ odiscen.getName() + " " + odiscen.getVersion(); odiInstance.getTransactionalEntityManager().remove(odiscen); scenarioDeletedCounter ++; } } } } // Commit transaction tm.commit(txnStatus); println "---------------------------------------------------"; println " " + scenarioDeletedCounter + " Scenarios deleted Sccessfully"; println "---------------------------------------------------"; } catch (Exception e) { // Print Execption println "---------------------ERROR-------------------------"; println(e); println "---------------------------------------------------"; println " FAILURE : Scenarios Deletion failed"; println "---------------------------------------------------"; }
Thanks for your blog, nice to read. Do not stop.