应用场景
轻流的特殊权限场景决定里删除数据功能是只有管理员才具有的权限,但是很多场景下需要实现普通成员也要具备删除权限,或者通过申请流程来进行数据的删除,这种场景下就必须要让普通人员具备申请删除某条数据的权限了!
今天来介绍通过Webhook+轻流API组合实现数据普通员工删除数据的权限。
配置方式
首先我们需要先了解API文档所需要获取到的关键信息,如果需要删除一条数据,那么我们请求的时候需要先获得三个信息,分别是accessToken(鉴权)、appKey(应用key值)、以及数据ID,这三条信息分别代表着:
accessToken(鉴权):调用轻流API的权限验证
appKey(应用key值):你所需要删除目标数据的所在应用
数据ID:你所需要删除的目标数据是哪一条
accessToken获取方式:
accessToken的获取方式最为简单,逻辑上删除权限只有管理员具备,我们可以进入轻商城-拓展插件当中找到OPEN API插件,点开配置按钮就能看到超级管理员的accessToken信息了。
appKey获取方式:
appKey获取方式同样非常简单,找到目标应用,到目标应用当中的网址中app/后面那一小段,就是应用的appKey信息。
数据ID获取方式:
数据ID是三种需要获取的关键信息里面最难获取的一项,在删除应用中预设一个字段用来存储要删除目标数据的唯一识别编号(注:目标数据的系统自带编号,如果用自建的字段来做识别可能会会请求失败),在增加一个字段存储数据ID,然后做一个Q-Linker字段来在发起数据时自动获要删除的目标数据的数据ID存储在数据ID字段中。如下图:
Q-Linker配置:
请求URL:https://api.qingflow.com/app/删除目标的应用appKey/apply/filter
Method设置为:POST
Header设置:accessToken 自定义 前文所述获取的accessToken内容
Body Type设置为:application/json
JSON Body设置:
{
"pageSize":1000,
"pageNum":1,
"queries":[{
"queId":0,
"searchKey":{你的编号字段}
}]
}
注:此处JSON Body字段是用来匹配目标数据的
Result Format设置(用来配置回调内容):JSON
配置JSON Path:别名设置为基础别名,别名名称为数据ID,JSON Path内容框填写:$.result.result.[0].applyId
Q-Linker配置完成,最后一步就是数据ID字段通过关联已有数据的方式关联上Q-Linker,并且选择Q-Linker回调的字段,下面的截图为前面几项操作的格式演示。
特别留意:
Q-Linker在配置请求URL的时候是可以在链接中插入字段的,这意味着如果你脑子够活,其实咱们是有可能根据判断场景来预设多个目标应用的appKey,然后用字段公式根据来源场景,然后同一个删除应用可以针对多个目标应用数据实现删除功能,也就是说做一个应用,可以复用与多个应用场景。
Webhook配置:
在添加流程中,增加一个Webhook节点,进行配置:
URL配置:https://api.qingflow.com/app/删除目标的应用appKey/apply
注:与前面的Q-Linker配置一样,URL内容是可以插入字段的
Method配置:DELETE
触发方式配置:自定义
Header配置:accessToken 自定义 前文所述获取的accessToken内容
Body Type配置:application/json
JSON Body配置:
{
"applyIds": [插入你的数据ID字段]
}
Webhook配置完成,下面是着相配置的截图演示
到这里,删除数据用的这个辅助应用自身就配置完成了,接下来我们在通过自定义按钮添加数据的方式,来发起删除应用数据,提交后即可完成数据删除动作。
后续应用场景
总的逻辑来说就是通过某种方式将要被删除的数据的唯一识别信息(例如编号)带入到发起删除应用的表单中,Q-Linker通过这个唯一识别信息将目标数据ID读取过来,接着通过Webhook触发轻流的API根据数据ID识别并删除数据。
至于哪种方式带入唯一识别信息可以根据自身场景来决定,例如可以通过自定义按钮添加数据时带入,也可以删除应用直接发起删除数据,然后通过引用字段将目标数据的编号读取过来,又或者通过数据关联来选择,任何一种方式都行,只要带出来的是唯一识别信息即可。
由于是通过请求链接当中带入目标应用的appKey的方式来决定删除哪个应用的数据,脑袋够灵活的话,其实是有可能实现跟其它系统一样将所有的应用都赋予普通成员删除权限的。唯一可能受限的应该就是无法批量删除,而且由于Q-Linker不支持提交重计算触发,所以任何情况下都需要人为介入这个删除数据的发起场景,直接通过Q-Robot创建删除数据来触发Q-Linker自动执行是无法实现了。
没有回复内容