快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17
05-25 IBM 汪振华

通过以上类图不难理解各个类之间的关系,下面补充说明

EventExecutor的两个实现类在具体项目中的作用和关系:EventExecutorImpl 是调用公式执行业务的实现类,被 EventProxy 关联,EventProxy 直接面向活动 受体(如:购物车管理类,订单管理类),由活动受体调用 EventProxy 的 execute 触发活动的执行。EventProxy 持有一个上下文 SyntaxContext 实例, EventProxy 接口方法被调用时,通过参数 EventCommand 将上下文传递给 EventExecutorImpl。 EventCommand接口的实现类中将存放公式能直接调用的外部函数的实现,由 EventProxy 统一注册到 SyntaxConext 上下文中,当公式调用 SyntaxConext 中 注册的外部函数时,也同时提供了操作 EventCommand 对象的受体 (通过 getTarget() 接口方法获取)并改变其状态的可能性。

图 5. 时序图

以下是 EventCommad 接口的一个实现类举例:

清单 8. 活动命令类

public class EventCommandImpl implements EventCommand  {    private VariantContext context;// 公式活动上下文     private Object target;// 绑定对象:由公式函数操纵以改变其状态    private Map<String, FunctionIntf> funcMap = new  HashMap<String, FunctionIntf>();    public EventCommandImpl() {      funcMap.put("addPoint", ADD_POINT);      funcMap.put("addCoupon", ADD_COUPON);      funcMap.put("addProduct", ADD_PRODUCT);    }    public EventCommandImpl(VariantContext context) {      this();      this.context = context;    }    /**     * 为指定用户添加积分      * params[0]: 用户 ID, params[1]: 积分数 , params[2]:  到期时间(可选)     */    public final FunctionIntf ADD_POINT = new FunctionIntf()  {     public Object execute(java.util.List params) {        if(null != this.getTarget() && null !=  params && params.size() > 1){           ShopCartManager scm = (ShopCartManager)  this.getTarget();          MetaElement pmMbId = (MetaElement) params.get (0);          MetaElement pmPointSum = (MetaElement)  params.get(1);          scm.addPoint(pmMbId.getAsLong (),pmPointSum.getAsDouble());        }        return null;      }    };    /**     * 送优惠券     * params[0]: 用户 ID,params[1]: 优惠券 ID     */    public final FunctionIntf ADD_COUPON = new FunctionIntf()  {      public Object execute(java.util.List params) {        if(null != this.getTarget() && null !=  params && params.size() > 1){          ShopCartManager scm = (ShopCartManager)  this.getTarget();          MetaElement pmMbId = (MetaElement) params.get (0);          MetaElement pmCouponId = (MetaElement)  params.get(1);          scm.addCoupon(pmMbId.getAsLong (),pmCouponId.getAsLong());        }       return null;       }    };    /**     * 送赠品     * params[0]: 用户 ID,params[1]: 商品 ID     */    public final FunctionIntf ADD_PRODUCT = new Funct

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号