2

StateMachineBuilder を使用して state machine を作成しています。状態と遷移を構成するためにプログラムで使用する必要がありました。

しかし、いくつかの要件の変更により、私の構成はほぼ一定であり、状態マシンを動的またはプログラムで構築する必要がなくなったため、Eclipse UML モデリングを使用したいと考えました。大きなコードのやり直しを避けるために、以下のようにビルダー内で UmlStateMachineModelFactory を使用することを考えました。

Builder<String, String> builder = StateMachineBuilder
                .<String, String> builder();
        builder.configureConfiguration()
        .withConfiguration()
        .autoStartup(false)
        .listener(listener())
        .beanFactory(
                this.applicationContext.getAutowireCapableBeanFactory());



builder.configureModel().withModel().factory(new UmlStateMachineModelFactory("classpath:model2.uml"));

1) ステート マシンでは合法ですか? そうだとすれば、各ステートのエントリ アクションをどのようにアタッチできますか?

現在ビルダーを使用しています各状態のエントリアクションを添付するために以下のコードを使用しています

stateConfigurer.state("State1", this.state1EntryAction, null);

// State1EntryAction is  @Autowired inside my controller class  and
// State1EntryAction   implements Action<String, String> and
// annotated with @Component (org.springframework.stereotype.Component)

2) UML モデル内のエントリ アクション クラスの名前を指定して、各ステージにエントリ アクションを追加することはできますか? もしそうなら、どうすれば日食パピルスでそれを行うことができますか。

前もって感謝します!

4

1 に答える 1

1

ドキュメントはおそらくこれについて少し不明確です (特にユーザーがパピルスと UML の概念に慣れていない場合)。まず、 uml xml テスト ファイルの uml テスト ソースを調べることから始めます。アクション/ガードが uml から実行時の解決にどのように参照されるかを調べます。実際のパピルス UML モデラーを使用したものを見ると、より明確になります。

デフォルトでは、ガード/アクションはアプリケーションコンテキストからの同等の Bean 名として解決されますが、追加のインスタンスを手動でフックする方法があります (つまり、ガード/アクションが Bean として定義されていない場合)。

このテストtestSimpleFlat2()は、追加のアクション/ガードを登録します。これらはStateMachineComponentResolverインターフェイスを介して解決され、既知の場合は内部的にインスタンスDefaultStateMachineComponentResolverが解決されますが、そのテストで示されているようにBeanFactory、ユーザーはセカンダリを追加できます。DefaultStateMachineComponentResolver

于 2016-08-09T07:42:09.913 に答える