WebADI_配置设定2_设定接口WebADI Interface(案例)

webadi

这是建立一个新的Integrator的第二步,也是最关键的一步!

Interface Name: 随便写,反正oracle 会生成一个interface code, 而这个才是我们需要的,而我们需要的,oracle 偏偏不让我们看到,而且还加东西。。。生成的code 应该是integrator code + INTF1之类的

Interface Type: 主要是Table 和 API Procedure. 那么什么时候用Table ,什么时候用Procedure呢? 下面是我个人的意见,仅供参考:

1.  如果validation 特别简单(都是单行单字段的校验), 且template上的数据要进到某一张表里的话,用table.

2.  如果validation 比较复杂(可能包含了多行组合校验,比如订单行金额是否等于头金额;多字段组合校验,比如某个vendor,某个vendor site下不能有这种currency的invoice之类的;duplicate校验,比如某个asset ,在base table 或 interface里已经有了,不能再用tempate导一遍之类的,因为这些校验要写java class, 我不知怎么写(可恶的oracle 也没文档). 所以只能用Procedure 去做.

3.  如果template的数据仅仅用来传给标准API ,用来做某种处理,不用进到某张表的话,当然不要用table, 而是用Procedure.

Table Name:  表名,此表需要注册在database里,否则无法识别.

Package Name:  不用说了,你写的upload package的名字

Procedure Name: Upload Procedure的名字

API returns:  Procedure/Function 传出的参数, 一般选fnd message code, 用来接收procedure中raise 出来的error.

Apply 一下:

Attribute Name: 其实就是table 的字段或Procedure的传入参数名.

Prompt Left: 这个要改一下, 一般格式是"Invoice Number" 这样的, 你可以只为要放到 layout header上的字段改,因为行上的字段只有Prompt above, 没有left.

Data Type:  从table 或 procedure 继承下来的

Enabled: 此项如果不选的话,该字段即使在template 可以显示,并且可以填东西,但数据不会参与upload. 即此字段完全无用了(适合一些无需填值的字段).

Displayed: 此项如果不选的话,在定义layout时,将无法看到此项. 也就无法在template中看到。当然,就算你这选了,但layout中没选此项,也是无法看到的.

Default Type/Default Value: 用来设定字段的默认值,在11i里我一般是在layout里定义的,但R12 好象主要在这里定义了,layout中的default 反而不用了,而且我在layout中定义好象也老出问题,不知是bug,还是其它原因.

Environment Parameters:   OAUSER.ID / SYSDATE / DATABASE 常用的,另外一些sob 的, 例如sob.chartofaccountsid, sob.periodsetname, sob.setofbooksid之类的,也不知还能不能用, 还没测

Constant:  这个最简单,直接写个东西进去就行了。

SQL:  这个也简单,写个SQL 完事,结果多行的话,取第一行。sql 里可包含$env$.userid, $env$.appid, $env$.respid 之类的环境变量, 还有$PROFILES$.default_org_id之类的取profile options的东东。

Profile Option:  从字面上理解,是用来取配置文件中某个option的值,但我测了,不成功,不知是bug还是别的原因.

Lookups:  不知干什么的,前两天无意看到有个标准的Integrator具然包含多个Interface, 而Interface 间的联接似乎就用这个。。。因为此项在后台叫TABLELOOKUP... 多Interface的Integrator还不知怎么做,待研究.

Excel Formula:  这项不需要选default type, 直接在default value 中输入公式,格式如下: =R[ ]C[ ]* R[ ]C[ ] 之类的,比如 =RC[-1]*RC[-2] , 即表示此字段的值为左边两列的乘积.

Sequence: 此项需后台修改表,default type 为SEQUENCE_EACH_ROW, default value 为sequence的名字,如果不在apps下的话,需要在apps下建同义词

Attribute Type:  Real 表明此字段为真实的表字段或过程参数,而Custom的是我们另外建的字段,一般用来做占位列(比如一个LOV显示的是DESC,存的是ID,这个DESC一般就放在这种列里)或只读显示项,比如显示当前的database信息.

通过点后面的update, 可以修改字段的一些属性.

Data Type:  不需改,从table 或 procedure 中继承下来的
Length: 大家发现这项没有,因为这是基于procedure的interface, 而对于procedure来说,所有的传入参数都是没有length的,而如果基于table的话,则会有length.  而没有length的结果就是excel 无法做字段宽度的校验,你就需要在procedure中写这样的语句:
     if  length(p_vendor_name) > 50 then
         raise_application_error(-20001,‘ Length exceeds max  chars‘);
     end if;
这样明显增加了开发的量,所以对于procedure的interface, 我们可以通过直接修改后台表来设定字段的length.
Attribute Type:  无需修改
Required: 此项很重要,设定字段为必填字段, 如果你在template 上没输的话,excel校验会报错,这样的话,你就不用在procedure 中写这样的语句了:
      if  p_vendor_name is null  then
         raise_application_error(-20001,‘ You have to enter a Vendor name‘);
     end if;

Enabled for Mapping:  设定该字段是否可建mapping, 当你的Integrator中含有Content时,这项有用,一般来说,要在layout中显示的字段这项要选,其它可选可不选。

Available for summary:  这项不知道,字面看是是否允许汇总。没测过
Not Null: 这项似乎和required功能一样啊
Read Only:  设定某字段为只读字段,一般适用于Custom类型的显示字段. 或不需用户修改的有默认值的字段.

下面的是建validation的部分,这里可建table LOV,  date LOV, KFF/DFF LOV, 及java类型的 LOV.

最后一部分是设Prompt above , 对于line 上的字段,此项要写一下。 User Hint最好也写一下,必填字段的一般为*Text, *Date, *Number这样的,非必填的把* 去了。有LOV的一般为* List - Text  或 List - Text 之类的.

http://blog.itpub.net/10359218/viewspace-734471/

时间: 2024-11-05 20:39:31

WebADI_配置设定2_设定接口WebADI Interface(案例)的相关文章

环回接口(loopback interface)的新认识

背景 前些日子在IDC实验docker的时候,为了避免与公司网络冲突,将bridge设置为127.x网段的IP,原以为这样就OK,后来发现在访问container内部的服务的时候无法访问.开始以为iptables的问题,搞了半天,后来,才发现系统对127.x.x.x的包根本不会经过bridge.这两天补习了一下linux的路由实现,才彻底明白其中缘由. 其实,关于环回接口,TCP/IP详解中已经描述得很清楚,只是自己没有去仔细阅读而已. TCP/IP关于环回接口的描述 Linu支持环回接口( L

组件接口(API)设计指南[2]-类接口(class interface)

*返回文件夹阅读其它章节: http://blog.csdn.net/cuibo1123/article/details/39894477 类接口(class interface) 你能够參考MGTileMenu的接口文件. 我们之前谈论了一些接口的细节,这里,例举几个通用规则: 规则1:使用当前平台的描写叙述用语或构架 一个最常见的API错误设计是使用外来的规则,API属于一个特定的平台和相关开发人员生态系统. 你不能使用不论什么其它不同平台的描写叙述用语或构架,这会污染你当前的代码库,并破坏

类图和对象图教程-类(Class)、接口(Interface)、协作(collaboration)、依赖关系(Dependency)、泛化关系(Generalization)、关联关系(Association)以及实现关系(Realization)

类图的概念 (转) 一.概述 类图(Class Diagram)是描述类.接口.协作以及它们之间关系的图,用来显示系统中各个类的静态结构.类图是定义其他图的基础,在类图基础上,可以使用状态图.协作图.组件图和配置图等进一步描述系统其他方面的特性. 类图包括7个元素:类(Class).接口(Interface).协作(collaboration).依赖关系(Dependency).泛化关系(Generalization).关联关系(Association)以及实现关系(Realization).

特殊现象——接口(interface)

接口--java开发工作者经常挂在嘴边的名词,对于使用python的我来说,往往就代表着url,原因有两: 一是python没有接口概念,另则工作缘故,只接触过web接口测试,坐井观天之势未深入了解,原来接口除了是连接前后端的,还可以是数据传递过程中的类方法或者函数. Java 接口(interface) 接口使用 interface 关键字来声明,同现实生活常识一致,它规定了可以用来干什么,而不必了解它是怎么做到的,例如冰箱可以用来冷冻,不必了解它如何制冷. 主要特点:a.接口中只能定义抽象方

抽象类(abstract class)和 接口(interface)

PHP中的 抽象类(abstract class)和 接口(interface) 一. 抽象类abstract class 1 .抽象类是指在 class 前加了 abstract 关键字且存在抽象方法(在类方法 function 关键字前加了 abstract 关键字)的类. 2 .抽象类不能被直接实例化.抽象类中只定义(或部分实现)子类需要的方法.子类可以通过继承抽象类并通过实现抽象类中的所有抽象方法,使抽象类具体化. 3 .如果子类需要实例化,前提是它实现了抽象类中的所有抽象方法.如果子类

ubuntu配置caffe的python接口pycaffe

参考网站: http://blog.csdn.net/sanmao5/article/details/51923982 (主要参考) https://github.com/BVLC/caffe/issues/782 (问题解决) ubuntu配置caffe的python接口pycaffe 依赖 前提caffe已经正确编译.见Ubuntu配置caffe 库包 sudo apt-get install python-pip sudo atp-get install python-dev python

接口(interface)

接口就是为了约束方法的格式(参数和返回值类型)而存在的 接口可以实现多继承,弥补单继承的缺陷. 接口可以看成是一个特殊的抽象类,通过反编译看源码可知 接口中方法不用访问修饰符,因为CLR会自动添加,并且不能有方法体 如果一个类实现了某个接口,就得实现该接口中所有的方法 接口要谨慎使用,防止出现接口污染! 接口仅仅代表一种能力,实现该接口的类和接口没有继承关系. 接口是用来实现的,类是用来继承的. 其实很多时候,看似可以不用接口,因为接口就是一个方法的约定, 表明你这个类必须要有某些方法,但是不写

java接口(interface)与现实(implements)

package com.sadhu; import java.util.*; /** 接口 接口中不能有字段 所有的方法都是公共的 可以定义常量 接口是多继承的,一个类可以继承多个接口. 接口中不能有实现的方法.可以认为是纯的抽象类. 接口不能被实例化,但是可以声明一个接口类型的变量 */ public class Sample {     public static void main(String[] args)throws Exception     {         Student[]

[Java] 接口(Interface)与 抽象类 (Abstract)使用规则和区别

接口(Interface) 是抽象方法的集合,接口通常以interface来声明. 一个类通过继承接口的方式,从而来继承接口的抽象方法. 接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念. 类描述对象的属性和方法.接口则包含类要实现的方法. 除非实现接口的类是抽象类,否则该类要定义接口中的所有方法. 接口无法被实例化,但是可以被实现.一个实现接口的类,必须实现接口内所描述的所有方法(所有方法都是抽象的方法),否则就必须声明为抽象类. 接口没有构造方法,支持多重继承,不能包含成员变量