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

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

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 99精品国产综合久久久久 | 消息称老熟妇乱视频一区二区 | 亚洲成人贴图 | 国产高清视频 | 久久99re2热在线播放7 | 女同videos双性人 | 色戒真做gif动图 | 欧美一区二区三区精品影视 | 国产精品久久久久久久福利院 | 欧美日韩一区二区综合 | 亚洲精品动漫免费二区 | 538精品视频 | 日韩精品特黄毛片免费看 | 天天爽视频 | 91香蕉视频网址 | 男男双性生子产乳高辣h | 欧美猛男同志video在线 | 青青青在线视频播放 | 白丝超短裙被输出娇喘不停小说 | 91po国产在线高清福利 | 国产精品自在欧美一区 | 亚洲黑人巨大videos0 | 亚洲AV无码一区二区三区乱子伦 | 国产一区二区三区水野朝阳 | 成人不卡在线 | 午夜影院0606 | 久久久久免费视频 | zoomkool最新版 | 日本大学生xxxxx69泡妞 | 3x免费高清视频 | 99色亚洲 | 91制片厂制作传媒免费版樱花 | 日韩精选视频 | 美女操批 | 无套日出白浆在线播放 | 2015小明台湾永久区域免费 | 日韩福利网 | 国产午夜精品不卡视频 | 午夜宅男宅女看在线观看 | 国产视频自拍一区 | 日韩免费一级毛片 |