`
fastspeeed
  • 浏览: 34240 次
  • 性别: 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
分享到:
评论

相关推荐

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

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

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

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

    有限状态机设计策略

    ### 有限状态机设计策略 #### 摘要与引言 本文主要探讨有限状态机的设计策略及其在数字逻辑设计中的应用。对于从事数字逻辑设计的工程师而言,掌握有限状态机的设计方法至关重要。有限状态机(Finite State ...

    FPGA 的状态机设计

    FPGA中的状态机设计通常使用硬件描述语言(HDL),如Verilog或VHDL来实现。本文将重点探讨如何使用Verilog进行状态机的设计,并且如何通过不同的编码风格来合成可综合的状态机。 首先,状态机被分类为两大类型,这...

    嵌入式系统中的状态机设计心得

    总结来说,嵌入式系统中的状态机设计心得涵盖了状态定义、事件处理、消息传递、任务调度和故障处理等多个方面。工程师通过精心设计的状态机能够有效地管理嵌入式系统的复杂性和动态性,并确保系统在各种工作条件和...

    状态机设计fpga

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

    状态机 FSM 设计指导

    二、状态机设计原则 设计状态机时,应遵循以下原则: 1. 明确状态定义:每个状态代表系统的一种特定行为模式或阶段。 2. 规范化事件:定义清楚的输入事件,作为状态间转换的触发条件。 3. 完备性:确保所有可能的...

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

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

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

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

    verilogHDL状态机设计

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

    VHDL入门状态机序列检测器

    而"钟桦VHDL第一次作业课件.pdf"则可能是钟教授关于VHDL状态机设计的课件,可能涵盖了状态机的基本概念,如何描述状态机,以及如何实现序列检测器的具体步骤。 通过学习这部分内容,学生不仅能掌握VHDL的基础知识,...

    嵌入式状态机的学习设计书籍

    嵌入式状态机是软件工程中的一个重要概念,特别是在嵌入式系统开发中,它被广泛应用于...书籍中的实践指导和示例代码将为初学者提供宝贵的资源,而对有经验的开发者来说,它们可以作为提升状态机设计技能的参考资料。

    有限状态机的设计(VHDL)

    有限状态机(Finite State Machine, FSM)是一种在数字系统设计中广泛应用的概念,它用于描述系统的动态行为。在VHDL这种硬件描述语言中,状态机是实现时序逻辑功能的关键手段,尤其在自动售货机和交通控制灯这类...

    Verilog时序电路及状态机设计

    Verilog时序电路及状态机设计,有关FPGA中状态机

    状态机+定时器方法实现按键

    2. 状态机设计:定义按键状态机的各个状态,如IDLE(空闲)、PRESSED(按下)和HOLDING(保持)。每个状态都有相应的事件处理函数。 3. 按键检测:在IDLE状态下,当检测到按键引脚电平变化,进入PRESSED状态,启动...

    StateMachine 状态机机制深入解析

    StateMachine 状态机机制深入解析 StateMachine 状态机机制是指在软件开发中,使用状态机来描述和处理复杂的业务流程。状态机机制可以帮助开发者简化状态机的开发过程,并且可以提高代码的可读性和维护性。在 ...

    单片机裸奔之状态机浅谈

    状态机在单片机编程中扮演着至关重要的角色,它是一种设计模式,广泛应用于各种编程语言,包括C语言。状态机的核心概念在于通过定义不同状态、条件、动作和次态来组织程序逻辑,使得程序执行更加高效、可读性强且...

    FPGA设计中状态机安全性研究.pdf

    然而,状态机设计中潜在的“跑飞”现象可能会导致整个系统崩溃。因此,对FPGA设计中状态机的安全性进行研究是非常必要的。 状态机“跑飞”现象是指状态机由于某些原因失去了对状态的控制,导致其进入一个或多个...

    有限状态机与Verilog设计.pdf

    在数字电路设计中,有限状态机(FSM)是一种十分重要的概念,它用于实现数字电路设计的控制部分。FSM的出现,解决了纯硬件数字系统顺序控制方式不灵活的问题,并且以其结构模式简单、易于构成同步时序逻辑模块、硬件...

Global site tag (gtag.js) - Google Analytics