写点什么

再要扯皮,就上 Xstate

作者:赫杰辉
  • 2024-01-28
    上海
  • 本文字数:1265 字

    阅读完需:约 4 分钟

再要扯皮,就上Xstate

Xstate 简介

Xstate 是一个轻量级状态机工具,能在 IDE 里可视化创建状态机模型。根据大量的实际反馈,使用状态机能立竿见影的减少扯皮,非常有用:



Xstate 同时支持 IDEA 和 Eclipse,本文将以 IDEA 为例介绍该工具的安装和使用。

安装插件

在 IDEA 里面通过 File->Settings->Plugins->Brows Repository 打开插件仓库界面。输入 xross 可以看到 X-Series 系列插件。选择 Xross State Machine Editor 进行安装,重启 IDEA 即可。


创建模型

通过 File->New->Xross State Machine 打开对话框,输入模型名称后将在 resources 目录创建文件。


创建状态机

一个状态机模型文件可以包含多个状态机。要创建状态机,在左侧工具栏点击 State Machine 按钮,再点击主窗口空白处。在下方的属性窗口为该状态机设置 ID。


创建节点

状态节点一共有三种类型:开始状态,结束状态和普通状态。点击左侧工具栏的 Start Node,End Node 和 State Node 分别进行创建。将中间的普通状态 ID 设为“S1”。开始和结束节点不用设置。


创建事件

右键点击状态机空白处,选择 Create New Event,在对话框中输入状态机能接收的事件名称“initialize”。同样再创建一个“shutdown”事件。


创建连线

状态之间的关联称为状态变迁。点击工具栏中 Direct Route 按钮,再依次点击相关节点来创建。其他两种 Route 是转角显示风格,功能上没区别,主要用于避免视觉上的重叠


关联事件

右键选择状态变迁后,在上下文菜单中选择触发变迁的事件。



最终效果如下。


调试模型

创建状态机模型的目的不只是为了沟通,而是要在应用中使用。按下面的方式引入状态机引擎依赖:


    <dependency>      <groupId>com.xrosstools</groupId>      <artifactId>xstate</artifactId>      <version>1.1.1</version>    </dependency>
复制代码


xstate 已经发布到 Maven 中央仓库,可以随时下载。

调用代码


可以看到调用后的输出符合预期。


到此为止,除了最终的调用代码外,我们并不需要额外定义什么类型或定制什么逻辑。整个使用过程非常简单直接。

Xstate 优点

用 xstate 画状态图比自己手撸代码快多了,方便起来也非常沟通。其实对于稍微复杂一点的模型,用代码表示已经很困难了。比如下面的状态机节点数量仅比我们的例子多一个,但关联关系翻了 2 倍多,如果用代码表示,可以想象编写和维护难度。



此外,模型文件可以和应用打包在一起,模型调用不依赖数据库或第三方服务,非常轻量级,维护起来相当容易。

高级功能简介

除了基本的状态处理外,Xstate 有以下高级功能:


  1. 状态变迁触发器,在变迁时调用业务逻辑

  2. 变迁的条件检查,避免在不满足特定条件的时候触发变迁

  3. 状态机子图引用,抽象公共状态机,简化整体模型

  4. 状态重置与恢复,将状态机实例置于指定状态,不用从头开始遍历,避免重复创建实例


这些功能在样例代码中都可以找到对应案例。

参考资料

Xstate 是面向后端研发的开源低代码框架X-Series的一部分,其他两个是用于系统构建的 xunit 和决策判断的 xdecision,关于这三个工具的定位和简介可以看:


低代码工具选项难题浅析


这三个工具都已经有很多下载和落地案例,有任何建议和问题都可以反馈到在线 QQ 技术支持群:



X-Series Github地址


关于 xstate 欢迎大家在评论区留言讨论。

用户头像

赫杰辉

关注

开源可视化系统构建工具x-series作者 2020-06-09 加入

还未添加个人简介

评论

发布
暂无评论
再要扯皮,就上Xstate_后端_赫杰辉_InfoQ写作社区