0

オブジェクトの状態に応じて UI ボタン​​ (アクション) をレンダリングする方法を見つけようとしています。ステート マシンに「特定の状態に適用可能なイベントを表示してください」と尋ねる方法はありますか? 構成例:

public class OfcProjectVersionSMConfiguration extends EnumStateMachineConfigurerAdapter<OfcProjectVersionStates, OfcProjectVersionEvents>
....
public void configure(StateMachineTransitionConfigurer<OfcProjectVersionStates, OfcProjectVersionEvents> transitions) throws Exception {
    transitions 
        .withExternal().source(OfcProjectVersionStates.DRAFT).target(OfcProjectVersionStates.DRAFT).event(OfcProjectVersionEvents.U)
        .and()
        .withExternal().source(OfcProjectVersionStates.DRAFT).target(OfcProjectVersionStates.DELETED).event(OfcProjectVersionEvents.D)
        ....
4

2 に答える 2

0

残念ながら、特定の状態のマシンが特定のイベントを処理/受け入れることができるかどうかを知る信頼できる方法はありません。イベントを列挙型として持つと、可能な値を知ることができますが、イベントが文字列の場合、それらを外部のリストに保存しない限り、可能な値の無限のリストがあります。

さまざまなイベントが存在する可能性のある深くネストされた階層状態があり、最下位のアクティブな状態がイベントを受け入れない場合、その親状態に提供されるなど、さらに複雑になります。

問題は、動的評価を行っている警備員がいる可能性があり、マシンが受け入れるイベントについて質問することは、マシンが将来何をするかを予測するようなものです.

于 2016-07-07T08:01:12.833 に答える