zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    Intellij IDEA 一些不为人知的技巧
    IDEA配置GIT
    返回数据
    IDEA字体设置
    @RequestParam
    @RequestMapping
    基于jquery fly插件实现加入购物车抛物线动画效果,jquery.fly.js
    js倒计时代码 适合于促销-倒计时代码
    phpstorm 10 注册码
    dispaly:table-cell,inline-block,阐述以及案例
  • 原文地址:https://www.cnblogs.com/fubeibei/p/4309798.html
Copyright © 2011-2022 走看看