public void testNomalOrderTx() 続き

テストの部分

87:datas = orderBao_.getUnderWork();
88:assertEquals(datas.size(),1);

 Activity が 出荷作業中 のデータを検索する
 検索結果のカウントが1であることをチェックする
 (顧客がまだかなぁって調べたってかんじかね?)

90:datas = shippingItemBao_.getItemWaiting();
91:System.out.println(datas);
92:assertEquals(datas.size(),1);

 getItemWaiting で商品準備中のデータを取得する
 検索結果のカウントが1であることをチェックする
 *1

93:shippingItemDto = (ShippingItemDto)datas.get(0);

 商品準備中の商品情報を1つ取り出す。今度は商品3のほうか?

95:datas = shippingItemBao_.getEndShipping();
96:System.out.println(datas);
97:assertEquals(datas.size(),1);

 getEndShipping で商品準備完了のデータを取得する
 まだ検索結果のカウントが1であることをチェックする

 ShippingItemBao

public static String getEndShipping_ACTIVITY = "商品準備完了";
public List getEndShipping();
 99:datas = shippingBao_.getNowWaiting();
100:System.out.println(datas);
101:assertEquals(datas.size(),1);

 getNowWaiting で商品待ちのデータを取得する
 まだ検索結果のカウントが1であることをチェックする

103:datas = shippingBao_.getEndShipping();
104:System.out.println(datas);
105:assertEquals(datas.size(),0);

 getEndShipping で出荷済みのデータを取得する
 まだ検索結果のカウントが0であることをチェックする

 ShippingBao

public static String getEndShipping_ACTIVITY = "出荷済み";
public List getEndShipping();
109:shippingItemBao_.endShipping(shippingItemDto);

 endShipping で、出荷詳細プロセスが再開…

出荷詳細プロセス

商品準備中 Activity(order_Wor5_Act2)で停止してたはずなのでここから続く
#action がないので 商品準備中 → 商品準備完了 Transition(order_Wor5_Tra2)に従って、
商品準備完了 Activity(order_Wor5_Act3)にステータスが変わる(変移する)

順当にフローが進むと、、、

出荷プロセスの出荷準備中 Activity(order_Wor2_Act8)までステータスが変わる(変移する)ところまで記述を省略する

出荷準備中 Activity(order_Wor2_Act8)の条件分岐

  • 出荷準備中 → 出荷準備完了
    • #countDatas == #data.items.size() && #action == null
  • 出荷準備中 → 商品未揃い
    • #countDatas < #data.items.size() && #action == null
  • 出荷準備中 → 出荷キャンセル
    • #action == "cancel"

で、テストでは「商品準備完了が2、キャンセルされていない、注文商品数は2」となって
出荷準備中 → 出荷準備完了 Transition(order_Wor2_Tra31)が成立する
出荷準備完了 Activity(order_Wor2_Act3)にステータスが変わる(変移する)
その次に
出荷準備完了 Activity(order_Wor2_Act3)の Finish mode は Automatic なので、処理を続行する。
出荷準備完了 → 出荷済み Transition(order_Wor2_Tra3)に従って、
出荷済み Activity(order_Wor2_Act3)にステータスが変わる(変移する)
その次に
出荷済み Activity(order_Wor2_Act3)の Finish mode は Manual なので、Toolを実行した後処理を停止する。

Tools を見ると[ id:order_App2 , Type:Applocation ]となってる。さらにダブルクリックすると Tool のプロパティが表示される。

  • id
    • AfterOgnlInvoker
  • Type
    • Application
  • Extended attributes
    • Name
      • ognl
    • Value
      • #data.orderTitleID OrderBao.endShipping(#data.orderTitleID) BillBao.enterBill(#data)

で、出荷プロセスが停止後に

#data.orderTitleID
OrderBao.endShipping(#data.orderTitleID)
BillBao.enterBill(#data)

が実行される(んだろうなぁ、たぶん…
で、#data は何を指してるんだろう?

「Context情報も終了直前のものが使われること」
ってマニュアルには書いてあるけど、、、

とりあえず、#data.orderTitleID を引数に

OrderBao

public static String endShipping_ACTIVITYVALIDATE = "出荷作業中";
public void endShipping(long orderID);

が実行され、注文プロセスが再開される。
#data を引数に

BillBao

public void enterBill(ShippingSetDto dto);

が実行され、請求プロセスが開始される。

  ってことは、#data は ShippingSetDto ??

注文プロセス

えーと、出荷作業中 Activity(order_Wor1_Act2)で停止してたはずなのでここから続く
出荷作業中 Activity(order_Wor1_Act2)の条件分岐

  • 出荷準備中 → 出荷終了
    • #action==null
  • 出荷準備中 → 注文キャンセル
    • #action=="cancel"

で、テストでは「キャンセルされていない」となって
出荷準備中 → 出荷終了 Transition(order_Wor1_Tra2)が成立する
出荷終了 Activity(order_Wor1_Act3)にステータスが変わる(変移する)
その次に
出荷終了 Activity(order_Wor1_Act3)の条件分岐

  • 出荷準備中 → 終了
    • #action==null
  • 出荷準備中 → 注文キャンセルエラー
    • (None)*2

で、テストでは「キャンセルされていない」となって
出荷準備中 → 終了 Transition(order_Wor1_Tra3)が成立する
終了 Activity(order_Wor1_Act4)にステータスが変わる(変移する)
終了 Activity(order_Wor1_Act4)の Finish mode は Manual なので、処理を停止する。
で、注文プロセスは終了

テストの部分

113:pathDao_.getAllBuriPath();
114:stateDao_.getAllBuriState();

BuriPathDao

public List getAllBuriPath();

BuriStateDao

public List getAllBuriState();
115:datas = shippingItemBao_.getItemWaiting();
116:assertEquals(datas.size(),0);

getItemWaiting で商品準備中のデータを取得する
すでに検索結果のカウントが0であることをチェックする

118:datas = shippingItemBao_.getEndShipping();
119:assertEquals(datas.size(),2);

getEndShipping で商品準備完了のデータを取得する
すでに検索結果のカウントが2であることをチェックする

121:datas = shippingBao_.getNowWaiting();
122:assertEquals(datas.size(),0);

getNowWaiting で商品待ちのデータを取得する
すでに検索結果のカウントが0であることをチェックする

124:datas = shippingBao_.getEndShipping();
125:assertEquals(datas.size(),1);

getEndShipping で出荷済みのデータを取得する
すでに検索結果のカウントが1であることをチェックする

127:datas = orderBao_.getUnderWork();
128:assertEquals(datas.size(),0);

getUnderWork で出荷作業中のデータを取得する
すでに検索結果のカウントが0であることをチェックする

130:datas = orderBao_.getEndShipping();
131:assertEquals(datas.size(),1);

getEndShipping で出荷終了のデータを取得する
すでに検索結果のカウントが1であることをチェックする

請求プロセス

BillBao インターフェースの PROCESS アノテーション

public static String PROCESS = "注文管理.請求";

BillBao

public void enterBill(ShippingSetDto dto);

で、請求プロセスのフローが開始。


請求依頼 Activity(order_Wor3_Act1)の Finish mode は Automatic なので、
請求依頼 → 請求作業 Transition(order_Wor3_Tra1)にしたがって、
請求作業 Activity(order_Wor3_Act2)にステータスが変わる(変移する)


請求作業 Activity(order_Wor3_Act2)の Finish mode は Manual なので、処理を停止する。

テストの部分

133:datas = billBao_.getBillWaiting();
134:assertEquals(datas.size(),1);
135:BillDto billDto = (BillDto)datas.get(0);

getBillWaiting で請求作業のデータを取得する
検索結果のカウントが1であることをチェックする

BillBao

public static String getBillWaiting_ACTIVITY = "請求作業";
public List getBillWaiting();
137:datas = billBao_.getReBill();
138:assertEquals(datas.size(),0);

getReBill で再請求準備のデータを取得する
検索結果のカウントが0であることをチェックする

BillBao

public static String getReBill_ACTIVITY = "再請求準備";
public List getReBill();
140:datas = billBao_.getEndBill();
141:assertEquals(datas.size(),0);

getEndBill で請求終了のデータを取得する
検索結果のカウントが0であることをチェックする

BillBao

public static String getEndBill_ACTIVITY = "請求終了";
public List getEndBill();
144:billBao_.bill(billDto);

で、請求プロセスを再開…

BillBao

public void bill(BillDto dto);

請求プロセス

請求作業 Activity(order_Wor3_Act2)で停止してたはずなのでここから続く
請求作業 → 再請求準備 Transition(order_Wor3_Tra9)に従って、
再請求準備 Activity(order_Wor3_Act5)にステータスが変わる(変移する)


再請求準備 Activity(order_Wor3_Act5)の Finish mode は Manual なので、Toolを実行した後処理を停止する。
Tools を見ると[ id:order_App1 , Type:Applocation ]となってる。さらにダブルクリックすると Tool のプロパティが表示される。

  • id
    • OgnlInvoker
  • Type
    • Application
  • Extended attributes
    • Name
      • ognl
    • Value
      • #ReClaim = @jp.starlogic.util.datetime.UtilCalendar@getInstance() //#ReClaim.addDayOfMonth(7) // 本来なら7日後とかにするんだけど、テストなので・・・ #ReClaim.addSecond(10)
#ReClaim = @jp.starlogic.util.datetime.UtilCalendar@getInstance()
//#ReClaim.addDayOfMonth(7)
// 本来なら7日後とかにするんだけど、テストなので・・・
#ReClaim.addSecond(10)

AfterOgnlInvoker じゃないからすぐに実行される(のかな
請求プロセスは停止。

テストの部分

146:datas = billBao_.getBillWaiting();
147:assertEquals(datas.size(),0);

getBillWaiting で請求作業のデータを取得する
すでに検索結果のカウントが0であることをチェックする

149:datas = billBao_.getReBill();
150:assertEquals(datas.size(),1);
151:billDto = (BillDto)datas.get(0);

getReBill で再請求準備のデータを取得する
検索結果のカウントが1であることをチェックする

153:datas = billBao_.getEndBill();
154:assertEquals(datas.size(),0);

getEndBill で請求終了のデータを取得する
まだ検索結果のカウントが0であることをチェックする

157:billBao_.checkPayment(billDto);

で、請求プロセスを再開…

BillBao

public void checkPayment(BillDto dto);

請求プロセス

再請求準備 Activity(order_Wor3_Act5)で停止してたはずなのでここから続く

再請求準備 Activity(order_Wor3_Act5)の条件分岐

  • 再請求準備 → 入金確認
    • #autoAction==null
  • 再請求準備 → 再請求
    • #autoAction==true

再請求準備 Activity(order_Wor3_Act5)の Tool

#ReClaim = @jp.starlogic.util.datetime.UtilCalendar@getInstance()
//#ReClaim.addDayOfMonth(7)
// 本来なら7日後とかにするんだけど、テストなので・・・
#ReClaim.addSecond(10)

たぶん、一定期間を待ち、入金アクションが無い場合は「#autoAction==true」に設定される

で、テストでは「入金アクションが無い」となって
再請求準備 → 再請求 Transition(order_Wor3_Tra10)が成立する
再請求 Activity(order_Wor3_Act6)にステータスが変わる(変移する)


再請求 Activity(order_Wor3_Act6)の Finish mode は Automatic なので、
再請求 → 請求終了 Transition(order_Wor3_Tra11)にしたがって、
請求終了 Activity(order_Wor3_Act4)にステータスが変わる(変移する)


請求終了 Activity(order_Wor3_Act4)の Finish mode は Manual なので、処理を停止する。
で、請求プロセスは終了

テストの部分

159:datas = orderBao_.getEndShipping();
160:assertEquals(datas.size(),0);

getEndShipping で出荷終了のデータを取得する
すでに検索結果のカウントが0であることをチェックする

162:datas = orderBao_.getOrderEnd();
163:assertEquals(datas.size(),1);

getOrderEnd で終了のデータを取得する
すでに検索結果のカウントが1であることをチェックする

165:datas = billBao_.getBillWaiting();
166:assertEquals(datas.size(),0);

getBillWaiting で請求作業のデータを取得する
すでに検索結果のカウントが0であることをチェックする

168:datas = billBao_.getEndBill();
169:assertEquals(datas.size(),1);

getEndBill で請求終了のデータを取得する
すでに検索結果のカウントが1であることをチェックする

testNomalOrderTx() 終了〜



*1:85行目で shippingItemBao_.endShipping(shippingItemDto); が呼び出されてるので商品準備完了のデータが1つある

*2:こちらは後で追いかけよう