0
我有一個配置了僞狀態的狀態配置。我預計狀態機將在達到該狀態時完成,但我錯過了一個獲得通知的方法。如何獲得有關狀態機完成的通知?
我註冊了一個StateMachineListener,但它沒有得到有關完成狀態機的通知。
我有一個配置了僞狀態的狀態配置。我預計狀態機將在達到該狀態時完成,但我錯過了一個獲得通知的方法。如何獲得有關狀態機完成的通知?
我註冊了一個StateMachineListener,但它沒有得到有關完成狀態機的通知。
好的 - 我終於找到了。
要使狀態機停止,必須定義一個帶有僞狀態END的狀態。達到此狀態時,將通知StateMachineListener機器已停止。
下面是我使用的彈簧配置的輪廓。一些細節已被忽略。
@Override
public void configure(StateMachineStateConfigurer<String, String> states) throws Exception {
states
.withStates()
.initial("WAITING")
.state("FAILED", fail(), null)
.state("SUCCESS", success(), null)
.end("COMPLETED")
;
}
在過渡配置,你這樣做:
@Override
public void configure(StateMachineTransitionConfigurer<String, String> transitions) throws Exception {
transitions
.withExternal().source("FAILED").target("COMPLETED")
.and().withExternal().source("SUCCESS").target("COMPLETED")
;
}
噢,這看起來是正確的。昨天晚上注意到了這個問題,並且正要問你的機器配置是什麼(原始問題)。當你最初說你有「僞狀態配置」時,你是否真的沒有這種情況? –
我以爲我有一個結束狀態,但它是錯誤配置。我這樣做: 狀態 .withStates() .initial( 「等待」) .STATE( 「失敗」,失敗(),null)的 .END( 「失敗」) 這似乎不工作。在被列爲國家之前,該國必須被宣佈爲最終國家。 –
所以看起來像是狀態是用state()方法聲明的,或者是像end()這樣的僞狀態之一聲明的,而不是兩者。至少只有第一個聲明有效。我無法從文檔中讀出它。 –