ODI 11g – Insight to the SDK
- by David Allan
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!