报名提交业务流程
cGh=HttpQueryParams("gh") &&工号
cGz=HttpQueryParams("gz") &&工种
*--DBF表(报名)
UPDATE 报名 set 工种=cGz where Gh=cGh and empty(Gz)
这样的流程对吗?
很多人会说对,因为这是正常思维流程。
很抱歉,在我看来,这大错特错了。
写业务流程不单单要关注正常的思维流程,这是明面的,还有异常流程,我们要关注到。
异常流程有哪些吗?
1 工号在报名表不存在的情况
2 工种已在填交了,程序没有更新,但是没有任何信息返馈到操作者。
所以正常的业务流程应该是如下
cGh=HttpQueryParams("gh") &&工号
cGz=HttpQueryParams("gz") &&工种
*--DBF表(报名)
use 报名 in 0
select 报名
locate for Gh==alltrim(cGh)
if !found()
error "没有该员工信息"
endif
if !empty(Gz)
error "该员工已经报名过了"
endif
UPDATE 报名 set 工种=cGz where Gh=cGh and empty(Gz)
其实还有一个异常流程,叫前端不可信,必须加上工号校验的,我就不举例了。
有些代码可以省,有些代码不可以省,关系到业务流程明暗两条线都需要给写完整了,看到为省而省这样写代码的,就是要被猫老师骂的。
补充BS入门的知识,关于一次访问,二次提交
一般流程是一次访问,输出整个网页初始状态
二次提交,是接收网页填写的数据,由Submit按钮提交的。
一次访问是可以通过浏览器地址栏输入网址访问,也可以由HttpRedirct跳转网址访问。一次访问也是可以带GET方法提交的参数的。
因为BS模式是一问一答,二次提交获取不到一次访问GET提交的参数的。叫前朝的尚方宝剑,斩不了本朝的官,如果想把一次访问的参数保留想法,那么想办法把这个参放在form表单中,这样二次提交就能带上参数了。
你学废了吗?