元位指令系统通过对请求上下文的指令位字段进行按位与标记,实现向函数处理过程下发相应指令。该系统主要包含请求上下文指令和数据指令两类。

一、数据指令

数据指令大多为系统内核指令,在业务开发中通常无需使用,故暂不详细介绍。系统内核已预留前 20 位。

二、请求上下文指令

请求上下文指令通过 session 上下文中的非持久化META_BIT属性来设置。具体指令如下:

指令指令名前端默认值后端默认值描述对应操作
20
builtAction
内建动作判断是否为平台内置的服务器动作
PamirsSession.directive().disableBuiltAction();
PamirsSession.directive().enableBuiltAction();
21
unlock
失效乐观锁系统对带乐观锁模型默认启用乐观锁,此指令控制其开关
PamirsSession.directive().enableOptimisticLocker();
PamirsSession.directive().disableOptimisticLocker();
22
check
数据校验系统后端操作默认不进行数据校验,标记后生效
PamirsSession.directive().enableCheck();
PamirsSession.directive().disableCheck();
23
defaultValue
默认值计算控制是否自动填充默认值
PamirsSession.directive().enableDefaultValue();
PamirsSession.directive().disableDefaultValue();
24
extPoint
执行扩展点前端请求默认执行扩展点,可标记忽略;后端编程式调用数据管理器默认不执行扩展点
PamirsSession.directive().enableExtPoint();
PamirsSession.directive().disableExtPoint();
25
hook
拦截控制是否进行函数调用拦截
PamirsSession.directive().enableHook();
PamirsSession.directive().disableHook();
26
authenticate
鉴权系统默认进行权限校验与过滤,标记后启用权限校验
PamirsSession.directive().sudo();
PamirsSession.directive().disableSudo();
27
ormColumn
ORM 字段别名系统指令,禁止设置
28
usePkStrategy
使用 PK 策略根据 PK 是否为空决定采用新增或更新的持久化策略
PamirsSession.directive().enableUsePkStrategy();
PamirsSession.directive().disableUsePkStrategy();
29
fromClient
是否客户端调用判断是否为客户端(前端)调用
PamirsSession.directive().enableFromClient();
PamirsSession.directive().disableFromClient();
30
sync
同步执行函数强制异步执行函数以同步方式执行(仅对 Spring Bean 有效)
31
ignoreFunManagement
忽略函数管理忽略函数管理器处理,避免 Spring 调用重复拦截
PamirsSession.directive().enableIgnoreFunManagement();
PamirsSession.directive().disableIgnoreFunManagement();

三、元位指令使用模式

(一)普通模式

java
PamirsSession.directive().disableOptimisticLocker();
try{
    更新逻辑
} finally {
    PamirsSession.directive().enableOptimisticLocker();
}

(二)批量设置模式

java
Models.directive().run(() -> {此处添加逻辑}, SystemDirectiveEnum.AUTHENTICATE)