快速业务通道

公式系统在电子商务网站中的应用 - 业务公式化 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17

公式系统在电子商务网站中的应用 - 业务公式化

时间:2011-05-25 IBM 汪振华

引言

我在几个电子商务的项目中碰到这样的问题,网站因频繁推出各种商业促销活 动,并随着活动临近上线,技术开发人员不得不着急添加新的代码或修改程序以 满足新活动的要求。更“可怕”的是,这些活动上线的时机恰逢在周六周日和重 要节假日,开发人员和测试人员苦不堪言。记得七月份连续几个周六日,网站接 连上了三个促销活动:(一) 指定一些商品满三百减一百;( 二 ) 在活动一的 基础上再全场积分五十倍返还;( 三 ) 钻石用户在以上活动基础上再全场商品七 五折。促销活动的流程是这样的,活动的期间、参与活动的商品范围和活动规则 由市场和运营部一起定制,由技术部门实现和测试,最后由市场和运营进行验收 ,然后部署到生产环境。但由于活动规则的无规律性,技术部门在设计活动时很 难做到扩展性和复用性俱佳的设计,调整程序是不可避免的,使得每次上活动必 须相应调整很多代码。经初步分析,程序调整将涉及到商品展示,购物车和下订 单,这些调整几乎涉及到了网站的所有展示前台。这对技术部门提出了一个不小 的挑战。

从下图中我们可以看到活动实施前后的主要阶段和所花费的人力和时间。

图 1. 传统实现方式的周期示意

以上过程中开发和测试所花的时间将是整个过程中最长的,压力无疑也是最大 的。为了“挽救”这种对技术部门的不利局面,技术部门提出了一种新的解决办 法:将各种活动规则由运营人员“翻译”成公式,开发人员提供一个能影响活动 结果的公式“插件”,“插入”到需要受活动影响的地方。

从下图中我们可以看到按新的解决方案执行前后的主要阶段和所花费的人力和 时间。相对先前的模式,公式的编写和测试的周期相对技术部门的开发周期要短 很多,所以不会导致市场和运营部门过大的压力,但是对运营者角色提出了更高 的要求,他们需要学习掌握怎样编写公式。但相对于整体实现周期的大大缩短, 这些付出是很值得的。

图 2. 新的实现方式的周期示意

实现一个公式系统

公式系统在电子商务网站中的应用 - 业务公式化(2)

时间:2011-05-25 IBM 汪振华

必要性

我们会注意到 Sun JDK6+ 增加了对脚本语言的支持 (JSR 223),实现包含了 一个基于 Mozilla Rhino 的脚本语言引擎(支持 JSR 223 规范),即支持 JavaScript,如果有必要甚至可以自己写一个与 JSR 223 兼容的其它脚本语言引 擎,如 Ruby 等。JDK6+ 支持脚本的基本原理是将脚本语言在运行时编译成 bytecode,因此脚本上下文能融入到 JVM 环境中,即能使用或改变 Java Bean 的状态。热心的同学还会注意到一些其它开源项目如 DynamicJ, BeanShell 等都 能达到类似的目的。脚本的动态性和强大的功能自然能满足各种复杂的需求,但 在实际操作环节,让市场和运营人员掌握脚本语言会花费巨大的学习成本,而且 按照技术开发人员的要求去要求运营人员也不太实际。另外,如果使用脚本引擎 ,我们可能只会用到脚本引擎中不到百分之一的功能和特性,但如果使用自定义 公式系统,我们可以确保公式的解析和执行效率都是程序员可控的,整体效率会 比脚本引擎高很多。因此我们非常有必要自定制一套高效的公式系统。

目标

表达式运算(赋值,运算和逻辑),表达式中支持函数,变量

支持控制结构:if condition1 {}else if condition2{} else if .. else{}

支持循环控制结构:while(condition){loop}

支持/**/注解

支持从外部注册函数,函数支持参数数目动态可变

支持与外部交换公式变量(注:这里的外部指运行公式的具体项目环境)

实现以上目标后我们就能对类似如下的几行公式进行处理:

清单 1. 公式示例

/*

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号