XState是一个用于有限状态机和状态图的JavaScript和TypeScript库,为建模和测试这些工作流提供了强大的解决方案。 在本文中,我们将演示如何使用XState建模分布式工作流并生成可视化、声明式和可维护的测试场景。无论您是测试用户配置、支付处理还是事件驱动的管道,XState都有助于确保所有转换和边缘情况都得到考虑。 在本文中,我们将探讨XState如何用于建模服务编排并驱动既全面又可维护的测试自动化。什么是XState?XState允许开发者根据状态、转换和动作定义系统的行为。 使用XState,一旦状态机被定义,您可以:使用XState可视化器实时可视化转换模拟事件和状态转换以确保模型按预期行为生成测试路径以验证所有可能的结果这种方法为否则混乱的工作流带来了结构,并允许您系统地验证编排的每个部分 XState的好处全面覆盖:将编排建模为状态机允许您生成覆盖每个可能状态和转换的测试。
xstate 包括一个基于 Eclipse 的可视化模型编辑器和一个独立的引擎。 因此 xstate 被开发为基于 Eclipse GEF 技术的插件。 在这个案例中,用户可以利用 xstate 对审核流程建模,并用 xstate 在线上实际运行流程处理和逻辑判断。 效果 采用 xstate 后,当新合规下发时,大部分情况下,开发人员只需在 IDE 里面打开已有 xstate 模型文件,在交互式的图形编辑器里面以所见即所得的方式修改状态机即可完成开发。 使用 xstate 后,合规的开发与维护做到了简单高效,发布做到了灵活即时,最终的实际效果让人满意。 下图是一个业务功能重构中,流程图在 xstate 中的显示效果: ?
这次,ycaptain 将带着大家解锁一条新的系列文章:「XState 有限状态机与状态图」 XState?什么?又出了一个状态管理库? XState XState 是对有限状态机(finite state machine)和状态图(statechars)面向现代 Web 开发的 js 实现,XState 没有自己创造新的概念,而是遵循 XState 有良好的生态支持,包括 xstate: 有限状态机和状态图的核心库 + 解释器 @xstate/fsm: 最小化的有限状态机库 @xstate/graph: 图遍历工具 @xstate/react : 针对 React 应用的 hooks 和 utilities @xstate/vue: 针对 Vue 应用的 composition functions 和 utilities @xstate/test XState 官方文档:https://xstate.js.org/docs/guides/start.html 迫不及待想要直接上手的朋友可以看看官方的 Todo MVC 样例: https://xstate.js.org
XState XState Docs[8] 代码行数:44 XState 试图解决现代UI复杂性的问题,并且依赖于有限状态机[9]的思想和实现。 要了解有关 XState 试图解决的问题的更多信息,请查看David Khourshid的这段视频[11]或我也发现有趣的帖子[12]。 XState实践 要开始使用XState,请安装这些库: npm install xstate @xstate/react 要创建machine,请使用xstate中的Machine实用程序。 总结 XState 就像劳斯莱斯 或者说 状态管理的瑞士军刀。可以做很多事情,但是所有功能都带来额外的复杂性。 Docs: https://xstate.js.org/docs/packages/xstate-react/ [9] 有限状态机: https://en.wikipedia.org/wiki/Finite-state_machine
线性状态管理:Xstate ? 0*3QzqRMfRCh28-xe1..png Xstate是一个很有趣的类似有限状态机的状态管理,Xstate着重点在于管理状态,通过状态转换去维护数据。 image-20210417125405879.png import { Machine } from 'xstate'; // 创建状态机 const promiseMachine = Machine 'final', }, rejected: { type: 'final' } } }) 复制代码 注意⚠️:状态机不拥有状态,他只是定义状态和定义状态转移 Xstate 但使用第三方工具造成包体积大小的增加,是否会增加性能消耗有待讨论 参考资料 可视化工具: xstate.js.org/viz/ mobx中文文档: cn.mobx.js.org/ Xstate文档: xstate.js.org / 浅谈对比Xstate、redux使用: juejin.cn/post/684490… 前端状态管理与有限状态机: juejin.cn/post/684490… 状态管理新思路: 有限状态机载前端的应用
spanChk : spanChk.children.item[0]; xState=theBox.checked; elm=theBox.form.elements; for(i=0;i<elm.length =xState) elm[i].click(); //elm[i].checked=xState; } } </script> This is it.
、失败等状态) 模态框(打开、关闭、加载等) 多步骤流程(注册向导、支付流程等) 任何有明确"生命周期"的组件 不太需要的场景: 简单的开关状态(显示/隐藏) 纯展示组件 只有1-2个状态的简单逻辑 XState :不错的工具,但有学习成本 如果要在项目中使用状态机,XState是个不错的选择: import { useMachine } from '@xstate/react'; function FormComponent 优点: API设计得不错,和React集成度高 有可视化工具,能生成状态图 支持复杂场景(嵌套状态、并行状态等) 缺点: 学习曲线确实存在 小项目可能有点重 团队需要统一理解 一个更轻量的思路 如果觉得XState
阅读,1.2k点赞、1.1k收藏)举例,这篇文章介绍了一种语言转换的4级抽象模型: 1~2级:从PM提的需求(自然语言)到SCXML(State Chart XML)格式 2~3级:从SCXML格式到xstate 状态机代码 3~4级:从xstate状态机代码到前端组件业务代码 之所以我会提出这套模型,是因为我先后学到了两个「看似无关」的知识: xstate可以将前端业务抽象为清晰的状态机模型,能让业务逻辑变得非常透明 但缺点是写起来、改起来非常繁琐 当前AIGC还无法根据“自然语言描述的复杂需求”直接输出“完整的业务代码”,因为AIGC还无法准确理解“自然语言描述的复杂需求” 虽然他们看似无关,但我发现两者之间的联系 —— xstate
switch (option) { case 'hideProduct': viewer.setState(xState.HIDDEN var type = viewer.getProductType(args.id); viewer.setState(xState.HIDDEN ); break; case 'highlight': viewer.setState(xState.HIGHLIGHTED 它与X-Ray渲染模式结合使用时特别有用,其中所有内容都以半透明浅蓝色呈现,除了具有状态xState.HIGHLIGHTED或xState.XRAYVISIBLE的产品。
cmb.value; switch (option) { case 'select': viewer.setState(xState.HIGHLIGHTED args.id]); break; case 'hide': viewer.setState(xState.HIDDEN
图16 六、Xross State XrossState是可视化创建状态机的编辑器,又称为xState。状态机的用处极其广泛,可以说是很多系统的核心。与xUnit类似,xState可以结合模型和代码。 图20 七、X-Series使用小结 无论是xUnit,xDecision还是xState,其使用方式都是: 1. 创建模型 2. 修改模型元素属性 3. 实现对应接口。 这一步不是必需的,只有xUnit需要,xState只有当需要定义触发器时才需要,xDecision不需要 4. 运行模型。通过工厂类加载模型文件,获得对应模型,创建数据,处理数据 ? XrossState C# runtime a) https://github.com/hejiehui/xState/blob/master/doc/xstate_c%23.zip 3. 后来继续完善这两个系统并开发了xState,直到今天给大家演示的系统。其中的艰辛一言难尽。
kernel: x86/fpu: Supporting XSAVE feature 0x004: 'AVX registers' Feb 21 18:00:27 node1 kernel: x86/fpu: xstate_offset [2]: 576, xstate_sizes[2]: 256 Feb 21 18:00:27 node1 kernel: x86/fpu: Enabled xstate features 0x7,
可以使用有限状态机重构UI,降低业务复杂度 帮助团队写出易懂更好维护的代码,提升代码可测试性 使用图遍历算法(DFS/BFS),自动生成测试用例 行为上报和录制重放 根据代码生成状态转移图实现可视化,参考xstate 参考XState,我们找到了一些思路: 状态机代码 生成的可视化状态机转移图 参考资料 维基百科:有限状态机 https://statecharts.dev/ 开始使用状态机来编写你的代码吧! 期】降低前端业务复杂度新视角:状态机范式 详解Android Framework中的State Machine 状态模式详解 有限状态机FSM和层次状态机HSM Android状态机 https://xstate.js.org
entityTouch loaded clipped dblclick error fps frame loaded mouseDown pick unclipped 枚举 xProductType xState
spanChk:spanChk.children.item[0]; xState=theBox.checked; elm=theBox.form.elements; for(i=0;i<elm.length =xState) elm[i].click(); } } </script> 三、gridview中删除记录的处理 在gridview中,我们都希望能在删除记录时,能弹出提示框予以提示,在asp.net
viewer.renderingMode = mode; 221 } 222 223 var types = xProductType; 224 var states = xState == types.IFCSPACE) { 281 viewer.setStyle(xState.UNSTYLED, types[i]); 282
几天前, 我通过David K的XState DEMO接触到了这个使用场景: 当用户鼠标拖拽时, 通过CSS变量来确定选择框的定位(基于鼠标的开始位置和当前位置): .selectbox { left
-1-1.dll api-ms-win-core-synch-l1-2-0.dll api-ms-win-core-timezone-l1-1-0.dll api-ms-win-core-xstate-l2
数据管理为 GraphQL 和 Apollo,并且 XState 横空出世。 其他工具 ? 后端框架 ?
一些比较流行的 JavaScript 库是 jakesgordon/javascript-state-machine 和 davidkpiano/xstate 。