zoukankan      html  css  js  c++  java
  • [AX]AX2012 Table的AOSAuthorization 属性

    Table的AOSAuthorization有以下几个枚举值可选择:

    • None
    • CreateDelete
    • UpdateDelete
    • CreateUpdateDelete
    • CreateReadUpdateDelete

    假设一个表的AOSAuthorization 属性被设置为CreateDelete,AOS值在确认用户有合适的权限时才执行Create和Delete操作,但是不会检查Update和Read操作。这个属性默认设置为None。在AOS通过执行表的以下方法检查操作:

    • aosValidateDelete
    • aosValidateInsert
    • aosValidateRead
    • aosValidateUpdate

    可以在表上重载这些方法,AOS对每条纪录执行这些方法,所以会影响运行性能。虽然MSDN讲在AOSAuthorization设为None不做检查,但是测试发现即使把AOSAuthorization设为None,这些方法也会被调用,可以调用xRecord.skipAOSValidation(true)来忽略检查,一个表只需要调用一次,所以能在一定程度上减轻对性能的影响:

    server static void JobPermAssertSkip(Args _args)
    {
        AssetTable tabAt;
        SkipAOSValidationPermission perm;
        ;
        ttsbegin;
        perm = new SkipAOSValidationPermission();
        perm.assert();
        tabAt.skipAosValidation(true);
        update_recordset tabAt
            setting MaintenanceInfo3 = "Useful information."
            where tabAt.AssetId == "goodvalue";
        ttscommit;
    }

    上面的Job虽然被放在server上运行,但是在我的测试中直接运行仍然会得到“Request for the permission of type 'SkipAOSValidationPermission' failed.”的错误,放在Class的server static方法中却是能成功运行的,MSDN的说明是SKipAOSValidationPermission.assert()需要在同一个tier一般在server tier运行,不是太明白这个解释,总之放在Class的server static方法里就没有问题了,也就是只能在server tier调用skipAOSValidation()。在调用了skipAOSValidation(true)后,表的aosValidateXXX方法就不再被调用了。

    视图也有AOSAuthorization属性,它的检查只涉及到视图,和其下的Table的设置没有关系。另外如果从secured server method或者service operation操作表,表的AOSAuthorization属性被忽略,权限检查始终被执行。

    详见http://msdn.microsoft.com/EN-US/library/bb278259

     

  • 相关阅读:
    表达式求解
    block的使用
    UITableView 知识点总结
    UIView 实战习题
    三、 UIView封装的简单动画
    二、 UIButton的使用总结
    一、 UIView的常见属性
    iOS开发网络篇之文件下载、大文件下载、断点下载
    多线程-NSthread
    二.初始化方法
  • 原文地址:https://www.cnblogs.com/duanshuiliu/p/2661930.html
Copyright © 2011-2022 走看看