在我们日常的使用之中,java工作流的应用也是非常重要的。那我们为什么要运用java工作流呢?接下来为大家介绍一下java工作流的优点,以及怎么优雅地实现它。
首先,说一下工作流系统的优点。它有效地实现了工作流程的自动化,大大提高了企业运营效率,并且在一定程度上改善了企业资源的利用,同时提高了企业运作的灵活性和适应性。对于提高量化考核业务处理的效率、减少浪费(时间就是金钱)也作出了巨大的贡献。
相对于手工处理工作流程,一方面由于手工无法对整个流程状况进行有效跟踪、了解,另一方面难免会出现人为的失误和时间上的延时导致效率低下,特别是无法进行量化统计,不利于查询、报表及绩效评估。由此可见,java工作流的优点十分明显,使用程度极高。
下面为大家展示如何优雅地实现java工作流。
首先,我们需要知道的是Apache Commons Chain 中的角色有:chain、context、command。
一般情况下,假如在我们订单系统有这样的业务,就是退票的时候,会根据核损后的订单价格,给客人退钱,但是订单的金额,由几部分组成。它包括现金、商旅卡、有优惠券。所以根据需求,我们需要一个工作流来走下退款流程,那么我们的流程流转的步骤就是这样的:
先退商旅卡-----如果还有余额退现金-----还有余额再退优惠券,通过分析这样的需求,适合直接使用工具。下面是代码展示:
先引入包
<dependency> <groupId>commons-chain</groupId> <artifactId>commons-chain</artifactId> <version>1.2</version> </dependency>
编写command
/** * 退商旅卡Cash */ @Slf4j public class RefundBusinessCardCommand implements Command { public boolean execute(Context context) throws Exception { RefundContext refundContext = (RefundContext) context; log.info("orderId:{} 退款开始,第一步:退商旅卡,金额:{}", refundContext.getOrderId(), "10"); return false; } }
/** * 退现金 */ @Slf4j public class RefundCashCommand implements Command { public boolean execute(Context context) throws Exception { RefundContext refundContext = (RefundContext) context; log.info("orderId:{}退款开始,第二步:退现金,金额:{}", refundContext.getOrderId(), "5"); return false; } }
/** * 退优惠券 */ @Slf4j public class RefundPromotionCommand implements Command { public boolean execute(Context context) throws Exception { RefundContext refundContext = (RefundContext) context; log.info("orderId:{} 退款开始,第二步:退优惠券,金额:{}", refundContext.getOrderId(), "20"); return false; } }
/ @Data public class RefundContext extends ContextBase { /** * 订单号 */ private Integer orderId; }
/** * * 退票的工作流实现 */ public class RefundTicketChain extends ChainBase { public void init() { //退商旅卡 this.addCommand(new RefundBusinessCardCommand()); //退现金 this.addCommand(new RefundCashCommand()); //退优惠券 this.addCommand(new RefundPromotionCommand()); } public static void main(String[] args) throws Exception { RefundTicketChain refundTicketChain = new RefundTicketChain(); refundTicketChain.init(); RefundContext context = new RefundContext(); context.setOrderId(1621940242); refundTicketChain.execute(context); } }
java工作流对工作的益处很多,这就要求我们能更好地掌握和使用它。更多有关于java常见问题,敬请关注奇Q工具网。
推荐阅读: