# SuperPage组件的交互概述

交互是一个动作,SuperPage中的大部分动作需要靠交互实现,如

交互的使用需要载体组件,通过搭配不同的交互,能够快速实现各种功能,各交互之间相互独立,从上至下依次执行。

# 前端交互与后端交互

交互主要分为前端交互和后端交互。

前端交互:主要是UI交互,如打开对话框、设置属性值、设置参数值、切换多页面板等。

后端交互:提交表单、更新数据、导入数据、删除数据、发送消息等,需要由后端接口处理。后端交互如果连续配置,且启用条件都是启用或等待上一个交互完成,则在一个事务中执行。如果交互中配置了成功或失败后的提示,则以事务中最后一个交互为准。

一个组件的交互执行完毕后,会返回交互执行的布尔值结果,有任何一个失败了,就返回false,否则返回true。

# 交互的执行条件和执行顺序

交互可以设置生效条件,在生效条件属性中设置,提供了如下选项:

  • 启用:默认为启用,将等待上一个交互正常执行完成后执行
  • 禁用:禁用该交互,通常用于调试
  • 条件:需要满足某种条件后再执行交互,同时需要对等待执行等待状态启用条件进行设置。交互在执行前先进行等待,等待结束后根据启用条件判断是否执行
    • 等待执行
      • 上一个交互:上一个交互,默认为该选项
      • 立即执行:立即执行该交互,与上一个交互并行执行
      • 其他可选交互列表:除了当前交互之外的所有交互列表,按交互设置顺序显示
    • 等待状态
      • 完成:等待的交互执行成功
      • 失败:等待的交互执行失败
      • 结束:等待的交互执行结束(包括成功和失败)
    • 启用条件:输入表达式对交互的使用条件进行限制,当表达式返回true时交互生效,否则交互不生效,如等待上一个交互完成启用条件[参数1]=1,表示等待上一个交互正常执行完成后,判断参数1的值是否等于1,该交互方可执行

设置多个动作交互时可使用一些技巧,下面列举一些典型的应用场景:

  1. 如何将多个数据提交动作合并在一个事务中:只需要使多个提交动作交互连续,即可自动合并到一个事务中,详情可参考多个提交数据请求合并一个事务提交
  2. 特殊交互的位置设置:当使用关闭对话框/悬浮面板打开链接等交互时,建议将该交互放在交互列表最下面,例如当关闭对话框/悬浮面板放到多个交互的中间位置时,执行交互后对话框关闭将导致后面的交互无法执行。

# 设置交互的触发事件

交互可以设置生效的前置触发事件,在触发事件属性中设置,有以下几个选项:

  • 单击:鼠标左键单击或移动端进行点击
  • 双击:鼠标左键双击
  • 右键单击:鼠标右键单击
  • 移入:鼠标移动到该组件时,就触发交互
  • 移出:鼠标光标从该组件上移开时,触发该交互

若交互的载体组件为输入组件,则触发事件的选项为:

  • 内容变化:输入框内容发生变化触发交互
  • 输入:输入内容时触发该交互。值得注意的是,正在输入的时候不是内容变化,输入完成并失去焦点后,才是内容变化
  • 回车:按回车时触发交互

若交互的载体组件为画布时,则触发事件的选项为:

  • 页面加载完成:当前页面加载完成后触发交互
  • 单击:鼠标左键单击或移动端进行点击
  • 右键单击:鼠标右键单击

# 后端交互事务

通过设置等待选项,可以控制交互之间的执行顺序。下面列举一些典型的应用场景:

# 多个提交数据请求合并一个事务提交

在交互列表中,后端交互如果连在一起,且都是启用或等待上一个交互完成,那么这些提交数据的交互会合并为一个事务,一起提交到后端。如果提交完成后有提示信息,那么以最后一个交互上的配置为准。

# 提交数据成功后打开成功对话框,失败后打开失败对话框

提交数据后可以配置两个打开对话框的交互,分别打开成功对话框和失败对话框,成功对话框配置等待上一个交互完成,失败对话框配置等待提交数据交互失败。

# 点击按钮提交数据,同时记录一条日志

按钮上配置提交表单交互用于提交表单数据,配置插入数据交互用于提交一条操作日志,两个交互都配置立即执行,他们会并行执行,发送2个请求。

# 安全策略

在执行后端交互时,为了保证交互执行的正确性,系统提供了一些额外的手段来提高系统提交数据的安全性。

# 一个事务的交互在一起执行

当配置一系列的后端交互在一个事务中执行时,这些交互会通过一个提交请求到后端执行,一起成功或失败。

# 校验更新数据的结果

在更新库存时,我们会遇到先更新库存再插入订单的情况,当库存为0时不应该插入订单。此时可以在更新库存的数据集上增加[库存]>0的条件,如果更新语句返回的结果等于0,那么更新数据交互的检查更新结果选项默认会判断该语句失败,则不会继续执行。在检查更新结果选项中,还可以设置更多选项以调整检查策略。

# 防止提交到数据库的数据被篡改

黑客可以通过模拟或修改http请求的参数等手段对提交的数据进行修改。我们可以通过如下手段来防止写入数据库的数据被篡改:

  • 在更新或删除数据交互中设置的数据集,需要加上严格的过滤条件,而不是仅仅依靠用户传递的参数。比如用户仅能删除或更新创建者为自身的数据,那么数据集上应该有条件[XX表].[创建者]=$user.id
  • 在后端交互事务最前面增加一个后端校验的交互,将对参数的校验或对数据库中的数据校验写在该交互中。如当数据库中无法select出指定参数的数据时,才能够将该参数的数据插入到数据库中。由于校验使用的参数和插入的参数是一致的,所以即使参数被修改,也可以避免提交脏数据。
是否有帮助?
0条评论
评论