使用CKRule实现促销管理系统

1, 常见的促销模型

促销管理系统在很多地方都有使用,大家去超市就经常体现到,感受到,不少中小型单位都其促销活动,要搞促销活动最好是有应用软件支持,这样就比较灵活管理也方便。而依靠手工处理的话效率会比较低下的。常见的促销活动,其分类及举例如下:

模型分类

序号

例子

捆绑促销

1

购买TK001+TK002各1件,优惠10元。(TK001,TK002为产品编码,不同的单位有不同的定义,下同。)

2

购买TK001+TK002各1件,赠送商品TK003一件。

3

购买TK001商品2件,TK002商品1件,赠送TK002商品2件。

4

购买TK001+TK002各一件,享受8折。

5

购买TK001+TK002数量各一件,享受优惠价10元。

单品促销

1

购买TK001商品,促销价10元。

2

购买TK001享受8折。

3

购买TK001,优惠5元。

4

购买TK001商品2个,赠送TK003商品1个。

组合促销

1

购买TK001,TK002,TK003,TK004任一件95折,任两件89折。

2

购买PK01牌商品任意一件95折,两件92折。

3

购买PK01,PC02,PA03牌商品满足3件,每件促销价20元。

4

购买PK01,PC02,PA03牌商品任意1件,可10元购买TK014商品。

5

购买PK01,PC02,PA03牌商品任意1件,赠送TK004,TK005,TK006商品中任意一件。

6

购买PK01,PC02牌商品任意1件,可特价2元购买TK006,TK007中任意商品一件。

客单价促销

1

购买TK001满200元,赠送TK006一件,满300元,赠送商品TK007,TK008,TK009各一件。

2

全场购物满50元,可特价2元购买TK011。

3

购买TK001满200元,优惠30元,满400元优惠60元,满600元优惠90元。

客单量促销

1

购买PA01牌商品,除商品TK017外,任意2件赠送TK003一件。

2

购买PA01牌商品,除商品TK017外,可特价1元购买商品TK003。

 

2, 软件模型抽象

根据上面的业务模型,可以抽象出品牌,商品名称,商品编号,购买件数,实际单价,原单价,单项金额,优惠类型,折扣,备注。其中优惠类型可分为无、折扣、特价、促销、优惠、赠送,这几个类型的特点如下:

名称

说明

无任何优惠。

折扣

使用打折来做优惠。

特价

固定一个很低的价格。

促销

与特价类似,但价格不一定低,只是比原价略有减少。

优惠

直接在原价格上面减去一定的金额。

赠送

客户不用钱。

由于有赠送或直接降低价格的活动,所以固定几个特殊的商品很重要。

序号

商品编号

含义

1

L00001

0.01元

2

L00010

0.1元

3

L00100

1元

4

L01000

10元

 

3, CKRule上面建模

对象的定义相对简单,是直接参考上面的定义的

自定义类就是销售记录信息,包含单价,数据,打折等内容。这些内容可以根据终端客户的需要增加,如商品条形码等信息。

 

而主表记录就是客户的基本信息。

 

要实现上面提到有多样化规则,一般都需要客户自己来设置,不要由软件开发商来设置,否则会忙坏软件开发者,而得不到一点收益。要让客户的计算机管理员可以设置,那设置的办法就要相对简单易懂。在逻辑比较界面中有购物车的商品判断,如含品牌,含商品,含商品件数等等。对商品的操作都是使用商品编号的,这样会比较方便电脑识别。

比较逻辑 

而结论&操作部分就精彩了,如优惠,打折,促销,特价等操作都会出现。

结论,动作 

这些逻辑判断和操作都是前台用户设置时所必备的内容。

 

4, 促销系统实现方式

 

    看了促销系统的需求,从业务上觉得很正常,是很多商场,商家常常做的活动,也不太复杂。但仅仅从技术实现来看,那就直接觉得太恐怖了,不好处理,有些东西好像仅仅是自然语言来表达,在程序上不好跟进。

    好像每一个促销都要写一个类来控制,这样就会出现非常多的类才能搞定问题,如果某天客户想增加一些新的规则,那原来的类就要修改或变化。从简单的角度来看,的确要这样做的,也可以使用一些更加复杂的设计模式来处理问题。

    从更标准的角度来看的话,应该做更多业务抽象,架构抽象,对象抽象的工作,但如果开发者刚刚接解这个行业或公司资源不足,难以做更深入的抽象和分析呢?那这个促销的项目基本上没得做了,匆匆上马的话,后面修改的工作量会非常大,最后工作越做越多,但是始终做不到收益。

CKRule从业务规则管理的角度来解决促销问题,把经常变化的规则封装入规则管理系统中,规则的变化不影响主程序代码,技术人员和业务专家都可以按自身的需求不断修改规则,并且都可以在程序运行时修改和部署规则。这大大方便了促销系统的开发。

 

5, 软件实现

销售订单的定义包含销售主体和明细的商品信息,而商品信息要使用促销规则再进行计算一次,从而判断那些商品可以打折或有什么优惠,如果可以优惠的商品就进行优惠。在实现的计算中,可以会遇到冲突的问题,即符合多个优惠条件的情况,当前软件没有判断冲突,都会生效,实际的计算可能会选其中一两条优惠。

促销主界面 

促销管理的业务规则可以在程序运行时配置,不影响其他代码的编写,而配置界面就是调用CKRule上面的配置内容。

初始化规则界面

_curPackage = new RuleFacade().GetPkgInst(RuleInstName);

foreach (var item in _curPackage.RuleLib.PoolRules.Keywords)

            {

                ListViewItem _lvi = new ListViewItem();

                _lvi.Text = item.Name;

                _lvi.Tag = item;

                //_lvi.ImageKey = "PicProperty";

                _lvi.Group = lvTips.Groups[0];

                lvTips.Items.Add(_lvi);

            }

            foreach (var item in _curPackage.RuleLib.PoolRules.LgcOperaWords)

            {

                ListViewItem _lvi = new ListViewItem();

                _lvi.Text = item.Name;

                _lvi.Tag = item;

                //_lvi.ImageKey = "PicMethod";               

                _lvi.Group = lvTips.Groups[1];

                lvTips.Items.Add(_lvi);

            }

            foreach (var item in _curPackage.RuleLib.PoolRules.ConclusionWords)

            {

                ListViewItem _lvi = new ListViewItem();

                _lvi.Text = item.Name;

                _lvi.Tag = item;// new List<CallDef>() { item };

                //_lvi.ImageKey = "PicMethod";

                _lvi.Group = lvTips.Groups[2];

                lvTips.Items.Add(_lvi);

            }

 

 设置规则

保存规则之后,需要刷新规则引擎,使用如下方法进行刷新。

new RuleFacade().Refresh(RuleInstName);

在计算界面就使用如下命名进行规则计算

_cond = new RuleFacade().Exec(FrmRulePoolSet.RuleInstName, _cond);

 

源代码下载

 

转载于:https://www.cnblogs.com/jingle/p/3731100.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
软件名称:CKRule规则引擎V1.0.9 *注意:请填写软件名称+ 有无插件:无插件 界面语言:多国语言 软件类型:国产软件 授权方式:免费版 软件等级: 软件大小:980 K 官方网址:http://www.ckrule.com/uploadfiles/CKRule1.0.9.zip 软件界面图:http://www.ckrule.com/Doc/cn/Files/sys.png 隶属栏目:编程开发 运行环境:win xp/win2003/win7/win8/win2008 标签 TAG:.Net规则引擎,业务规则管理 软件简介: CKRule是一个业务规则管理和复合事件处理的综合性引擎,可以将企业管理策略的定义,部署,管理和维护工作从核心代码中分离。 企业将深入的业务决策整合到程序,并把市场变化因素以业务规则的形式进行更新。而CKRule可大大降低程序维护的成本,促进业务程序实现更多准确和有效的商务决策。 【软件特点】 1, 允许决策逻辑独立于核心程序代码。 2, 允许技术开发员和业务专家共同定义和管理决策逻辑。 3, 能够在程序运行时,允许程序执行决策逻辑管理,提供规则编辑器和运行引擎。 4, 使用纯.Net CSharp开发,提供丰富API并允许使用所有.Net API,调用.Net类,方法,实现接口。 【软件功能】 【决策表】使用CKRule决策表,你可以使用表格的形式,非常直观地创建大量的规则。 【决策树】决策树表现形式相对简单、形象和生动,常常用于工作中。 【客户规则池】在客户规则池功能中,CKRule提供了各种各样的接口或控件,供业务系统使用,但CKRule对用户是透明的,用户始终是在使用业务系统中。 【口语式编辑器】口语式编辑器可以在CKRule内部及客户规则池中被调用,正如其名,其语法与口语表达基本相同。 与标准编辑器相比,口语式编辑器有大量的提示,这使规则编写变得非常容易,会使用Word就会使用口语式编辑器,无需任何技术基础,一学即会。 【中间件】 CKRule是一个规则引擎,是一个优秀的中间件,使用之后可以大大减少了底层代码的变动。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值