/** * 订单审批工作流类,管理订单的审批流程 */ package com.orderprocessing; import java.util.ArrayList; import java.util.List; public class ApprovalWorkflow { private List rules; private Logger logger; /** * 构造方法 * @param logger 日志记录器 */ public ApprovalWorkflow(Logger logger) { this.logger = logger; this.rules = new ArrayList<>(); } /** * 添加审批规则 * @param rule 审批规则 */ public void addApprovalRule(ApprovalRule rule) { rules.add(rule); logger.log("添加审批规则: " + rule.getDescription()); } /** * 检查订单是否需要审批,并获取所需的最高审批级别 * @param order 需要检查的订单 * @return 所需的最高审批级别,如果不需要审批则返回0 */ public int checkApprovalRequirements(Order order) { logger.log("开始检查订单 " + order.getOrderId() + " 的审批需求"); int maxApprovalLevel = 0; List triggeredRules = new ArrayList<>(); for (ApprovalRule rule : rules) { if (rule.requiresApproval(order)) { triggeredRules.add(rule.getDescription()); maxApprovalLevel = Math.max(maxApprovalLevel, rule.getApprovalLevel()); } } if (maxApprovalLevel > 0) { logger.log("订单 " + order.getOrderId() + " 需要 " + maxApprovalLevel + " 级审批"); for (String ruleDesc : triggeredRules) { logger.log("触发规则: " + ruleDesc); } } else { logger.log("订单 " + order.getOrderId() + " 不需要额外审批"); } return maxApprovalLevel; } /** * 处理订单审批流程 * @param order 需要审批的订单 * @param approverLevel 审批者级别 * @return 如果审批通过返回true,否则返回false */ public boolean processApproval(Order order, int approverLevel) { int requiredLevel = checkApprovalRequirements(order); if (requiredLevel == 0) { logger.log("订单 " + order.getOrderId() + " 自动审批通过"); return true; } if (approverLevel >= requiredLevel) { logger.log("订单 " + order.getOrderId() + " 审批通过(审批者级别: " + approverLevel + ", 所需级别: " + requiredLevel + ")"); return true; } else { logger.log("订单 " + order.getOrderId() + " 审批失败:审批者级别不足(审批者级别: " + approverLevel + ", 所需级别: " + requiredLevel + ")"); return false; } } }