• ckrule规则编辑器在wpf中的使用


     当前,ckrule的IDE和业务管理系统都是由winform开发的,规则编辑器也只提供了winform的版本,所以很多的朋友都提出意见,要有wpf的版本。wpf的界面设置和管理都更加的方便。

    事实上可以在wpf中使用ckrule规则编辑器的,使用的方法如下:
     
        1,在wpf项目中引入windowsform集成的相关dll。
        包含2个dll,分别是System.Windows.Forms.dll和WindowsFormsIntegration.dll

     
        2,引入WindowsFormsHost控件
        为了更方便控制界面部署,可以在控件中增加windowsform的panel。
    <Window x:Class="RuleEditorWpfApplication1.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:wfi ="clr-namespace:System.Windows.Forms.Integration;assembly=WindowsFormsIntegration"
            xmlns:wf ="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms"
            Title="MainWindow" Height="350" Width="525" Loaded="Window_Loaded">
        <Grid>
            <WindowsFormsHost Height="350" HorizontalAlignment="Left" Margin="5,5,0,0" Name="windowsFormsHost1" VerticalAlignment="Top" Width="486">
                <wf:Panel x:Name="pnlMain" Dock="Fill" Width="486" Height="350" />
            </WindowsFormsHost>
        </Grid>
    </Window>
     
        3,加载ckrule规则编辑器控件
        把规则文件放到ckruleAdmin目录下,并在程序中显式调用。
        public partial class MainWindow : Window
        {
            public const string RuleInstName = "人力-工资计算-口语公式";
            RuleEditorFacade _editorFacade = new RuleEditorFacade();
     
            public MainWindow()
            {
                InitializeComponent();
            }
     
            private void Window_Loaded(object sender, RoutedEventArgs e)
            {
                var _curPackage = new RuleFacade().GetPkgInst(RuleInstName);
                if (_curPackage == null)
                {
                    MessageBox.Show("加载规则包失败");
                    return;
                }
                var _ctrl = _editorFacade.GetEditor(_curPackage);
                _ctrl.Dock = System.Windows.Forms.DockStyle.Fill;
                pnlMain.Controls.Add(_ctrl);
                var _propset = new CustUnstructPropDef();
                _propset.CodeStyle = CodeStyleDef.IfElseStyle;
                _editorFacade.LoadData(_propset);
            }
        }
     
        4,界面演示
        可以看到wpf的界面显示出规则编辑器。

     
        综述
     
        ckrule都是使用winform技术编写的,很多朋友都对界面系统提出了宝贵的意见,ckrule技术团队也深知界面优化的重要性,但目前更多的精力都集中在内部逻辑的处理和升级中,我们一直认为内部逻辑的处理是规则引擎的重中之重,同时也深刻接受网友的指点批评。目前,我们建议技术管理员或实施人员维护规则,而真要直接提供给客户使用时,就购买业务管理系统(BRMS)的系统,在些系统上进行界面优化和调整,毕竟ckrule在重点在于规则处理,而定制化各个客户界面,不是我们的工作重点。
     
       源代码下载
    http://pan.baidu.com/s/1qWofwYS   ckrule使用例子->规则编辑器例子.zip
  • 相关阅读:
    人类思考的基本形式
    晚上睡不者原因
    东西方哲学比较
    逻辑推理的三种方法
    锻炼自己的注意力和逻辑思维能力
    预测和复盘自己的投资策略
    概念:名与实
    没有“界定问题”会出现什么问题
    问题、联系-条条大路通罗马
    程序问题调试与医生、汽车维修师
  • 原文地址:https://www.cnblogs.com/fubeibei/p/4309798.html
Copyright © 2020-2023  润新知