我正在使用stateless4j作爲我的應用程序的有限狀態機庫,但我無法理解如何在觸發觸發器時使用參數。我有以下代碼:如何在stateless4j觸發器中發送參數
gameFSM.Configure(GameState.LOOKING_FOR_A_QUEST)
.OnEntry(Actions.lookForQuest)
.Permit(GameTrigger.QUEST_FOUND, GameState.JUDGING_QUEST);
gameFSM.Configure(GameState.JUDGING_QUEST)
.OnEntry(Actions.judgeQuest)
.Permit(GameTrigger.QUEST_ACCEPTED, GameState.INACTIVE) /* test */
.Permit(GameTrigger.QUEST_DENIED, GameState.LOOKING_FOR_A_QUEST);
gameFSM.Configure(GameState.INACTIVE)
.Permit(GameTrigger.START_LOOKING_FOR_QUESTS, GameState.LOOKING_FOR_A_QUEST);
現在我試圖創建過渡的參數從LOOKING_FOR_A_QUEST
到QUEST_ACCEPTED
。我試過如下:
TriggerWithParameters1<Quest, GameState, GameTrigger> twp = gameFSM.SetTriggerParameters(GameTrigger.QUEST_FOUND, Quest);
但我不僅不知道如何後Fire
這個觸發,我也沒有一個關於我與剪斷創造什麼線索。有人能告訴我如何使用參數創建並觸發該觸發器,如gameFSM.trigger(GameTrigger.QUEST_FOUND, new Quest());
?謝謝!
獎金:爲什麼在StateMachine
類每一個方法可以拋出一個可疑的和無能Exception
?我覺得這個圖書館非常流利,但使用起來非常糟糕。任何建議?
https://github.com/oxo42/stateless4j我接管了項目的維護,並且接受了不少變化。發送參數仍然很麻煩,但圖書館現在至少感覺良好。 –