以下是sba.pr协议规则文件中2个协议处理的描述.
通过本示例可以了解如何使用l编写xml协议处理脚本,取代编写c++代码。
使用xml协议规则文件的具体的局限和缺陷后续给出。
协议规则文件与插件同名,扩展名为:pr
1.示例
7150-Request:演示如何insert
7151-Request:演示如何查询数据,有条件
sba插件的 sba.pr内容如下:
<?xml version="1.0" encoding="gb2312" standalone="yes" ?>
<protocol>
<msgs>
<!--@加入购物车 -->
<msg id="7150" type="5" desc="加入购物车">
<parameters>
<parameter>
<name>EId,UserID,CoEId,GoodsID</name>
<comment>企业ID,用户ID,供应商ID,商品ID</comment>
<type>1</type> <!-- 整型 -->
<nullable>false</nullable> <!-- 不允许为空 -->
</parameter>
<parameter>
<name>SKUNum,PKNum</name>
<comment>单品数,整装数</comment>
<type>1</type>
<nullable>true</nullable> <!--允许为空 -->
</parameter>
<parameter>
<name>handlerid</name>
<comment>HandlerID</comment>
<type>3</type> <!--字符串类型 -->
<nullable>false</nullable>
</parameter>
</parameters>
<script>
<action>1</action> <!--必须参数 动作1-Insert 2-update 3-delete 4-query -->
<table>t_Ven_ShoppingCart</table> <!--除action=4外,必须有此参数 -->
<vars>
<var>curdate=DATE()</var> <!-- 定义变量curdate,取值DATE()函数,获取当前时间-->
</vars>
<field_bind> <!-- 字段绑定参数和字段的绑定,如果action=4则不需要此节点 -->
<field>
<name>EId,UserID,CoEId,GoodsID,SKUQty,PackQty</name>
<method>1</method> <!-- 绑定方式: 1-参数值 2-参数编码表 3-常量 4-变量-->
<value>EId,UserID,CoEId,GoodsID,SKUNum,PKNum</value>
</field>
<field>
<name>AddTime</name>
<method>4</method> <!-- 绑定方式: 1-参数值 2-参数编码表 3-常量 4-变量-->
<value>curdate</value>
</field>
</field_bind>
<result>
<parameters> <!-- 需要显式返回的参数-->
<parameter>
<name>handlerid</name>
<method>1</method><!-- 参数计算方式 1-引用原来的同名参数 2-... 3-变量-->
</parameter>
</parameters>
</result>
</script>
</msg>
<!--@查询购物车(简版) -->
<msg id="7151" type="5" desc="查询购物车(简版)">
<parameters>
<parameter>
<name>EId,UserID,TopNum</name>
<comment>企业ID,用户ID,查询记录数</comment>
<type>1</type> <!-- 1-整数 2-浮点数 3-字符串 4-日期 5-时间 6-日期时间 7-bool(0或1) 8-二进制数据 9-set(集合)--> <!--默认:字符串-->
<nullable>false</nullable>
</parameter>
</parameters>
<script>
<action>4</action> <!--必须参数 动作1-Insert 2-update 3-delete 4-query -->
<select>
<cmd>
<when>select top @TopNum d.eid,d.ename,a.objectid,a.goodsid,b.brandid,brandname,stype,spec,skuqty as skunum,packqty as pknum,addtime
from t_ven_shoppingcart a,t_bas_mygoods b,t_bas_brand c,t_sys_org d
where a.coeid=b.eid and a.goodsid=b.goodsid
and b.brandid=c.brandid and d.eid=a.coeid and a.eid=@EId and userid=@UserID and a.status=0</when>
</cmd>
</select>
<result>
<method>1</method> <!-- 1-以行集形式返回 2-以参数形式返回 -->
</result>
</script>
</msg>
</msgs>
</protocol>
2.协议定义
对应的协议定义如下.
。加入购物车
协议名称 | 加入购物车 | ||
协议编号 | 7150 | ||
通信模式 | 请求-确认 | ||
请求内容 | 参数 | ||
参数 | 名称 | 说明 | |
企业ID | EId |
| |
用户ID | UserID |
| |
供应商ID | CoEId |
| |
商品ID | GoodsID |
| |
单品数 | SKUNum |
| |
整装数 | PKNum |
| |
返回内容 | 参数 | ||
参数 | 名称 | 说明 | |
|
|
|
。查询购物车
协议名称 | 查询购物车 | ||
协议编号 | 7151 | ||
通信模式 | 请求-确认 | ||
请求内容 | 参数 | ||
参数 | 名称 | 说明 | |
企业ID | EId |
| |
用户ID | UserID |
| |
查询记录数 | TopNum |
| |
返回内容 | 参数 | ||
参数 | 名称 | 说明 | |
|
|
| |
购物车商品列表 | |||
列 | 名称 | 说明 | |
供应商ID | EId |
| |
供应商名称 | EName |
| |
记录编号 | ObjectID |
| |
商品ID | GoodsID |
| |
商品名称 | GoodsName |
| |
品牌ID | BrandID |
| |
品牌名称 | BrandName |
| |
型号 | SType |
| |
规格 | Spec |
| |
单品数 | SKUNum |
| |
|
|
| |
整装数 | PKNum |
| |
|
|
| |
|
|
| |
加入时间 | AddTime |
|