CN105045580A - 一种复合行为驱动方法及装置 - Google Patents
一种复合行为驱动方法及装置 Download PDFInfo
- Publication number
- CN105045580A CN105045580A CN201510382794.7A CN201510382794A CN105045580A CN 105045580 A CN105045580 A CN 105045580A CN 201510382794 A CN201510382794 A CN 201510382794A CN 105045580 A CN105045580 A CN 105045580A
- Authority
- CN
- China
- Prior art keywords
- behavior
- node
- execution
- act
- behavior node
- 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
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种复合行为驱动方法和装置,方法包括:S1:读取行为驱动集合文件,根据每个行为节点的开始时间和结束时间生成相应的定时器;S2:当触发某个行为节点的定时器的开始时间,则解析该行为节点的执行前提条件,若执行前提条件未设定或者满足执行前提条件,则执行步骤S3;否则,更新该行为节点的行为状态为失败,执行步骤S4;S3:根据该行为节点中的执行方式执行其中的行为方法,执行结束后更新该行为节点的行为状态为成功;S4根据该行为节点的行为状态执行对应的结束处理方法,并退出该节点。本发明既可以很好地继承事件驱动的优点,又可以解决现有技术中多个事件组成部分结构松散和逻辑控制弱的问题。
Description
技术领域
本发明涉及一种复合行为驱动方法及装置。
背景技术
现有的软件设计技术中,很多架构和实现都采用了以事件驱动为核心的模式。例如:web前端设计中对于用户操作的处理、系统中回调函数和方法、异步式处理等。交互界面的开发者在开发时,已经为每个用户界面上的需要处理用户操作的成员(菜单、按钮、表格、链接等)定义好对应的处理方法;每一个处理方法只有在用户该方法对应的成员被用户点击才会被执行。这样的设计方式可以实现在相同的用户界面下,不同的用户点击了不同的元素,会进入不同的处理。
事件驱动模式越来越多地被软件设计和架构使用,说明现实中存在着大量的需求和使用场景,是天然适合事件驱动方式的。但是,事件驱动的模式在很多时候仍会存在如下不足:
1、复杂的执行过程或流程中往往需要很多事件,这些事件中的联系不能很好地从事件驱动中体现出来。
2、事件驱动的控制过于简单,事件处理方法只有执行与不执行。但是很难控制有条件的执行时间处理方法。
发明内容
为了克服现有技术的不足,本发明的目的在于提供一种复合行为驱动方法和装置,既可以很好地继承事件驱动的优点,又可以解决现有技术中多个事件组成部分结构松散和逻辑控制弱的问题。
为解决上述问题,本发明所采用的技术方案如下:
方案一:
一种复合行为驱动方法,包括以下步骤:
S1:读取行为驱动集合文件,根据每个行为节点的开始时间和结束时间生成相应的定时器;
S2:当触发某个行为节点的定时器的开始时间,则解析该行为节点的执行前提条件,若执行前提条件未设定或者满足执行前提条件,则执行步骤S3;否则,更新该行为节点的行为状态为失败,执行步骤S4;
S3:根据该行为节点中的执行方式执行其中的行为方法,执行结束后更新该行为节点的行为状态为成功;
S4:根据该行为节点的行为状态执行对应的结束处理方法,并退出该节点。
优选的,在步骤S3中,若该行为节点中的执行方式为串行执行,则按先后顺序执行行为方法中的子行为节点;若该行为节点中的执行方式为并行执行,则同时执行行为方法中的子行为节点;若该行为节点中的执行方式为简单执行,则根据执行行为方法中的行为索引执行相应的方法。
优选的,所述行为索引为预定义的函数或者逻辑程序封装后所生成的索引值。
优选的,所述行为驱动集合文件为由JSON对象描述格式对一个或多个行为节点进行描述的文件。
方案二:
一种复合行为驱动装置,包括以下模块:
定时器生成模块,用于读取行为驱动集合文件,根据每个行为节点的开始时间和结束时间生成相应的定时器;
定时器触发模块,用于当触发某个行为节点的定时器的开始时间,则解析该行为节点的执行前提条件,若执行前提条件未设定或者满足执行前提条件,则执行方法执行模块;否则,更新该行为节点的行为状态为失败,执行结束处理模块;
方法执行模块,用于根据该行为节点中的执行方式执行其中的行为方法,执行结束后更新该行为节点的行为状态为成功;
结束处理模块,用于根据该行为节点的行为状态执行对应的结束处理方法,并退出该节点。
优选的,在方法执行模块中,若该行为节点中的执行方式为串行执行,则按先后顺序执行行为方法中的子行为节点;若该行为节点中的执行方式为并行执行,则同时执行行为方法中的子行为节点;若该行为节点中的执行方式为简单执行,则根据执行行为方法中的行为索引执行相应的方法。
优选的,所述行为索引为预定义的函数或者逻辑程序封装后所生成的索引值。
优选的,所述行为驱动集合文件为由JSON对象描述格式对一个或多个行为节点进行描述的文件。
相比现有技术,本发明的有益效果在于:通过预定义好一套完整的行为描述模式,根据每个行为的描述执行不同的动作,根据前面行为的执行状态触发后面的行为,使行为与行为之间具有关联性,通过组合和嵌套的关系便可以将多个简单行为组合成一个复杂行为,实现一个结构清晰和逻辑控制强的行为驱动集合。
附图说明
图1为本发明的复合行为驱动方法的流程图。
具体实施方式
下面,结合附图以及具体实施方式,对本发明做进一步描述:
一个行为根据其复杂程度可以分成简单行为和复合行为两类。复合行为都可以分解成一系列简单动作序列,反之,多个简单行为按照特定的顺序执行(串行或并行),即可组成复合行为。JSON是一种通用的对象描述格式,在信息技术领域,被广泛的使用,JSON格式的数据可以存储在使用该数据的服务器中,或存储在能够被这些服务器访问的网络位置。JSON通过键-值对来描述属性,将多个键值对使用{}组合在一起就可以描述一个包含多个属性的对象,对象中属性的值可以是对象,从而实现对象的嵌套。
首先,行为本身就是包括若干个属性的对象,使用JSON格式对一个行为进行描述可以概括为如下的JSON格式:
行为方法:{
行为名称:行为名称值,
行为执行前提条件:条件对象,
行为开始时间:开始时间值,
行为结束时间:技术时间值,
行为发起者:行为发起者名字或ID,
行为执行者:行为执行者名称或ID,
行为审核:审核者名称或ID,
行为状态:行为的当前状态,
行为结束处理:处理对象,
行为执行方式:执行方式值(串行、并行、简单任务或未使用),
行为方法:行为的具体操作
}
其中,行为的具体操作又可以包括另外一个或多个行为,可以理解为最外层的行为方法为最大的行为节点,嵌套在一个行为节点的行为方法中的行为理解为该行为节点的子行为节点,一个子行为节点也可以嵌套基于它的子行为节点,以此类推可以进行多层嵌套,实现复杂的行为描述。
参考图1为本发明的优选实施例,一种复合行为驱动方法,包括以下步骤:
S1:读取行为驱动集合文件,根据每个行为节点的开始时间和结束时间生成相应的定时器;
S2:当触发某个行为节点的定时器的开始时间,则解析该行为节点的执行前提条件,若执行前提条件未设定或者满足执行前提条件,则执行步骤S3;否则,更新该行为节点的行为状态为失败,执行步骤S4;
S3:根据该行为节点中的执行方式执行其中的行为方法,执行结束后更新该行为节点的行为状态为成功;
S4:根据该行为节点的行为状态执行对应的结束处理方法,并退出该节点。
其中,在步骤S3中,若该行为节点中的执行方式为串行执行,则按先后顺序执行行为方法中的子行为节点;若该行为节点中的执行方式为并行执行,则同时执行行为方法中的子行为节点;若该行为节点中的执行方式为简单执行,则根据执行行为方法中的行为索引执行相应的方法。行为驱动集合文件是指由JSON对象描述格式对一个或多个行为节点进行描述的文件。行为索引是指预定义的函数或者逻辑程序封装后所生成的索引值。
为了更好地理解本发明所描述的方案,下面以一具体例子进行描述。外出旅游定义为一个复合的行为,首先,将它分解成简单的行为序列:确定目的地、安排观光行程、预订机/车票、预定住宿酒店和出行,而且,这些简单的行为之间是有逻辑关系的(顺序或并列)。则整个外出旅游的行为驱动集合文件的描述如下:
行为方法:{
行为名称:“外出旅游”,
行为执行前提条件:“”,
行为开始时间:“2015-6-01”,
行为结束时间:“2015-6-30”,
行为发起者:"XXX",
行为执行者:"XXX",
行为审核:"XXX",
行为结束处理:“”,
行为执行方式:串行,
行为方法:[{行为名称:“确定旅游目的地”,
行为执行前提条件:“”,
行为开始时间:“2015-6-10”,
行为结束时间:“2015-6-11”,
行为发起者:"XXX",
行为执行者:"XXX",
行为审核:"XXX",
行为结束处理:{成功处理:继续,
失败处理:终止},
行为执行方式:简单行为,
行为方法:行为索引
},
{
行为名称:“安排观光行程”,
行为执行前提条件:“确定旅游目的地行为成功结束”,
行为开始时间:“2015-6-12”,
行为结束时间:“2015-6-13”,
行为发起者:"XXX",
行为执行者:"XXX",
行为审核:"XXX",
行为结束处理:{成功处理:继续,
失败处理:延迟},
行为执行方式:简单行为,
行为方法:行为索引
},
{
行为名称:“订房和订票”,
行为执行前提条件:“确定旅游目的地行为成功结束”,
行为开始时间:“2015-6-12”,
行为结束时间:“2015-6-13”,
行为发起者:"XXX",
行为执行者:"XXX",
行为审核:"XXX",
行为结束处理:{成功处理:继续,
失败处理:延迟},
行为执行方式:并行,
行为方法:[
{行为名称:“订票”,
行为执行前提条件:“确定旅游目的地行为成功结束”,
行为开始时间:“2015-6-12”,
行为结束时间:“2015-6-13”,
行为发起者:"XXX",
行为执行者:"XXX",
行为审核:"XXX",
行为结束处理:{成功处理:继续,
失败处理:终止流程},
行为执行方式:简单行为,
行为方法:行为索引
},
{
行为名称:“订房”,
行为执行前提条件:“确定旅游目的地行为成功结束”,
行为开始时间:“2015-6-12”,
行为结束时间:“2015-6-13”,
行为发起者:"XXX",
行为执行者:"XXX",
行为审核:"XXX",
行为结束处理:{成功处理:继续,
失败处理:终止流程},
行为执行方式:简单行为,
行为方法:行为索引
}
]
},
{
行为名称:“出行”,
行为执行前提条件:“确定旅游目的地、安排观光行程、订票、订房行为全部成功结束”,
行为开始时间:“2015-6-15”,
行为结束时间:“2015-6-19”,
行为发起者:"XXX",
行为执行者:"XXX",
行为审核:"XXX",
行为结束处理:{成功处理:继续,
失败处理:终止流程},
行为执行方式:简单行为,
行为方法:行为索引
}
]
}
从上面的例子可以得出,“外出旅游”为一个总的行为集合,即一个最大的行为节点,其包括多个子行为节点。“外出旅游”为整个行为集合的开始,不需要设置执行前提条件,而其中的子行为节点,例如“安排观光形成”这一行为则需要在“确定旅游目的地”行为结束后才能开始执行。每个行为节点均有其开始时间和结束时间,根据开始时间和结束时间生成相应的定时器,到达定时器的开始时间才能开始执行该行为,如果到达定时器的结束时间该行为还没执行结束,则该行为也被认为是失败的执行。
在执行一个行为时,需要根据其定义的行为执行方式按照相应的规则执行,例子中的“外出旅游”的行为执行方式为“串行”,则表示其中的子行为节点“确定旅游目的地”、“安排观光行程”、“订房和订票”和“出行”是按顺序执行的;例子中的“订房和订票”的行为执行方式为“并行”,则表示其中的子行为节点“订票”和“订房”是并列执行的;例子中的“订票”的行为执行方式为简单行为,则其根据行为索引调用对应的处理函数或者处理程序执行,例如根据“订票”的索引可以调用一个名为orderTicket()的程序,其功能就是系统中预定义好的一个订票功能程序。
在执行完一个行为节点时,会根据该行为当前的状态执行不同的行为结束处理,例如,例子中的“确定旅游目的地”,如果当前的行为状态为成功,则可以继续执行下一行为节点,如果当前的行为状态为失败,则整个行为被终止。
本发明的复合行为驱动方法的优点在于:通过预定义好一套完整的行为描述模式,根据每个行为的描述执行不同的动作,根据前面行为的执行状态触发后面的行为,使行为与行为之间具有关联性,通过组合和嵌套的关系便可以将多个简单行为组合成一个复杂行为,实现一个结构清晰和逻辑控制强的行为驱动集合。
本发明还公开了一种复合行为驱动装置,包括以下模块:
定时器生成模块,用于读取行为驱动集合文件,根据每个行为节点的开始时间和结束时间生成相应的定时器;
定时器触发模块,用于当触发某个行为节点的定时器的开始时间,则解析该行为节点的执行前提条件,若执行前提条件未设定或者满足执行前提条件,则执行方法执行模块;否则,更新该行为节点的行为状态为失败,执行结束处理模块;
方法执行模块,用于根据该行为节点中的执行方式执行其中的行为方法,执行结束后更新该行为节点的行为状态为成功;
结束处理模块,用于根据该行为节点的行为状态执行对应的结束处理方法,并退出该节点。
优选的,在方法执行模块中,若该行为节点中的执行方式为串行执行,则按先后顺序执行行为方法中的子行为节点;若该行为节点中的执行方式为并行执行,则同时执行行为方法中的子行为节点;若该行为节点中的执行方式为简单执行,则根据执行行为方法中的行为索引执行相应的方法。
优选的,所述行为索引为预定义的函数或者逻辑程序封装后所生成的索引值。
优选的,所述行为驱动集合文件为由JSON对象描述格式对一个或多个行为节点进行描述的文件。
对本领域的技术人员来说,可根据以上描述的技术方案以及构思,做出其它各种相应的改变以及形变,而所有的这些改变以及形变都应该属于本发明权利要求的保护范围之内。
Claims (8)
1.一种复合行为驱动方法,其特征在于,包括以下步骤:
S1:读取行为驱动集合文件,根据每个行为节点的开始时间和结束时间生成相应的定时器;
S2:当触发某个行为节点的定时器的开始时间,则解析该行为节点的执行前提条件,若执行前提条件未设定或者满足执行前提条件,则执行步骤S3;否则,更新该行为节点的行为状态为失败,执行步骤S4;
S3:根据该行为节点中的执行方式执行其中的行为方法,执行结束后更新该行为节点的行为状态为成功;
S4:根据该行为节点的行为状态执行对应的结束处理方法,并退出该节点。
2.根据权利要求1所述的复合行为驱动方法,其特征在于,在步骤S3中,若该行为节点中的执行方式为串行执行,则按先后顺序执行行为方法中的子行为节点;若该行为节点中的执行方式为并行执行,则同时执行行为方法中的子行为节点;若该行为节点中的执行方式为简单执行,则根据执行行为方法中的行为索引执行相应的方法。
3.根据权利要求2所述的复合行为驱动方法,其特征在于,所述行为索引为预定义的函数或者逻辑程序封装后所生成的索引值。
4.根据权利要求1所述的复合行为驱动方法,其特征在于,所述行为驱动集合文件为由JSON对象描述格式对一个或多个行为节点进行描述的文件。
5.一种复合行为驱动装置,其特征在于,包括以下模块:
定时器生成模块,用于读取行为驱动集合文件,根据每个行为节点的开始时间和结束时间生成相应的定时器;
定时器触发模块,用于当触发某个行为节点的定时器的开始时间,则解析该行为节点的执行前提条件,若执行前提条件未设定或者满足执行前提条件,则执行方法执行模块;否则,更新该行为节点的行为状态为失败,执行结束处理模块;
方法执行模块,用于根据该行为节点中的执行方式执行其中的行为方法,执行结束后更新该行为节点的行为状态为成功;
结束处理模块,用于根据该行为节点的行为状态执行对应的结束处理方法,并退出该节点。
6.根据权利要求5所述的复合行为驱动装置,其特征在于,在方法执行模块中,若该行为节点中的执行方式为串行执行,则按先后顺序执行行为方法中的子行为节点;若该行为节点中的执行方式为并行执行,则同时执行行为方法中的子行为节点;若该行为节点中的执行方式为简单执行,则根据执行行为方法中的行为索引执行相应的方法。
7.根据权利要求6所述的复合行为驱动装置,其特征在于,所述行为索引为预定义的函数或者逻辑程序封装后所生成的索引值。
8.根据权利要求5所述的复合行为驱动装置,其特征在于,所述行为驱动集合文件为由JSON对象描述格式对一个或多个行为节点进行描述的文件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510382794.7A CN105045580A (zh) | 2015-06-30 | 2015-06-30 | 一种复合行为驱动方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510382794.7A CN105045580A (zh) | 2015-06-30 | 2015-06-30 | 一种复合行为驱动方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105045580A true CN105045580A (zh) | 2015-11-11 |
Family
ID=54452145
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510382794.7A Pending CN105045580A (zh) | 2015-06-30 | 2015-06-30 | 一种复合行为驱动方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105045580A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105677331A (zh) * | 2015-12-30 | 2016-06-15 | 浙江大华系统工程有限公司 | 一种任务执行方法和装置 |
CN109634758A (zh) * | 2018-12-10 | 2019-04-16 | 四川长虹电器股份有限公司 | 基于json文件控制事件和行为的方法及中间件平台 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101005397A (zh) * | 2006-01-16 | 2007-07-25 | 中国科学院计算技术研究所 | 一种网格环境下事件驱动的动态服务组合方法 |
CN101266669A (zh) * | 2008-05-06 | 2008-09-17 | 广州市中联创通电脑有限公司 | 基于计划模板的项目过程工作流系统及其实现方法 |
CN102799474A (zh) * | 2012-06-21 | 2012-11-28 | 浙江工商大学 | 一种基于可靠性驱动的云资源容错调度方法 |
CN102945516A (zh) * | 2012-10-19 | 2013-02-27 | 北京神舟航天软件技术有限公司 | 多级网络计划的进度分析方法 |
CN104331315A (zh) * | 2014-10-31 | 2015-02-04 | 北京思特奇信息技术股份有限公司 | 一种任意层次json对象的解析与生成方法及系统 |
-
2015
- 2015-06-30 CN CN201510382794.7A patent/CN105045580A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101005397A (zh) * | 2006-01-16 | 2007-07-25 | 中国科学院计算技术研究所 | 一种网格环境下事件驱动的动态服务组合方法 |
CN101266669A (zh) * | 2008-05-06 | 2008-09-17 | 广州市中联创通电脑有限公司 | 基于计划模板的项目过程工作流系统及其实现方法 |
CN102799474A (zh) * | 2012-06-21 | 2012-11-28 | 浙江工商大学 | 一种基于可靠性驱动的云资源容错调度方法 |
CN102945516A (zh) * | 2012-10-19 | 2013-02-27 | 北京神舟航天软件技术有限公司 | 多级网络计划的进度分析方法 |
CN104331315A (zh) * | 2014-10-31 | 2015-02-04 | 北京思特奇信息技术股份有限公司 | 一种任意层次json对象的解析与生成方法及系统 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105677331A (zh) * | 2015-12-30 | 2016-06-15 | 浙江大华系统工程有限公司 | 一种任务执行方法和装置 |
CN109634758A (zh) * | 2018-12-10 | 2019-04-16 | 四川长虹电器股份有限公司 | 基于json文件控制事件和行为的方法及中间件平台 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Lohmann et al. | Analyzing interacting BPEL processes | |
US5754760A (en) | Automatic software testing tool | |
Simmonds et al. | Runtime monitoring of web service conversations | |
AU2012100128A4 (en) | A computer implemented system and method for indexing and optionally annotating use cases and generating test scenarios therefrom | |
CN110944048B (zh) | 业务逻辑配置方法及装置 | |
US20110016452A1 (en) | Method and system for identifying regression test cases for a software | |
Vogel | mRUBiS: An exemplar for model-based architectural self-healing and self-optimization | |
CN108959068A (zh) | 软件界面测试方法、设备及存储介质 | |
CN111552633A (zh) | 接口的异常调用测试方法、装置、计算机设备及存储介质 | |
Marzolla | Simulation-based performance modeling of UML software architectures. | |
CN106873957A (zh) | 一种业务流程的处理方法和设备 | |
CN113792341B (zh) | 应用程序的隐私合规自动化检测方法、装置、设备及介质 | |
Gan et al. | Runtime monitoring of web service conversations | |
CN102947791A (zh) | 用户增强的反向工程 | |
CN112988185A (zh) | 云应用更新方法、装置、系统、电子设备及存储介质 | |
CN110532056A (zh) | 一种应用于用户界面中的控件识别方法及装置 | |
Gehlot | From petri NETS to colored petri NETS: A tutorial introduction to NETS based formalism for modeling and simulation | |
CN112882930A (zh) | 自动化测试方法、装置、存储介质及电子设备 | |
CN105045580A (zh) | 一种复合行为驱动方法及装置 | |
CN107273112A (zh) | 一种礼物榜单信息显示方法及装置 | |
Maurer et al. | People-centered software development: an overview of agile methodologies | |
CN115794545A (zh) | 运维数据的自动化处理方法及其相关设备 | |
CN110738384B (zh) | 事件序列的校验方法及系统 | |
CN111679924B (zh) | 构件化软件系统可靠性仿真方法、装置及电子设备 | |
CN115098362A (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 | ||
CB02 | Change of applicant information |
Address after: Tianhe District Tianyuan road Guangzhou City, Guangdong province 510410 No. 401 Tianyuan Plaza building E1 Applicant after: GUANGZHOU ZHIDIAN NETWORK TECHNOLOGY CO., LTD. Address before: Tianhe District Tianyuan road Guangzhou City, Guangdong province 510410 No. 401 Tianyuan Plaza building E1 Applicant before: GUANGZHOU ZHIDIAN NETWORK TECHNOLOGY CO., LTD. |
|
COR | Change of bibliographic data | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20151111 |
|
RJ01 | Rejection of invention patent application after publication |