# 对象删除权限
# 赋予用户对象删除权限
在第 1 步和第 3 步中,我们没有给 Customers 和 SalesOpportunities 设置删除权限,所以列表中没有「删除」操作。模型的增删改查权限由领域模型上的四个角色要求控制,把 DomainClass_crm.csv 中这两行的最后一列(deleteRoleRequirement.name)填上 USER:
shortName(*),extInfo,createRoleRequirement.name,readRoleRequirement.name,updateRoleRequirement.name,deleteRoleRequirement.name
;; CRM 教程:客户、销售机会、互动记录、任务
Customers,,USER,USER,USER,USER
InteractionRecords,,USER,USER,USER,USER
Tasks,,USER,USER,USER,USER
SalesOpportunities,,USER,USER,USER,USER
2
3
4
5
6
重启后端服务后,客户和销售机会列表的每一行都出现了「删除」操作。
提示
1.0 以前通过 RequestMap(按 API 地址配置权限)控制删除,1.0 起已移除(改为领域模型上的 createRoleRequirement、readRoleRequirement、updateRoleRequirement、deleteRoleRequirement)。
# 执行批量删除动作
行上的「删除」一次只能删除一条数据。系统内置了批量删除动作 DeleteMultipleObjects(界面上显示为「删除选中行」),把它绑定到列表表单后,列表上方就会出现批量删除按钮。
动作按表单绑定:打开「开发定制 > 对象动作 > DynamicActionDynamicForm」,点击「创建」,填写:
| 字段 | 值 |
|---|---|
| action | Delete Selected |
| form | List of Customers |
| displaySequence | 1 |
| group | 留空 |
注意
1.0.0-beta18 中,这个创建窗口直接显示了模型的全部字段:菜单名称和字段标题是英文,还显示了 createdBy、lastUpdatedBy、dateCreated、lastUpdated 四个审计字段,其中 dateCreated、lastUpdated 被标为必填,不填会提示「字段 dateCreated 不能为空」。在这两个日期框中随便选一个时间(例如点「此刻」)即可保存,保存时系统会用实际时间覆盖。
同样的绑定也可以写成 CSV。例如把批量删除绑定到销售机会列表,在 codes/data/csv 下新建 DynamicActionDynamicForm_crm.csv:
action.name(*),form.name(*),displaySequence,group.name
;; CRM 教程:销售机会列表绑定批量删除动作
DeleteMultipleObjects,List of SalesOpportunities,1,
2
3
注意 CSV 中引用的是动作的名称(DeleteMultipleObjects),界面下拉框中显示的是动作的显示名称(Delete Selected)。
绑定之后,到「客户管理」勾选要删除的客户,点击「删除选中行」,确认后即可批量删除:
1.0.0-beta18 已知问题
批量删除动作只检查执行者是否满足动作本身的访问权限(USER),不检查模型的删除权限(deleteRoleRequirement):即使模型没有开放删除权限,通过这个动作仍然可以删除数据。在该问题修复前,只把它绑定到本来就允许删除的模型的列表上。
另外,点击后弹出的确认框标题和内容是英文:标题「Delete Selected」,内容「Confirm to delete selected object(s)? this operation can not be undo」,点击「确定」即执行删除。
对象动作是牧言低代码平台的核心概念之一,除了内置动作,也可以用动态逻辑编写自己的动作,详见下方「进一步阅读」中的对象动作文档。此外,系统支持为角色要求(RoleRequirement)配置自定义逻辑,在运行时判断用户是否有某项权限,详情可参考对象权限控制文档。
下一步,我们将定制某些字段的显示名称和显示控件,继续查看表单字段显示优化章节。
# 进一步阅读
我们的平台是牧言低代码平台,专为帮助用户快速构建信息化系统而设计。了解更多关于我们平台的信息,请访问 牧言低代码平台 (opens new window)。