CN104572117A - 一种预留接口的实现方法 - Google Patents
一种预留接口的实现方法 Download PDFInfo
- Publication number
- CN104572117A CN104572117A CN201510037676.2A CN201510037676A CN104572117A CN 104572117 A CN104572117 A CN 104572117A CN 201510037676 A CN201510037676 A CN 201510037676A CN 104572117 A CN104572117 A CN 104572117A
- Authority
- CN
- China
- Prior art keywords
- interface
- function
- project
- requirements
- spare
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种预留接口的实现方法,属于计算机ERP软件开发领域。该方法包括:软件开发过程中,在所有可能会出现接口需求的地方预留接口函数处理;将所有的预留接口函数放在接口函数库中;为项目预留一个项目专用库;在不同的项目上,对有接口需求的,将接口函数复制到项目专用库中,并在函数中实现接口功能。与现有技术相比,发明的方法在接口需求不明确的情况下,实现接口预留,避免了因为系统集成需求而产生的产品的二次开发,提高了系统集成效率、保障了系统运行的稳定,具有很好的推广应用价值。
Description
技术领域
本发明涉及计算机ERP软件开发领域,具体地说是一种预留接口的实现方法。
背景技术
当前,各企业在信息化方面,因处理业务的不同,往往会同时应用多套软件,而为了消除信息孤岛问题,不同软件之间就需要进行数据交换、甚至是数据的同步,因此不同软件之间的接口需求广泛存在。
目前接口的实现方式主要有两种:一种是根据客户需求进行专项开发,在源代码中嵌入接口处理代码的方式;另一种是提供配置功能,由客户根据自己的需求进行配置,由软件进行翻译并执行的的方式。这两种方式都存在很大的缺陷。
在一项目上应用智能编码平台的时候,就遇到该需求:其ERP软件是另外一家软件公司的,我们提供编码平台,并将所生成编码同步到该ERP数据库中。如果使用在软件中嵌入接口代码的方式,则会影响的编码平台的版本一致性,造成后期编码平台版本控制、维护升级的困难;而使用软件配置数据交换的方式,却又无法实现数据的实时同步。
在源代码中嵌入接口处理代码的接口实现方式,就是根据客户需求进行专项开发,在需要做接口的功能部分,增加代码,这就导致整个功能都被做成该客户的专用代码了,之后,当该功能有改动时,就需要单独对该客户的专用代码再改一次。例如:需做物料目录数据的同步,则需要将物料维护卡片对象w_js_wlzd_card复制一份给客户专用,增加接口处理代码,因此,要对该对象进行变更,则要同步对该客户的同一对象进行相应的修改;这很难保证各客户对该对象的同步升级,可谓牵一发而动全身!
该方式的缺陷很明显:阻碍了软件升级、降低了公共代码的复用率、极大增加了软件维护的复杂性。
为此,后来逐渐出现各种各样的可通过软件配置实现接口数据交换的方式,这种接口实现方式,允许客户根据自己的需求进行配置,建立数据来源表与数据目标写入表的对应关系,由程序根据已经设置好的表间对应关系,将来源表的数据传送到目标表中。该方式主要是实现了数据的传输功能,但缺陷也很明显:对实时性、事务完整性以及复杂业务处理方面,功能捉襟见肘,尤其是在数据同步(增、删、改)功能需求方面,实现很吃力,完全没有代码实现的高效与逻辑的完整。
发明内容
本发明的技术任务是针对上述现有技术的不足,提供一种预留接口的实现方法。按该方法可以在接口需求未知的情况下,先行布置好接口,并实现原系统与接入系统之间的消息互通,即是实现对被接入系统嵌入业务逻辑中,尤其是嵌入到事务处理中,保障集成系统之间的数据一致性。软件开发过程中,在有接口需求之处,预留接口,不同系统之间集成的时候,仅仅针对接口进行开发,即可实现系统的互联互通,而无需再向原程序中嵌入处理代码,给原程序带来不稳定因素。
本发明的技术任务是按以下方式实现的:一种预留接口的实现方法,其特点是:
软件开发过程中,在所有可能会出现接口需求的地方(如单据、数据字典等)预留接口函数处理;
将所有的预留接口函数放在接口函数库(假定为interface_pub.pbl)中;
为项目预留一个项目专用库(假定为interface_zx.pbl);
在不同的项目上,对有接口需求的,将接口函数复制到项目专用库中,并在函数中实现接口功能。
以上述方法增加接口,不再需要对原产品功能模块进行开发,而是对接口函数进行二次开发即可。因此,不同的项目,配备不同的专用接口库(interface_zx.pbl)即可,程序体无需修改。
作为优选,程序运行过程中可优先使用项目专用库中的接口函数。
接口函数可预留在commit命令之前,返回值分‘1’、‘-1’两种。返回值‘1’表示接口数据已处理完毕,原程序事务处理可以提交commit; 返回值‘-1’表示接口数据出现异常,原程序处理不可以commit,需回滚rollback,即保证了与接口数据的同步及实时性。
本发明的预留接口的实现方法中,每一编码段的编码规则包括:软件开发过程中,在有接口需求的过程或事务中预留通用接口,如需与其它系统进行集成,仅需对接口进行开发即可,而无需对原主体程序进行改动,即可实现业务的动态衔接。与现有技术相比,具有以下突出的有益效果:
(一)提供了模式统一的接口实现、预留技术;
(二)彻底消除了因接口的开发对原程序本体的影响,将接口开发工作量降至最低;
(三)实现简单、高效,极易推广普及;
(四)有效降低了不同项目上、不同接口需求及后期维护复杂度;
(五)实现简单,结构清晰,简单易用,降低了编程的复杂度,进而提高了编程的效率。
附图说明
附图1是实施例中新增或修改物料目录时预留接口处理示意图;
附图2是实施例中删除物料记录时预留接口处理示意图;
附图3是实施例中在产品库中增加接口函数库和项目专用库示意图;
附图4是实施例中接口函数库示意图;
附图5是实施例中物料目录的专项接口示意图(一);
附图6是实施例中物料目录的专项接口示意图(二);
附图7是本发明预留接口的实现方法中不同项目上接口切换示意图。
具体实施方式
参照说明书附图以具体实施例对本发明的预留接口的实现方法作以下详细地说明。
实施例:
本发明方法适合各种编程语言的开发,本实施例代码谨以PowerBuilder语言代码作为实例,不再列举其它语言的实例了。
本发明的预留接口的实现方法包括以下步骤:
不同项目上的接口切换情况如图1所示。
1
、接口预留:
1-1、在可能会出现接口需求的地方预留接口,如单据、目录字典保存的时候。
以物料目录同步为例,新增或修改物料目录时,在commit前预留接口处理,如附图2所示。
在删除物料记录时,在commit前预留接口处理,如附图3所示。
1-2、产品库中增加接口函数库interface_pub.pbl和项目专用库interface_zx.pbl,如附图4所示:
其中,interface_pub.pbl库存放所有预留的接口函数;
interface_zx.pbl库为空,不同的项目各建立并连接各自的
interface_zx.pbl,将需要用到的接口从interface_pub.pbl中复制到该专项库中,并进行具体实现。
【接口函数库】
假定命名为interface_pub.pbl,存放所有接口函数定义。接口函数要定义接口的详细使用标准及使用规范,包括函数名称、参数定义及说明、正常返回值等,内容为空。
参数中包含所需同步数据的主键或相关信息。
以物料目录的预留接口为例,如附图5所示:
物料目录的预留接口
其中,预留接口中包含,
接口函数名称:gf_interface_lswlzd
接口参数 :value string psKey
value string psStat
value string psModMsg
reference string psRetMsg
返回值 : 1;-1
参数说明及函数使用注意事项等。
【项目专用库】
假定命名为interface_zx.pbl,存放项目专用接口函数定义,路径中排在interface_pub.pbl的前面,因此系统会优先使用本库中的接口函数。
如果项目中无接口,则使用空interface_zx.pbl;如果项目需要使用接口,则将该interface_zx.pbl换成该项目专用的同名库interface_zx.pbl。
预留接口实现代码说明(PowerBuilder语言实现样例)
说明:
ICSETWLSX表,是获取需转换成编码的物料属性数据用的;
根据编码规则生成物料编号,对编码规则进行解析及根据编码规则生成物料编号的PowerBuilder样例代码部分实际代码样例(PowerBuilder语言部分):
关键参数说明: ICBMGZ 是编码规则表,存放着物料编码规则
psWllb 是字符变量,关联ICBMGZ,从ICBMGZ表中获取当前物料所需使用的编码规则
vdatastoreBmgz 是临时存储,获取到当前物料编码规则后,存放在该临时存储中
vlRowCnt
是vdatastoreBmgz的行数,每一行代表的是当前编码规则中的一个码段
vsNewWlbh
是字符变量,存放该物料的新生成编码
部分关键代码:
<1>为预留接口函数建立一个专用库,假定名称为interface_pub.pbl,用以存放所有的预留函数,函数内容为空;
例如:物料同步函数 int gf_interface_LSWLZD(sting
psKey ,sting psStat,string psModMsg,ref string psRetMsg)
//====================================================================
// 函数:
gf_interface_LSWLZD(psKey,psStat,psModMsg,psRetMsg)
//--------------------------------------------------------------------
// 描述: 物料目录接口函数
//--------------------------------------------------------------------
// 参数:
// value string psKey 主键 :物料编号 (单物料编号,仅在删除时使用!);对于物料的修改,为物料编号的in字符串,格式:'001','0002','xxx',...
// value string psStat 状态:A-add;M-modify;D-delete,如果接口中没有该物料,则允许删除原物料,如果接口中存在,则不允许删除,要求必须先删除接口数据库的;C-删除接口数据库物料!
// value string psModMsg 修改信息,仅psStat= 'M'时有值
// reference string
psRetMsg 返回错误信息
//--------------------------------------------------------------------
// 返回: 1 同步成功。已完成数据同步且接口数据库事务提交commit完毕
//
-1 同步失败。向接口数据库同步数据出现异常,将异常信息存入字符串psRetMsg,交由原程序处理
//====================================================================
RETURN 1
<2>为项目专用的接口函数预留一个项目接口专用库,假定名称为interface_zx.pbl,用以为特定项目制作接口时,存放该项目用到的接口,系统在程序中调用接口函数的时候,优先使用项目接口专用库中的函数,来实现与目标数据库的集成同步;
实现时,将需要用到的接口从interface_pub.pbl中复制到该专项库中,并进行具体实现即可;
<3>新增或修改物料目录时,在commit前预留接口处理;
//在本程序完成数据正确性检查并完成数据库更新、未进行提交前,增加预留接口处理函数
IF ibnew = TRUE THEN //如果是新增物料
vserr =
""
//接口参数"A":新增物料
//接口参数vsWlMsg:是本次新增物料的数据字符串
//IF判断,根据返回结果,如果同步成功,则对数据库事务完成commit提交操作;如果同步失败,
则撤销数据库事务;
IF
gf_interface_LSWLZD("","A",vsWlMsg,vserr) < 0 THEN
ROLLBACK;
MESSAGEBOX("提示信息","同步接口信息失败!"+vserr)
RETURN -1
END IF
ELSE //如果是修改物料
vserr =
""
//接口参数vswlbh:本次修改的物料ID主键
//接口参数"M":修改物料
//接口参数vsWlMsg:是本次修改物料的数据字符串
//IF判断,根据返回结果,如果同步成功,则对数据库事务完成commit提交操作;如果同步失败,
则撤销数据库事务。
IF
gf_interface_LSWLZD("'"+vswlbh+"'","M",vsWlMsg,vserr)
< 0 THEN
ROLLBACK;
MESSAGEBOX("提示信息","同步接口信息失败!"+vserr)
RETURN -1
END IF
END IF
commit;
<4>删除物料时,与上一步骤中的增加或修改方式相同,在commit前预留接口处理
即,在commit前调用
//接口参数vswlbh:本次需删除的物料ID主键
//接口参数"D":删除物料
//IF判断,根据返回结果,如果同步成功,则对数据库事务完成commit提交操作;如果同步失败,
则撤销数据库事务。
IF
gf_interface_LSWLZD("'"+vswlbh+"'","D","",vserr)
< 0 THEN
ROLLBACK;
MESSAGEBOX("提示信息","同步接口信息失败!"+vserr)
RETURN -1
END IF
2
、根据项目实际需求,实现具体接口:
如果项目需要使用接口,则为该项目创建一个同名的项目专用库interface_zx.pbl,并替换原空库,将所用到的接口预留函数从interface_pub.pbl中复制到本库,并在本库中实现对目标数据库数据的同步处理。同步完毕,根据返回值说明,向原程序反馈同步结果。
以物料目录的专项接口为例,如图6、7所示:
物料目录的专项接口
其中,专项接口中增加了针对该项目目标数据库数据的同步代码。
这样,对于软件的本体代码部分的修改,将不再受制于项目接口的实现,同时保证了事务、数据的一致性。
Claims (3)
1.一种预留接口的实现方法,其特征在于:
软件开发过程中,在所有可能会出现接口需求的地方预留接口函数处理;
将所有的预留接口函数放在接口函数库中;
为项目预留一个项目专用库;
在不同的项目上,对有接口需求的,将接口函数复制到项目专用库中,并在函数中实现接口功能。
2.根据权利要求1所述的预留接口的实现方法,其特征在于,程序优先使用项目专用库中的接口函数。
3.根据权利要求2所述的预留接口的实现方法,其特征在于,接口函数预留在commit命令之前。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510037676.2A CN104572117A (zh) | 2015-01-26 | 2015-01-26 | 一种预留接口的实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510037676.2A CN104572117A (zh) | 2015-01-26 | 2015-01-26 | 一种预留接口的实现方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104572117A true CN104572117A (zh) | 2015-04-29 |
Family
ID=53088283
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510037676.2A Pending CN104572117A (zh) | 2015-01-26 | 2015-01-26 | 一种预留接口的实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104572117A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105045577B (zh) * | 2015-06-29 | 2018-12-18 | 用友优普信息技术有限公司 | 接口变更的提示方法和接口变更的提示系统 |
CN109240835A (zh) * | 2018-08-30 | 2019-01-18 | 河南省西峡汽车水泵股份有限公司 | 一种plm系统与erp系统对接方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101833498A (zh) * | 2009-07-31 | 2010-09-15 | 北京伟晨豪嘉科技有限责任公司 | 一种基于测试脚本技术的嵌入式系统自动化检测系统 |
CN103559023A (zh) * | 2013-08-23 | 2014-02-05 | 航天科工惯性技术有限公司 | 接口转换方法和装置 |
-
2015
- 2015-01-26 CN CN201510037676.2A patent/CN104572117A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101833498A (zh) * | 2009-07-31 | 2010-09-15 | 北京伟晨豪嘉科技有限责任公司 | 一种基于测试脚本技术的嵌入式系统自动化检测系统 |
CN103559023A (zh) * | 2013-08-23 | 2014-02-05 | 航天科工惯性技术有限公司 | 接口转换方法和装置 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105045577B (zh) * | 2015-06-29 | 2018-12-18 | 用友优普信息技术有限公司 | 接口变更的提示方法和接口变更的提示系统 |
CN109240835A (zh) * | 2018-08-30 | 2019-01-18 | 河南省西峡汽车水泵股份有限公司 | 一种plm系统与erp系统对接方法 |
CN109240835B (zh) * | 2018-08-30 | 2022-09-30 | 飞龙汽车部件股份有限公司 | 一种plm系统与erp系统对接方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10558642B2 (en) | Mechanism for deprecating object oriented data | |
AU648263B2 (en) | Portable and dynamic distributed applications architecture | |
CN100407206C (zh) | 不同版本的配置数据间进行转换的方法和系统 | |
CN110147369A (zh) | 多重租赁数据库系统中的数据分离和写入重新定向 | |
CN109947767A (zh) | 多重租赁数据库系统中的系统共享类型 | |
CN110019215A (zh) | 多重租赁数据库系统中的键模式管理 | |
CN102087594B (zh) | 扩展点和插件的管理方法和装置 | |
US7831558B2 (en) | Bi-directional data modification with synchronization | |
CN111465930A (zh) | 客户端同步中的违反解决 | |
CN103593443A (zh) | 一种电子文件元数据扩展的方法 | |
ZA200600754B (en) | Platform for data services across disperate application frameworks | |
CN105959390A (zh) | 微服务的统一管理系统及方法 | |
CN102262674A (zh) | 一种分布式内存数据库的数据同步方法及系统 | |
Huhns et al. | Managing heterogeneous transaction workflows with co-operating agents | |
CN112947992A (zh) | 代码版本管理的方法和装置 | |
CN104572117A (zh) | 一种预留接口的实现方法 | |
CN105723365B (zh) | 用于优化索引、主数据库节点和订户数据库节点的方法 | |
CN102945264A (zh) | 智能启用分布式事务的方法 | |
CN112907336A (zh) | 一种基于mybatis拦截器实现订单状态同步的方法及服务器 | |
CN101458628A (zh) | 一种程序版本管理方法 | |
KR100337373B1 (ko) | 컴퓨터 지원 설계 시스템에서의 설계정보 관리 방법 | |
JP2013105435A (ja) | データ移行方法およびプログラム | |
Kraas | Realizing Model Simplifications with QVT Operational Mappings. | |
Rodríguez-Echeverría et al. | Re-engineering legacy web applications into rich internet applications | |
CN102902707B (zh) | 不同版本二进制数据兼容的方法及数据版本转换系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20150429 |
|
WD01 | Invention patent application deemed withdrawn after publication |