返回列表 发帖

[V12功能解说] 5天学习Sage X3 Web Services 第4天

* 本文由赛捷软件(上海)有限公司翻译完成,未经授权不得转载。如需转载,请先联系相应版块的版主取得授权。





第4天 自.Net耗用基于X3对象的Web Services

这是整个5部分系列的第4部分,主要涉及如何为Sage X3 V12创建和耗用web services。这篇文章将着重于说明如何创建web services。在第1部分中我们探讨了Sage X3 Web Services池的设置,在第2部分中我们讨论了基于X3对象和子程序创建和发布web services,而在在第3部分中,则讨论了运用X3 web services测试器来测试和评估web services

在.NET中耗用X3 WEB SERVICES

使用来自X3的web services WSDL就能自.net耗用X3 Web Services了。以下是创建一个新的.Net项目来耗用X3 web services的步骤。

创建.NET解决方案并添加X3 WSDL

使用Visual Studio,从新的.Net解决方案开始入手。在本示例中,我将用Visual Studio 2019创建一个控制台App。

1. 自X3系统获得X3 web services的wsdl。前往功能:管理→管理→Web 服务→经典版SOAP Web services。

2. 点击“CadxWebServiceXmlCC”链接。


3. 在URL上右击,并选择“复制链接地址”。


4. 在Visual Studio解决方案中,在项目上右键,并选择Add(添加)> Service Reference(服务引用)。


5. 自Add Service Reference(添加服务引用)窗体,点击“Advanced(高级)”按钮。


6. 自“Service Reference Settings(服务引用设置)”窗体,点击“Add Web Reference(添加Web引用)”按钮。


7. 在“Add Web Reference(添加Web引用)”窗体中,将X3 Web Service UR复制到URL框中,然后点击URL右侧的箭头。


8. wsdl定义会出现在框中。如果没有出现的话,那么wsdl URL错误或无法获取。


9. 将Web reference name(Web引用名称)更改为X3WebService,并点击“Add Reference(添加引用)”。


10. 现在,X3 Web Service wsdl就会出现在.Net解决方案中了,如下所示。



创建身份验证类

由于X3 Web Services采用“基本身份验证”方法,所以可以创建一个所有web service调用都能使用的通用类。

1. 创建一个名为CAdxWebServiceXmlCCServiceBasicAuth.cs的类,如下所示。


2. 以下是这个类的源代码。



初始化关联背景

下面是一个.net关联背景初始化的例子。
•        X3 Language——即“ENG”
•        X3 WS Pool——这是X3中设定的web service池名称。这可能与端点名称相同或不同,取决于其设置方法。
•        Context——变量属性是在此处设置的,包括返回格式(XML或JSON)。
•        Web Services Endpoint——在WSDL添加至项目时,这是默认添加至.config文件的,但是它是可以更改的。应该在这里指定它以覆盖原始定义。
•        Credentials——这是一个X3用户。必须在X3中设置这个用户才能访问web services。
•        Timeout——如果在web service调用过程中发生超时,那么可以增加这个数值。
•        Object Keys——这些是有些web service调用类型必须的,用来读取/更新特定的记录等。



错误处理

1. web service resultXML会包含一个为0(失败)或为1(成功)的状态。
2. 如果状态为0,则报错消息将作为CAdxMessage类型的数组返回。这些可以与消息文本一起进行严重程度评估。
3. 如果状态为1,则表示web service成功。web service的结果可以从一个XML或JSON字符串反序列化到一个预定义的类中。



调用一个X3对象WEB SERVICE来查询左列表

调用基于对象的web service来查询一个对象列表需要使用web service中的“query”方法。下面是调用我们在本系列第2天中创建的YWSSOH子程序的一个例子。

1. 第一步是初始化调用关联背景和基本身份验证属性。
2. 对于查询方法,你可以选择指定对象关键字来进一步筛选结果。在本示例中,是根据客户编号(BPCORD)来筛选结果的。
3. 需要录入列表尺寸,并指定在查询中返回的最大数或最大项。
4. 结果反序列化到的预定义类如下所示。


5. 下面是完整代码。




调用一个X3对象WEB SERVICE来读取对象明细

调用基于对象的web service来读取一条记录会返回该记录的完整明细。这需要使用web service中的“read”方法。下面是调用我们在本系列第2天中创建的YWSSOH子程序的一个例子。

1. 第一步是初始化调用关联背景和基本身份验证属性。
2. 对于读取方法,你必须为需读取的记录指定对象关键字。在本示例中,使用的是销售订单编号(SOHNUM)。
3. 结果反序列化到的预定义类是基于SOH对象web service定义得到的,并且会根据交易定义而有所不同。
4. 下面是完整代码。这个功能用SOH对象读取了一个销售订单。



调用一个X3对象WEB SERVICE来创建一条新记录

调用基于对象的web service来创建一条新记录。这需要使用web service中的“save”方法。下面是调用我们在本系列第2天中创建的YWSSOH子程序来创建一个新的销售订单的例子。

1. 第一步是初始化调用关联背景和基本身份验证属性。
2. 结果反序列化到的预定义类是基于SOH对象web service定义得到的,并且会根据交易定义而有所不同。
3. 在创建一条新记录时,会返回现创建记录的完整XML。
4. 尽管对象包含了很多XML节点和字段,但需要提供的只有指定的字段。这意味着不需要提供对象的完整XML。
5. 下面是完整代码。这个功能用SOH对象创建了一个新的销售订单,并返回了新创建的销售订单的编号。



调用一个X3对象WEB SERVICE来修改一条现有记录

调用基于对象的web service可以用来修改一条现有记录。这需要使用web service中的“modify”方法。下面是调用我们在本系列第2天中创建的YWSSOH子程序来修改一个现有销售订单的例子。

1.        第一步是初始化调用关联背景和基本身份验证属性。
2.        在更新一条现有记录时,必须提供该记录的对象关键字。在本示例中,我们提供了SOHNUM。
3.        结果反序列化到的预定义类是基于SOH对象web service定义得到的,并且会根据交易定义而有所不同。
4.        在修改一条现有记录时,会返回所修改的创建记录的完整XML。
5.        尽管对象包含了很多XML节点和字段,但需要提供的只有正在更改的字段。这意味着不需要提供对象的完整XML。
6.        在下面提供的示例中,只对客户订单索引(CUSORDREF)和每行上的订购数量(QTY)作出了更改。
7.        下面是完整代码。这个功能用SOH对象更新了一个现有的销售订单。



结论

现在,你已经学会了如何创建一个.net程序来调用基于对象的web service的查询、读取、保存和修改方法。
附件: 您需要登录才可以下载或查看附件。没有帐号?申请用户

返回列表