电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

高阶场景开发

来源:金蝶云社区作者:金蝶2024-09-234

高阶场景开发

1 可编程接口

类名:kd.bos.servicehelper.privacy.PrivacyCenterServiceHelper

方法名:isDesensitizeField 

说明:根据属性元数据获取是否为脱敏字段

入参说明

参数
类型
说明

prop

kd.bos.dataentity.metadata.IDataEntityProperty 

属性元数据

localeId

java.lang.String

多语言标识,需要脱敏的语种,如Lang.get().toString()

operateType

java.lang.String

操作类型,如PrivacyCenterServiceHelper.OPERATETYPE_EXPORT

dynamicObject

kd.bos.dataentity.entity.DynamicObject

单据对象

返回说明

类型

说明
boolean是否脱敏字段


类名:kd.bos.servicehelper.privacy.PrivacyCenterServiceHelper

方法名:isDesensitizeField 

说明:根据实体标识和属性标识获取是否为脱敏字段

入参说明

参数
类型
说明

entityNum

java.lang.String

实体标识

fieldIdent

java.lang.String

属性标识 基础资料支持层级,如currency.name

localeId

java.lang.String

多语言标识,需要脱敏的语种,如Lang.get().toString()

operateType

java.lang.String

操作类型,如PrivacyCenterServiceHelper.OPERATETYPE_EXPORT

dynamicObject

kd.bos.dataentity.entity.DynamicObject

单据对象

返回说明

类型
说明
boolean是否脱敏字段


类名:kd.bos.servicehelper.privacy.PrivacyCenterServiceHelper

方法名:getDesensitizeValue 

说明:根据属性元数据获取对应的脱敏值

入参说明

参数
类型
说明

prop

kd.bos.dataentity.metadata.IDataEntityProperty 

属性元数据

localeId

java.lang.String

多语言标识,需要脱敏的语种,如Lang.get().toString()

operateType

java.lang.String

操作类型,如PrivacyCenterServiceHelper.OPERATETYPE_EXPORT

dynamicObject

kd.bos.dataentity.entity.DynamicObject

单据对象

value

java.lang.Object

明文值

返回说明

类型
说明

java.lang.Object

返回脱敏值,如果不是脱敏字段,返回原值。


类名:kd.bos.servicehelper.privacy.PrivacyCenterServiceHelper

方法名:getDesensitizeValue 

说明:根据实体标识和属性标识获取对应的脱敏值

入参说明

参数
类型
说明

entityNum

java.lang.String

实体标识

fieldIdent

java.lang.String

属性标识 基础资料支持层级,如currency.name

localeId

java.lang.String

多语言标识,需要脱敏的语种,如Lang.get().toString()

operateType

java.lang.String

操作类型,如PrivacyCenterServiceHelper.OPERATETYPE_EXPORT

dynamicObject

kd.bos.dataentity.entity.DynamicObject

单据对象

value

java.lang.Object

明文值

返回说明

类型
说明

java.lang.Object

返回脱敏值,如果不是脱敏字段,返回原值。


类名:kd.bos.servicehelper.privacy.PrivacyCenterServiceHelper

方法名:isDesensitizeFieldWithoutPerm 

说明:是否脱敏字段,忽略校验脱敏权限

入参说明

参数
类型
说明

prop

kd.bos.dataentity.metadata.IDataEntityProperty 

属性元数据

localeId

java.lang.String

多语言标识,需要脱敏的语种,如Lang.get().toString()

operateType

java.lang.String

操作类型,如PrivacyCenterServiceHelper.OPERATETYPE_EXPORT

dynamicObject

kd.bos.dataentity.entity.DynamicObject

单据对象

返回说明

类型
说明

boolean

是否脱敏字段


类名:kd.bos.servicehelper.privacy.PrivacyCenterServiceHelper

方法名:getDesensitizeValueWithoutPerm 

说明:根据字段和明文值获取对应的脱敏值,忽略校验脱敏权限

入参说明

参数
类型
说明

prop

kd.bos.dataentity.metadata.IDataEntityProperty 

属性元数据

localeId

java.lang.String

多语言标识,需要脱敏的语种,如Lang.get().toString()

operateType

java.lang.String

操作类型,如PrivacyCenterServiceHelper.OPERATETYPE_EXPORT

dynamicObject

kd.bos.dataentity.entity.DynamicObject

单据对象

value

java.lang.Object

明文值

返回说明

类型
说明

java.lang.Object

返回脱敏值,如果不是脱敏字段,返回原值。


类名:kd.bos.servicehelper.privacy.PrivacyCenterServiceHelper

方法名:isEncryptField 

说明:是否隐私中心加密字段

入参说明

参数
类型
说明

prop

kd.bos.dataentity.metadata.IDataEntityProperty 

属性元数据

返回说明

类型
说明

boolean

是否加密字段


2 典型场景范例

在实际脱敏场景中可能会遇到如下场景,在这个版本中我们需要通过可编程接口的调用配合完成下列场景的需求:

(1)动态表单脱敏处理

动态表单是由插件干预完成取数、存数逻辑,所以平台无法统一,动态表单一般会引用到单据与基础资料的数据,这时我们可以借助单据或基础资料上的脱敏配置规则结合接口编程完成脱敏处理。

在插件中对应的设置设置单据数据的地方,获取到明文值后,调用隐私脱敏接口,再设置到对应控件上。由隐私脱敏接口决定数据是否脱敏。

@Override
public void afterBindData(EventObject e) {
    super.afterBindData(e);
    String textField = this.getModel().getDataEntity().getString("textfield");
    Label label = this.getControl("labelap");
Object val = PrivacyCenterServiceHelper.getDesensitizeValue(this.getModel().getDataEntityType().
getProperty("textfield"),
            Lang.get().toString(),PrivacyDataConstant.OPERATETYPE_FORM,this.getModel().getDataEntity(),textField);
    label.setText(String.valueOf(val));
}


(2)字段明文显示

实现类似展示小眼睛-点击小眼睛展示明文的流程。

需要自己在设计器上实现展示小眼睛,是否显示小眼睛,则通过PrivacyCenterServiceHelper#isDesensitizeField 控制。

点击小眼睛触发后端事件时,由于在应用内存中都是明文,在后端插件事件中拿到明文数据重新赋值对应控件即可。


(3)整单明文显示

无论是移动端还是PC端,脱敏字段过多时,可能期望对于有权人整在点击某个按钮(或图标)后,整个单据都进行明文显示。

  • 表单整单明文显示

/*
表单整单明文显示 this 为 formView
*/
public void getPlainTextAll() {
        FormRoot rootControl = (FormRoot) this.getRootControl();
        _getPlainTextAll(rootControl);
    }
 
private void _getPlainTextAll(Container container) {
        if (container == null) {
            return;
        }
        List<Control> controls = container.getItems();
        List<FieldEdit> fieldEdits = new ArrayList<>(8);
        for (Control control : controls) {
            if (control instanceof Container) {
                _getPlainTextAll((Container) control);
            } else if (control instanceof FieldEdit) {
                fieldEdits.add((FieldEdit) control);
            }
        }
        getPlainText(fieldEdits.toArray(new FieldEdit[fieldEdits.size()]));

高阶场景开发

1 可编程接口类名:kd.bos.servicehelper.privacy.PrivacyCenterServiceHelper方法名:isDesensitizeField 说明:根据属性元数据获取是否...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信