かとじゅんの技術日誌

技術の話をするところ

study-buriの疑問

本日からstudy-buriのソースを一気に読み込んでいます.Teedaなのでわかりやすそう.

Baoインターフェイスを調べる.ふむふむ.
BuriConverterアノテーション.引数に指定されたオブジェクトをDTOに変換するOGNL式か.

最初の疑問

一つ目

注文管理の出荷作業中で,Toolの中のorder_App2のExtended attributeのところで,

#data
shippingBao
shippingBao.shipping(#data)

な定義がなされているのですが,どういう仕様でこういう書き方になるのでしょうか?
そもそもこの機能について理解ができていないのですが,出荷作業中になるとshippingBao.shipping(#data)が実行されて,出荷のワークローに分岐するイメージでしょうか?

二つ目

OrderBaoの

@BuriActivity("出荷作業中,出荷終了")
@BuriAction("cancel")
@BuriResult("#cancelStatus")
public String cancel(long orderID);

というのは,

出荷作業中もしくは出荷終了の状態に対して cancelというアクションを実行するということですよね?
出荷作業中の状態で #action = "cancel" となると,注文キャンセルに遷移するのはわかるのですが,出荷終了の状態では #action = "cancel" となるフローがないのでどこに遷移するのでしょうか? 
OrderBao.endBillを実行した場合,BuriActionアノテーションを指定しないので,#action = nullのフロー,つまり終了に遷移するのでしょうか?
それでは,何故に注文キャンセルエラーに遷移できるのでしょうか?ここの矢印は双方向になっているも気になります.

三つ目

ワークフローの状態は,BuriDB内に永続化されていると思うのですが,ある日 機能変更や機能追加が発生した場合に,BuriDBの内容については何かケア(データの洗い替えなど)が必要でしょうか?