があり、別のマシン構成でこれらの事を行うには多くの方法は、おそらくですが、これは、私はそれにいくつかの時間を過ごすために望んでいたように明確に提示guestionである、と述べました。
あなたは近くにいて、これを実現するためにいくつかのことを忘れてしまった(私はトリックと言っています)。答えはextended state variables
を使用してメモリをマシンに追加することです。これらの変数は、通常、マシンが何をする必要があるかを表すために必要な数を制限するために使用されます。 3つのループが必要であり、必要に応じて各ループを表現するために、より多くの状態を作成し、(特定のガードを持つ)遷移を作成できます。しかし、これは、10または20または100+などのループがさらに必要な場合は、単に状態構成を爆発させます。
extended state variables
と異なるguards
とactions
がどのようにこの特定のフローを駆動するのかを示すssm-sample3に例を作成しました。
残念ながらあなたはガードを持つ匿名の移行を使用してVALID
に一時停止するまで、あなたが直接HAS_ERROR
接合部とループにAWAITING_VALIDATION
からの移行を防ぎ、現在1.1.1.RELEASE
のバグ(サンプルがあるダミーTMP
状態を持っている理由ですがあります1.2.x
では不要です)。
これはおそらく私がrefドキュメントに例またはfaqとして追加したいものです。
これが役立つかどうかはわかりません。
ありがとう、あなたの努力に感謝します。私は今日見て、あなたに戻ってきます – Rapster
どのバージョンのPapyrusを使っていますか?私が見ることができないいくつかのことがあり、すべてのラベルは典型的にトランジションに設定されています。私はPapyrus 2.0.1を使用しています – Rapster
これはパピルス1.1.4とありました。 2.0.0はまた、Trigger-> SignalEvent-> Signalから直接外部遷移名を取得します。 2.0.1ではそれはできません。手動でトランジションを行う必要があります。内部遷移がシグナルからその名前を取得すると考えられるので、実際に2.0.1を試したときにこれが昨日気付いたのは、1.1.4/2.0.0に内部移行が影響を与える場合(2.0.1で修正されている)NPEのバグがあるからです。 –