当前,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

ckrule规则编辑器在wpf中的使用的更多相关文章

  1. WPF中嵌入Office编辑器(支持Word、Excel、PPT、Visio等)

    现在有一个项目,需要使用wpf做一个简单的客户端,用来生成word.excel.ppt.visio等文档,这就需要能够在wpf中嵌入office的编辑器,并对office文档进行编辑. 在网上搜索了一 ...

  2. WPF中的数据验证

    数据验证 WPF的Binding使得数据能够在数据源和目标之间流通,在数据流通的中间,便能够对数据做一些处理. 数据转换和数据验证便是在数据从源到目标 or 从目标到源 的时候对数据的验证和转换. V ...

  3. WPF中图形表示语法详解(Path之Data属性语法)ZZ

    大可山 [MSN:a3news(AT)hotmail.com] http://www.zpxp.com 萝卜鼠在线图形图像处理 ------------------------------------ ...

  4. 学习WPF——了解WPF中的XAML

    XAML的简单说明 XAML是用于实例化.NET对象的标记语言,主要用于构建WPF的用户界面 XAML中的每一个元素都映射为.NET类的一个实例,例如<Button>映射为WPF的Butt ...

  5. 在WPF中自定义你的绘制(四)

    原文:在WPF中自定义你的绘制(四)                                   在WPF中自定义你的绘制(四)                                 ...

  6. WPF中图形表示语法详解(Path之Data属性语法)

    原文 http://blog.csdn.net/johnsuna/article/details/1885597 老规矩,看图说话. 先看显示效果:(图1) XAML(代码A):<Page xm ...

  7. wpf中的触发器详解

    原文 http://zwkufo.blog.163.com/blog/static/25882512009724113250883/ 7.1.2 简单逻辑的表示--触发器(1) 在本章的多处介绍中都会 ...

  8. WPF中嵌入WinForm中的webbrowser控件

    原文:WPF中嵌入WinForm中的webbrowser控件 使用VS2008创建WPF应用程序,需使用webbrowser.从工具箱中添加WPF组件中的webbrowser发现其中有很多属性事件不能 ...

  9. 在 WPF 中使用 Path 路径

    在 WPF 中总会修改 Button 的 Style,比如一个自定义的 Close 按钮.刚入门的可能会用一张 PNG 格式的图片来做这个按钮的 Icon,但这个是不优雅的.而且你要改的时候还得去操作 ...

随机推荐

  1. hdu 4662 MU Puzzle

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4662 MU Puzzle Time Limit: 2000/1000 MS (Java/Others) ...

  2. 【M7】千万不要重载&&,||和,操作符

    1.C++对于真假值表达式采用“骤死式”评估方法,比如&&,||. if( p!=NULL && strlen(p)>10)   如果p为NULL,后面的strl ...

  3. [Ramda] Simple log function for debugging Compose function

    const log = function(x){ console.log(x); return x; } const get = R.curry(function(prop, obj){ return ...

  4. iOS开发——语法篇OC篇&静态方法与实例方法

    静态方法与实例方法 方法是类的行为,写在接口和实现两个文件中.在接口部分声明方法,在实现部分实现方法. 1.类方法与实例方法 Objective-C中的类可以声明两种类型的方法:实例方法和类方法.实例 ...

  5. mybatis0209 二级缓存

    .1二级缓存 1.1.1原理 mybatis和spring整合后一级缓存就没有了,sqlSession在不关闭的前提下2次查询就会从缓存中取,一级缓存缓存在sqlSession对象里面,当多用户查询的 ...

  6. memcache 存储session

    php使用memcache存储session   http://blog.csdn.net/weilee2009/article/details/7658260

  7. 《Entity Framework 6 Recipes》中文翻译——第九章EntityFramework在N层架构程序中的应用(七)

    在WCF服务中的序列化代理 问题 您有一个从查询返回的动态代理对象,你想要把它像POCO对象已经进行序列化.在序列化基于实体对象的POCO(普通旧CLR对象)时,实体框架会自动生成一个动态生成的派生类 ...

  8. Android(java)学习笔记112:局部位置的内部类的介绍

    1.局部内部类 /* 局部内部类 A:可以直接访问外部类的成员 B:在局部位置,可以创建内部类对象,通过对象调用内部类方法,来使用局部内部类功能 面试题: 局部内部类访问局部变量的注意事项? A:局部 ...

  9. AspxGridView整理文档【转】

    ASPxGridView属性:概述设置(Settings) <Settings GridLines="Vertical" : 网格样式 Vertical, Both, Non ...

  10. linux下 yum源、rpm、源代码安装mysql

    mysql的安装 一.yum源格式安装mysql 1.将下载的yum包上传到linux上: [root@localhost ~]# ls mysql-community-release-el6-5.n ...