使用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);

源代码下载

使用CKRule实现促销管理系统,布布扣,bubuko.com

时间: 2024-10-25 04:52:34

使用CKRule实现促销管理系统的相关文章

Ckrule业务规则管理系统简介

1.   简述 Ckrule业务规则管理系统(BRMS)是一个集成的应用程序存储.管理.执行和测试的平台,允许组织定义.部署.监控和维护运营系统使用的各种复杂决策逻辑.Ckrule BRMS 独立于核心应用程序代码提取并管理决策逻辑,以便可以跨整个组织轻松理解.维护和重用这些决策逻辑. Ckrule BRMS由下图4个部分组成: 各部分功能明细如下: 一级功能 二级功能 说明 规则存储 -- 存储库允许规则置于核心应用程序代码之外.它还允许将决策逻辑作为一项企业资产管理,从而支持更轻松地理解和更

CKRule业务规则管理系统部署说明

1.   程序包说明 软件是使用WinForm开发的,包含服务端和客户端,服务端部署在IIS上面,客户端可以在已经安装.Net4.0的windows上面运行. 1.1.  服务端程序包 CKBrmsServ是服务器,直接放在IIS上面的根目录中即可. 其文件内容如下: 数据库放在database中,默认使用sqlite数据库,购买了商业许可后,可以使用sqlserver或oracle等大型数据库. 由于sqlite各个版本使用的dll不同,区分32位和64位,如果使用windows8或更高级的操

统一配置中心

之前我的2015下半年总结中有提到我们的项目采用了微服务的模式,也就是说系统按一定的技术以及业务切分成各个独立的小系统,比如我们的产品是一个电商系统,那么可以分为:前端WAP,前端api,商品管理系统,采购系统,主数据管理系统,用户中心管理,价格管理系统,促销管理系统,订单管理系统,库存管理系统,门店管理系统等等,最后统计的数据是dubbo服务就高达18个,web系统有3个,前端WAP站点一个.这些系统要想跑起来就需要连接各种资源,比如服务地址,数据库,缓存,文件系统,消息队列等,一般项目中使用

电商系统术语

系统介绍 序列 系统代号 中文名称 英文名称 管理和外部访问URL 备注 技术中心所属部门 1 WMS 仓储管理系统 Warehouse Management System     物流 2 TMS 运输管理系统 Transportation Management System     物流 3 SCM 供应链管理系统 Supply Chain Management     ERP 4 EBS 供应链财务系统 E-Business Suit     ERP 5 MIMS 商品物流资料管理系统  

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

当前,ckrule的IDE和业务管理系统都是由winform开发的,规则编辑器也只提供了winform的版本,所以很多的朋友都提出意见,要有wpf的版本.wpf的界面设置和管理都更加的方便. 事实上可以在wpf中使用ckrule规则编辑器的,使用的方法如下:     1,在wpf项目中引入windowsform集成的相关dll. 包含2个dll,分别是System.Windows.Forms.dll和WindowsFormsIntegration.dll     2,引入WindowsForms

jsp服装连锁门店管理系统

该服装连锁门店的开发语言是JSP,后台数据库是sqlserver,主要实现了在线的门店管理,对服装的销售和出入库信息进行了有效的管理.系统主要功能如下所示:连锁店门店系统的模块:1).前台收银收银(计算) ,前台当班,前台交班,库存数量查询, 赠品查询,密码修改 2).系统后台功能门店基础资料,门店员工资料,会员客户资料,用户资料管理,用户权限管理,密码管理 3).库存管理 出入库记录,库存预警设置,库存查询,供应商资料,商品资料,赠品管理,订退货记录4).报表管理 销售收入统计表,商品价格查询

后台管理系统

<!DOCTYPE html><html lang="en"><head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, i

会员管理系统的主要功能——智络软件

现今会员管理软件让人应接不暇,很多商家也不知道该怎样选择适合自己的会员管理系统,很多都是网上看到的或者朋友介绍的,在使用之前,也没有很全面的了解自己使用的会员管理系统的一些功能.为了让商家朋友容易的选择适合自己的软件,在此详细介绍一下我们智络会员管理系统的功能.  智络管理软件是一款功能强大,操作简便的会员管理软件. 拥有短信群发.邮件.网站整合.定制开发等系列配套技术以及对刷卡器.打印机.POS机器.钱箱.客户显示屏等外围设备的完美支持,为中小企业提供全套完整会员制营销解决方案,大大降低日常经

淘宝双11促销背后高并发处理之淘宝网采用什么技术架构来实现网站高负载

转自:http://china-chill.blog.163.com/blog/static/2049210522012101782432304/ 时间过得很快,来淘宝已经两个月了,在这两个月的时间里,自己也感受颇深.下面就结合淘宝目前的一些底层技术框架以及自己的一些感触来说说如何构建一个可 伸缩,高性能,高可用性的分布式互联网应用. 一 应用无状态(淘宝session框架) 俗 话说,一个系 统的伸缩性的好坏取决于应用的状态如何管理.为什么这么说呢?咱们试想一下,假如我们在session中保存