ODI 11g – Insight to the SDK
Posted
by David Allan
on Oracle Blogs
See other posts from Oracle Blogs
or by David Allan
Published on Tue, 19 Jun 2012 17:47:55 +0000
Indexed on
2012/06/19
21:21 UTC
Read the original article
Hit count: 711
/Oracle
This post is a useful index into the ODI SDK that cross references the type names from the user interface with the SDK class and also the finder for how to get a handle on the object or objects. The volume of content in the SDK might seem a little ominous, there is a lot there, but there is a general pattern to the SDK that I will describe here.
Also I will illustrate some basic CRUD operations so you can see how the SDK usage pattern works. The examples are written in groovy, you can simply run from the groovy console in ODI 11.1.1.6.
Entry to the Platform
Object | Finder | SDK |
odiInstance | odiInstance (groovy variable for console) | OdiInstance |
Topology Objects
Object | Finder | SDK |
Technology | IOdiTechnologyFinder | OdiTechnology |
Context | IOdiContextFinder | OdiContext |
Logical Schema | IOdiLogicalSchemaFinder | OdiLogicalSchema |
Data Server | IOdiDataServerFinder | OdiDataServer |
Physical Schema | IOdiPhysicalSchemaFinder | OdiPhysicalSchema |
Logical Schema to Physical Mapping | IOdiContextualSchemaMappingFinder | OdiContextualSchemaMapping |
Logical Agent | IOdiLogicalAgentFinder | OdiLogicalAgent |
Physical Agent | IOdiPhysicalAgentFinder | OdiPhysicalAgent |
Logical Agent to Physical Mapping | IOdiContextualAgentMappingFinder | OdiContextualAgentMapping |
Master Repository | IOdiMasterRepositoryInfoFinder | OdiMasterRepositoryInfo |
Work Repository | IOdiWorkRepositoryInfoFinder | OdiWorkRepositoryInfo |
Project Objects
Object | Finder | SDK |
Project | IOdiProjectFinder | OdiProject |
Folder | IOdiFolderFinder | OdiFolder |
Interface | IOdiInterfaceFinder | OdiInterface |
Package | IOdiPackageFinder | OdiPackage |
Procedure | IOdiUserProcedureFinder | OdiUserProcedure |
User Function | IOdiUserFunctionFinder | OdiUserFunction |
Variable | IOdiVariableFinder | OdiVariable |
Sequence | IOdiSequenceFinder | OdiSequence |
KM | IOdiKMFinder | OdiKM |
Load Plans and Scenarios
Object | Finder | SDK |
Load Plan | IOdiLoadPlanFinder | OdiLoadPlan |
Load Plan and Scenario Folder | IOdiScenarioFolderFinder | OdiScenarioFolder |
Model Objects
Object | Finder | SDK |
Model | IOdiModelFinder | OdiModel |
Sub Model | IOdiSubModel | OdiSubModel |
DataStore | IOdiDataStoreFinder | OdiDataStore |
Column | IOdiColumnFinder | OdiColumn |
Key | IOdiKeyFinder | OdiKey |
Condition | IOdiConditionFinder | OdiCondition |
Operator Objects
Object | Finder | SDK |
Session Folder | IOdiSessionFolderFinder | OdiSessionFolder |
Session | IOdiSessionFinder | OdiSession |
Schedule | OdiSchedule |
How to Create an Object?
Here is a simple example to create a project, it uses IOdiEntityManager.persist to persist the object.
import oracle.odi.domain.project.OdiProject;
import oracle.odi.core.persistence.transaction.support.DefaultTransactionDefinition;txnDef = new DefaultTransactionDefinition();
tm = odiInstance.getTransactionManager()
txnStatus = tm.getTransaction(txnDef)project = new OdiProject("Project For Demo", "PROJECT_DEMO")
odiInstance.getTransactionalEntityManager().persist(project)
tm.commit(txnStatus)
How to Update an Object?
This update example uses the methods on the OdiProject object to change the project’s name that was created above, it is then persisted.
import oracle.odi.domain.project.OdiProject;
import oracle.odi.domain.project.finder.IOdiProjectFinder;
import oracle.odi.core.persistence.transaction.support.DefaultTransactionDefinition;txnDef = new DefaultTransactionDefinition();
tm = odiInstance.getTransactionManager()
txnStatus = tm.getTransaction(txnDef)prjFinder = (IOdiProjectFinder)odiInstance.getTransactionalEntityManager().getFinder(OdiProject.class);
project = prjFinder.findByCode("PROJECT_DEMO");project.setName("A Demo Project");
odiInstance.getTransactionalEntityManager().persist(project)
tm.commit(txnStatus)
How to Delete an Object?
Here is a simple example to delete all of the sessions, it uses IOdiEntityManager.remove to delete the object.
import oracle.odi.domain.runtime.session.finder.IOdiSessionFinder;
import oracle.odi.domain.runtime.session.OdiSession;
import oracle.odi.core.persistence.transaction.support.DefaultTransactionDefinition;txnDef = new DefaultTransactionDefinition();
tm = odiInstance.getTransactionManager()
txnStatus = tm.getTransaction(txnDef)sessFinder = (IOdiSessionFinder)odiInstance.getTransactionalEntityManager().getFinder(OdiSession.class);
sessc = sessFinder.findAll();
sessItr = sessc.iterator()
while (sessItr.hasNext()) {
sess = (OdiSession) sessItr.next()
odiInstance.getTransactionalEntityManager().remove(sess)
}
tm.commit(txnStatus)
This isn't an all encompassing summary of the SDK, but covers a lot of the content to give you a good handle on the objects and how they work. For details of how specific complex objects are created via the SDK, its best to look at postings such as the interface builder posting here. Have fun, happy coding!
© Oracle Blogs or respective owner