A. 业务流程建模。
B. 领域建模。
A. 系统用例图。
B. 用例详述文本。
UC3:退货
范围:便利店POS应用
级别:用户目标
主要参与者:收银员、顾客
涉众及其关注点:
④ 收银员:希望能够准确、快速地收取顾客应付金额。
⑤ 顾客:希望以最小代价完成付款活动并得到快速服务。希望便捷、清晰地看到所输入的商品项目和价格。希望有购买凭证,以作为购买清单和作为退货的凭据。
⑥ 公司:希望准确地记录交易,满足顾客要求。希望能够自动、快速地更新账务和库存信息。希望系统足够健壮和容错性,当系统出现一些小问题时,也可以完成收银。
④经理:希望能够快速执行超控操作,并易于更正收银员的不当操作。
前置条件:收银员必须经过确认和认证。
成功保证(或后置条件):存储销售信息。准确计算税金。更新账务和库存信息。记录提成。生成票据。记录支付授权的批准。
主成功场景:
1、顾客携带所购商品或服务到收银台通过POS机付款。
2、收银员开始一次新的开单记录。
3、收银员输入商品条码。
4、系统逐条记录出售的商品,并显示该商品的描述、价格和累计额。价格通过一组价格规则来计算。
收银员重复3~4步,知道输入结束。
5、系统显示总额和所计算的税金。
6、收银员告知顾客总额,并请顾客付款。
7、顾客付款,系统处理支付。
8、系统记录完整的销售信息,并将销售和支付信息发送到外部的账务系统(进行账务处理和提成)和库存系统(更新库存)。
9、系统打印票据。
10、顾客携带商品和票据离开(如果有)。
扩展:
*a、经理在任意时刻要求进行超控操作:
1、系统进入经理授权模式、
2、经理或收银员执行某一经理模式的操作。
3、系统回复到收银员授权模式。
*b、系统在任意时刻失败:
为了支持恢复和更正账务处理,要保证所有交易的敏感状态和事件都能够从场景的任何一步中完全恢复。
1、收银员重启系统,登录,请求恢复上次状态。
2、系统重建上次状态。
2a、系统在恢复过程中检测到异常:
1、系统向收银员提示错误,记录次错误,并进入一个初始状态。
2、收银员开始一次新的销售交易。
1a、客户或经理需要恢复一个中断的销售交易。
1、收银员执行恢复操作,并且输入ID以提取相应的销售交易。
2、系统显示被恢复的销售交易状态及其小计。
2a、未发现对应的销售交易。
1、系统向收银员提示错误。
2、收银员可能会开始一个新销售交易,并重新输入所以商品。
3、收银员继续该次销售交易(可能要输入更多的商品或处理支付)。
2-4a、顾客告诉收银员其免税状况(例如年长者、本国人等)。
1、收银员进行核实,并输入免税状况编码。
2、系统记录该状况编码(在计算税金时使用)。
3a、无效商品ID(在系统中未发现):
1、系统提示错误并拒绝输入该ID。
2、收银员响应该错误。
2a、商品ID可读(例如,数字型的UPC):
1、收银员手动输入商品ID。
2、系统显示商品项目的描述和价格。
2a、无效商品ID:系统提示错误。收银员尝试其他方式。
2b、系统内不存在该商品ID,但是该商品附有价签:
1、收银员请求经理执行超控操作。
2、经理执行相应的超控操作。
3、收银员选择手工输入价格,输入价签上的价格,并请求对该价目进行标准计税。(因为没有产品信息,计税引擎无法确定如何计税。)
2c、收银员通过执行寻找产品帮助以获取正确的商品ID及其价格。
2d、另外,收银员可以向其他员工询问商品ID或价格,然后手工输入ID或价格(参见以上内容)。
3b、当有多个商品项目属于同一类别的时候(如5瓶可乐),不必记录每个商品项目的唯一标识:
1、收银员可以输入类别的标识和商品的数量。
3c、需要手工输入类别和价格(例如,花卉或纸牌及其价格):
1、收银员手工输入特定的类别代码及其价格。
3-6a、顾客要求收银员从所购商品中去掉一项:
所去除商品的价格必须小于收银员权限,否则需要经理执行超控操作。
1、收银员输入商品ID并将其删除。
2、系统删除该项目并显示更新后的累计额。
2a、商品价格超过了收银员权限:
1、系统提示错误,并建议经理超控。
2、收银员请求经理超控,完成超控后,重做该操作。
3-6b、顾客要求收银员取消销售交易:
1、收银员在系统中取消销售交易。
3-6c、收银员延迟销售交易:
1、系统记录销售交易信息,使其能够在任何POS登录中恢复操作。
2、系统显示用来恢复销售交易的“延迟票据”,其中包含商品项目和销售交易ID。
5a、系统检测到与外部税务计算系统服务的通信故障:
1、系统在POS机节点上重启次服务,并继续操作。
1a、系统检测到该服务无法重启。
1、系统提示错误。
2、收银员手工计算和输入税金,或者取消该销售交易。
5b、顾客声称他们符合打折条件(例如,是雇员或重要顾客):
1、收银员提出打折请求。
2、收银员输入顾客ID。
3、系统按照打折规则显示折扣总计。
5c、顾客要求兑现账户积分,用于此次销售交易:
1、收银员提交积分请求。
2、收银员输入顾客ID。
3、系统应用积分直到价格为0,同时扣除结余积分。
6a、顾客要求现金付款,但所携带现金不足:
1、顾客要求使用其他支付方式。
1a、顾客要求取消此次销售交易,收银员在系统上取消该销售交易。
7a、现金支付:
1、收银员输入收取的现金额。
2、系统显示找零金额,并弹出现金抽屉。
3、收银员放入收取的现金,并给顾客找零。
4、系统记录改现金支付。
7b、信用卡支付:
1、顾客输入信用卡账户信息。
2、系统显示其支付信息以备验证。
3、收银员确认。
3a、收银员取消付款步骤。
1、系统回复到“商品输入”模式。
4、系统向外部支付授权服务系统发送支付授权请求,并请求批准该支付。
4a、系统检测到与外部系统协作时的故障:
1、系统向收银员提示错误。
2、收银员请求顾客更换支付方式。
5、系统受到批准支付的应答并提示收银员,同时弹出现金抽屉(以便放入签名后的信用卡支付票据)。
5a、系统受到拒绝支付的应答:
1、系统向收银员提示支付被拒绝。
2、收银员请求顾客更换支付方式。
5b、应答超时。
1、系统提示收银员应答超时。
2、收银员重试,或者请求顾客更换支付方式。
6、系统记录信用卡支付信息,其中包括支付批准。
7、系统显示信用卡支付的签名输入机制。
8、收银员请求顾客签署信用卡支付。顾客输入签名。
9、如果在纸质票据上签名,则收银员将改票据放入现金抽屉并关闭抽屉。
7c、收银员取消支付步骤:
1、系统回到“商品输入”模式。
7d、顾客出示优惠券:
1、在处理支付之前,收银员记录每张优惠券,系统扣除相应金额。系统记录已使用的优惠券以备账务处理之用。
1a、输入的优惠券不适用于所购商品:
1、系统向收银员提示错误。
9a、存在产品回扣:
1、系统对每个具有回扣的商品给出回扣表单和票据。
9b、顾客索要赠品票据(不显示价格):
1、收银员请求赠品票据,系统给出赠品票据。
9c、打印票据。
1、如果系统能够检测到错误,给出提示。
2、收银员更换纸张。
3、收银员请求打印其他票据。
特殊需求:
•使用大尺寸平面显示器触摸屏UI。文本信息可见距离为1米。
•90%的信用卡授权响应时间小于30秒。
•由于某些原因,我们希望在访问远程服务失败的情况下具有比较强的恢复能力。
•支持文本显示的语言国际化。
•在步骤3和步骤7中能够加入可插拔的业务规则。
技术与数据变元表:
*a.经理超控需要在键盘上输入授权码。
3a.商品ID可以用条码扫描枪或键盘输入。
3b.商品ID可以使用UPC、EAN、JAN或SKU等任何一种编码方式。
7a.信用卡账户信息可以用读卡器或键盘输入。
7b.记录在纸质票据上的信用卡支付签名。
发生频率:可能会不断地发生。
未解决问题:
•税法如何变化?
•研究远程服务的恢复问题。
•针对不同的业务需求怎样进行定制?
•收银员是否必须在从系统注销后带走他们的现金抽屉?
•顾客是否可以直接使用读卡器,还是必须由收银员完成?
UC4:
1、功能性
①日志和错误处理
在持久性存储中记录所有错误。
②可插拨规则
在几个用例的不同场景点执行任意一组规则,以支持对系统功能的定制。
③安全性
任何使用都需要经过用户认证。
④国际化
支持文本显示的语言国际化,以便于处理与外国顾客的交易。
2、可用性
①销售经理能尽快找到退货商品。
②快捷、无错的退货处理极为重要,因为购买者希望快速离开,否则会给他们的购买体验(和对经理的评价)带来负面影响。
3、可靠性
①可恢复性
如果在使用外部服务时出现错误,为了完成退货处理,需要尝试采用本地方案加以解决。
4.健壮性
系统对于规范要求以外的输入情况的处理能力强。当用户对系统的操作不规范时,系统能够识别这些操作,并且能有效合理的处理。
5、接口
①重要硬件和接口
(1)触摸屏(操作系统将此视为普通监视器,且触摸动作也视为鼠标事件)。
(2)票据打印机。
(3)信用卡读卡器
(4)签名读取装置
②软件接口
由于存在众多外部协作系统(税金计算器等),我们需要采用不同的接口,接入不停的系统。
6、所关注领域内的信息
当退货完成后,退货商品金额可以根据客户要求退还现金或经过第三方退款。
CREATE TABLE `salereturn` ( `ID` int(11) NOT NULL AUTO_INCREMENT, `createDateTime` datetime NOT NULL, `reason` varchar(36) DEFAULT NULL, `saleReturnNo` varchar(36) NOT NULL, `total` int(11) NOT NULL DEFAULT '0', `saleorder_id` int(11) DEFAULT NULL, PRIMARY KEY (`ID`), KEY `FK_gds3450u1f5d52y0p5756alu` (`saleorder_id`), CONSTRAINT `FK_gds3450u1f5d52y0p5756alu` FOREIGN KEY (`saleorder_id`) REFERENCES `saleorder` (`ID`) ) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;
CREATE TABLE `salereturnitem` ( `ID` int(11) NOT NULL AUTO_INCREMENT, `saleOrderItem_id` int(11) DEFAULT NULL, `salereturn` int(11) NOT NULL, PRIMARY KEY (`ID`), KEY `FK_143oq14xx974usdtdmjej8daj` (`saleOrderItem_id`), KEY `FK_liebtms8kyrnkoekonwtfsv5x` (`salereturn`), CONSTRAINT `FK_143oq14xx974usdtdmjej8daj` FOREIGN KEY (`saleOrderItem_id`) REFERENCES `saleorderitem` (`ID`), CONSTRAINT `FK_liebtms8kyrnkoekonwtfsv5x` FOREIGN KEY (`salereturn`) REFERENCES `salereturn` (`ID`) ) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;