




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
如何在Genero(Tiptop)中调用WebServices?1. 什么是WebServices?它是一种构建应用程序的普遍模型,可以在任何支持网络通讯的操作系统中实施运行,它是一种新的web应用程序分支,是自包含、自描述、模块化的应用,可以发布、定位、通过web调用。Web Service是一个应用组件,它逻辑性的为其他应用程序提供数据与服务,各应用程序通过网络协议和规定的一些标准数据格式(Http,XML,Soap)来访问Web Service,通过Web Service内部执行得到所需结果。Web Service可以执行从简单的请求到复杂商务处理的任何功能。一旦部署以后,其他Web Service应用程序可以发现并调用它部署的服务。实际上,WebSerice的主要目标是跨平台的可互操作性。为了达到这一目标,WebService完全基于XML、XSD等独立于平台、独立于软件供应商的标准,是创建可互操作的、分布式应用程序的新平台。在以下三种情况下,使用WebService会带来极大的好处:1) 跨防火墙的通讯2) 应用程序集成3) B2B的集成4) 软件和数据重用不过,也有一些情况,WebService根本不能带来任何好处。一、 单机应用程序二、 局域网的统购应用程序(此种集成,使用DCOM比SOAP/HTTP效率高的多)2. 背景说明鼎新的Tiptop ERP系统,采用法国4js公司的Genero开发工具,也就是俗称的第四代开发语音(4gl),其前身来源于Informix数据库,后经过4js公司的扩展,目前已可以兼容多种数据库,比如重量级的Oracle,DB2等,还有一些轻量级的,如GeneroDB,mySQL等。因为Tiptop系统通常运行在Unix/Linux平台,跟基于SQL Server数据库的应用程序集成的时候便显得异常困难。虽然可以使用如Oracle的透明网关之类的解决方法,但是却受到颇多限制(Oracle也只限Win平台),因此使用WebService的方式就顺利成章了。所幸,Genero中已经提供了针对WebService的解决方案,而且相当的简单。本人使用的Tiptop版本为GP5.X。鼎新已经在其产品包中提供了很多关于Web Services的程序,本文不打算讨论这些针对ERP的Web Services,就从Genero的底层开始,探讨如何使用4gl调用Web Service函数,来实现ERP数据跟另外一个系统(数据库平台为SQL Server)的同步。除了实现数据库同步外,还可以实现其他复杂的业务逻辑,本文仅抛砖引玉,如果你有更好的方案,可以同作者交流。如果需在在Genero中提供Web Service服务函数,另开文章探讨。3. 测试本文档需要具备的条件?l IIS(Internet Information Services),Web Server,部署web servies的服务器l Visual Studio 2005,开发Web Services服务函数。当然也可以使用其他开发工具开发,本文以C#为例说明。l Genero Studio,开发客户端4gl程序,可以是其他工具,如UE、VI等。l 程序要达到的目的:ERP有一个基本档aooi040,用来输入员工基本信息,员工的工号为Key值,不允许在ERP中直接修改。程序最终看到的结果:在ERP中新增、修改、删除数据记录时,同时在另一个系统的SQL Server数据库的数据也会同步更新。SQL SERVER的数据结构如下:CREATE TABLE dbo.Employee(ID int IDENTITY(1,1) NOT NULL,EmpCode varchar(8) COLLATE Chinese_PRC_CI_AS NOT NULL,EmpName varchar(30) COLLATE Chinese_PRC_CI_AS NULL,EmpDept varchar(6) COLLATE Chinese_PRC_CI_AS NULL,CreateDate smalldatetime NULL, CONSTRAINT PK_Employee PRIMARY KEY CLUSTERED (EmpCode ASC)WITH (IGNORE_DUP_KEY = OFF) ON PRIMARY) ON PRIMARY4. 服务端程序的开发?1) 创建ASP.NET Web服务应用程序,如下图:2) 程序代码如下:(省去中间IDE中处理若干)using System;using System.Data;using System.Web;using System.Collections;using System.Web.Services;using System.Web.Services.Protocols;using System.ComponentModel;using System.Data.SqlClient;namespace sync2 / / Service1 的摘要说明 / WebService(Namespace = /) WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1) ToolboxItem(false) public class sync2 : System.Web.Services.WebService public struct myGen public string gen01; public string gen02; public string gen03; public DateTime gendate; WebMethod public bool AccessGenN(String AccessType, myGen RecValue) /返回值:作业成功返回true,失败返回false /输入参数:AccessType:I-Insert,D-Delete,U-Update /连接Sql Server数据库 SqlConnection SqlCn = new SqlConnection(); SqlCn.ConnectionString = Password=test;Persist Security Info=True;User ID=test;Initial Catalog=testDB;Data Source=.; SqlCn.Open(); /数据写入sql server数据库中 int rowcount; try string strSQL = ; if (AccessType = I) strSQL = Insert Into Employee Values ( + RecValue.gen01 + , + RecValue.gen02 + , + RecValue.gen03 + , + RecValue.gendate + ); if (AccessType = D) strSQL = Delete Employee Where EmpCode= + RecValue.gen01 + ; if (AccessType = U) strSQL = Update Employee Set + EmpName= + RecValue.gen02 + ,EmpDept= + RecValue.gen03 + Where EmpCode= + RecValue.gen01 + ; SqlCommand mySqlCommand = new SqlCommand(strSQL, SqlCn); rowcount = mySqlCommand.ExecuteNonQuery(); catch rowcount = 0; SqlCn.Close(); if (rowcount 0) return true; else return false; 不熟悉.net中Web Service的写法的可以去参考相关书籍,注意代码中的WebMethod声明。3) 代码编译4) 发布到IIS5) 打开IE,看看浏览器中显示是否正常?至此,服务端已经开发完成且发布OK。5. 客户端程序的开发?1) 生成客户端4gl的代理类。在路径下执行以下命令:fglwsdl http:/localhost/services/sync2.asmx?WSDL,执行后便在当前路径下产生两个文件,一个是inc文件(存储调用web service时的变量定义),另一个是代理类文件,以4gl结尾。此代理类文件跟.NET中代理类的含义类似,但是较.NET稍微复杂一点,有兴趣的可以打开看看,里面包含了web service的uri地址,其中比较重要的算是Import com这句了,可以看到4gl的所有涉及web service的程序都在这个模组当中。然后编译此4gl,生成42m档。2) 修改调用程序。依照tiptop的客制规范,将aooi040.4gl拷贝到$CUST下相应目录进行修改。首先要把inc文件放在代码的头部。如:GLOBALS /u1/toptest/topcust/coo/4gl/sync2_sync2Soap.inc。新增加一个函数来统一调用web services函数FUNCTION i0401_syncsqlN(p_type,p_recval) DEFINE p_type STRING DEFINE p_recval RECORD gen01 STRING , gen02 STRING , gen03 STRING , gendate DATETIME YEAR TO FRACTION(5) END RECORD DEFINE wsstatus INTEGER LET AccessGenN.AccessType=p_type LET AccessGenN.RecValue.*=p_recval.* LET wsstatus = AccessGenN_g() IF wsstatus 0 THEN DISPLAY Error (|wsError.code|) :,wsError.description ELSE IF AccessGenNResponse.AccessGenNResult = 0 THEN DISPLAY Run Failed! ELSE DISPLAY Run Succeed! END IF END IFEND FUNCTION 3) 在代码的适当位置,调用此函数。如在Insert Into gen_file之后执行: let l_gen.gen01=g_genl_ac.gen01 let l_gen.gen02=g_genl_ac.gen02 let l_gen.gen03=g_genl_ac.gen03 let l_gen.gendate=g_today CALL i0401_syncsqlN(I,l_gen.*)4) 好了,现在编译此文件,然后进行
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电商内容营销策略升级:2025年种草经济下的品牌形象塑造报告
- 环保产业园区的产业集聚与区域绿色旅游协同发展报告001
- 2025年医院信息化建设:电子病历系统智能药物市场机遇优化报告
- 2025年医院电子病历系统优化与医疗信息化投资分析报告
- 2025年医院电子病历系统优化构建医疗信息化协同发展报告
- 2025年金融科技安全报告:网络安全与数据保护的关键措施001
- 2025年互联网广告精准投放算法效果评测与广告主满意度调查报告
- 2025年医药流通行业供应链整合与成本控制战略规划与优化策略实施案例分析报告解读
- 周瑜人物介绍
- 建筑信息模型(BIM)在全过程建筑工程抗震加固中的应用报告2025
- 【人教版】河北石家庄2024-2025学年 四年级下学期期末数学试题【一】有解析
- 施工费用控制管理制度
- 律师事务所数据管理制度
- 2025年卫生系统招聘考试《职业能力倾向测试》新版真题卷(附详细解析)
- 《资治通鉴》与为将之道知到课后答案智慧树章节测试答案2025年春武警指挥学院
- 2023-浙江信息技术-学考总复习-知识点总结
- 2022-2023学年安徽省合肥市七年级下册期末语文模拟试卷(含答案)
- 2022年《国民经济行业分类》
- 集中控制中心建设(指挥中心建设)
- 施工导流围堰工程实例讲义课件(117页配图丰富)
- 清溪1井溢流事件压封井抢险分析
评论
0/150
提交评论