最新消息:本站持续更新中,请注意添加收藏夹。搜索关键词时,多换一个同义词。比如要搜索界面,可以尝试页面,画面,PER档等词汇。善于搜索,将大大提高你的查找效率。

TIPTOP系统集成接口(第4.1版)

开发相关 bron1984 6770浏览

TIPTOP通用集成接口规格

(4.1版)

李锋

通用集成概述

通用集成接口是为实现本公司内部产品之间的数据交换和服务调用而设计,并可作为各产品统一的外部接口而存在。因为要注重通用性,所以接口定义中舍弃了于平台或特定技术相关的元素,而采用单纯的XML格式,并吸收了OO的一些概念,采用企业对象来封装对于ERP数据的操作。这样可以保证接口的稳定性,方便维护与以后可能有的扩充。

在通用集成的设计中,集成系统按照其在集成活动中的角色划分为客户端(申请服务)和服务端(相应服务),在完全集成的情况下两个系统可能互为服务端或客户端,通用接口定义规格的是其中数据交换的格式,即如果所有系统都采用一样的标准传递服务请求和响应,那么每个系统只需要将服务端和客户端各实现一次,即可与其他多个系统进行集成,而不用每次都撰写单独的集成程序。

由此产生的集成会有两种形式:

第一种是在系统间两两定义集成规则(即后面讲到的企业对象之间的映射关系),对于参与系统数量较多的情况下,维护集成规则的工作量会相应增长,当某个系统发生规格调整的时候,也必须对所有相关系统进行调整。但其优点在于标准灵活,特别适合不同厂商间系统集成的情况。在参与系统数量不多的情况下工作量的增加也不会很明显。

第二中是比较理想的状况,即抽象出一个公共的标准(共用对象库),各个参与系统只需要处理与标准间的集成规则即可,其优点在于一旦维护好这一规则之后,不管有无新参与系统,现有系统都不需要进行重新配置。一个系统中发生的规格修改也不会影响其他参与系统。但其缺点是公共标准的建立(特别是在不同厂商之间进行集成时)比较困难。

通用集成规格支持上面两种集成方式。

企业对象

企业对象是系统中数据和相关商业逻辑的载体,在通用集成接口中对数据的存取是基于企业对象的,对于外部系统而言,企业对象提供了一系列的属性(Property)和简单的存(SetData)和取(GetData)操作,内部实现和商业逻辑被封装于企业对象内,对外部系统透明。

企业对象是一个逻辑的概念,对于系统内部而言,其数据来源可以是TIPTOP中的一个表,也可以是多个表JOIN或UNION而来的数据集。

系统间的数据交换,必须以基于逻辑上的同一性为前提,即在双方系统中具有相同逻辑含义的数据才可能发生交换。所以,在交换数据之前首先要对双方数据的逻辑含义进行同义性关联,即进行企业对象之间的映射。一旦映射完成,其后的集成操作即可按照映射的规则进行。

基于企业对象,系统在集成时无需了解对方系统中的具体实现细节,对于异构问题(即同一类数据在两个系统间的存储方式不一样)可以很好地解决.

图示:异构数据之间的交换

服务端优先原则:

系统规定,客户端系统(请求方)发送的数据,其属性名称必须以服务端(响应方)定义为准,即由客户端处理Mapping转换过程,与此类似的还有数据中出现的取值列表,也必须以服务端定义的为准,举例:

CRM系统中Dempartment.Valid可选项为1/0,而TIPTOP中对应属性DEPARTMENT.Active可选项为Y/N,那么当CRM系统呼叫GetData的时候对应Condition域里面必须使用诸如<Property Name=”Active” Type=”=” Value=”Y”/>,即转换成服务方可以识别的属性名称和取值

在使用公共对象集成的模式下,对应关系应该以公共对象为准,所以服务端优先原则其实是在两两集成模式下的规则

调用方式

通用接口的标准可以任何形式(转档,Socket,HTTP,WebService等)实现,在TIPTOP中采用Web Service技术实现,对于外部系统可以通过使用如下的URL来进行调用,常见的URL有两种类型,分别举例如下:

http://10.4.1.17:6394/ws/r/TIPTOPGateWay 或

http://10.4.1.17/cgi-bin/fglccgi/ws/r/TIPTOPGateWay

在具体应用中,将上例中的IP地址改为客户ERP主机的IP即可,对于选择何种类型的访问方式要看客户TIPTOP应用服务器的启动方式,具体可询问负责安装的TIPTOP系统工程师。

相关WSDL文件可向TIPTOP研发部索取。

标准替换

为了避免在数据中存在相同字符而造成解析错误,在数据传递中的混淆和错误,TIPTOP规定在传递数据之前必须对其中的特殊字符进行替换,对应的替换规则见下表(除标准分隔符之外,其他的替换规则与XML规范中的相关规定一致):

*通用接口中定义的一切字符均区分大小写

入口格式

为了统一TIPTOP系统的集成接口,系统采用了统一的服务入口,并规定了单一的传入参数和传出参数(XML字符串),格式如下:

TIPTOPGateWay(Input Paramter, Output Parameter)

Input Parameter - 传入参数

Output Parameter - 传出参数

传入参数格式为:

根节点为STD_IN(同时兼容旧版本TTP_IN),根节点带有一个Origin属性,表示发出请求的系统标识,其下属公共参数为可选,可能的公共参数请参考下面表格,其下Service节点存放了要调用的服务,其中包含了调用所需的参数。

一个STD_IN节点下可以同时包括多个服务,系统会按照先后顺序依次解析并处理这些服务,服务之间不能相互嵌套。

传入参数示例:

可复制代码:

<STD_IN Origin =”TIPTOP”>

<ObjectID>ITEM</ObjectID>

<Service Name=”GetTemplate”>

<ObjectID>BOM</ObjectID>

</Service>

<Service Name=”GetData”>

<PropertyList>ItemCode|ItemName</PropertyList>

</Service>

</STD_IN>

传出参数格式为:

根节点为STD_OUT(同时兼容旧版本TTP_OUT),根节点带有一个Origin属性,表示响应请求的系统标识,如果在传入参数中给出了ServiceId节点,则传出参数中也会包含相同的节点,操作状态节点存放操作的结果,接下来的标准数据域只有当操作需要返回数据的时候才会出现,标准错误域只有当操作出现错误(STATUS <>0 )或警告(STATUS=0)时可能出现。

传出参数示例:

<STD_OUT Origin =”TIPTOP”>

<Service Name=”SetData”>

<Status>0</Status>

</Service>

</STD_OUT>

根据错误的类型,标准错误域可能会有两种形式,一种是简单错误,这里Error标签中存放对应的简体中文的错误描述,另一种是复杂错误(比如数据批量更新时),这时Error节点下接多个Row节点分别描述错误明细

简单错误举例:

<STD_OUT Origin =”TIPTOP”>

<Service Name=”SetData”>

<Status>-1</Status>

<Error>指定的对象不存在</Error>

</Service>

</STD_OUT>

复杂错误举例:

<Error>

<Row Table=”bmb_file” Field=”bmb01|bmb02|bmb04″ Data=”CK|2005-02-11|CK-001″ Code=”-219″ Desc=”主键重复”/>

<Row Table=”bmb_file” Field=”bmb01|bmb02|bmb04″ Data=”CK|2005-02-11|CK-002″ Code=”-219″ Desc=”主键重复”/>

<Row Table=”bmb_file” Field=”bmb01|bmb02|bmb04″ Data=”CK|2005-02-11|CK-003″ Code=”-219″ Desc=”主键重复”/>

</Error>

Row节点的各个属性的定义如下:

Table – 出错表名称

Field – 出错字段列表

Data – 出错数据列表

Error – 本笔错误码

Desc – 本笔错误描述

因为错误是为调试使用,这里显示的是字段列表而非属性列表

其中错误描述是使用简体中文形式,如果需要取得其他语言别下的错误描述,则请通过ERRMSG对象来进行访问。

当IgnoreError参数被设置为Y的时候,Error中会列出所有操作中出现错误的记录,如果为N,则只会列出第一笔出错的记录信息。

标准数据域

标准数据域定义了系统间用于交换的数据集格式,在实际应用中(GetData/SetData),内嵌于传入/传出的XML串中,用<Data>标签来包含。该格式具有以下特点:

1.整行传递数据

为了尽量减少冗余,在设计数据格式时没有采用常见的每个标签存放一个属性的形式,而是采取将多个属性合并,整行定义数据的形式。

举例:

<Employees>

<Employee>

<EmployeeNo>31731</EmployeeNo>

<Name>Lifeng</Name>

<Sex>1</Sex>

<Education>2</Education>

<Age>29</Age>

<Employee>

<Employee>

<EmployeeNo>39537</EmployeeNo>

<Name>Olay</Name>

<Sex>0</Sex>

<Education>3</Education>

<Age>28</Age>

<Employee>

</Employees>

<Data>

 

<DataSet Field=”EmployeeNo|Name|Sex|Education|Age”>

<Row Data=”31731|lifeng|1|2|29” />

<Row Data=”39537|Olay|0|3|28” />

</DataSet>

</Data>

 

2.以属性为单位

与系统中以表和栏位为单位存放数据相对应,在标准数据域中以对象和属性作为数据的标准。绝大多数情况下属性和栏位是一一对应的,但在某些情况下两者之间会存在着差异。

图示中的bma01和bmb01在逻辑上表达完全相同的含义,所以尽管在系统中分属不同表中的不同栏位,但是在对象中共用一个属性,在系统封装数据的时候,同一个对象的属性只会出现一次,属性和字段之间的映射关系由底层API处理。

3.与存储结构无关

另外,为了避免在数据中包含与存储方式相关的信息,对于物理存放于多个不同表的数据,在本格式中也会合并于一个数据集(类似于SQL中的Join概念)。为解决Join数据带来的冗余问题,可以对数据进行压缩传递

<Data>

<DataSet Field=”MasterNo|CreateDate|Valid|ItemNo|ItemNo|ValidDate|Quantity”>

<Row Data=”CK|2006-02-11|Y|1|CK-001|2006-02-11|12” />

<Row Data=”CK|2006-02-11|Y|2|CK-002|2006-02-11|17” />

<Row Data=”CK|2006-02-11|Y|3|CK-003|2006-02-11|1.4” />

<Row Data=”PTR|2006-02-14|Y|1|PTR-001|2006-02-14|1” />

<Row Data=”PTR|2006-02-14|Y|2|PTR-002|2006-02-14|3” />

</DataSet>

</Data>

<Data>

<DataSet Field=”MasterNo|CreateDate|Valid|ItemNo|ItemNo|ValidDate|Quantity”>

<Row Data=”CK|2006-02-11|Y|1|CK-001|2006-02-11|12” />

<Row Data=”&d16;2|CK-002|2006-02-11|17” />

<Row Data=”&d16;3|CK-003|2006-02-11|1.4” />

<Row Data=”PTR|2006-02-14|Y|1|PTR-001|2006-02-14|1” />

<Row Data=”&d17;2|PTR-002|2006-02-14|3” />

</DataSet>

</Data>

压缩的原理是对前一行(Row)中重复的记录在后一行中以标记取代,如&d16;表示从当前字符起16个字符都和上一个字符串相同。对于Join生成的数据集,这种算法比较简单且效果较好。

数据压缩的另一个方法是通过通用的第三方软件,对整个报文进行压缩,这样的优点是可以拥有最大的压缩比例,但需要寻找到能为各个技术平台所支持的通用组件或函数。

当前版本的集成接口尚未采用任何压缩算法。

标准条件域

标准条件域用来存放系统中使用到的查询条件,与标准数据域一样会在需要的时候被内嵌于传入/传出XML串中。其格式示例如下:

<Condition>

<Group Type=”OR”> //Group下包含Group

<Group Type= “AND” > //Group下包含Property

<Property Name=”Property Name” Type=”Relation” Value=”Compare Data” />

<Property Name=”Property Name” Type=”Relation” Value=”Compare Data” />

……

</Group>

<Group Type= “AND” >

……

</Group>

</Group>

</Condition>

其中Property节点用来存放具体的属性条件,其中Name属性存放属性名,Type存放关系符,Value存放关系值,如Quantity = 100可以表示为:

<Property Name=”Quantity” Type=”EQUAL” Value=”100” />

Property节点不能包含子节点。Type属性及其对应的关系值格式列表如下:

Group节点用于存放属性条件/条件分组之间的关系,对应的下级节点可以是Property或其他Group,Group节点必须有下级节点。其Type属性存放直接下级节点之间的逻辑关系,可取值为AND或OR。同一个Group只能有唯一的Type。

Condition节点下不能直接接Property节点,即使只有一个属性条件,也必须使用Group进行包含,此时该Group的Type属性为””(空)

通用接口

服务名称 GetObjectList
功能说明 返回TIPTOP中支持的所有企业对象列表
传 入 值 参数名称 类型 说明
传入值

示例

<STD_IN Origin=”TIPTOP”>

<Service Name=”GetObjectList”/>

</STD_IN>

Data域 <Data>

企业对象列表

</Data>

传出值

示例

<STD_OUT Origin=”TIPTOP”>

<Service Name=”GetObjectList”>

<Status>0</Status>

<Data>ITEM:物料|BOM:产品结构|REPORT:报表</Data>

</Service>

</STD_OUT>

说 明 可使用该函数来测试连接是否成功
服务名称 GetTemplate
功能说明 返回TIPTOP中指定的企业对象的定义信息
传 入 值 参数名称 类型 说明
1 ObjectID C 企业对象ID
传入值

示例

<STD_IN Origin=”TIPTOP”>

<Service Name=”GetTemplate”>

<ObjectID>ITEM</ObjectID>

</Service>

</STD_IN>

Data域 <Object ID=”标识” Name=”名称” Desc=”描述” Insert=”Y/N” Edit=”Y/N” Delete=”Y/N” >

<Property>属性标识|属性名称|类型|长度|是否必输|描述信息|可否更改|起始值|截止值|取值列表|默认值</Property>

……

</Object>

传出值

示例

<STD_OUT Origin=”TIPTOP”>

<Service Name=”GetTemplate”>

<Status>0</Status>

<Object ID=”BOM” Name=”产品结构” Desc=”产品结构” Insert=”Y” Edit=”N” Delete=”N” >

<Property>Item No|主件编号| C|30|Y|BOM主料件编号|N||||</Property>

<Property>Date|BOM日期|D||Y|BOM生成日期|Y||||</Property>

<Property>Number|项次|N|5|Y|子料件项次|N||||</Property>

<Property>Sub Item|子件料号|C|30|Y|BOM子料件编号|N||||</Property>

<Property>Quantity|组成用量|N|5|Y|单位使用数量|Y||||</Property>

<Property>Number|项次|N|5|Y|子料件项次|N||||</Property>

<Property>Sub Item|子件料号|C|30|Y|BOM子料件编号|N||||</Property>

<Property>Sub Item|行号|C|30|Y|行号|N||||</Property>

<Property>Quantity|说明信息|N|5|Y|单位使用数量|Y||||</Property>

</Object>

</Service>

</STD_OUT>

补充说明
  1. TIPTOP中定义的数据类型有以下四种:

C – 字符串,对应于CHAR/VARCHAR

D – 日期,也是一个字符串类型,但必须遵循前面DateFormat标签定义的格式

I – 整数,对应于Integer/Smallint等

N – 数值,对应于一切数值类型Numeric/Decimal/Currency/Long等,兼容整数类型

  1. 起始值、截止值和取值列表都是用来定义栏位的取值约束的参数,其中前两个用于连续型范围,后一个用于离散型范围,不会同时出现,对于起始值和截止值,如果为空则表示没有对应的起始大小和截止大小的限制条件
  2. 取值列表的标准格式为:

“取值1:说明1|取值二:列表2 …” 其中取值和对应的说明成对出现,中间用:分隔,取值和取值之间使用标准分隔符分隔,在这种格式中,列表可以被省略,此时形式为:

“取值1|取值2|取值3 …”

函数名称 GetData
功能说明 返回指定的企业对象数据
传 入 值 参数名称 类型 说明
1 ObjectID C 企业对象ID
2 Factory C 工厂别
3 PropertyList C 需要得到的属性列表,如果为“%”表示返回所有能够映射的属性
4 Condition C XML子句表示的查询条件,格式参见标准条件域
5 Format C 兼容以前版本,可忽略
传入值

示例

<STD_IN Origin=”TIPTOP”>

<Service Name=”GetData”>

<ObjectID>BOM</ObjectID>

<PropertyList> MasterNo|MasterName|SubNo|ItemNo|ItemUnit</PropertyList>

<Factory>DCMS0101</Factory>

<Condition>

<Group Type=”AND”>

<Property Name=”MasterNo” Type=”LIKE” Value=”CL%”/>

<Property Name=”Valid” Type=”=” Value=”Y” />

</Group>

</Condition>

</Service>

</STD_IN>

Data域 标准数据域
传出值

示例

<STD_OUT Origin=“TIPTOP“>

<Service Name=“GetData“>

<Status>0</Status>

<Data Format=“Join“>

<DataSet Field=”ItemNo|ItemName|Unit“>

<Row Data=“TR-112501|3.5”USB移动硬盘盒|PCS”/>

<Row Data=”TT-320102|7×12不锈钢螺丝|BAG“/>

<Row Data=“CS-112501|4.5”USB接口|PCS”/>

</DataSet>

</Data>

</Service>

</STD_OUT>

补充说明
  1. 在查询过程中如果不设置工厂别参数,则将会从集成配置信息中设置的默认资料库中取资料,如果集成配置中没有设置,则从ds库中取资料
函数名称 GetCalculate
功能说明 返回指定的企业对象的计算信息
传 入 值 参数名称 类型 说明
1 ObjectID C 企业对象ID
2 Factory C 工厂别
3 PropertyList C XML子句,存放需要计算的属性列表以及对应的计算方式

可包含一个或多个Property节点,每个节点的Name属性为一个或多个属性(中间用标准分隔符隔开),Type为计算类型,可以是SUM/COUNT/MAX/MIN/AVG中的一种

4 GroupList C 用作分组的属性列表
5 Condition C XML子句表示的查询条件,格式参见标准条件域
传入值

示例

<STD_IN Origin=”TIPTOP”>

<Service Name=”GetData”>

<Factory>DCMS0101</Factory>

<ObjectID>BOM</ObjectID>

<PropertyList>

<Property Name=”WasteRate|Quantity” Type=”SUM” />

<Property Name=”ItemNo” Type=”COUNT” />

</PropertyList>

<GroupList>ItemNo|ItemName</GroupList> //按照Group By ItemNo,ItemName的顺序进行分组

<OrderList>ItemNo|ItemName</OrderList> //按照Order By ItemNo,ItemName的顺序进行排序

<Condition>

<Group Type=”AND”>

<Property Name=”ItemNo” Type=”LIKE” Value=”CL%”/>

<Property Name=”Valid” Type=”=” Value=”Y” />

</Group>

</Condition>

</Service>

</STD_IN>

Data域 标准数据域
传出值

示例

<STD_OUT Origin=“TIPTOP“>

<Service Name=“GetData“>

<Status>0</Status>

<Data Format=“Join“>

<DataSet Field=”ItemNo|ItemName|WasteRate|Quantity|ItemNo“>

<Row Data=“10030|A|500|200|100”/>

<Row Data=“10030|B|400|200|100”/>

<Row Data=“10030|C|100|200|100”/>

</DataSet>

</Data>

</Service>

</STD_OUT>

补充说明 在返回Data域中列出的属性列表依次为:GroupList中定义的属性,PropertyList中定义的属性,其中PropertyList中定义的属性以从左至右,从上到下的顺序排列
函数名称 SetData
功能说明 返回指定的企业对象数据
传 入 值 参数名称 类型 说明
1 ObjectID C 企业对象ID
2 Factory C 工厂别
3 Operate C 表示操作的类型,可取以下值:

INSERT 新增,如果相同对象(主键)已存在则报错

DELETE 删除,如果对应对象(主键)不存在则不执行操作。

UPDATE 更新,如果对应对象(主键)不存在则不执行操作。

SYNC 更新,将原对象删除并新增为新对象

ADJUST 更新,如果原对象不存在则新增,否则为修改

4 Data 标准数据块,存放要操作的数据
传入值

示例

<STD_IN Origin=”TIPTOP”>

//新增两组新的BOM

<Service Name=”SetData”>

<ObjectID>BOM</ObjectID>

<Operate>INSERT</Operate>

<Data>

<DataSet Field=”MasterID|CreateDate}ItemNo|DetailID|ItemUnit”>

<Row Data=”CK|2005-02-11|1|CK-001|2.3”>

<Row Data=”CK|2005-02-11|2|CK-002|2.5”>

<Row Data=”SRT|2005-02-11|1|SRT-001|24”>

<Row Data=”SRT|2005-02-11|2|SRT-002|10”>

</DataSet>

</Data>

</Service>

//删除2笔订单记录

<Service Name=”SetData”>

<ObjectID>ORDER</ObjectID>

<Operate>DELETE</Operate>

<Data>

<DataSet Field=”OrderNo”>

<Row Data=”310-06210001”/> //删除时给出主键属性即可

<Row Data=”310-06210002”/>

</DataSet>

</Data>

</Service>

//更新1笔料件记录

<Service Name=”SetData”>

<ObjectID>ITEM</ObjectID>

<Operate>UPDATE</Operate>

<Data>

<DataSet Head=”ItemNo|ItemName|Unit”> //更新时只需传入主键属性和需更新属性即可

<Row Data=”STR|5mm钢管|PCS”/>

</DataSet>

</Data>

</Service>

</STD_IN>

传出值

示例

<STD_OUT Origin=”TIPTOP”>

#出现多笔错误情况并以明细方式列出

<Service Name=”SetData”>

<Status>aws-219</Status>

<Error>

<Row Table=”ima_file” Field=”bma01|bma02|bmb04″ Data=”CK|2005-02-11|CK-001″ Code=”-219″ Desc=”主键重复”/>

<Row Table=”ima_file” Field=”bma01|bma02|bmb04″ Data=”CK|2005-02-11|CK-002″ Code=”-219″ Desc=”主键重复”/>

</Error>

</Service>

#操作成功

<Service Name=”SetData”>

<Status>0</Status>

</Service>

#操作错误,并且错误可以简单描述

<Service Name=”SetData”>

<Status>-1</Status>

<Error>对象标识不存在</Error>

</Service>

</STD_OUT>

补充说明
  1. 在操作过程中是以对象为单位来进行的,即以单头部分作为比对依据。在INSERT时,将比对传入数据集中的单头部分与现有数据表的键值,如果存在重复则返回错误,在DELETE操作时也将删除对应单头及其所有的单身记录。而调整现有对象单身信息(新增、删除或修改)的操作,均理解为UPDATE。
  2. 操作过程中将整个对象(单头、单身、子单身等)作为一个整体来看待,如果其中有一项(无论是单头还是单身)出现错误,都将导致该对象的操作整体失败和回滚,但一个对象的操作错误是否影响其他对象的操作要根据IgnoreError参数来决定。
  3. 对于INSERT操作,Data中必须给出所有Required属性。
  4. 对于DELETE操作,Data中必须包含所有Key值属性,其他属性是否传递对操作无影响。
  5. 对于UPDATE操作,Data中传入的是新对象的完整信息(类似于INSERT中给出的数据)。UPDATE操作比较主表和键,如果不存在则不进行更新,SYNC则会将不存在于传入数据中的原有记录删除,ADJUST则会把传入数据中新增部分插入到原有记录中(对于单表对象,SYNC和ADJUST的效果是相同的)下面举例说明:
现有记录 传入记录 UPDATE后 SYNC后 ADJUST后
A

B 20

D 10

A

B 15

E 35

A

B 15

D 10

A

B 15

D 10

E 35

A

B 15

D 10

E 35

  1. 所有Key值栏位之间的比较关系均为“=”。
  2. 本接口自身不负责判定操作在实务上的合理性(比如如果一个物料有库存,则该物料不允许删除),相关的动作将由接口中开放的BeforeOperate / BeforeInsert / BeforeDelete /BeforeUpdate/BeforeSync/BeforeAdjust函数来完成。
  3. 本方法不负责维护对象之间的关联(比如BOM对象中同时关联到ITEM对象,那么当BOM对象被删除时不会自动删除其中被使用到的而没有被其他BOM使用到的ITEM对象)。相关的动作和判别将由SetData中开放的AfterOperate / AfterInsert / AfterDelete / AfterUpdate / AfterSync / AfterAdjust 函数来完成
  4. 在UPDATE/SYNC/ADJUST操作时,如果在某一笔记录的某个栏位需要忽略,则在Data域中该栏位对应的位置传入%%即可,同一个数据集中不同记录的%%位置允许不同。示例:

<Row Data=”CRT-0012|%%|2006-01-02|23.5” />

  1. 当出现错误的情况下,SetData会返回出现错误的数据集(请参考前面章节对错误信息的定义)
  2. 工厂别的相关说明请参考GetData接口

PDM专用接口

服务名称 UpdateBOM
功能说明 传入新的BOM结构,TIPTOP服务程序会根据主件料号自动比对新旧两个BOM并根据差异部分生成一张ECN单
传 入 值 参数名称 类型 说明
1 Data 标准数据块,存放一个BOM信息,如果是一个多阶的BOM,则应将其拆解成为各个单阶的BOM并传递进来
传入值

示例

<STD_IN Origin=”PDM”>

<Service Name=”UpdateBOM”/>

<Data Format=”Join”>

<DataSet Field=”bma01|bma02|bma03|bmb02|bmb03”>

<Row Data=”CK|2005-02-11|12|1|CK-001”/>

第一层BOM

<Row Data=”CK|2005-02-11|12|2|CK-001”/>

<Row Data=”CK|2005-02-11|12|3|CK-001”/>

<Row Data=”CK-001|2005-02-14|12|1|CK-R01”/>

<Row Data=”CK-002|2005-02-14|12|2|CK-R02”/>

第二层BOM

<Row Data=”CK-003|2005-02-14|12|3|CK-R03”/>

</DataSet>

</Data>

</Service>

</STD_IN>

传出值

示例

<STD_OUT Origin=”TIPTOP”>

<Service Name=”UpdateBOM”>

<Status>0</Status>

</Service>

</STD_OUT>

<STD_OUT Origin=”TIPTOP”>

<Service Name=”UpdateBOM”>

<Status>-1</Status>

<Error>错误提示信息</Error>

</Service>

</STD_OUT>

说 明 1.对于BOM变更不采用标准接口的SetData方法来实现是因为该接口并不直接更新自己(BOM信息),而是生成其他的信息(ECN)

2.对于BOM对象,UPDATE方法失效(通过Template设定)。

报表接口

*说明:如果目标系统选择将各个报表的条件列表保存在其系统中,则此处可以省略数据A,B的传递

 

服务名称 GetReport
功能说明 按需求返回TIPTOP报表
传 入 值 参数名称 类型 说明
1 ReportID C 本次要执行的报表
2 FieldList C 本次报表参数列表,用标准分隔符分开
3 Condition C 对应于参数列表的参数值列表,用标准分隔符分开
4 SystemID C 目标系统标识,为兼容旧版本而存在,新版本中可忽略
传入值

示例

<STD_IN Origin=”TIPTOP”>

<Service Name=”GetReport”>

<ReportID>apmr540</ReportID>

<FieldList>p_id|p_name|qry_date</FieldList>

<Condition>H001|CR*|2006-02-11</Condition>

</Service>

</STD_IN>

传出值

示例

<STD_OUT Origin=”TIPTOP”>

<Service Name=”GetReport”>

<Status>0</Status>

<Data>gglr111.01r</Data>

</Service>

</STD_OUT>

<STD_OUT Origin=”TIPTOP”>

<Service Name=”GetReport”>

<Status>-1</Status>

<Error>错误提示信息</Error>

</Service>

</STD_OUT>

说 明 1.其中的查询条件值为QBE值。

2.如果执行成功则在Data域中会包含报表文件的名称

3.当调用方得到服务成功的返回值之后,需要从本地的指定目录中取得报表文件并进行呈现,报表数据不在结果集中直接传递。

4.如果在参数列表中忽略了某个参数,则表示对该条件不设限制(必要条件不能空缺)

4.0版更新说明

1.顶层标签更改

为了保证标准的通用性,将协议XML串的最外层标签由<TTP_IN>及<TTP_OUT>标签改为<STD_IN>和<STD_OUT>其全文格式为:

<STD_IN Origin=”TIPTOP”>或<STD_OUT Origin=”TIPTOP”>

其中Origin属性为系统标识,从TIPTOP发出的协议字符串该属性一律为”TIPTOP”

2.新的数据传递格式

废弃原先定义的三种传输格式,在原Join格式基础上修改生成统一的数据传递格式

3.数据传递逻辑单位

将数据传递以Field为单位改为以Property为单位,修改GetData中的的FieldList标签为PropertyList标签

4.新增标准条件域

将原先GetData中的Condition条件由SQL语句改为标准条件域

5.新的Template格式

在Template里面只包含简单的Object和Property两层,废弃过去的Object – Table – Field三层,并且不再传递Relation信息,Propety之间不存在层级,同时Property内部不再包含字段栏位这样与具体实现相关的信息。

6.新增GetCalculate接口

该接口用于对指定对象进行计算操作(比如SUM,AVG,COUNT,MAX,MIN等)并返回结果集给客户端

转载请注明:赫非域 » TIPTOP系统集成接口(第4.1版)