CN107357592A - 一种基于状态机机制的事件处理方法及装置 - Google Patents
一种基于状态机机制的事件处理方法及装置 Download PDFInfo
- Publication number
- CN107357592A CN107357592A CN201710623717.5A CN201710623717A CN107357592A CN 107357592 A CN107357592 A CN 107357592A CN 201710623717 A CN201710623717 A CN 201710623717A CN 107357592 A CN107357592 A CN 107357592A
- Authority
- CN
- China
- Prior art keywords
- state
- module
- state machine
- logic
- nextstate
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
- G06F8/313—Logic programming, e.g. PROLOG programming language
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种基于状态机机制的事件处理方法及装置,该方法包括:第一模块接收激励状态;根据激励状态和第一模块中的状态机的当前状态,将状态机变为对应的下一状态,并执行下一状态对应的第一模块的逻辑;其中,状态机包括对应于第一模块的各个逻辑的状态;本发明通过根据接收的激励状态和第一模块中的状态机的当前状态,将状态机变为对应的下一状态,并执行下一状态对应的第一模块的逻辑,可以将第一模块的逻辑分割成状态机不同的状态对应的逻辑,通过各模块向状态机发送的激励状态,完成对应的逻辑的执行过程,降低了模块之间的耦合度,同时增强模块内部逻辑的扩展性。
Description
技术领域
本发明涉及软件逻辑处理领域,特别涉及一种基于状态机机制的事件处理方法及装置。
背景技术
随着各行业需求的增加,行业软件的逻辑复杂度越来越高,原有的上下文编程对于逻辑复杂的程序显得捉襟见肘,特别是对于各软件模块直接的交互式调用,需要更多的附件条件判断完成事件逻辑的处理过程。
现有技术中,各软件模块的交互式调用是通过模块间发送的指令直接进行逻辑的处理,对于需求不断变化的软件开发来说,这种紧耦合的设计框架对于大型复杂的程序逻辑是一个极大的挑战,一点需求的改变或新业务逻辑的增加,将会使得各个模块以及逻辑发生大的变化。因此,如何降低程序模块之间的耦合度,增强程序的可扩展性,是现今亟需解决的问题。
发明内容
本发明的目的是提供一种基于状态机机制的事件处理方法及装置,以在模块之间的交互以及模块内部逻辑处理过程采用状态机的形式进行处理,降低软件模块之间的耦合度,同时增强模块内部逻辑的扩展性。
为解决上述技术问题,本发明提供一种基于状态机机制的事件处理方法,包括:
第一模块接收激励状态;
根据所述激励状态和所述第一模块中的状态机的当前状态,将所述状态机变为对应的下一状态,并执行所述下一状态对应的所述第一模块的逻辑;其中,所述状态机包括对应于所述第一模块的各个逻辑的状态。
可选的,所述第一模块接收激励状态之前,还包括:
第二模块需要所述第一模块执行所述下一状态对应的逻辑时,将所述激励状态发送到所述第一模块。
可选的,所述状态机具体为C语言中的switchcase结构。
可选的,该方法还包括:
按预设时间间隔统计所述状态机的各状态的改变频率;
根据所述改变频率调整所述状态机的各状态对应的case的顺序。
此外,本发明还提供了一种基于状态机机制的事件处理装置,包括:
第一模块,用于接收激励状态;根据所述激励状态和所述第一模块中的状态机的当前状态,将所述状态机变为对应的下一状态,并执行所述下一状态对应的所述第一模块的逻辑;其中,所述状态机包括对应于所述第一模块的各个逻辑的状态;
第二模块,用于向所述第一模块发送所述激励状态。
可选的,所述第二模块,包括:
访问子模块,用于第二模块需要所述第一模块执行所述下一状态对应的逻辑时,将所述激励状态发送到所述第一模块。
可选的,该装置还包括:
统计模块,用于按预设时间间隔统计所述状态机的各状态的改变频率;
调整模块,用于根据所述改变频率调整所述状态机的各状态对应的case的顺序。
本发明所提供的一种基于状态机机制的事件处理方法,包括:第一模块接收激励状态;根据激励状态和第一模块中的状态机的当前状态,将状态机变为对应的下一状态,并执行下一状态对应的第一模块的逻辑;其中,状态机包括对应于第一模块的各个逻辑的状态;
可见,本发明通过根据接收的激励状态和第一模块中的状态机的当前状态,将状态机变为对应的下一状态,并执行下一状态对应的第一模块的逻辑,可以将第一模块的逻辑分割成状态机不同的状态对应的逻辑,通过各模块向状态机发送的激励状态,完成对应的逻辑的执行过程,降低了模块之间的耦合度,同时增强模块内部逻辑的扩展性。此外,本发明还提供了一种基于状态机机制的事件处理装置,同样具有上述有益效果。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例所提供的一种基于状态机机制的事件处理方法的流程图;
图2为本发明实施例所提供的一种基于状态机机制的事件处理方法的状态机状态迁移的示意图;
图3为本发明实施例所提供的一种基于状态机机制的事件处理方法的状态机新增状态的示意图;
图4为本发明实施例所提供的一种基于状态机机制的事件处理装置的结构图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参考图1,图1为本发明实施例所提供的一种基于状态机机制的事件处理方法的流程图。该方法可以包括:
步骤101:第一模块接收激励状态。
其中,激励状态可以为与第一模块进行交互的模块发送的信息,使第一模块的状态机可以由当前状态迁移到对应的下一状态,从而执行对应的逻辑。对于激励状态的具体内容,可以由设计人员根据实用场景和用户需求自行设置,本实施例对此不做任何限制。
可以理解的是,本步骤之前还可以包括与第一模块进行交互的模块向第一模块发送激励状态的步骤,如第二模块需要第一模块执行下一状态对应的逻辑时,将激励状态发送到第一模块。对于与第一模块进行交互的模块向第一模块发送激励状态的具体过程,可以由设计人员自行设置,如第二模块访问第一模块时,可以根据自身执行的逻辑,将一个激励状态发送给第一模块的状态机,也可以直接将向第一模块发送相应的激励状态,第一模块可以根据当前接收的激励状态和状态机的当前状态进行处理。本实施例对此不做任何限制。
步骤102:根据激励状态和第一模块中的状态机的当前状态,将状态机变为对应的下一状态,并执行下一状态对应的第一模块的逻辑;其中,状态机包括对应于第一模块的各个逻辑的状态。
其中,第一模块中的状态机的各个状态可以分别对应一个需要执行的逻辑。状态机可以根据激励状态由当前状态迁移为下一状态,并执行下一状态对应的逻辑。
可以理解的是,状态机的状态迁移的过程,也就是第一模块根据激励状态和第一模块中的状态机的当前状态,将状态机变为对应的下一状态的过程,可以如图2所示,状态机的当前状态为状态1(处于状态1阶段)时,可以根据接收的stimulus1(激励状态)将状态机的状态设置为状态2(下一状态),同时执行状态2对应的逻辑。对应的,接收stimulus5后,状态机将从状态1转换到状态4,同时执行状态4对应的逻辑。
需要说明的是,对于第一模块中的状态机的具体结构,可以由设计人员自行设置,如可以采用C语言中的switchcase结构,本实施例对此不做任何限制。对应的,当状态机采用C语言中的switchcase结构时,可以由设计人员直接根据编译器优化原理,将状态机中调度频率高的状态放在状态处理流程靠前为位置,也就是人工将使用频率高的状态的case放在前面,提高状态机处理的效率;也可以自动将使用频率高的状态的case放在前面,也就是说,本实施例所提供的方法还可以包括:按预设时间间隔统计状态机的各状态的改变频率;根据改变频率调整状态机的各状态对应的case的顺序的步骤。本实施例对此不做任何限制。
具体的,对于统计状态机的各状态的改变频率的时间间隔的设置,可以由设计人员或用户自行设置,如可以为一天。也可以为在用户需要进行统计时,根据接收的统计信号统计状态机的各状态的改变频率。本实施例对此不做任何限制。同样,对于根据改变频率调整状态机的各状态对应的case的顺序的具体方式,可以由设计人员自行设置,如可以根据各状态的改变频率由高到低的顺序调整状态机的各状态对应的case的顺序,也可以将改变频率大于阈值的状态对应的case调整到队列前面。本实施例对此同样不做任何限制。
需要说明的是,本实施例所提供的方法中的第一模块需要扩张逻辑时,只需要在状态机中增加相应的逻辑对应的状态,同时设置好触发的激励状态以及上一次状态机的状态,对于其他逻辑在与现存的逻辑结果没有任何逻辑关联的情况下,不需要对当前的逻辑做任何修改。增加了程序的可扩展性。如图3所示,在第一模块需求增加新的逻辑是时,增加了该逻辑对应的状态机的状态(状态5),在设置好状态机的前一个状态(状态2)后,通过向状态机发送一个新的外部激励(stimulus8),状态机将从状态2转换到状态5,同时可以执行状态5对应的新的逻辑。
本实施例中,本发明实施例通过根据接收的激励状态和第一模块中的状态机的当前状态,将状态机变为对应的下一状态,并执行下一状态对应的第一模块的逻辑,可以将第一模块的逻辑分割成状态机不同的状态对应的逻辑,通过各模块向状态机发送的激励状态,完成对应的逻辑的执行过程,降低了模块之间的耦合度,同时增强模块内部逻辑的扩展性。
请参考图4,图4为本发明实施例所提供的一种基于状态机机制的事件处理装置的结构图。该装置可以包括:
第一模块100,用于接收激励状态;根据激励状态和第一模块中的状态机的当前状态,将状态机变为对应的下一状态,并执行下一状态对应的第一模块的逻辑;其中,状态机包括对应于第一模块的各个逻辑的状态;
第二模块200,用于向第一模块发送激励状态。
可选的,第二模块200,可以包括:
访问子模块,用于第二模块需要第一模块执行下一状态对应的逻辑时,将激励状态发送到第一模块。
可选的,该装置还可以包括:
统计模块,用于按预设时间间隔统计状态机的各状态的改变频率;
调整模块,用于根据改变频率调整状态机的各状态对应的case的顺序。
本实施例中,本发明实施例通过第一模块100根据接收的激励状态和第一模块中的状态机的当前状态,将状态机变为对应的下一状态,并执行下一状态对应的第一模块的逻辑,可以将第一模块的逻辑分割成状态机不同的状态对应的逻辑,通过各模块向状态机发送的激励状态,完成对应的逻辑的执行过程,降低了模块之间的耦合度,同时增强模块内部逻辑的扩展性。
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上对本发明所提供的基于状态机机制的事件处理方法及装置进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
Claims (7)
1.一种基于状态机机制的事件处理方法,其特征在于,包括:
第一模块接收激励状态;
根据所述激励状态和所述第一模块中的状态机的当前状态,将所述状态机变为对应的下一状态,并执行所述下一状态对应的所述第一模块的逻辑;其中,所述状态机包括对应于所述第一模块的各个逻辑的状态。
2.根据权利要求1所述的基于状态机机制的事件处理方法,其特征在于,所述第一模块接收激励状态之前,还包括:
第二模块需要所述第一模块执行所述下一状态对应的逻辑时,将所述激励状态发送到所述第一模块。
3.根据权利要求1或2所述的基于状态机机制的事件处理方法,其特征在于,所述状态机具体为C语言中的switchcase结构。
4.根据权利要求3所述的基于状态机机制的事件处理方法,其特征在于,还包括:
按预设时间间隔统计所述状态机的各状态的改变频率;
根据所述改变频率调整所述状态机的各状态对应的case的顺序。
5.一种基于状态机机制的事件处理装置,其特征在于,包括:
第一模块,用于接收激励状态;根据所述激励状态和所述第一模块中的状态机的当前状态,将所述状态机变为对应的下一状态,并执行所述下一状态对应的所述第一模块的逻辑;其中,所述状态机包括对应于所述第一模块的各个逻辑的状态;
第二模块,用于向所述第一模块发送所述激励状态。
6.根据权利要求5所述的基于状态机机制的事件处理装置,其特征在于,所述第二模块,包括:
访问子模块,用于第二模块需要所述第一模块执行所述下一状态对应的逻辑时,将所述激励状态发送到所述第一模块。
7.根据权利要求6所述的基于状态机机制的事件处理装置,其特征在于,还包括:
统计模块,用于按预设时间间隔统计所述状态机的各状态的改变频率;
调整模块,用于根据所述改变频率调整所述状态机的各状态对应的case的顺序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710623717.5A CN107357592A (zh) | 2017-07-27 | 2017-07-27 | 一种基于状态机机制的事件处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710623717.5A CN107357592A (zh) | 2017-07-27 | 2017-07-27 | 一种基于状态机机制的事件处理方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107357592A true CN107357592A (zh) | 2017-11-17 |
Family
ID=60286552
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710623717.5A Pending CN107357592A (zh) | 2017-07-27 | 2017-07-27 | 一种基于状态机机制的事件处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107357592A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107992332A (zh) * | 2017-11-24 | 2018-05-04 | 江苏神州信源系统工程有限公司 | 一种状态机的实现方法及系统 |
CN108089932A (zh) * | 2017-12-06 | 2018-05-29 | 深圳进化动力数码科技有限公司 | 一种操作事件处理的方法、系统及相机 |
CN108764864A (zh) * | 2018-04-09 | 2018-11-06 | 阿里巴巴集团控股有限公司 | 一种配置支付流程、执行支付流程的方法、装置及设备 |
CN111399813A (zh) * | 2020-04-10 | 2020-07-10 | 上海米哈游天命科技有限公司 | 一种用于对象的状态切换系统和方法 |
US11474837B2 (en) | 2018-04-09 | 2022-10-18 | Advanced New Technologies Co., Ltd. | Method and apparatus for efficient programming of electronic payment processing |
CN116450101A (zh) * | 2023-04-27 | 2023-07-18 | 睿珀智能科技有限公司 | 软件架构设计方法、系统及设备 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7490317B1 (en) * | 2004-09-09 | 2009-02-10 | Sun Microsystems, Inc. | Methods and apparatus for representing application dependencies |
CN101957751A (zh) * | 2010-06-04 | 2011-01-26 | 福建星网锐捷网络有限公司 | 一种状态机的实现方法及装置 |
CN102103497A (zh) * | 2009-12-18 | 2011-06-22 | 阿尔卡特朗讯 | 有限状态机执行装置和方法、在应用中的建立和使用方法 |
CN102467414A (zh) * | 2010-11-19 | 2012-05-23 | 阿里巴巴集团控股有限公司 | 一种状态机控制方法、装置及状态机系统 |
CN102591713A (zh) * | 2011-12-31 | 2012-07-18 | 浙江大学 | 基于有限状态机的软件功能模块的调度系统 |
CN102609269A (zh) * | 2012-02-17 | 2012-07-25 | 南京南瑞继保电气有限公司 | 一种顺序功能图的可视化实现方法 |
CN104077121A (zh) * | 2013-03-29 | 2014-10-01 | 北京大学深圳研究生院 | 一种实现和管理状态机信息的装置 |
-
2017
- 2017-07-27 CN CN201710623717.5A patent/CN107357592A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7490317B1 (en) * | 2004-09-09 | 2009-02-10 | Sun Microsystems, Inc. | Methods and apparatus for representing application dependencies |
CN102103497A (zh) * | 2009-12-18 | 2011-06-22 | 阿尔卡特朗讯 | 有限状态机执行装置和方法、在应用中的建立和使用方法 |
CN101957751A (zh) * | 2010-06-04 | 2011-01-26 | 福建星网锐捷网络有限公司 | 一种状态机的实现方法及装置 |
CN102467414A (zh) * | 2010-11-19 | 2012-05-23 | 阿里巴巴集团控股有限公司 | 一种状态机控制方法、装置及状态机系统 |
CN102591713A (zh) * | 2011-12-31 | 2012-07-18 | 浙江大学 | 基于有限状态机的软件功能模块的调度系统 |
CN102609269A (zh) * | 2012-02-17 | 2012-07-25 | 南京南瑞继保电气有限公司 | 一种顺序功能图的可视化实现方法 |
CN104077121A (zh) * | 2013-03-29 | 2014-10-01 | 北京大学深圳研究生院 | 一种实现和管理状态机信息的装置 |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107992332A (zh) * | 2017-11-24 | 2018-05-04 | 江苏神州信源系统工程有限公司 | 一种状态机的实现方法及系统 |
CN108089932A (zh) * | 2017-12-06 | 2018-05-29 | 深圳进化动力数码科技有限公司 | 一种操作事件处理的方法、系统及相机 |
CN108089932B (zh) * | 2017-12-06 | 2020-12-18 | 深圳进化动力数码科技有限公司 | 一种操作事件处理的方法、系统及相机 |
CN108764864A (zh) * | 2018-04-09 | 2018-11-06 | 阿里巴巴集团控股有限公司 | 一种配置支付流程、执行支付流程的方法、装置及设备 |
US11474837B2 (en) | 2018-04-09 | 2022-10-18 | Advanced New Technologies Co., Ltd. | Method and apparatus for efficient programming of electronic payment processing |
CN111399813A (zh) * | 2020-04-10 | 2020-07-10 | 上海米哈游天命科技有限公司 | 一种用于对象的状态切换系统和方法 |
CN111399813B (zh) * | 2020-04-10 | 2023-08-29 | 上海米哈游天命科技有限公司 | 一种用于对象的状态切换系统和方法 |
CN116450101A (zh) * | 2023-04-27 | 2023-07-18 | 睿珀智能科技有限公司 | 软件架构设计方法、系统及设备 |
CN116450101B (zh) * | 2023-04-27 | 2024-04-09 | 睿珀智能科技有限公司 | 软件架构设计方法、系统及设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107357592A (zh) | 一种基于状态机机制的事件处理方法及装置 | |
US10635674B2 (en) | Migrating a pluggable database between database server instances with minimal impact to performance | |
US9559982B2 (en) | Packet shaping in a network processor | |
KR102326521B1 (ko) | Mec 플랫폼, 그것을 갖는 디지털 트윈 서비스 시스템 및 그것의 동작 방법 | |
US20140344814A1 (en) | Scheduling homogeneous and heterogeneous workloads with runtime elasticity in a parallel processing environment | |
WO2022021852A1 (zh) | 一种基于fpga的fast协议解码方法、装置及设备 | |
CN107645407B (zh) | 一种适配QoS的方法和装置 | |
WO2019228344A1 (zh) | 资源配置方法、装置、终端及存储介质 | |
CN108027789A (zh) | 具有多级仲裁的互连件的服务质量 | |
CN103645994A (zh) | 一种数据处理方法及设备 | |
EP2830269A1 (en) | Message processing method and device | |
CN105138679A (zh) | 一种基于分布式缓存的数据处理系统及处理方法 | |
CN103678573A (zh) | 一种实现缓存加速的方法及系统 | |
CN109101233A (zh) | 适配多种屏幕分辨率的方法、存储设备及安卓设备 | |
CN112132942A (zh) | 一种三维场景漫游实时渲染方法 | |
US11012366B2 (en) | Methods and systems for data transmission | |
CN103714569A (zh) | 一种渲染指令的处理方法、装置和系统 | |
CN107517266A (zh) | 一种基于分布式缓存的即时通讯方法 | |
CN110515870A (zh) | 一种服务器电源前后级通讯的方法、设备及可读介质 | |
CN106776029A (zh) | 一种优化服务器内存资源利用率的方法及系统 | |
CN106788842A (zh) | 一种ptp报文的处理方法及soc | |
CN110069565A (zh) | 一种分布式数据库数据批量处理的方法及装置 | |
CN114780228B (zh) | 一种混合云资源创建方法及系统 | |
CN107203333A (zh) | OpenStack云计算平台中块存储自动接入的方法 | |
WO2016086597A1 (zh) | 一种用户签约数据库spr数据访问的方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20171117 |