CN104239013B - 基于委托的分散式状态机及其处理方法 - Google Patents
基于委托的分散式状态机及其处理方法 Download PDFInfo
- Publication number
- CN104239013B CN104239013B CN201310239741.0A CN201310239741A CN104239013B CN 104239013 B CN104239013 B CN 104239013B CN 201310239741 A CN201310239741 A CN 201310239741A CN 104239013 B CN104239013 B CN 104239013B
- Authority
- CN
- China
- Prior art keywords
- state
- commission
- state machine
- distributing
- module
- 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.)
- Active
Links
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种基于委托的分散式状态机及其处理方法,包括如下步骤:a)对系统状态按主从关系进行分类,并采用至少两个状态标识记录系统当前状态;b)提供多个相互独立的局部处理逻辑模块;c)采用全局委托列表的方式接受触发事件,并调用所述步骤b)中相应的局部处理逻辑模块响应所述触发事件;d)如果系统状态发生改变,系统切换至下一状态。本发明提供的基于委托的分散式状态机及其处理方法,某一时刻同时存在多个状态并采用分散式事件处理结构,从而简化状态机的设置和切换,并且易于扩展控制系统状态切换的功能模块。
Description
技术领域
本发明涉及一种状态机及其处理方法,尤其涉及一种基于委托的分散式状态机及其处理方法。
背景技术
目前,数字化X射线摄影(Digital Radiography,DR)系统软件的检查和数字图像采集工作流涉及大量的系统状态切换,而且某一时刻同时的系统性状包涵各个方面的内容。当触发状态改变的事件发生时,某一个或某几个方面的状态会改变。导致状态切换的事件达到数十种,从而导致工作流变得很复杂。此外,且随着需求的变化,事件种类和相应的切换前后状态也会改变。DR系统软件的状态机需要能够很好地应对大量种类的状态和事件、事件和状态种类的增加和减少、事件处理方式和切换前后状态改变的需求。
现有的状态机每个时刻中只有1个状态表示系统各个方面的性状,如图1所示。这导致状态机所定义的状态个数为系统实际每个方面性状的所有可能取值的数量的乘积。导致状态机需要定义大量的状态,增加了复杂度。
现有状态机有1个单独的集中式事件处理单元,这个集中式事件处理单元根据当前的状态以及事件种类是否匹配决定是否响应事件、如何处理事件、如何切换状态。因此集中式事件处理单元必须拥有所有的事件列表、所有的状态列表、依赖特定事件和特定状态的处理逻辑列表、还要具备记录当前状态的功能,如图2所示。(这导致这种集中式事件处理单元极度膨胀、而且由于大量逻辑耦合在集中式事件处理单元之中,一旦需求发生改变,扩展、删减或改变相应功能都很困难。
发明内容
本发明所要解决的技术问题是提供一种基于委托的分散式状态机及其处理方法,能够简化状态机的设置和切换,并且易于扩展控制系统状态切换的功能动作模块。
本发明为解决上述技术问题而采用的技术方案是提供一种基于委托的分散式状态机的处理方法,包括如下步骤:a)对系统状态按主从关系进行分类,并采用至少两个状态标识记录系统当前状态;b)提供多个相互独立的局部处理逻辑模块,局部处理逻辑模块的实现方式为:将处理逻辑分成若干代码片段,分别放入与之密切相关的某个子模块中;c)采用全局委托列表的方式接受触发事件,并调用所述步骤b)中相应的局部处理逻辑模块响应所述触发事件;d)如果系统状态发生改变,系统切换至下一状态。
上述的分散式状态机的处理方法,其中,所述步骤a)中系统状态分成多个主状态,所述每个主状态按主从关系分成多个一级子状态。
上述的分散式状态机的处理方法,其中,所述一级子状态按主从关系进一步分成多个二级子状态。
上述的分散式状态机的处理方法,其中,所述触发事件包括外部事件、子状态销毁事件、子状态切换事件或子状态产生事件。
本发明为解决上述技术问题还提供基于委托的分散式状态机,其中,包括:状态机主模块,用于对系统状态按主从关系进行分类,同时采用至少两个状态标识记录系统当前状态,并控制系统状态切换;状态集,用于提供多个相互独立的局部处理逻辑模块响应触发事件,局部处理逻辑模块的实现方式为:将处理逻辑分成若干代码片段,分别放入与之密切相关的某个子模块中;全局委托列表,用于接受触发事件,并调用状态集中相应的局部处理逻辑模块。
上述的基于委托的分散式状态机,其中,还包括插件集,用于提供多个相互独立的插件逻辑处理模块,所述插件逻辑处理模块的处理逻辑注册到所述全局委托列表中,供状态机主模块和状态集调用。
上述的基于委托的分散式状态机,其中,所述插件逻辑处理模块根据配置文件进行加载或卸载,加载后的插件逻辑处理模块向所述全局委托列表进行注册登记生成注册登记信息,所述全局委托列表接受触发事件后根据所述注册登记信息调用插件集中相应的插件逻辑处理模块。
上述的基于委托的分散式状态机,其中,所述系统状态分成多个主状态,所述主状态按主从关系分成多个一级子状态。
上述的基于委托的分散式状态机,其中,所述状态机主模块记录所述系统主状态标识和一级子状态标识。
上述的基于委托的分散式状态机,其中,所述状态机主模块记录系统主状态标识,所述主状态记录该主状态下的一级子状态标识。
本发明对比现有技术有如下的有益效果:本发明提供的基于委托的分散式状态机及其处理方法,对系统状态按主从关系进行分类,将主状态分成多个子状态,子状态表示状态的某一具体值。相应,状态机中某时刻同时存在的状态数量为相同数量的主状态和子状态,共同表示系统某时刻的状态,而定义的状态个数为系统实际每种类型状态的所有可能取值的数量及状态类型数量的总合,大大降低了所需定义的状态数,另外,本发明取消了集中式事件处理单元,改由维护一个全局的委托列表和多个拥有局部处理逻辑的主模块、状态集、插件集等子模块。将处理逻辑分成若干代码片段,分别放入与之密切相关的某个子模块中,状态机主模块和状态集中的逻辑可以直接相互调用,而插件集则将自身处理逻辑注册到全局委托列表中,由状态机主模块和状态集中的对象调用。这样,调用模块无需知道被调用模块的状态,被调用的模块也无需知道调用方是谁,避免了代码块膨胀,而且可以灵活地增加或修改局部逻辑处理模块的功能,同时也可以对状态机增加或删除模块来扩展或精简状态机的功能。
附图说明
图1为现有状态机和本发明状态机状态定义比较示意图;
图2现有状态机处理工作流原理图;
图3为本发明基于委托的分散式状态机的处理流程示意图;
图4为本发明状态机处理工作流原理图;
图5为本发明基于委托的分散式状态机模块架构示意图;
图6为本发明基于委托的分散式状态机事件处理流程示意图;
图7为本发明基于委托的分散式状态机插件加载流程示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的描述。
图3为本发明基于委托的分散式状态机的处理流程示意图。
请参见图3,本发明提供的基于委托的分散式状态机的处理方法包括如下步骤:
步骤S1:对系统状态按主从关系进行分类,并同时采用至少两个的状态标识记录系统当前状态;现有的状态机每个时刻中只有1个状态标识表示系统各个方面的状态,如图1中所示的状态A1B1C1、A1B1C2、…、A2B3C2。本发明对系统状态按主从关系进行分类,得到多种状态标识,如图1中所示的主状态标识A、主状态标识B和主状态标识C,每种主状态按主从关系分成多个一级子状态,子状态表示这个方面状态的某一具体值,如图1中所示的主状态A包括一级子状态A1和一级子状态A2。所述一级子状态可以按主从关系进一步分成多个二级子状态,在此不再一一罗列。相应状态机中某时刻同时存在的状态数量为相同数量的主状态和子状态,共同表示系统某时刻的状态,而定义的状态个数为系统实际每种类型状态的所有可能取值的数量及类型数量的总和,大大降低了所需定义的状态数。
步骤S2:提供多个相互独立的局部处理逻辑模块;即将处理逻辑分成若干代码片段,分别放入与之密切相关的某个子模块中,采用模块化的处理方式,避免了代码块膨胀,而且可以灵活地增加或修改局部处理逻辑模块的功能,同时也可以对状态机增加或删除模块来扩展或精简状态机的功能。
步骤S3:采用全局委托列表的方式接受触发事件,并调用所述步骤S2中相应的局部处理逻辑模块,如图4所示,调用模块无需知道被调用模块的状态,被调用的模块也无需知道调用方是谁;状态机触发事件包括外部事件、子状态销毁事件、子状态切换事件、子状态产生事件等。改变状态机状态不是一定通过事件的形式,也可以通过外部直接调用全局委托列表实现。
步骤S4:如果系统状态发生改变,执行一次状态迁移,系统切换至下一状态。
图5为本发明基于委托的分散式状态机模块架构示意图。
请继续参见图5,本发明还根据上述的处理流程提供基于委托的分散式状态机,其中,包括:
状态机主模块:用于对系统状态按主从关系进行分类,同时采用至少两个状态标识记录系统当前状态,并控制状态切换;
状态集:用于提供多个相互独立的局部处理逻辑模块响应触发事件;
插件集:用于提供多个相互独立的插件处理逻辑模块,所述插件逻辑处理模块的处理逻辑注册到所述全局委托列表中,供状态机主模块和状态集调用。;
全局委托列表:用于接受触发事件,并调用状态集中相应的局部处理逻辑模块或插件集中的插件处理逻辑模块。
本发明针对现有技术事件处理单元膨胀和难以应对功能扩展、工作流变化的状况,取消了集中式事件处理单元,改由维护一个全局的委托列表和多个拥有局部处理逻辑的模块响应触发事件。多个相互独立的局部处理逻辑模块可以作为子模块放置在状态集或插件集中。状态机主模块和状态集中的逻辑模块可以直接相互调用,而插件集则将自身处理逻辑模块注册到全局委托列表中,由状态机主模块和状态集中的对象调用。这样,调用模块无需知道被调用模块的状态,被调用的模块也无需知道调用方是谁,避免了代码块膨胀,而且可以灵活地增加或修改局部模块的功能,同时也可以对状态机增加或删除模块来扩展或精简状态机的功能。
图6为本发明基于委托的分散式状态机事件处理流程示意图。
请继续参见图6,一般化的状态机事件处理流程包括以下几个步骤:(1)一个事件触发状态机主模块开始事件处理核心流程,主模块触发全局委托列表中的“开始事件处理”委托,相应插件中的扩展流程执行;(2)响应状态执行响应事件的处理,实现事件响应核心工作流并触发全局委托列表中“状态响应事件”委托,相应插件中扩展工作流执行;(3)离开状态执行核心工作流并触发“离开”委托,相应插件中扩展工作流执行;(4)新进入的状态执行核心工作流并触发“进入”委托,相应插件中扩展工作流执行;(5)状态机主模块执行后处理核心工作流,并触发“状态机完成事件处理”委托,相应插件中扩展工作流执行。
图7为本发明基于委托的分散式状态机插件加载流程示意图。
请继续参见图7,状态机可以通过加载插件的方式扩展自身功能。插件存储在相应的插件程序集中,状态机究竟加载哪些插件取决于配置文件,从而方便地实现外部挂载或卸载。状态机主模块可不包含当前所有子模块的集合,如只包含所有主状态列表,由每个主状态去记录其当前子状态。
虽然本发明已以较佳实施例揭示如上,然其并非用以限定本发明,任何本领域技术人员,在不脱离本发明的精神和范围内,当可作些许的修改和完善,因此本发明的保护范围当以权利要求书所界定的为准。
Claims (10)
1.一种基于委托的分散式状态机的处理方法,其特征在于,包括如下步骤:
a)对系统状态按主从关系进行分类,并采用至少两个状态标识记录系统当前状态;
b)提供多个相互独立的局部处理逻辑模块,局部处理逻辑模块的实现方式为:将处理逻辑分成若干代码片段,分别放入与之密切相关的某个子模块中;
c)采用全局委托列表的方式接受触发事件,并调用所述步骤b)中相应的局部处理逻辑模块响应所述触发事件;
d)如果系统状态发生改变,系统切换至下一状态。
2.如权利要求1所述的基于委托的分散式状态机的处理方法,其特征在于,所述步骤a)中系统状态分成多个主状态,所述每个主状态按主从关系分成多个一级子状态。
3.如权利要求2所述的基于委托的分散式状态机的处理方法,其特征在于,所述一级子状态按主从关系进一步分成多个二级子状态。
4.如权利要求1~3任一项所述的基于委托的分散式状态机的处理方法,其特征在于,所述触发事件包括外部事件、子状态销毁事件、子状态切换事件或子状态产生事件。
5.一种基于委托的分散式状态机,其特征在于,包括:
状态机主模块,用于对系统状态按主从关系进行分类,同时采用至少两个状态标识记录系统当前状态,并控制系统状态切换;
状态集,用于提供多个相互独立的局部处理逻辑模块响应触发事件,局部处理逻辑模块的实现方式为:将处理逻辑分成若干代码片段,分别放入与之密切相关的某个子模块中;
全局委托列表,用于接受触发事件,并调用状态集中相应的局部处理逻辑模块。
6.如权利要求5所述的基于委托的分散式状态机,其特征在于,还包括插件集,用于提供多个相互独立的插件逻辑处理模块,所述插件逻辑处理模块的处理逻辑注册到所述全局委托列表中,供状态机主模块和状态集调用。
7.如权利要求6所述的基于委托的分散式状态机,其特征在于,所述插件逻辑处理模块根据配置文件进行加载或卸载,加载后的插件逻辑处理模块向所述全局委托列表进行注册登记生成注册登记信息,所述全局委托列表接受触发事件后根据所述注册登记信息调用插件集中相应的插件逻辑处理模块。
8.如权利要求5所述的基于委托的分散式状态机,其特征在于,所述系统状态分成多个主状态,所述主状态按主从关系分成多个一级子状态。
9.如权利要求8所述的基于委托的分散式状态机,其特征在于,所述状态机主模块记录所述系统主状态标识和一级子状态标识。
10.如权利要求8所述的基于委托的分散式状态机,其特征在于,所述状态机主模块记录系统主状态标识,所述主状态记录该主状态下的一级子状态标识。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310239741.0A CN104239013B (zh) | 2013-06-17 | 2013-06-17 | 基于委托的分散式状态机及其处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310239741.0A CN104239013B (zh) | 2013-06-17 | 2013-06-17 | 基于委托的分散式状态机及其处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104239013A CN104239013A (zh) | 2014-12-24 |
CN104239013B true CN104239013B (zh) | 2018-11-30 |
Family
ID=52227164
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310239741.0A Active CN104239013B (zh) | 2013-06-17 | 2013-06-17 | 基于委托的分散式状态机及其处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104239013B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111026467B (zh) * | 2019-12-06 | 2022-12-20 | 合肥科大智能机器人技术有限公司 | 一种有限状态机的控制方法及有限状态机 |
CN111273969B (zh) * | 2020-01-20 | 2021-08-10 | 腾讯科技(深圳)有限公司 | 状态切换方法、装置、设备和存储介质 |
CN113672408A (zh) * | 2021-08-24 | 2021-11-19 | 上海洪朴信息科技有限公司 | 图像处理系统及方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1519706A (zh) * | 2003-01-23 | 2004-08-11 | 深圳市中兴通讯股份有限公司 | 一种流程状态机的实现方法 |
CN101819651A (zh) * | 2010-04-16 | 2010-09-01 | 浙江大学 | 粒子群算法在多机上并行执行的方法 |
CN102375759A (zh) * | 2010-08-20 | 2012-03-14 | 希姆通信息技术(上海)有限公司 | 利用有限状态机防止代码重入的方法 |
US8418094B2 (en) * | 2008-11-04 | 2013-04-09 | Cadence Design Systems, Inc. | Methods, systems, and computer program product for parallelizing tasks in processing an electronic circuit design |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7624163B2 (en) * | 2004-10-21 | 2009-11-24 | Apple Inc. | Automatic configuration information generation for distributed computing environment |
-
2013
- 2013-06-17 CN CN201310239741.0A patent/CN104239013B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1519706A (zh) * | 2003-01-23 | 2004-08-11 | 深圳市中兴通讯股份有限公司 | 一种流程状态机的实现方法 |
US8418094B2 (en) * | 2008-11-04 | 2013-04-09 | Cadence Design Systems, Inc. | Methods, systems, and computer program product for parallelizing tasks in processing an electronic circuit design |
CN101819651A (zh) * | 2010-04-16 | 2010-09-01 | 浙江大学 | 粒子群算法在多机上并行执行的方法 |
CN102375759A (zh) * | 2010-08-20 | 2012-03-14 | 希姆通信息技术(上海)有限公司 | 利用有限状态机防止代码重入的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104239013A (zh) | 2014-12-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104239013B (zh) | 基于委托的分散式状态机及其处理方法 | |
CN107450501A (zh) | 一种应用于自动化灌装生产车间的制造执行系统 | |
CN106445604A (zh) | 一种应用程序的清理方法和装置 | |
CN104408654A (zh) | 一种财务监控管理系统 | |
CN106161060A (zh) | 数据监控方法和装置 | |
CN104021195A (zh) | 基于知识库的告警关联分析方法 | |
CN107590016A (zh) | 掉电重启识别方法及装置 | |
CN110062027A (zh) | 负载均衡方法、中心服务器及终端设备 | |
CN108320235A (zh) | 一种监测管理系统 | |
CN104933295B (zh) | 电气设备开关量记录纠错方法 | |
CN105512788A (zh) | 一种智能运维管理方法及系统 | |
CN101710863A (zh) | 用于单板告警的恢复方法及系统 | |
CN114444570A (zh) | 故障检测的方法、装置、电子设备及介质 | |
EP3154238A1 (en) | Policy-based m2m terminal device monitoring and control method and device | |
CN101217315A (zh) | 一种告警屏蔽的配置方法和系统 | |
CN105428272B (zh) | 半导体设备报警处理的方法及装置 | |
CN108363571B (zh) | 一种基于智能过滤的控件布局方法及系统 | |
CN107526690B (zh) | 清除缓存的方法及装置 | |
CN112583912A (zh) | Vpn自动连接方法、装置、设备和存储介质 | |
CN104375873A (zh) | 通过供电状态管理权限的方法和系统 | |
CN108304293A (zh) | 一种基于大数据技术的软件系统监控方法 | |
CN101192962B (zh) | 电信网管系统中涉及粘滞值的告警产生和恢复方法 | |
CN107870822A (zh) | 基于分布式系统的异步任务控制方法及系统 | |
CN106527643B (zh) | 一种通信设备及其电源管理方法 | |
CN105058731A (zh) | 用于注射压机成型问题的管理系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20190711 Address after: 213000 Liaohe Road 1008, Xinbei District, Changzhou City, Jiangsu Province Patentee after: Lian Ying (Changzhou) Medical Technology Co., Ltd. Address before: 201815 No. 1180 Xingxian Road, Jiading Industrial Zone, Jiading District, Shanghai Patentee before: Shanghai United Imaging Healthcare Co., Ltd. |
|
TR01 | Transfer of patent right |