前言
前一篇中介绍了关于行为定义中Determinations和Validations的概念,本篇将介绍行为定义中关于Feature Control的基本概念和内容。
正文
Feature Control(特征控制)可以以静态或者动态的方式来控制action是否可用(action灰掉无法点击),字段是否可编辑之类的操作,同时又分为实例特征控制和全局特征控制,和授权控制的概念类似,但又并不冲突,授权控制是从后端杜绝未经授权的操作,特征控制是从前端控制操作是否可以执行,比如用户虽然有删除单据的权限(Authorization Control授权控制),但是订单完成状态下则不允许点击删除按钮(Feature Control特征控制)。
Feature Control(特征控制)分为两大类:Instance Feature Control和Global Feature Control,看过之前授权控制的读者应该对这两种分类并不陌生,一个是基于实例数据的,一个是基于全局和单个实例数据无关的,下面分别介绍两种类型的使用方式。
Instance Feature Control
Instance Feature Control又分为Static Feature Control和Dynamic Feature Control:
Static Feature Control
静态控制可以理解为固定的写死的控制,比如下图中的 field ( readonly ) OrderNumber; 限制了该字段为只读:
还可以使用 field (mandatory:create) 限制该字段在创建时是必输字段;field (readonly:update) 则可以限制该字段在更新时只读;field (suppress) 则可以移除行为定义的生成组件的该字段(除了主键,外键,ETag字段以外),如果想从OData暴露中移除此字段,则需要使用注解 @Consumption.hidden:true。所以静态控制比较简单,就不再进行示例演示,自己尝试就好。
Dynamic Feature Control

