`
fastspeeed
  • 浏览: 34608 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

Mocoolka 状态机设计

 
阅读更多
了解mocoolka更多的信息,直接访问http://sourceforge.net/p/mocoolkacn/wiki/Home/

按照ERP的特点,功能大致可以分为三部分
1)模块本身的功能,比如增、删、改、查、导入、导出、日志、附件等
2)模块本身的状态控制。比如一个模块可能有草稿、审核、拒绝、订单4个状态。每个状态通过动作来转换。草稿按审核动作转化为审核,审核按激活动作转化为草稿,审核按拒绝按钮转化为拒绝,审核按订单动作转化为订单。其中每个状态可以定义哪些动作不能操作,哪些字段只读,是否允许编辑从表。以上描述形成状态机。
3)模块之间的操作,主要体现在一个动作操作多个模块,输入的数据经过转化、计算后生成其它模块数据显示到屏幕或直接增加或修改对应模块库表数据。


本文章描述状态机的设计和预计的操作步骤。
期望结果:
1)用户可以通过开发管理屏幕直接设计状态、动作、状态机图。
2)在系统运行中,用户可以查看一条记录的状态机,当前状态用黄色表示。
设计:
在模型中已有动作和状态,但两个模块之间没有关联。
在动作模块中增加从状态、到状态,表示这个动作执行后会把从状态改为到状态。
在开发管理中增加状态机设计,打开后,把模型数据生成json格式的数据传入到屏幕中,如果有状态数据就生成状态机图,用户可以拖动排列状态位置,然后用json格式直接保存到模型,下次打开直接加载到屏幕中。
在常用动作中增加状态机动作,执行后显示当前状态机
其中json格式如下:
[{
        name: 'Draft', Description: '草稿',dx: 121,
        dy: 108, actions: [{
            name: 'Aduit', Description: '审核',  target: 'evaluation' 
        }]
    },
        {
            name: 'evaluation', Description: '审核', dx: 315,
            dy: 123, actions: [
               { name: 'Draft', Description: '草稿',  target: 'Draft'  },
               { name: 'ClosedRejected', Description: '拒绝',  target: 'ClosedRejected'  },
               { name: 'ClosedOrdercreated', Description: '订单',target: 'ClosedOrdercreated' } ,

            ]
        },
        {
            name: 'ClosedOrdercreated', Description: '订单', dx: 483,
            dy: 175,
        },
              {
                  name: 'ClosedRejected',dx: 490,
        dy: 72, Description: '拒绝',
              },


    ];

图形控制使用joint.js
转换json到图片代码如下:
 var testdata = [{
        name: 'Draft', Description: '草稿',dx: 121,
        dy: 108, actions: [{
            name: 'Aduit', Description: '审核',  target: 'evaluation' 
        }]
    },
        {
            name: 'evaluation', Description: '审核', dx: 315,
            dy: 123, actions: [
               { name: 'Draft', Description: '草稿',  target: 'Draft'  },
               { name: 'ClosedRejected', Description: '拒绝',  target: 'ClosedRejected'  },
               { name: 'ClosedOrdercreated', Description: '订单',target: 'ClosedOrdercreated' } ,

            ]
        },
        {
            name: 'ClosedOrdercreated', Description: '订单', dx: 483,
            dy: 175,
        },
              {
                  name: 'ClosedRejected',dx: 490,
        dy: 72, Description: '拒绝',
              },


    ];
    console.log(testdata);
   
    arrs = new Array();
    var statushash = [];
    var fsa = Joint.dia.fsa;
    Joint.paper("myfsa", 2000, 200);  /*(id or HTMLElement, width, height)*/
    for (var i = 0; i < testdata.length; i++) {
        var tempstatus = testdata[i];
        var x = 120 * (i + 1);
        var y=120;
        if (tempstatus.dx) {
            x = tempstatus.dx;
        }
        if (tempstatus.dy) {
            y = tempstatus.dy;
        }
        var draw =fsa.State.create({ position: { x: x, y:y  }, label: tempstatus.Description }) ;
        arrs.push(draw);

        statushash.push({name:tempstatus.name,draw:draw});

    }
    for (var i = 0; i < testdata.length; i++) {
        var tempstatus = testdata[i];

        if (tempstatus.actions) {
            for (var j = 0; j < tempstatus.actions.length; j++) {
                var action = tempstatus.actions[j];
                var src, dest;
                for (var k = 0; k < statushash.length; k++) {
                    if (statushash[k].name == tempstatus.name) {
                        src = statushash[k].draw;
                    }
                    if (statushash[k].name == action.target) {
                        dest = statushash[k].draw;
                    }
                }
                if (src && dest) {
                    src.joint(dest, (fsa.arrow.label = action.Description, fsa.arrow)).registerForever(arrs);
                }
            }

        }
    }

状态机图片见附件:
  • 大小: 8.4 KB
分享到:
评论

相关推荐

    基于vhdl的状态机设计程序

    "一般状态机.txt"可能是一个涵盖多种状态机设计基础概念的文档,包括但不限于状态编码、状态转移条件、输入处理和时钟控制等。在VHDL中,状态机通常通过定义枚举类型来表示状态,并使用CASE语句来描述状态转换逻辑。...

    PARWANCPU状态机设计基于FPGA的数字系统设计

    ### 基于FPGA的PARWANCPU状态机设计及数字系统构建 #### 一、PARWANCPU状态机设计概述 PARWANCPU状态机设计是基于现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)的一种数字系统设计方法。FPGA是一种...

    状态机设计基本步骤,非常经典!

    状态机设计是一种强大的建模工具,广泛应用于软件工程、硬件设计、系统工程等多个领域。它通过定义系统的不同状态以及在这些状态之间的转换规则,来描述一个系统的动态行为。以下是关于状态机设计的基本步骤,以及...

    基于VHDL状态机设计的智能交通控灯

    ### 基于VHDL状态机设计的智能交通控灯 #### 一、引言 随着城市化进程的加速,交通问题日益突出,特别是在交叉路口的管理方面,传统的交通信号灯控制系统面临着诸多挑战,例如效率低下、灵活性差等问题。因此,...

    状态机设计fpga

    状态机是数字电路设计中的基础概念,尤其在FPGA(现场可编程...此外,状态机的学习和培训也是必要的,FPGA培训机构如明德扬科技提供了针对状态机设计的培训课程,帮助学习者更好地掌握状态机设计的理论知识和实践技能。

    实验5-状态机设计1

    实验5-状态机设计1的核心目的在于通过设计和实现Moore型与Mealy型状态机来检测8位二进制数序列中是否存在特定的子序列“01011”。这一过程不仅加深了对两种状态机类型的理解,而且通过实践操作,提升了学生在硬件...

    VHDL状态机设计原理

    在“状态机设计.pdf”文件中,可能会包含一个具体的VHDL状态机设计案例,比如一个简单的UART接收状态机。这个状态机可能有多个状态,如IDLE(空闲)、START(起始位检测)、DATA(数据接收)、PARITY(奇偶校验位...

    用状态机进行软件设计用状态机进行软件设计

    基本的计算器也可以用状态机设计。例如,设置“等待输入”、“正在计算”、“结果显示”等状态;通过用户输入数字或运算符作为事件;根据不同的事件进行状态转换;最终实现一个简单计算器的功能。 #### 四、HSM概念...

    FSM.rar_状态机_状态机设计

    在“FSM.rar_状态机_状态机设计”这个压缩包中,主要包含了一个名为“FSM.pdf”的文件,该文件可能详细阐述了状态机的设计方法、实践经验以及不同状态机设计模式的比较。 状态机(Finite State Machine,FSM)是一...

    用状态机原理进行软件设计

    使用状态机设计的优势包括: 1. 结构清晰:状态机将复杂逻辑分解为易于理解的状态和转换,使得代码结构清晰,易于调试和维护。 2. 可预测性:状态机的执行路径是确定的,这有助于避免意外的控制流,提高软件的可靠性...

    一段、两端、三段式状态机设计原理详解

    状态机设计原理是数字逻辑设计中的一个重要概念,它以一种结构化的方法来设计电路,使得电路能够按照预定的规则和状态序列进行工作。状态机根据其结构和功能的不同,可以被分为多种类型,其中最典型的有摩尔(Moore)...

    C语言高效有限状态机(FSM)详细设计说明书.docx

    《C语言高效有限状态机(FSM)详细设计说明书》 有限状态机(Finite State Machine, FSM)是一种模型理论,它将一个系统的行为描述为一系列可切换的状态,以及这些状态之间的转换。这种模型在IT领域中广泛应用,特别...

    状态机设计的实例

    状态机是一种重要的数字系统设计工具,它在计算机科学和电子工程领域中...这个实例提供了一个具体的应用场景,帮助我们深入理解和应用状态机设计。通过不断练习和改进,我们可以设计出更复杂、功能更强大的状态机系统。

    有限状态机(FSM)的设计与实现

    2:基于表结构的状态机设计方法:建立相应的状态表和动作查询表,根据状态表、事件、动作表定位相应的动作处理函数,执行完成后再进行状态的切换。一个通用的状态机处理模块的设计如下:假设我们的状态图如下:相应...

    verilog经典三段式状态机设计实例.docx

    在Verilog设计中,三段式状态机设计方法尤为流行,它将状态机分为当前状态、下一状态和输出三个部分,使设计的逻辑更加清晰。本文将通过一个具体的例子——Moore型和Mealy型状态机的设计,详细介绍Verilog中三段式...

    verilogHDL状态机设计

    在IT领域,特别是数字电路设计中,状态机(Finite State Machine, FSM)是核心概念之一,广泛应用于控制逻辑的设计。Verilog HDL作为硬件描述语言的一种,提供了强大的工具来描述和实现状态机,使得设计者能够高效地...

    有限状态机的设计(VHDL)

    在数字系统设计领域,有限状态机(Finite State Machine, FSM)是一个核心概念,它用于描述系统在不同输入下如何从一个状态转换到另一个状态,以及在每个状态下应该执行哪些动作。有限状态机在硬件描述语言(HDL)中...

    有限状态机设计技术ppt

    有限状态机设计技术 有限状态机设计技术是数字电路设计中的一种重要技术,广泛应用于数字系统设计、计算机科学、通信系统等领域。状态机的设计概念是一类十分重要的时序电路,许多数字电路的核心部件都离不开状态机...

    使用vivado软件,状态机方法进行FPGA序列检测

    总结来说,使用Vivado和状态机设计FPGA序列检测器是一项涉及硬件描述语言、逻辑综合、仿真验证和FPGA编程的复杂任务。理解并熟练掌握这些步骤是成功实现10101序列检测的关键。通过实践和学习,我们可以更好地理解和...

Global site tag (gtag.js) - Google Analytics