javascript状态机及在工作流中的应用
#javascript状态机及在工作流中的应用 ##状态机
什么叫状态机(Finite State Machine),书面上的解释可以自己借助搜索引擎寻找到。通俗地来讲是一个状态定义、查找、切换和事件派发等一系列的代码的集合。与之对应的设计模式叫状态机模式,常用于游戏编程,而在工作流的应用中也会用到。 在工作流中,我们经常会有一系列的步骤:步骤1、步骤2、步骤3、步骤4。我们首先需要定义出这些步骤,再定义这些步骤切换的条件,在客户端的话,一般是某些条件验证通过,可以是字段,也可以是一些接口,还有就是前一个步骤的完成情况。 ##工作流
我们要完成一项较复杂的工作,通常需要多个步骤,而且这些步骤也会有先决条件与流向控制,这种实际业务就是工作流。 ##小应用
比如我们要进行一个报销的审批,有几个步骤:开始,职工提交报销、项目经理审核,总监审核,财务审批,补充资料。 业务是:**流程是按照顺序走的,在财务未审批之前,可以补充资料,只是补充了资料就要从新从项目经理开始审批。** 我们在传统的代码中,如果要把上述的状态都写在一起,肯定要有很多的if else条件判断。这时候就可以利用状态机把这些内容抽象出来,形成分离度高,复用性好,易懂的代码。 在google中搜索 `javascript finite state machine`,第一个结果是在github上的代码,我拿来做示范了,详情点击[demo](http://gh.p2227.com/demo/fsm/)查看吧,还是用代码好说话。  ##后记
* 当然我们要做的事情不可能是一个纯前端就能完成的,前端只是保证用户在正常使用软件的情况下有正确的输入。
* 状态机在使用过程中会有很多复杂的情况,这就要看封装代码的强大性了,比如上述状态机就不支持子状态。
javascript状态机及在工作流中的应用的更多相关文章
- JavaScript状态机程序逻辑编辑器
制作背景 之前做Win8 Metro动态加载内容框架的时候,由于采用了XAML+JavaScript的方法,程序复杂的执行逻辑是由JavaScript控制的,而页面一多,流程一复杂,制作起来就非常麻烦 ...
- javascript和swf在网页中交互的一些总结
Javascript和swf在网页中交互一般可有以下几种情况: 1.swf和这些调用的javascript在同域 2.swf和这些调用的javascript在不同域,比如加载远程的swf然后call别 ...
- 【转】SharePoint工作流中常用的方法
SharePoint中使用工作流对象模型. SharePoint工作流对象模型在Microsoft.SharePoint.Workflow命名空间.你可以利用此对象模型对你的工作流进行编程.你可以启动 ...
- Javascript系列之在HTML中使用JavaScript
本文主要包括以下几方面内容: 1)使用<script>元素 2)嵌入脚本和外部脚本 3)文档模式对JavaScript的影响 4)考虑禁用JavaScript的场景 只要一提到把Javas ...
- JavaScript基础:数据类型的中的那些少见多怪
原文:JavaScript基础:数据类型的中的那些少见多怪 Javascript共有6种数据类型,其中包括3个基本数据类型(string,number,boolean).2个特殊数据类型(undefi ...
- JavaScript 最终将在编程语言中占统治地位?
JavaScript 最终将在编程语言中占统治地位? JavaScript 现在是大多数开发者都会使用的编程语言.网络效应会推动它成为有史以来第一个真正占统治地位的编程语言吗? 大约十年前,编程的方式 ...
- 第14章 添加JavaScript客户端 - Identity Server 4 中文文档(v1.0.0)
本快速入门将展示如何构建基于浏览器的JavaScript客户端应用程序(有时称为" SPA "). 用户将登录IdentityServer,使用IdentityServer发出的访 ...
- JavaScript 的setTimeout 和Angular中的$timeout的區別
JavaScript中setTimeout返回值类型和意义说明: 1.setTimeout :暂停指定的毫秒数后执行指定的代码,返回值是id标识,这个id的意义就是通过clearTimeout来清理暂 ...
- JavaScript权威指南--WEB浏览器中的javascript
知识要点 1.客户端javascript window对象是所有客户端javascript特性和API的主要接入点.它表示web浏览器的一个窗口或窗体,并且可以用window表示来引用它.window ...
随机推荐
- HTMLTestRunner修改成Python3版本
修改前:HTMLTestRunner下载地址:http://tungwaiyip.info/software/HTMLTestRunner.html BSTestRunner 下载地址:htt ...
- 剑指Offer 答题截图
- How to monitor tempdb in MS SQL
Error: tempdb is full due to active_transaction. select ss.[host_name], ss.login_name, ss.original_l ...
- c/c++ new delete初探
new delete初探 1,new有2个作用 开辟内存空间. 调用构造函数. 2,delete也有2个作用 释放内存空间 调用析构函数. 如果用new开辟一个类的对象的数组,这个类里必须有默认(没有 ...
- Linux文件管理命令 cat
1.cat 命令:将文件内容连接后传送到标准输出或重定向到文件. 1)命令语法格式:cat [OPTION] [FILE]... 2)命令选项参数说明如下所示. -n(number):从第一行开始对文 ...
- 测试TCP 和 UDP 端口的方法
测试 TCP 端口: telnel IP PORT nc -vz IP PORT 测试 UDP 端口: nc -vuz IP PORT 其中 -u 表示使用 udp 协议来进行测试. -u, --ud ...
- Python3 Selenium多窗口切换
Python3 Selenium多窗口切换 以腾讯网(http://www.qq.com/)为例,打开腾讯网,点击新闻,打开腾讯新闻,点击新闻中第一个新闻链接. 在WebDriver中封装了获取当前窗 ...
- 在Linux上编译Hadoop-2.4.0实践与总结
问题导读: 1.编译源码前需要安装哪些软件? 2.安装之后该如何设置环境变量? 3.为什么不要使用JDK1.8? 4.mvn package -Pdist -DskipTests -Dtar的作用是什 ...
- nuxt博客项目
最近使用nuxt服务端渲染自己开发了一个博客,主要用到的技术有nuxt.nginx.koa2.mysql.https.OAuth2.0(github登录),有兴趣的可以看看,能star一下就更好了. ...
- (转)Spring Boot (十四): Spring Boot 整合 Shiro-登录认证和权限管理
http://www.ityouknow.com/springboot/2017/06/26/spring-boot-shiro.html 这篇文章我们来学习如何使用 Spring Boot 集成 A ...