工作总结开发.docx
《工作总结开发.docx》由会员分享,可在线阅读,更多相关《工作总结开发.docx(35页珍藏版)》请在冰豆网上搜索。
工作总结开发
工作总结
ODI开发
作者:
付朋
项目:
青啤PTS/MDM项目
技术负责人:
荣耀/何莺
日期:
March24,2020
Note:
工作总结i
目录ii
概述3
工作总结--ODI开发4
ODI开发工作小结4
ODI环境搭建5
ODI架构搭建12
ODI代理创建14
ODI基础开发18
CDC接口开发36
KM(知识模块)基础46
附录61
附录I:
表空间创建脚本61
附录II:
触发器脚本61
附录III:
JKM客户化62
更改历史65
概述
工作总结主要是描述我在青岛啤酒MDM项目和PTS项目4个月以来的学到技术和工作感悟。
主要是对ODI开发进行一次总结,描述对ODI技术开发的认识和了解。
更多ODI开发技术可参阅《OracleDataIntegrator应用指南》文档。
技术
目前接触的大部分都是与数据相关的开发,可能在技术方面学习和理解比较片面。
1.在MDM项目学到的技术:
接口开发、ODI基础开发、FORM个性化、FORM基础开发、HTML报表开发等;
2.在PTS项目学到的技术:
ODI环境搭建及CDC开发、RTF报表开发等。
业务
对业务的了解主要方式是和业务顾问进行交流,在EBS界面上跑业务流程等。
1.MDM项目业务认识:
集中对数据进行管理,数据标准化,流程固化。
2.PTS项目业务认识:
通过条码达到产品的追溯。
工作总结--ODI开发
主要是对在项目上学到的技术进行总结。
注:
如有错误或疑问,请大家欢迎提出和指正。
ODI开发工作小结
简单叙述在项目做过的ODI开发及相关信息
ODI开发业务背景
主要涉及ODI开发的项目:
青啤MDM项目和PTS项目。
青啤MDM项目:
青啤MDM系统大部分基础数据(如物料、物料类别等)都是从ERP系统获取的(初始化数据),然后在MDM系统中维护这些数据,并实时同步到ERP系统中。
这些初始化数据和同步数据的迁徙媒介都是ODI。
青啤PTS项目:
PTS项目数据分为基础数据和业务数据,都采用ODI使这些数据流转在ERP、DataCenter、总PTS、分PTS、CDCPTS等系统间。
ODI组件
ODI主要是以下组件组成的:
资料库(Repository):
MasterRepository、WorkRepository。
设计工具,主要用以下设计工具:
TopologyManager:
描述物理和逻辑构架,在主资料库中标示服务器、Schema、代理。
SecurityManager:
管理ODI用户及权限,可以给配置文件及用户访问对象的权限。
Designer:
是ODI开发的主要组件,创建和执行DataStores、Interfaces、Procedure、Packages,客户化KM等操作
Operator:
管理和监控数据转换任务的执行情况,可用于调试。
计划代理(ScheduleAgent):
属于Runtime组件,因为ODI采用E-LT架构,所以ScheduleAgent只用来调度执行ELT任务,其数据转换引擎很少用到。
另外还有三个需要单独安装的组件:
MetadataNavigator、LightweightDesigner、PublicWebServices。
ODI接口
ODI接口主要分为两类:
静态接口和动态接口。
静态接口用于数据初始化,只在接口运行初期执行一次。
动态接口用于数据维护,是实时性的。
在MDM项目中,采用的是普通动态接口:
基于静态接口,指定数据筛选字段(常用字段last_update_date)和筛选规则(last_update_date>sysdate-1)。
在PTS项目中,采用的是CDC动态接口:
基于静态接口,添加订阅者,生成日志。
KM(知识模块)
ODI的知识模块主要分为几个大类(RKM,CKM,LKM,IKM,SKM),其中最重要的是LKM(loadKM)和IKM(IntegrationKM)RKM:
RKM:
完成从源系统和目标系统的数据结构的反向工程来形成数据模型的功能。
CKM:
完成数据质量检查。
JKM:
日志记录知识模块,记录单个表或视图等中的新数据和更新的数据。
LKM:
完成从源数据库数据加载到临时表。
IKM:
完成从临时表的数据加载到目标表。
SKM:
完成ODI和WEB服务接口的功能。
SKM(ServiceKM):
Web服务知识模块,可以使用该知识模块来生成Web服务调用。
ODI环境搭建
ODI开发环境进行ODI开发的基础。
创建ODI用户
ODI用户就是指数据库为ODI开发而创建的用户,就是说ODI通过此用户连接数据库,又是ODI的WorkSchema。
ODI用户权限较大,能否访问其他用户的数据。
如果某个用户的数据需要进行ODI开发,那么这些数据的增删改查操作权限都得赋给ODI用户。
而ODI开发会涉及到源系统和目标系统,那么需要分别为这些系统创建ODI用户。
创建脚本如下:
-------------------------------------------------------
--创建ODI用户(WorkSchema)
-------------------------------------------------------
--源系统@ERP
createusersoauidentifiedbysoaudefaulttablespacesoau_data;
grantconnect,resourcetosoau;
grantcreatedatabaselinktosoau;
grantcreatesynonymtosoau;
--目标系统@MDM
createusersoauidentifiedbysoaudefaulttablespacesoau_data;
grantconnect,resourcetosoau;
grantcreatedatabaselinktosoau;
grantcreatesynonymtosoau;
说明:
1、ODI用户统一命名,方便,易于管理;
2、源目标和目标系统角色可交换(源系统作为目标系统,目标系统作为源系统),但是需要保证同一数据模型必须单向ODI开发;
3、源/目标系统建立物料架构时,如下两处地方需要设置为ODI用户:
创建资料库
ODI在ERP系统搭建环境,其TNS信息为:
BEST=
(CONNECT_DATA=
(SID=BEST)
)
)
资料库概念:
摘自《OracleDataIntegrator应用指南》
MasterRepository,保存企业所有IT资源的Topology,保存项目和数据模型的安全信息、版本信息,供ODI图形模块等使用。
通常创建一个即可。
MasterRepository要尽可能独立存储,单独的Instance,或单独的Schema。
WorkRepository,保存项目和数据模型,供ODI图形模块等使用。
可创建多个。
一个WorkRepository只能连接一个MasterRepository。
一个Schema只能存储一个WorkRepository,不过MasterRepository倒可与其安装在同一Schema。
说明:
在哪个服务器上创建资料库是没有明确要求,可按项目需求来,本案例是在ERP服务器创建资料库(原因是MDM数据库没有创建表空间的权限)。
创建主资料库(MasterRepository)@ERP
1、创建MasterRepository用户
createusersoamidentifiedbysoamdefaulttablespaceusers;
grantconnect,resourcetosoam;
2、创建MasterRepository
通过开始菜单MasterRepositoryCreation启动(或ODI安装目录下的ODI\oracledi\bin\,并按下图输入资料库信息:
JDBC:
Driver
URL:
BEST
用户/密码:
soam/soam
注:
蓝颜色选中区域为ERP服务器TNS信息。
点击按钮,如果出现连接成功信息,点击OK。
3、连接MasterRepository(创建主资料库连接“soamFP”)
通过开始菜单TopologyManager启动(或ODI安装目录下的ODI\oracledi\bin\,点击新建按钮,并按下图输入资料库信息:
用户/密码为SUPERVISOR/SUNOPSIS
点击Test按钮,如果连接成功,点击OK,这样连接主资料库创建成功了。
说明:
1、用户/密码为什么输入SUPERVISOR/SUNOPSIS
用户/密码其实是SecurityManagerUsers,就是说安全管理用户才有权限连接主资料库,这类用户作为SecurityRepositoryConnectionsUsers。
ODI提供了一个默认的安全管理用户SUPERVISOR/SUNOPSIS,如果你不知道有哪些用户可以使用,那么可选择默认的SUPERVISOR/SUNOPSIS。
疑问:
如果ODI首次搭建开发环境,是不是用户/密码必须使用默认的SUPERVISOR/SUNOPSIS
2、如果想自己创建用户/密码,然后使用,该如何操作
前提是ODI已经搭建了开发环境,至少有个SecurityRepositoryConnections用户。
登录已经有的Designer,点击菜单中的(或ODI安装目录下的ODI\oracledi\bin\进入如下界面:
通过添加自己需求的用户信息,就可以使用了。
更多用户安全管理设置可参阅:
创建工作资料库(WorkRepository)@ERP
1、创建WorkRepository用户
createusersoawidentifiedbysoawdefaulttablespaceusers;
grantconnect,resourcetosoaw;
2、创建WorkRepository
创建存储连接“soamFP”成功后,界面显示如下
点击OK按钮进入SecurityManager窗口,
点击菜单按钮,进入TopologyManager窗口,并切换至RepositoriesTAB页,
点击InsertWorkRespository,就进入了创建工作资料库界面了,分别在Definition和JDBCTAB页输入如下信息,
点击按钮Test,测试成功后,点击OK,弹出窗口,输入信息如下,
点击OK,WorkRepository创建完成了。
3、连接WorkRepository(创建工作资料库连接“soawFP”)
开始菜单Designer启动(或ODI安装目录下的ODI\oracledi\bin\designer.bat),点击新建按钮,并按下图输入资料库信息:
用户/密码为SUPERVISOR/SUNOPSIS
点击Test按钮,测试连接成功后,点击OK到登录界面,
选择创建好的工作资料库连接“soamFP”,点击OK进入Designer模块。
ODI架构搭建
ODI中所使用的数据模型基础是逻辑架构,而逻辑架构对应了物理架构。
物理架构属于数据服务器。
创建数据服务器
TopologyManager\PhysicalArchitecture\Technologies\Oracle\右键\InsertDataServer
Connection那一栏中的User/Password,输入的是ODI用户/密码:
soau/soau。
Instance/dblink(DataServer)特别说明--OracletoOracle模式
1、Instance/dblink作用
简单的说Instance/dblink其实就是两个数据库(源数据库和目标数据库)间建立DBLINK的媒介。
当执行ODI接口时,ODI会根据源数据服务器的Instance/dblink信息匹配目标服务器文件中TNSNAME,如果匹配成功,ODI会自动根据TNS信息与源数据库之间创建DBLINK;如果匹配不成功,表示没有明确DBLINK建立对象,DBLINK创建后无法正常连接,导致ODI接口执行会抛出错误信息:
TNS:
couldnotresolvetheconnectidentifierspecified
所以输入Instance/dblink(DataServer)信息前,请确保在目标服务器文件中已经添加源服务器TNS信息。
2、Instance/dblink输入要求
在目标数据库的$ORACLE_HOME\network\admin文件夹下,文件中必须有源数据库的一个TNS,而Instance/dblink(DataServer)必须填对应的TNSNAME。
例如案例创建的是ERP系统的数据服务器,那么Instance/dblink(DataServer)必须输入MDM系统TNS文件中对应ERP系统的TNSNAME:
点击Test按钮,测试成功后,点击OK,创建ERP系统的数据服务器完成了。
用相同的方式创建MDM系统的数据服务器。
创建物理架构
上面步骤确定后,会自动弹出创建物理架构的界面:
说明:
Schema和WorkSchema的区别
Schema(架构)是指数据源所在,也就是我们需要抽取的数据源或者是要把数据放进去的数据源;WorkSchema(工作架构)是指ODI开发存放临时表的地方。
一般会指定某个Schema为WorkSchema,比如案例中的SOAU,就是说所有系统的ODI开发都是规定使用SOAUSchema。
而Schema可按照需求来选择,比如ERP系统有多维数据库开发(即多个客户化用户)比如CUX、BSM、HADF等,都需要进行ODI开发,那么可以建立相对应的物理架构:
ERP、ERP、ERP等。
本案例中我们创建的是物理架构是ERP。
点击OK按钮,会出现一个警告(提示需要指定上行文,因为逻辑架构还没创建,可以先忽略),点击OK物理架构的创建就完成了。
用相同的方式创建MDM系统的物理架构。
创建逻辑架构
TopologyManager\LogicalArchitecture\Technologies\Oracle\右键\InsertLogicSchema
为了使物理架构和逻辑架构的对应关系更直观,逻辑架构命名和物理架构一致:
ERP,
点击OK,即可完成逻辑架构的创建。
同时物理架构ContextTAB页也会自动添加上下文。
用相同的方式创建MDM系统的逻辑架构。
ODI代理创建
启动代理(Agent)
开始菜单\Agent(或ODI安装目录下的ODI\oracledi\bin\启动代理
创建物理代理
TopologyManager\PhysicalArchitecture\Agents\右键\InsertAgent
将本机设置为ODI代理。
如图所示,
Port:
20910(默认)Maximumnumberofsessionssupported:
100
如果代理有效,点击Test按钮,显示测试成功界面。
测试成功,点击OK。
创建逻辑代理
TopologyManager\LogicalArchitecture\Agents\右键\InsertLogicalAgent
输入如下信息:
Name:
FPAgentPhysicalAgents选择FPAgent
点击OK,逻辑代理创建完成。
测试代理
代理创建好了,需要进行测试。
择一个开发好的接口或过程,点击执行,弹出如下窗口
Agent选择需要测试的代理:
FPAgent。
点击OK,执行接口,并切换到Operator查看执行结果
发现接口执行成功了,表明代理创建成功。
启动计划代理(SchedulerAgent)
编辑配置文件
在WinCMD下使用Agent编译两个用户的密码:
目录是ODI安装目录
D:
\ODI\ODI\oracledi\bin\右键编辑,注意修改以下内容:
setODI_SECU_URL=jdbc:
oracle:
thin:
@erpd
setODI_SECU_USER=soam
setODI_SECU_ENCODED_PASS=eSyXEmZlSzy2VL9mAxu8y
setODI_SECU_WORK_REP=SOAMFP
setODI_USER=SUPERVISOR
setODI_ENCODED_PASS=
启动计划代理D:
\ODI\ODI\oracledi\bin\
注:
报错信息是未定义代理。
原因是ERP(BEST环境)服务器,没有设置代理服务器,ODI是无法创建ERP代理。
本章节创建的代理是本机代理,而ODI资料库等信息都是建立在ERP(BEST环境)的,所以无法创建ERP代理,启动ERP计划代理就会抛出上图的错误信息。
因为暂时ERP测试环境没有代理服务器,也没有创建代理服务器的权限。
故启动计划代理的研究有机会继续研究。
ODI基础开发
ODI架构创建完成后,就可以进行ODI的基础开发,主要是项目、模型、接口、包等ODI基础要素的建立。
ODI基础开发案例:
青啤MDM项目ERP-MDM的ODI开发。
创建项目(Projects)
由于本ODI开发总结选取的案例是青啤MDM项目中ERP-MDM的ODI开发:
源系统是ERP,目标系统式MDM。
那么项目可命名为:
TsingTaoMDM,并将该项目下的FirstFolder重新命名为ERP-MDM。
点击Designer组件的ProjectsTAB页图标,新建Project,命名为TsingTaoMDM。
注:
这个Project是指ODI开发项目,本案例将青啤MDM项目作为ODI开发项目,可将青啤MDM项目所有ODI开发都放在这个Project里面。
当然也可以更细或更广的划分,比如在青啤正式的ODI开发中,所有的ODI开发都放在TSINGTAO里面,并没有很细的划分;而在《OracleDataIntegrator应用指南》中,直接用ORCL_DEMO的ODI开发作为Project,划分得很细。
点击OK按钮,左侧栏会显示新建的Project
将FirstFolder重新命名为ERP-MDM,就完成了项目的创建。
效果如下图,
导入知识模块(KM)
Designer\TsingTaoMDM\KnowledgeModules\RKM\右键\ImportKnowledgeModules
文件选择你ODI安装目录下的ODI\oracledi\impexp,
将下面的文件全部选中,点击OK,导入时间较长。
也可以只选中你所需要导入的KM文件。
创建模型(Models)
点击Designer组件的ModelsTAB页图标,新建ModelsFolder,命名为ERPSystem,
点击OK即可完成ModelFolder的创建,
右键已经创建的ModelFoder:
ERPSystem,
选择InserModel,输入如下信息,
点击OK,ERP系统的Model创建完成了。
用相同的方式创建MDM系统的Model。
反向数据存储(Datastores)
反向的数据存储,是ODI接口开发的前提。
反向分为两种:
标准反向和客户化反向。
此章节描述了标准反向,客户化反向涉及了RKM,将在KM(知识模块)基础章节RKM中进行详细的说明。
案例:
ERP-MDM物料初始化ODI接口开发。
源系统的Datastores反向
案例注意事项:
青啤所有视图都创建在APPS用户下,也就说CUX_MTL_SYSTEM_ITEMS_INIT_V数据源在APPSSchema,而不是在CUXSchema。
如果在CUXSchema下反向会导致反向出来Datastore是没有结构的,如下图所示,
那么在做CUX_MTL_SYSTEM_ITEMS_INIT_V反向之前我们需要建立一个为视图反向的物理架构和逻辑架构:
ERP。
按照ODI开发要求,还需要创建对应的ERP模型,本次案例没有将其独立出来。
这个案例告诉我们,反向Datastores选择的物理架构的Schema必须是数据源Schema,否则反向会出现上面的问题。
反向前准备:
CREATEsynonymFOR;
CREATEsynonymFOR;
建立反向ERP系统视图的物理架构和逻辑架构(参考ODI架构搭建章节):
ERP,建立成功后如下图,
Designer\Models\ERPSystem右键模型ERP,选择Edit,(或双击模型)
选择Reverse(反向)TAB页,输入如下信息,
DefinitionTAB页:
ReverseTAB页:
点击按钮,稍等片刻,Datastore就反向出来了,如图所示,
目标系统的Datastores反向
反向前准备:
CREATEsynonymFOR;
GRANTSELECT,INSERT,UPDATE,DELETEONTOsoau;
说明:
Datastores反向失败原因分析
1、确保待反向的表/视图是属于当前Schema(数据源)。
2、确保ODI的WorkSchema(SOAU)用户能访问到反向数据存储的数据源。
创建和执行接口(Interfaces)
ODI接口开发是ODI开发的核心。
基础接口一般用于ODI数据初期导入,运行一次。
创建接口
Designer\Projects\singTaoMDM\ERP-MDM\Interfaces右键InsertInterface
输入如下信息,
DefinitionTAB页
Name:
DiagramTAB页
FlowTAB页:
源系统Datastore选择默认标准Oracle的LKM:
LKMOracletoOracle(DBLINK)
目标系统Datastore选择默认标准Oracle的IKM:
IKMOracleIncrementalUpdate
其他默认即可。
点击OK,创建接口完成。
执行接口
(Designer\Projects\singTaoMDM\ERP-MDM\Interfaces\右键创建好的接口选择Excute
执行完,去Operator查看执行结果
同时检测目标系统数据库数据是否导入成功,
创建和执行过程(Procedures)
创建过程
Designer\Projects\singTaoMDM\ERP-MDM\Procedures右键InsertProcedure
输入如下信息,
DefinitionTAB页
Name:
点击图上图标,弹出窗口,输入如下信息
Name:
Importitems
Schema:
ERP
Command:
begin
说明:
Command中的调用是客户化的ERP-MDM物料初始化API,API是创建在APPS用户下的,所以上面的Schema选择ERP。
点击OK