造数脚本--OPENAPIV1.0脚本编写指引
1 概述
苍穹的开放平台对外提供多种接口类型,包括操作服务、自定义服务、AI服务。
操作服务是将业务对象(单据、基础资料)的操作(保存,提交,查询等)一键发布成为OpenAPI,系统自动生成服务接口及服务契约;
自定义服务可以将任何功能开发出来,这类服务不依附任何业务对象,出入参数可以完全自定义;
AI服务是对接金蝶AI平台的一种特殊服务,可以将AI平台的命令与插件适配,并执行对应插件逻辑。
本文主要介绍没有自定义接口服务的情况下,如何使用操作服务的OpenAPI,发出接口请求,可用来做接口测试和性能测试等。
2 OpenAPI脚本编写
样例:以【制造云】→【生产任务管理】→【生产工单】“新增”为例。
目标:使用OpenAPI接口创建生产工单。
具体操作如下。
2.1 建立API服务
步骤1:新增OpenAPI服务
【苍穹首页】→【开发服务云】→【开放平台】→【API服务管理】→"新增",选择"操作服务"→"创建",进入API的配置页。填写完成后,点击"保存"。
步骤2:查询API服务
在API服务管理列表中搜索“生产工单”,新建的“生产工单新增”已创建。
2.2 确定字段类型
确定字段的类型,可进入表单设计器查看。
进入路径有两种:
1.在生产工单的单据页面,快捷键Ctrl+Alt+G进入“生产工单”的设计器;
2.通过【苍穹首页】→【开发服务云-】→【开发平台】→【制造云】→【生产任务管理】→【生产工单 】,进入“生产工单”的设计器。
如下图所示,左边为表单的字段、元素列表,右边为属性,中间区域为可视化展示表单界面,点击相应位置,左右两边会切换到相应属性。
通过表单设计器中可以识别必填和非必填字段,必填字段在表单中以“*”标记。通过右边的属性栏,可以看到字段类型,从而确定字段类型。设计器看到的字段类型不同于自定义接口中规定的类型。
2.3 确定键值对
新建OpenAPI,HTTP请求使用post方式,内容格式一般为application/json,所以需要确定JSON对象和数组,通过表单设计器获取字段的属性、字段名,部分值。
确定字段名和字段格式后,开始写接口请求,具体的传值与请求的目的相关。在接口测试中,不同的传值对应不同的用例。
字段类型—引用字段
请先看“生产组织”这个字段。首先定位到“生产组织”,查看右边的属性,“生产组织”的标识为org,也即OpenAPI的字段名为org。
在右边的属性区域可以看到组织的字段类型为“组织”,说明生产工单中的组织通过关联组织表获得,引用属性中有number,可通过number来引用具体的值,比如"org":{"number":"Org-00014"},也可通过ID来引用,ID在数据库中存储的字段名为fid。
如何获取生产组织表中number值?
1.可以通过生产工单打开生产组织的F7,编码直接展示在F7的页面;
2.去数据库中查询生产组织的number值。
比如在F7的页面,可以通过number为"0001”取名称为“fenfen"的组织。
到此,字段名和值均获取,即API的请求中,可编写
"org":{"number":"Org-00014"};
通过设计器,我们可以了解一个字段是否通过关联其他表获得,字段类型为基础资料、组织、物料、计量单位等在单据页面需要通过F7取值的均为引用字段。
字段类型—下拉列表
生产工单中,组件清单异步状态字段 类型为下拉列表。通过标识得到字段名为asyncstatuspom。
点击下拉项,查看下拉项的下拉值,我们得到“处理中”的下拉值为“A”。
即 “组件清单异步状态”字段在API请求中传值为:"asyncstatuspom":"A" (表示组件清单异步状态为处理中)。
字段类型—表单分录
分录以JSON数组形式组装(可以去详细了解JSON格式)。
生产工单的分录的标识为treeentryentity。
分录中的每条分录以数组的形式组装,比如一条分录可以表示为:
"treeentryentity":[{"producttype":"C","material":{"number":"03011MQW"},"materialname":"","modelnum":"AAA-L29C","unit":{"number":"PCS整数"},"qty":"10","inwardept":{"number":"Org-00012"},"bomid":{"number":"BOM-1220-03896"},"bomversion":{"number":"BOM-1220-03896"},"expendbomtime":"2021-01-11 10:47:38.0","planpreparetime":"2021-01-11 10:47:38.0","planbegintime":"2021-01-11 10:47:38.0","planendtime":"2021-01-11 10:47:38.0"}]
一条分录表示一个JSON对象,用“花括号{}”括起来,整个分录体是一个JSON数组,用“中括号[]”括起来。
字段类型—文本类型
文本类型的字段直接传值,比如生产工单中的“备注”字段。文本类型一般为“String”类型,值需用引号括起来。比如“remark”:”生产工单test”。
文本类型的字段可直接填写。
字段类型—基础资料属性
字段类型为 “基础资料属性”,即来源于基础资料的某个字段。
如图,生产工单里的业务类型,来源于生产事务类型的“业务类型.名称”。
在页面,当选择生产事务类型时,“业务类型.名称"自动带出。
在接口传参时,可参考页面上自动带出的值,也可以去数据库查询生产事务类型表中的“业务类型.名称”。
请注意与前面“生产事务类型”的值匹配,它们是“生产事物类型”表中同一条数据的两个值。
页面上选择生产事务类型为”HA标准生产”,业务类型自动带出”标准生产”。
3 请求
按照各个字段的属性,通过上述方法得出键值对,拼写成请求入参。
下图为新增生产工单的请求入参,选取了几个重要字段,本文不涉及数据的参数化。
4 入参参数化
入参可以通过Beanshell脚本进行参数化,比如分录如果需要创建几万条,可以写一个循环结构来创建几万条的数组,如果请求的参数需要灵活取值,比如随机关联基础资料,时间分布均匀化,可通过方法参数化后再传入。
Beanshell的功能比较强大,作为Jmeter的扩展功能,可灵活处理各种场景。本文不详叙。
5 一些小技巧
接口字段格式和传值不知如何确定时,有以下小技巧可用:
1.可先在页面建一条数据,然后去数据库中查看存储的值,接口中的传值,大多数情况会和数据库中存储的值一致。
2.先在页面填写值,点击保存,通过谷歌浏览器F12对请求抓包,查看请求入参,参考如何取值。
造数脚本--OPENAPIV1.0脚本编写指引
本文2024-09-23 01:12:05发表“云苍穹知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-cangqiong-144417.html