1、Desktop Intergrator framework,主讲人:魏南,1.Create Intergrator,Intergrator Name:给user看到的名字。Internal Name:内部识别名,注意必须有大写字母,数字以及下划线构成,有长度限制。Application:所属应用。,Reporting Only:是否只做报表使用。Enabled:是否可用。Display in Create Document Page:是否在创建文档界面显示。,2.Create Interface,Interface Name: User看到的,内部识别码会自动生成的。Interface Typ
2、e: Interface 的类别,有 table,procedure,function等。Package Name: 当选择type为procedure以及function时会出现, 是其所在package的名字。Procedure/Function Name:Procedure/Function 名字。API Returns: 信息反馈方式,主要是返回错误信息, 我是一直使用FND Message Code,另外一个自行研究。,Attribute Name:Procedure 的参数名。Prompt Left:字段左边的提示。Data Type:字段类型.Enabled:是否可用。Displ
3、ayed:是否显示。Default Type:默认值类型。Default Value:默认值。Attribute Type:属性类型。,Required:是否必须。Enabled Mapping:是否允许映射。Available for summary:是否可用于汇总。Not Null:是否允许为空。Read Only:是否只读。,3.Create Content,Content 主要用于从系统中抓取数据,与报表类似。,Content Name:User 会看到的。Content Type: Content 的类型,可以去系统中看看都有什么类型, SQL Query用的最多。Query:SQL
4、 查询语句(注意请不要在语句末尾添加分号)。,4.Create Uploader,直接选择从模板创建就好了。(From Template),基本上不需要做任何修改了。,5.Create Importer,Importer Type:分三类,一般使用第一种,异步并发请求。Importer Name:给User 看的。内部码自动生成。,Rule Name:给user看的,内部码自动生成。Description:描述。Type:类型,主要有Procedure、function等。Package Name: 你懂的。Procedure/Function Name:同上API Returns:信息反馈方
5、式。,选择需要提交的并发程序。,这里是DIF提交并发程序后的反馈提示信息。,6.Define Layout,Intergrator创建成功后还需要去创建layout,在这里点击上面的Define Layout。,选择需要给创建或修改layout的intergrator,然后点go。,之前没有创建过任何layout,所以选择无结果,点击右边的create开始创建新的layout。,Layout Name:给User看的。内部码自动生成。Number of Headers:选择你的layout有几组头信息。,Placement:这里需要注意的是,如果你选择是是Context,那么就必须给指定默认值
6、,不然所有字段都会报需要默认值的错误。Default Value:默认值。Default Type:默认值类型。,基本上一般都是选择header 跟 line。,Title:header的标题。Prompt Span:header的题头提示占几个单元格。Data Span:数据占几个单元格。Hint Span:提示占几个单元格。,Move Up/Move Down:向上或向下移动位置。Read Only:是否只读。Width:单元格的宽度。 Frozen Pane:是否冻结单元格。,7.Define Mapping,在intergrator管理页面或者职责菜单下选择define mapping
7、进入定义映射页面,选择需要定义映射的intergrator并点go按钮。,此intergrator还没有创建过mapping,所以我们点击右边的Define Mapping.,Mappinig Name:给User看的。Mapping Key:内部码。Number of column:需要映射几个字段。,Source Column:是content的值。Target Column:是Interface的值。,选择source column。,选择target column。,都选择完毕之后点击Apply。,Mapping已创建成功。至此一个基本的DIF已经创建完成,下面我们就先预览一下。,8.
8、Preview Intergrator,在Intergrator管理页面点击Preview或者在职责菜单下选择Create Document进入DIF template下载页面。选择要下载的文件类型。,选择要使用的Content。,当然如果有多个layout或者mapping的话也是可以选择的。至此点击右边的Create Document即可下载我们定义的DIFtemplate了。,下载template。,下载完之后打开excel文档,会自动从服务器加在数据。,数据加载完之后就可以点击Close关闭加在窗口了。,这里可以看到“1”是我们设定的header;下面的使我们设定的行。并且“1”跟“2
9、”上都已经有值了,这就是我们定义的映射将content查询到的值映射到了interface上。,在此模板上可以填写相应的数据进行导入。可以看到数据填完后在第一列有一个小旗的标识。,数据填写完之后,在excel的上面会找到一个叫做加载项的菜单,进去后会看到一个oracle的下拉菜单,我们选择Upload就可以进行上传了。,选择upload后会进入上传参数页面,这个页面就是我们定义的uploader,选择Flagged Rows,勾选Validate Before Upload跟Automatically Submit Import(就是自动提交我们在Importer定义的并发程序。)完了点击Up
10、load。,数据正在导入。,导入完成,可以看到最下面一行的信息显示,即是我们在importer处定义的successMessage。可以根据这个Request id去ebs系统中查看请求运行情况。,我们根据刚刚的request id可以在系统中查询到提交的并发程序。,当我们录入一个错误的数据并上传时,会在最后一列显示错误信息,这里可以是DIF自身的错误信息,也可以是我们在interface的存储过程中抛出的错误信息。这里我们在一个数值列上录入了字符,后面就相应的提示列“2”必须是一个数值。,这里则是返回了我们在存储过程中抛出的异常信息。,8.Submit Concurrent request
11、with parameter on importer,现在开始给我们的Import换一个带参数的并发程序。首先需要在interface这里选择一个列去作为传递参数的值,然后我们给他一个序列默认值,可以看成是batch id之类的东西。,完了再import这块定义group,用于标识客户化表中的数据应该按照group分组去处理。这里选择add row。,然后点击查询按钮去选择我们需要的按照其分组的column,选择我们需要的Column然后点击Select按钮,这里我们选择了之前在interface给穿序列默认值的column Q4,然后如果还有其他的那就继续add row,没有了就点击appl
12、y按钮。,最后来重新选择我们的并发程序。,选择并发程序并且apply之后,就可以看到自动带过来的参数了,但是现在这个还没有完成,我们需要指定传递那个值给这个参数。所以,在Source上选择import,然后value上填写 interface的存储过程名.列名(这里需要注意的是,必须是全部大写的,否则会不起作用),然后还没完,我们接着看下一页。,一切都定义完了之后点击submit提交。,上面我们说了还没有完成呢,但是我们可以先去试着提交一下看看是怎么个没有完成法,那么现在我们看到,他说有一个参数的attribute1没有定义,好,我们可以看到这个参数列表的名字是:20008:CR_502799
13、,那么我们就去看看他是怎么个没有定义法。,现在我们切换到主页,展开Desktop ntergrator职责,进入Define Parameter菜单。,Application:选择相应的应用。,Code:内部识别码。Name:User看到的名字。Java Processor Class:指定Java处理器。Comments:对此参数列表的一个说明,注解。Attribute:定义参数列表的属性。Prompt Left:左提示。Prompt Above:上提示。User Tip:用户提示。,在这里我们点击Name后面的查询按钮进行查询。,在上面查询框输入我们之前记录的parameter list
14、的名字,然后查询,即可查询到这个参数列表,之后选择并点击select按钮。,在这里我们有两处需要修改。1.Name:默认的是oncurrent Program Request Submission;然后我们需要在前面按照我们的DIF名字去给他加上一个前缀,因为默认下所有的这个参数列表都是这个名字,不修改会出现问题的。2.Comments:需要做同样的动作。,3.找到下面parameter“P_BATCH_ID”(并发程序的参数名),然后点击update,进入Attribute Defined。,在这里,1跟2的attribute value 原本都是空的,没有定义的,所以我们需要手动去补全。第
15、一行上是需要填写这个参数的名字,就是前面的P_BATCH_ID,而第二行是需要填写这个参数的数据类型的,这里我们是NUMBER(注意:这里全部都是大写)至此,就全部完工啦。,前面我们是直接去跑了那个没有完成DIF运行后找到的parameter list名字的,那么如果不去运行怎么去找呢?首先还是先进入Define Parameter 菜单,一样的去查找list,但是这次是去查找你定义的import ,这里我们可以看到我们的import是第二行的,选择后点击select。,进入修改下面的“CONCURRENT_REQUEST”参数。,进来之后就可以看到Value字段上的值,即使我们之前记录的pa
16、rameter list。根据这个再去进行我们之前讲过的后续动作即可。,整个完成之后我们重新运行一下,可以看到已经成功了,并且可以看到运行后的Request id,这个是可以去系统的查看的。,根据上面的request id,可以在系统中看到我们的并发程序已经提交,后面也应用了我们的参数。,9.Define LOV for column,现在我们来给QQ8列添加一个LOV。首先点击update进入此页面。Validation Type:验证的类型,我们选择table。Group Name:如果验证是group的一部分则需要选择groupName,一般留空。Id column:传递的值。Meani
17、ng column:意义列Desc column:描述列Validation Ebtity:验证实体,这里即表名,Where Clause:where条件(注意这里不能出现order by子句,并且句末不需要分号)。Component Name:组件名字(是LOV的重要组成部分)。Prompt Above:上面的提示。 User Hint Text:用户示意文本。,接下来我们需要定义一个Component 。进入Define Component 菜单。,点击Create Component 。,Display Name:显示名。Internal Name:内部名。Application:应用。
18、Component Type:组件类型,根据interface那边我们这里选在LOV-TABLE填写完之后点击Apply。,Table-column-alias:表列别名,可以默认,但是不能留空。Table-column-sort:排序。Table-columns:表列。(这里注意,第一个必须是interface那边的meaning 列,然后可以按照需要及顺序列出desc列的字段。)。Table-headers:表头。,Table-select-column:这个字段很重要,要填写interface那边的attribute name,切忌!Windows-height:窗口高度。Windows-width:窗口宽度。,Component定义好之后重新回到interface这边选择刚刚定义的Component,并且LOV Type 选择Standard。最后保存提交即完成。,去下载一个模版下来,然后在QQ8列上双击即可弹出标准LOV,这里可以查询。,同时呢,这个LOV也可以起到一定的验证作用,但我们手动输入一个不在此值集中的值,然后上传的时候会返回错误信息,要求输入一个有效的值。,至此,以上所有内容即可满足大部分DIF开分。如有特殊需要,可自行网络查询或查看官方文档。,