groovy - 如何使用groovy脚本创建odi映射场景

标签 groovy oracle-data-integrator

我已经使用 groovy 脚本创建了数千个映射,但无法运行它们。

我可以迭代映射,但现在想使用 groovy 脚本运行映射。 如何创建映射场景然后运行场景 使用groovy脚本?

最佳答案

//Created by DI Studio
//Created by DI Studio
//Created by DI Studio
//Created by DI Studio

//Created by DI Studio
//Created by DI Studio
//Created by DI Studio
import oracle.odi.domain.project.finder.IOdiProjectFinder;
import oracle.odi.domain.model.finder.IOdiDataStoreFinder;
import oracle.odi.domain.project.finder.IOdiFolderFinder; 
import oracle.odi.domain.mapping.finder.IMappingFinder;
import oracle.odi.domain.model.OdiDataStore;
import oracle.odi.domain.model.OdiModel;
import oracle.odi.domain.model.finder.IOdiModelFinder;
import  oracle.odi.core.persistence.transaction.support.DefaultTransactionDefinition;
import oracle.odi.generation.support.OdiScenarioGeneratorImpl;
import oracle.odi.generation.IOdiScenarioGenerator;
import oracle.odi.domain.runtime.scenario.OdiScenario;
import oracle.odi.domain.mapping.Mapping;
import oracle.odi.domain.mapping.finder.IMappingFinder;
import oracle.odi.domain.runtime.scenario.finder.IOdiScenarioFinder;
import oracle.odi.domain.project.OdiProject;



  //txnDef = new DefaultTransactionDefinition()
  //tm = odiInstance.getTransactionManager()
  //tme = odiInstance.getTransactionalEntityManager()
  //txnStatus = tm.getTransaction(txnDef)
  //pf = (IOdiProjectFinder)tme.getFinder(OdiProject.class)
  //ff = (IOdiFolderFinder)tme.getFinder(OdiFolder.class)

//Variables 
//projectName = "Project Name" 
//folderName = "Folder Name" 
//sourcemodelName = "Source Name"
//targetmodelName = "Target name"  
//find project and the folder

/*
def mappingList = ((IMappingFinder) odiInstance.getTransactionalEntityManager().getFinder(Mapping.class)).findByProject("STOO3", "STO3")
ms=mapplingList.iterator()
while(ms.hasNext()){
println ms.getName()
}

*/

txnDef = new DefaultTransactionDefinition()
tm = odiInstance.getTransactionManager()
tme = odiInstance.getTransactionalEntityManager()
txnStatus = tm.getTransaction(txnDef)
def fm = ((IMappingFinder) tme.getFinder(Mapping.class))         // shorcut to Find Mapping
def mappingList = fm.findAll().findAll{w -> w.getProject().getCode() == 'CUSTDBN'}
//def mappingList = ((IMappingFinder) odiInstance.getTransactionalEntityManager().getFinder(Mapping.class)).findByProject("SOCAIRO", "STO")
if (mappingList == null){
  println "Map is null"
}
ms=mappingList.iterator()
while(ms.hasNext()){
              ms_i = ms.next()
              println ms_i.getName()
              scenName = ms_i.getName();

              //IIOdiScenarioGenerator gene = new OdiScenarioGeneratorImpl((odiInstance)
              //OdiScenario newScen = gene.generateScenario(ms_i, scenName,newVersion)}
              //odiInstance.getTransactionalEntityManager().persist(ms_i);
              //OdiScenarioGenerator gene = new OdiScenarioGeneratorImpl((odiInstance)
            //gene.generateScenario(ms_i, scenName,"001")

            stxnDef = new DefaultTransactionDefinition()
            stm = odiInstance.getTransactionManager()
            stme = odiInstance.getTransactionalEntityManager()
            stxnStatus = stm.getTransaction(stxnDef)

            OdiScenario sc = ((IOdiScenarioFinder)     stme.getFinder(OdiScenario.class)).findLatestByName(scenName)
            if (sc != null){
              println "Scenario already exist"
              println sc
            }
            IOdiScenarioGenerator gene = new OdiScenarioGeneratorImpl(odiInstance);
            OdiScenario newScen = gene.generateScenario(ms_i, scenName, "001")
            println newScen 
            //tme.persist(newScen)
            stm.commit(stxnStatus)
            println "Created"
            //odiInstance.close()

            }
tm.commit(txnStatus)

//println ((IMappingFinder) odiInstance.getTransactionalEntityManager().getFinder(Mapping.class)).findByProject("STOO3", "STO3")

              //ms_i.validate()
              //ms_i.submit()

关于groovy - 如何使用groovy脚本创建odi映射场景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46258914/

相关文章:

oracle - ODI 11g 和 12c 之间的差异

java - 使用 mongo-java-driver 使用 x509 证书对 MongoDB v2.6 进行身份验证时遇到问题

docker - Jenkins 管道 : docker. withServer(...) 不在远程服务器上执行 docker 命令

oracle - ODI : KM Java BeanShell - escape double quotes

java - 使用一个创建的包的 ODI : Integrate multiple . xml 文件

Oracle Data Integrator 和 odiRef.getSession

sql - 我可以在 ODI 中的源变量中调用全局变量吗?

java - maven - 如何将代码编译为 jar 文件而不是 .class

hibernate - 是否可以在Grails 3中读取和写入不同的数据源URL?

groovy - 是否有任何隐式变量可以访问 "each"方法中的项目索引