网站首页 >> 牛刀云小程序开发 >> 第1篇制作模式 >> 基础制作 >> 实战案例:我的日记

2.2.3.5 服务制作基础

在页面中进行某个用户操作时,后续会进行一系列的动作,这些动作成为逻辑。例如:在购物车页中选中某个商铺后,这个商铺下的所有商品都被选中。其中选中商铺是用户操作,将商铺下的所有商品都选中是逻辑。再如:加入购物车时,先判断购物车中是否有当前选中的商品,如果没有,则在购物车数据集中添加商品数据,如果有,则修改购物车数据集中当前选中商品数据的数量。其中单击“加入购物车”按钮是用户操作,在购物车数据集中新增或修改数据是逻辑。可以看出有的逻辑影响页面展现效果,例如选中商铺后,商品显示选中效果,这样的逻辑称为页面逻辑。还有的逻辑和页面无关,例如加入购物车,页面没有任何改变,这样的逻辑称为业务逻辑。

通常将业务逻辑定义成后端服务,在前端页面中调用后端服务。这样做有2个好处:一是业务逻辑统一定义在后端,而不是分散在各个前端页面中,方便统一维护,也可以实现页面共享调用。例如在牛刀小店小程序中,首页、全部商品页和商品详情页中都可以调用加入购物车服务。二是在前端页面中不定义业务逻辑,只调用服务,减少了页面中的代码,也就减小了页面大小,从而提高页面加载速度。

“服务”仅是一个称谓,其实它更像是一个目录,里面包含“请求”。一个业务逻辑就对应服务中的一个请求。因为定义服务就是定义请求,调用服务就是调用请求。

下面以添加“是否写过日记”服务请求为例,讲解定义服务的过程。是否写过日记服务的业务逻辑是:查询日记数据集里面有没有某天的记录,如果有返回是,说明写过日记,如果没有返回否,说明没写过日记。日期是前端调用服务时传入的参数,即日期由前端决定,前端需要判断哪天写过日记,就在调用服务时传入那天的日期。

 

1、添加服务请求

单击制作台导航栏中的“服务”按钮,切换到服务制作区。单击“添加服务”按钮,打开“新建服务”对话框,在“显示名称”中输入日记,单击“确定”按钮,完成服务的创建。左侧服务请求列表中显示中新建的日记服务。

单击日记服务右侧的“新建请求”按钮,打开“新建请求”对话框,在“显示名称”中输入是否写过日记,单击“确定”按钮,完成请求的创建。在左侧服务请求列表中和右侧请求详情中显示出新建的是否写过日记请求。

 

2、设置请求方式、请求参数、请求返回

请求方式有5种,GET是获得数据,DELETE是删除数据,其余3个都是提交数据。其实查询数据、修改数据、删除数据都是可以通过数据集实现的。是否写过日记服务需要返回处理结果,因此使用“通过请求URI得到资源(GET)”。

日期是“是否写过日记”服务的参数。添加参数时,“名称”不能输入中文,“显示名称”可以输入中文,“数据类型”选择“日期”,“传参方式”选择“请求参数(RequestParam) ”。

请求返回选择“是否”。设置后的效果如图3-30所示.

3-30  是否写过日记服务请求详情

 

3、新建数据方法

    服务请求的处理逻辑就是按顺序执行一系列动作,在系统提供的动作中不包括对数据集的查询动作,例如要查询某天的日记数据。这样就需要在设计处理逻辑之前,先新建数据方法。方法是:单击左侧服务请求列表上方的“数据方法维护”按钮,打开“数据方法维护”对话框,左侧列出全部数据集,选择“日记”数据集,单击右侧+按钮,打开“添加方法”对话框,如图3-31所示。在“属性列表”中选中“查询操作”,“返回类型”选择“记录数”,单击“参数列表”中的+按钮,添加一个参数,在“字段名称”中选择“日期”,在“关键字”中选择“等于”,单击“确定”按钮创建出日记数据集的“根据日期查询”的数据方法。

3-31  添加数据方法

 

4、设计处理逻辑

是否写过日记服务请求的业务逻辑为执行“日记”数据集的“根据日期查询”数据方法,数据方法的参数使用服务请求的日期参数,获得返回的记录数,没有记录时返回0,否则有几条记录就返回几。最后将获得的记录数是否大于0作为结果返回。即记录数大于0,返回是,表示写过日记,记录数等于0,返回否,表示未写过日记。

设计业务逻辑的方法是:单击请求详情中的“设计”按钮,打开“代码编辑器”页面。左侧是业务逻辑设计区,右侧是业务逻辑节点属性设置区。在逻辑设计区添加动作,在属性设置区设置属性。

添加动作,执行“根据日期查询”数据方法,获得记录数。具体方法是:在逻辑设计区的“开始”节点后面添加“动作”节点,单击属性设置区中“执行动作”属性右侧的…按钮。打开选择动作对话框,如图3-32所示。这里“仓库”就是“数据集”。依次展开“数据操作”和“日记仓库”,选中“根据日期查询”方法,单击“确定”按钮,回到属性设置区。

3-32  在执行动作中选择数据方法

 

可以看到“输入设置”里面有一个参数friji,这个参数就是在数据方法中添加的字段参数日期列的列标识。单击friji参数右侧的…按钮,打开表达式编辑器,在“上下文变量”中显示服务请求中定义的参数名称,双击日期参数date,编辑器的底部出现date。单击“确定”按钮返回属性设置区。

“输出设置”中显示出“返回值类型”和“是否使用返回值”,选中“使用返回值”,出现“是否新增变量”和“变量名称”,在“变量名称”中输入num,如图3-33所示,则表示根据日期查询出的记录数存入num变量中,即在后续的节点中,num代表查询出的记录数。

3-33  设置动作的属性

添加结束节点,返回记录数是否大于0。具体方法是:在逻辑设计区的“动作”节点后面添加“结束”节点,如图3-34所示,单击属性设置区中“返回值”属性右侧的…按钮。打开表达式编辑器,在“上下文变量”中显示出在前面节点中定义的变量,双击num,编辑器的底部出现num,单击符号栏中的>按钮,再输入0,编辑器底部的表达式变为num > 0。单击“确定”按钮返回属性设置区。

3-34  设置服务请求的返回值

    至此,业务逻辑设计完成。

 

5、添加服务请求组件

和数据集一样,在服务制作区添加服务请求后,在页面制作区的服务栏里面会显示出这些服务请求。同样它们也都是组件。在需要调用该服务请求的页面中,添加相应的服务请求组件,这些组件会显示在数据|服务|功能组件容器中,组件提供“发送服务请求”操作,调用该操作实现调用服务请求。

 

6、发送服务请求

原来单击“写日记”页面中的“保存”按钮,执行“保存并返回”操作,实现关闭“写日记”页面,保存新增的日记数据,并带回到日记列表中显示。现在改为单击“写日记”页面中的“保存”按钮,执行“发送服务请求”操作,调用“是否写过日记”服务请求。

 

7、设置请求成功失败事件

如果调用请求成功,则根据返回值进行判断,如果返回是,提示已经写过日记,否则执行保存并返回操作。如果调用请求失败(通常是网络原因),提示请求失败原因。

在“写日记”页面中需要增加是否写过日记服务组件,以及修改保存按钮组件的单击事件。具体修改内容见表3-6

 

3-6  增加服务后组件属性说明

添加组件

父组件

属性设置

是否写过日记

服务组件容器

请求成功=操作组合

是否执行=请求成功.请求返回数据 等于

操作名称=保存并返回

目标数据集=日记

是否执行=请求成功.请求返回数据 等于

操作名称=显示提示框

标题=已经写过日记了

请求失败=显示提示框 标题=请求失败.异常信息

按钮组件

页面组件

显示名称=保存

单击=发送服务请求 目标对象=是否写过日记

    在事件属性中选择“操作组合”,就意味着,这个事件触发后,可以执行多个操作。此时每个操作都可以设置执行条件,如果满足条件就执行,否则就不执行。执行条件的设置使用了情景,图3-35所示的情景可以解读为:默认情况不执行,满足$event.data(请求成功.请求返回数据)等于假时执行。

3-35  执行条件中的情景设置

 

“请求成功.请求返回数据”和“请求失败.异常信息”都是事件的返回值,在事件执行的操作中的表达式编辑器中会显示出事件的返回值。如图3.-36所示,在请求成功操作组合的是否执行属性中,可以看到请求成功事件的返回值。

3-36  执行条件中的情景设置

8、设置请求参数值表达式

如果服务请求定义了请求参数,在发送服务请求时,就需要设置参数值。设置参数值即可以在服务请求组件的“参数设置”中设置,也可以在调用“发送服务请求”操作中设置。单击服务请求组件的“参数设置”按钮,打开“服务请求参数编辑”对话框,这里列出在服务制作区中定义服务请求时设置的请求参数,单击参数所在行“值表达式”列右侧的┊按钮,打开表达式编辑器。在这里选择作为参数的值。例如要将日记数据集中的日期作为参数,就选择“数据”—“日记”—“日期”。