0

我想使用弹簧状态机作为我的应用程序的主处理器。我想启动应用程序,将引导作为初始状态的动作,并作为结束状态的动作拆除。在中间,应用程序应该等待事件。

因此,我开始按照http://docs.spring.io/spring-statemachine/docs/current/reference/html/developing-your-first-spring-statemachine-application.html中所示的方式进行操作, 除了退出该run方法后,整个应用程序停止并且不再监听进一步的事件。

如何实现这种行为?是否有可用的蓝图/模板?我没有找到一个。类似于 web 组件,监听请求,我希望状态机等待配置的事件。我的应用程序在 Raspberry Pi 上运行,这些事件由“按下按钮”、“连接的设备提供测量结果”等外部操作触发。

在我问自己的主要问题旁边,弹簧状态机制是否会在我的环境中正常工作:我使用 Pi4J 进行硬件交互。该框架通常使用自己的线程来监视硬件事件。如何处理并发事件。动作总是在触发事件的线程中同步运行,还是有单独的线程池?

谢谢,史蒂夫

4

1 回答 1

0

这是一个正常的春季启动问题,因为如果没有任何东西让它保持活力,应用程序将退出。使用引导应用程序,您通常有一个 Web 层,并且从那里有一个线程保持应用程序处于活动状态。

statemachine 文档有更多关于如何配置执行程序线程的信息。默认执行发生在同一个线程中。

Pi4J 是一个很好的问题,因为我对它的线程不太熟悉。我知道许多错误已得到修复,因为它用于创建很多用户无法控制的线程,并且可能仍然存在这种情况。Pi4J 有一些发展,允许用户定义线程工厂,理论上这些工厂也可以传递给状态机TaskExecutor使用的 Spring。

于 2017-04-06T09:09:58.893 回答