一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - 淺談JAVA工作流的優雅實現方式

淺談JAVA工作流的優雅實現方式

2021-06-17 11:42一代天驕 Java教程

這篇文章主要介紹了淺談JAVA工作流的優雅實現方式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

今天查找線上問題,看到一個讓我腦洞大開的工作流實現方式。以前用過責任鏈模式,也用過模板模式實現類工作流的方式,但是對比這個工具,遜色不少,不賣關子了,就是apache commons chain,它是command模式與責任鏈模式的綜合體。

1、apache commons chain 中的角色有:chain、context、command。

淺談JAVA工作流的優雅實現方式

2、在我們訂單系統有這樣的業務,就是退票的時候,會根據核損后的訂單價格,給客人退錢,但是訂單的金額,由幾部分組成

有現金、商旅卡、有優惠券。所以根據需求,我們需要一個工作流來走下退款流程,我們的流程流轉的步驟是這樣的:

先退商旅卡-----如果還有余額退現金-----------還有余額再退優惠券,分析一下這樣的需求,剛好可以用這個工具,直接上代碼了

先引入包

?
1
2
3
4
5
<dependency>
     <groupid>commons-chain</groupid>
     <artifactid>commons-chain</artifactid>
     <version>1.2</version>
   </dependency>

編寫command

?
1
2
3
4
5
6
7
8
9
10
11
12
/**
 * 退商旅卡cash
 * created by 一代天驕 on 2018/7/1.
 */
@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;
  }
}
?
1
2
3
4
5
6
7
8
9
10
11
12
13
/**
 * 退現金
 * created by 一代天驕 on 2018/7/1.
 */
@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;
  }
}
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
/**
 * 退優惠券
 * created by 一代天驕 on 2018/7/1.
 */
@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;
  }
}
?
1
2
3
4
5
6
7
8
9
10
11
12
13
/**
 * created by 一代天驕 on 2018/7/1.
 */
@data
public class refundcontext extends contextbase {
 
  /**
   * 訂單號
   */
  private integer orderid;
 
 
}
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
/**
 *
 * 退票的工作流實現
 * created by 一代天驕 on 2018/7/1.
 */
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);
  }
}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:https://blog.csdn.net/vacblog/article/details/80875788

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 爸爸的宝贝小说全文在线阅读 | 激情小说欧美图片 | 亚洲AV久久无码精品九九软件 | 无人区在线观看免费观看 | 憋尿调教绝望之岛 | 青青成人在线 | 久久精品国产亚洲AV天美18 | 国产精品13p | 草莓丝瓜芭乐樱桃榴莲色多黄 | 三级黄色片在线免费观看 | 亚洲国产成人久久99精品 | 香港论理午夜电影网 | 天天干天天色综合网 | 天生奶水1v1高h | juliaann大战两个黑人 | 亚洲春黄在线观看 | 欧美一级视频在线高清观看 | 日本不卡1卡2卡三卡网站二百 | 国产免费精彩视频 | 亚洲人成网站在线观看90影院 | 国产精品密播放国产免费看 | 青青热久免费精品视频精品 | 美女污视频在线观看 | chinese男同志同性twink | 999国产高清在线精品 | 国产成人愉拍免费视频 | 娇妻中日久久持久久 | 99热这里只有精 | 白丝女仆被啪到深夜漫画 | 青青久久久国产线免观 | 亚洲午夜天堂 | 成人au免费视频影院 | 99re热精品这里精品 | free性丰满hd性欧美厨房 | 日本嫩交 | 高h生子双性美人受 | 色老板免费 | 俄罗斯图书馆无打码久久 | 高清国产激情视频在线观看 | 久久夜色噜噜噜亚洲AV0000 | 国产私拍精品88福利视频 |