zoukankan      html  css  js  c++  java
  • XAF Store Model Differences in Database Using Complex Security

    http://www.devexpress.com/Support/Center/p/Q341530.aspx

    http://www.devexpress.com/Support/Center/p/S38032.aspx

    系統管理工具:管理用戶UI設置,匯入、匯出、復位。

    http://www.devexpress.com/example=E968 結合下面代碼一起使用效果更佳。

    public class ImportExportUserDifferencesController : WindowController
        {
            private SimpleAction exportDifferencesAction;
            private SimpleAction importDifferencesAction;
            public const string ActiveKeyConfiguratorOnly = "ConfiguratorOnly";
            public ImportExportUserDifferencesController()
            {
                exportDifferencesAction = new SimpleAction(this"ExportUserDifferences", PredefinedCategory.Tools);
                exportDifferencesAction.ImageName = "Action_LocalizationExport";
                exportDifferencesAction.Execute += exportDifferencesAction_Execute;
                importDifferencesAction = new SimpleAction(this"ImportUserDifferences", PredefinedCategory.Tools);
                importDifferencesAction.ImageName = "Action_LocalizationImport";
                importDifferencesAction.Execute += importDifferencesAction_Execute;
                this.TargetWindowType = WindowType.Main;
            }
            //public void UpdateActivity()
            
    //{
            
    //    bool canEditModel = SecuritySystem.IsGranted(new ModelOperationPermissionRequest());
            
    //    importDifferencesAction.Active["Security"] = canEditModel;
            
    //    exportDifferencesAction.Active["Security"] = canEditModel;
            
    //}

            protected virtual void UpdateActivity()
            {
                using (IObjectSpace objectSpace = Application.CreateObjectSpace())
                {
                    bool isActive = SecuritySystem.CurrentUserName == DatabaseUserSettingsModule.ConfiguratorUserName
                        || (SecuritySystem.CurrentUser != null && objectSpace.IsObjectFitForCriteria(
                            SecuritySystem.CurrentUser,
                            new FunctionOperator(IsCurrentUserInRoleOperator.OperatorName, new OperandValue(DatabaseUserSettingsModule.ConfiguratorRoleName))
                        ).GetValueOrDefault(false)
                    );
                    importDifferencesAction.Active[ActiveKeyConfiguratorOnly] = isActive;
                    exportDifferencesAction.Active[ActiveKeyConfiguratorOnly] = false;//已經有匯出功能,此處關閉。
                }
            }

            private void exportDifferencesAction_Execute(object sender, SimpleActionExecuteEventArgs e)
            {
                SaveFileDialog saveFileDialog = new SaveFileDialog();
                saveFileDialog.AddExtension = true;
                saveFileDialog.Filter = "Model differences files (*.xafml)|*.xafml";
                saveFileDialog.FileName = ModelDifferenceStore.UserDiffDefaultName + ".xafml";
                if (saveFileDialog.ShowDialog(Form.ActiveForm) == DialogResult.OK)
                {
                    string file = Path.GetFileNameWithoutExtension(saveFileDialog.FileName);
                    string path = Path.GetDirectoryName(saveFileDialog.FileName);
                    FileModelStore fileModelStore = new FileModelStore(path, file);
                    Frame.SaveModel();
                    fileModelStore.SaveDifference(((ModelApplicationBase)Application.Model).LastLayer);
                }
            }
            private void importDifferencesAction_Execute(object sender, SimpleActionExecuteEventArgs e)
            {
                OpenFileDialog openFileDialog = new OpenFileDialog();
                openFileDialog.AddExtension = true;
                openFileDialog.Filter = "Model differences files (*.xafml)|*.xafml";
                openFileDialog.FileName = ModelDifferenceStore.UserDiffDefaultName + ".xafml";
                if (openFileDialog.ShowDialog(Form.ActiveForm) == DialogResult.OK)
                {
                    string file = Path.GetFileNameWithoutExtension(openFileDialog.FileName);
                    string path = Path.GetDirectoryName(openFileDialog.FileName);
                    FileModelStore fileModelStore = new FileModelStore(path, file);
                    ApplicationModelsManager.RereadLastLayer(fileModelStore, Application.Model);
                    Frame.View.LoadModel();
                    //UpdateActivity();
                }
            }
            //protected override void OnWindowChanging(Window window)
            
    //{
            
    //    base.OnWindowChanging(window);
            
    //    UpdateActivity();
            
    //}

            protected override void OnActivated()
            {
                base.OnActivated();
                UpdateActivity();
            } 
        }
  • 相关阅读:
    十二星座职业成功忠告
    一文为你详解Unique SQL原理和应用
    如何在软件发布计划中自动化语义化版本与变更日志
    云图说 | 云上资源管控有神器!关于IAM,你想知道的都在这里!
    15年华为云视频架构师采访实录:揭秘未来音视频行业的科技趋势!
    【智简联接,万物互联】华为云·云享专家董昕:Serverless和微服务下, IoT的变革蓄势待发
    让你的产品更懂世界:如何提升场景文本识别中的语言模型
    一文带你彻底了解大数据处理引擎Flink内存管理
    未雨绸缪,数据保护之NBU介质备份
    六个步骤,从零开始教你搭建基于WordPress的个人博客
  • 原文地址:https://www.cnblogs.com/Tonyyang/p/2220039.html
Copyright © 2011-2022 走看看