CN101216906A - 一种流程控制方法及一种流程引擎 - Google Patents
一种流程控制方法及一种流程引擎 Download PDFInfo
- Publication number
- CN101216906A CN101216906A CNA2007103083951A CN200710308395A CN101216906A CN 101216906 A CN101216906 A CN 101216906A CN A2007103083951 A CNA2007103083951 A CN A2007103083951A CN 200710308395 A CN200710308395 A CN 200710308395A CN 101216906 A CN101216906 A CN 101216906A
- Authority
- CN
- China
- Prior art keywords
- flow
- node
- behavior node
- flow process
- behavior
- 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
Images
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种流程控制方法,包括:生成定义流程执行规则的流程配置文件,所述流程由行为节点组成;解析所述流程配置文件,将所述流程配置文件装载成流程配置对象;将所述流程配置对象转换成行为节点对象;解释执行所述行为节点对象。本发明可以在节省成本的前提下,有效提高流程引擎的可扩展性。
Description
技术领域
本发明涉及计算机流程处理领域,特别是涉及一种流程控制方法以及一种流程引擎。
背景技术
在诸多应用系统中,如OA系统、MIS系统或工作流系统等,流程引擎是系统流程控制的重要环节,可直接影响到系统的可用性和效率以及软件质量的提高。流程引擎包含最基本的对象和服务,以及用于解决流程运行问题的调度机制和执行机制,主要用于满足流程基本运行。具体而言,流程引擎是确保流程按照既有的定义,从一个节点运行到另一个节点,并正确执行当前节点。通常,流程引擎从以下四个方面来控制流程:
(1)流程定义:即用一套定义对象,来诠释所定义的流程;
(2)流程调度:即提供什么的机制,可以确保流程能够处理复杂的“流程图结构”,诸如串行、并行、分支、聚合等等,并在这复杂结构中确保流程从一个节点运行到另一个节点;
(3)流程执行:即当流程运行到某个节点的时候,需要一套机制来解决:是否执行此节点,并如何执行此节点的问题,并维持节点状态生命周期;
(4)流程实例对象:用一整套流程实例对象来描述流程实例运行的状态和结果。
然而,在现有的流程引擎设计中,流程是静态的,流程之间的连接也是静态的,而在某些大型系统中,业务流程非常复杂,它们与多个外部服务交互,并定义了多个链接流程,而且其中的某些流程在设计时可能是不可知的。因此,必须在业务流程内部构建所有可能的调出以及用于确定要使用的流程嵌套组合结构,这将使该流程复杂化,并且由于可扩展性有限,随着流程的动态变化,还可能导致对整个业务流程重新修改,从而浪费较多的成本。
所以,本领域技术人员迫切需要发展一种能在节省成本的前提下,提高流程引擎的可扩展性的方法。
发明内容
本发明所要解决的技术问题是提供一种流程控制方法,用以在节省成本的前提下,有效提高流程控制的灵活性。
本发明的另一个目的是将上述识别方法应用于实际中,提供一种流程引擎,用以提高流程引擎的可扩展性,并以尽可能低的成本保证上述方法的实现和应用。
为解决上述技术问题,本发明实施例公开了一种流程控制方法,包括:
生成定义流程执行规则的流程配置文件,所述流程由行为节点组成;
解析所述流程配置文件,将所述流程配置文件装载成流程配置对象;
将所述流程配置对象转换成行为节点对象;
解释执行所述行为节点对象。
优选的,所述行为节点包括顺序流程节点,所述行为节点对象转换步骤包括:
将所述流程配置对象中的步骤转换为行为节点。
优选的,所述行为节点还包括分支流程节点,所述行为节点对象转换步骤还包括:
将所述流程配置对象中的条件表达式转换为分支条件,分别设置所述条件成立的行为节点和条件不成立的行为节点。
优选的,所述行为节点还包括服务执行动作节点,所述行为节点对象转换步骤包括:
创建服务执行动作节点。
优选的,所述分支流程节点包括条件分支流程节点和循环流程节点。
优选的,所述解释执行步骤包括:
创建所述服务执行动作节点的命名空间;
获取流程执行数据,将所述流程执行数据映射至相应的命名空间;
将所述流程执行数据存储至流程上下文中。
本发明实施例还公开了一种流程引擎,包括:
流程定制单元,用于生成定义流程执行规则的流程配置文件,所述流程由行为节点组成;
解析单元,用于解析所述流程配置文件,将所述流程配置文件装载成流程配置对象;
转换单元,用于将所述流程配置对象转换成行为节点对象;
执行单元,用于解释执行所述行为节点对象。
优选的,所述行为节点包括顺序流程节点,所述转换单元包括:
顺序流程转换子单元,用于将所述流程配置对象中的步骤转换为行为节点。
优选的,所述行为节点还包括分支流程节点,所述转换单元还包括:
分支流程转换子单元,用于将所述流程配置对象中的条件表达式转换为分支条件,分别设置所述条件成立的行为节点和条件不成立的行为节点。
优选的,所述行为节点还包括服务执行动作节点,所述转换单元包括:
动作节点创建子单元,用于创建服务执行动作节点。
优选的,所述分支流程节点包括条件分支流程节点和循环流程节点。
优选的,所述执行单元包括:
命名空间创建子单元,用于创建所述服务执行动作节点的命名空间;
映射子单元,用于获取流程执行数据,将所述流程执行数据映射至相应的命名空间;
上下文处理子单元,用于将所述流程执行数据存储至流程上下文中。
与现有技术相比,本发明具有以下优点:
首先,本发明可以按命名空间存取数据,在流程中可配置表达式映射来控制动作节点输入输出数据,可以进行流程的动态识别和动态计算,还可以实现分支的任意嵌套,动作节点的实现任意扩展,从而可以有效节约成本;有效提高了流程引擎的可扩展性。
再者,本发明对于服务提供商来说,技术实现简单,无技术障碍,无特殊保密算法,成本和风险较低。
附图说明
图1是本发明的一种流程控制方法实施例的流程图;
图2是解析装载一种流程配置的过程示意图;
图3是通过解析装载生成的一棵流程节点树的示意图;
图4是一种解释执行流程的过程示意图;
图5是本发明的一种流程引擎实施例的结构框图;
图6是应用图5所示的实施例进行流程控制的流程图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
本发明可用于众多通用或专用的计算系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
本发明可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本发明,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
参考图1,示出了本发明的一种流程控制方法实施例的流程图,可以包括以下步骤:
步骤101、生成定义流程执行规则的流程配置文件,所述流程由行为节点组成;
步骤102、解析所述流程配置文件,将所述流程配置文件装载成流程配置对象;
步骤103、将所述流程配置对象转换成行为节点对象;
步骤104、解释执行所述行为节点对象。
在本实施例中,流程是指若干行为动作的顺序或者选择组合。基本流程可以包括以下四种类型:顺序流程、条件分支流程、循环流程和异常流程,其中,顺序流程是指按顺序执行所有流程节点的流程;条件分支流程是指根据条件判断结果来选择走哪个流程节点的流程;循环流程是指循环执行一个或一组流程节点的流程,循环次数可以预先设置;异常流程是指当流程执行出现异常时执行的流程。在实际中,可以任意组合上述基本流程以满足实际需要。
具体而言,流程可以由行为节点组成,所述行为节点可以包括流程节点和动作节点,在本实施例中,首先通过定义流程执行规则,然后按照所述流程执行规则依次执行所有行为节点。可以理解的是,流程节点是流程的技术实现,它代表一个子流程,即流程内部再嵌套的流程。与上述基本流程对应,流程节点也分为四类:顺序流程节点、条件分支流程节点、循环流程节点、异常流程节点。动作节点为实际执行的功能,例如:消息、文件操作、服务执行、事务保证等。可以看出,通过流程节点的组合,即可实现流程的嵌套组合。
应用本发明的一个优选实施例为,以组合服务作为流程实现的载体,流程执行规则的定义通过流程配置来实现,流程配置是服务配置文件的一部分,可以通过解析装载成为流程配置对象,同时作为服务配置对象的属性。将流程配置对象转换成可执行的行为节点对象(作为组合服务的属性);然后,解释执行所述行为节点对象。
优选的,所述行为节点包括顺序流程节点、分支流程节点和/或服务执行动作节点,所述步骤103可以包括以下子步骤:
子步骤A1、将所述流程配置对象中的步骤转换为行为节点;
和/或,
子步骤A2、将所述流程配置对象中的条件表达式转换为分支条件,分别设置所述条件成立的行为节点和条件不成立的行为节点;
和/或,
子步骤A3、创建服务执行动作节点。
在实际中,所述分支流程节点可以包括条件分支流程节点和循环流程节点。
在这种情况下,所述步骤104可以包括以下子步骤:
子步骤B1、创建所述服务执行动作节点的命名空间;
子步骤B2、获取流程执行数据,将所述流程执行数据映射至相应的命名空间;
子步骤B3、将所述流程执行数据存储至流程上下文中。
为使本领域技术人员更好地理解本发明,以下以将本实施例的具体应用为例进行说明。
一、流程定制:
在本实施例中,流程的执行动作可以包括映射和服务。其中,映射可以包括服务前映射、服务执行成功映射、服务执行错误映射和服务结果返回映射。组合服务的流程定制可以通过配置来进行描述。
例如,生成服务的配置文件为service.xml,其中描述了流程的所有步骤。服务的DTD文件(service.dtd)中描述流程定制的部分如以下代码所示:
<!ELEMENT action(before-mapping?,after-mapping?)>
<!--
name 这个步骤的名称。在映射过程中可能会用到。
service-name这个步骤执行的服务名称。
error-action当服务执行出错或者返回失败时,采取何种措施。
reverse-from-last:从上一个执行成功的服务开始冲正
reverse:从当前服务开始冲正
continue:继续执行
break:错误返回,不执行冲正
-->
<!ATTLIST action
name CDATA#REQUIRED
service-name CDATA#REQUIRED
error-action(reverse-from-last|reverse|continue|break)″reverse″
>
<!--
服务执行过程中的数据映射。
映射输入:
in=服务输入数据
action名+″.in″=内嵌服务输入
action名+″.out″=内嵌服务输出
缺省=action逆序输出+in
映射缺省Base:
before-mapping=无
on-success=当前action的out
on-error=当前action的out
映射输出:
before-mapping=当前action的in
on-success=缺省
on-error=缺省
-->
<!ELEMENT before-mapping(item*)>
<!ATTLIST before-mapping
base CDATA#IMPLIED
overwrite CDATA#IMPLIED
>
<!ELEMENT after-mapping(on-success?,on-error?)>
<!ELEMENT on-success(item*)>
<!ELEMENT on-error(item*)>
<!ATTLIST on-success
base CDATA #IMPLIED
overwrite CDATA #IMPLIED
>
<!ATTLIST on-error
base CDATA #IMPLIED
overwrite CDATA #IMPLIED
>
<!--
服务返回数据的映射。
映射输入:
in=服务输入数据
action名+″.in″=内嵌服务输入
action名+″.out″=内嵌服务输出
缺省=action逆序输出+in
映射缺省Base:缺省
映射输出:服务输出数据
-->
<!ELEMENT response-mapping(item*)>
<!ATTLIST response-mapping
base CDATA #IMPLIED
overwrite CDATA #IMPLIED
>
<!--
组合服务执行失败时返回数据的映射。
映射输入:
in=服务输入数据
action名+″.in″=内嵌服务输入
action名+″.out″=内嵌服务输出
缺省=action逆序输出+in
映射缺省Base:缺省
映射输出:服务错误输出数据
-->
<!ELEMENT error-mapping(item*)>
<!ATTLIST error-mapping
base CDATA #IMPLIED
overwrite CDATA #IMPLIED
>
<!--
组合服务执行出错时返回数据的映射。
映射输入:
in=服务输入数据
缺省=系统错误信息字段+in
映射缺省Base:无
映射输出:服务错误输出数据
-->
<!ELEMENT system-error-mapping(item*)>
<!ATTLIST system-error-mapping
base CDATA #IMPLIED
overwrite CDATA #IMPLIED
>
公知的是,DTD是Document Type Definition的缩写。它的作用是确保XML文件的正确性,具体而言,DTD定义了XML文档中可用的合法元素。通过定义一系列合法的元素决定了XMl文档的内部结构。通常,格式正确的XML文档是满足以下三个基本结构需求的文档:(1)有一个包含所有其它元素的父(或根)元素;(2)每个开始标记都有结束标记;(3)所有元素都正确嵌套的,如以下代码所示:
<person>
<firstname>Jane</firstname>
<lastname>Fung</lastname>
<nothing/>
</person>
在这种情况下,DTD适合三个基本用途:(1)对标记编制文档;(2)加强标记参数内部的一致性;(3)使XML语法分析器能够确认文档,如以下代码所示:
<!ELEMENT person(firstname,lastname)>
<!ELEMENT firstname(#PCDATA)>
<!ELEMENT lastname(#PCDATA)>
<!ELEMENT nothing EMPTY>
其中,DTD的第一行定义了上述XML文档的父元素:person;person元素有两个子元素:firstname和lastname。第二和第三行包含了元素属性#PCDATA,它表明firstname和lastname元素可能包含经过语法分析的字符数据(在这种情况下是文本)。TD文件的最后一行描述了一个空标记:nothing。从上述DTD的示例代码可以看出,任何阅读XML文档的人(以及对它进行语法分析的语法分析器)都知道person元素仅包含两个文本元素:firstname和lastname。此外,上述DTD代码还规定,在整个文档中,firstname元素必须在lastname元素之前出现。
二、流程解析
流程定制好之后,进行流程解析装载。具体解析装载过程可以参考图2,具体可以包括以下步骤:
步骤201、读取所述配置文件,将所述配置文件解析装载成配置对象;
步骤202、服务启动,将所述配置对象转换成流程对象;
步骤203、判断所述流程对象的行为节点类型,若为顺序流程节点,则执行步骤2041-2044;若为分支流程节点,则执行步骤2051-2054;若为服务执行动作节点,则执行步骤2061-2062;
步骤2041:开始转换顺序流程节点;
步骤2042:创建顺序流程节点;
步骤2043:判断是否还有配置步骤未转换,如果是,则执行步骤2044;如果否,则结束;
步骤2044:将所述配置对象中的步骤转换成行为节点。
步骤2051:开始转换分支流程节点;
步骤2052:创建分支流程节点;
步骤2053:将所述配置对象中的条件表达式转换成分支条件;
步骤2054:分别设置条件成立和不成立对应的行为节点。
步骤2061、开始转换服务执行动作节点;
步骤2062、创建服务执行动作节点。
经过上述处理,流程可以被解析装载成如图3所示的一棵流程节点树。
优选的是,条件分支流程和循环流程的配置都可以采用统一的表达式解析框架来解析装载成对应的条件分支流程节点和循环流程节点。实际解析时,可以把这两种流程配置都当作分支流程配置来解析装载。服务执行动作节点可以理解为动作节点的一个具体实现。动作节点具备扩展性,还可以根据实际需要实现诸如文件处理、消息处理等其它动作节点。
需要说明的是,XML解析是将XML数据从其序列化字符串格式转换为分层格式的过程,在本实施例中,本领域技术人员采用任一种XML解析方法都是可行的,例如,采用DB2数据库管理器隐式或显式执行XML解析,或者,用PHP工具包expat解析XML等,例如,一种优选的XML解析方法为:
(一)开发编写XML配置文件、使用规则标签编写XML规则脚本。其中xml文件又可分成两类,一类是与装载任务对象对应的配置文件、规则脚本,以下统称为装载脚本;一类是与系统组件对象对应的配置文件、规则脚本,以下统称为组件脚本。
(二)解析装载脚本,在装载管理器中生成装载任务:
1、用装载脚本的规则脚本产生SAX解析器;
2、产生的SAX解析器解析装载脚本;
3、解析器动态生成装载任务序列,每个装载任务序列都有一URI(unique resource identifier)唯一标识。
(三)指定装载任务URI,装载由URI标识的装载任务序列,以创建组件对象:
1、按任务序列取得组件脚本与对应的规则脚本;
2、用组件脚本的规则脚本产生SAX解析器;
3、产生的SAX解析器解析组件脚本;
4、SAX解析器返回栈顶组件对象;
5、遍历URI标识的装载任务序列。
当然,上述方法仅仅用于举例,本领域技术人员采用任一种XML解析方法都是可行的,本发明对此不需要进行限定。
三、流程执行:
当组合服务开始执行时,会将组合服务的行为节点对象解释执行。具体的流程执行过程如图4所示,可以包括以下步骤:
步骤401、创建服务结果列表;
步骤402、判断行为节点的类型,若所述行为节点为循环流程节点,则执行步骤403;若所述行为节点为条件分支流程节点,则执行步骤404;若所述行为节点为顺序流程节点,则执行步骤405;若所述行为节点为服务调用动作节点,则执行步骤4061-4063;若所述行为节点为映射动作节点,则执行步骤407;
步骤403、执行满足循环条件的流程;
步骤404、执行条件判断,并将执行结果作为下一次流程执行的参数;
步骤405、获取流程执行队列,依次执行所述流程;
步骤408、判断所述步骤403、404和405的递归调用是否结束,如果是,则执行步骤409;如果否,则返回步骤402;
步骤409、判断流程执行是否出现异常,如果是,则执行步骤410;如果否,则执行步骤411;
步骤410、在所述服务结果列表中记录异常信息;
步骤411、判断流程执行是否成功,如果是,则执行步骤412;如果否,则执行步骤413;
步骤412、执行服务结果返回映射,将服务结果列表的状态置为成功;
步骤413、执行服务结果错误映射,将服务结果列表的状态置为错误;
步骤414、依据所述服务结果列表的状态设置服务结果列表的输出数据;
步骤4061、构造结果数据,执行服务前映射;
步骤4062、执行服务,添加服务执行结果数据到上下文数据,并添加到服务结果列表中;
步骤4063、执行服务后映射;
步骤407、执行映射;
步骤415、返回映射结果。
如图4所示,流程中的每一个步骤最终是通过服务动作节点来执行的。在服务执行动作节点真正执行前和执行后都可以进行数据映射处理。数据映射是指从一个统一数据到另一个统一数据的转换,映射通常包括源和目的,源是一个表达式,目的为一个变量名称。如:a.b.c=x+y*5,a.b.c为目的变量,x+y*5为源表达式。在映射中,数据来源可能会有多个,如组合服务中的第2个服务的映射,可能需要引用到第1个服务的输入或输出数据,要求映射能够在数据域名相同情况下加以区分,并能够通过唯一的命名访问到这类数据。统一数据表达式数据实现了表达式数据接口,它支持多个数据来源。映射等式左边是一个名字,右边是一个表达式,通过映射条目将二者对应起来。映射实现类,内部采用List来顺序存储多条映射条目,执行中顺序执行映射条目中的表达式,将得到的值存储到相应名字对应的数据中;Base属性用来选择参与映射的数据,Overwrite属性用来处理数据覆盖。通过一个映射表达式来表示映射关系,然后通过解释该表达式的方法来实现映射。
通过映射处理,能够创建每一个服务动作节点的命名空间。每一个服务对应的输入输出数据都可以通过映射存储到相应的命名空间数据区。这些数据最终会存放在流程全局的上下文数据集合中。在整个流程执行过程中,都可以对这些数据进行相应的操作。映射的实现采用了表达式机制,不仅可以通过值的映射实现对数据进行静态映射,还可以通过表达式的实时计算进行动态的映射。更进一步地,还可以对表达式进行扩展,实现一些带有比较复杂逻辑的映射。由于引入了表达式机制,流程的控制(包括条件分支、循环分支等)都可以进行实时计算,从而使流程可以在运行期间根据实际数据动态执行。
可以看出,本实施例优选利用嵌入流程中的表达式进行实时计算,对流程进行解释执行;并且在流程中每一步都创建相应命名空间的数据,存放在流程全局的上下文数据集合中。此外,本实施例还可以根据配置进行流程解析建立分支树,实现节点执行动作和分支的扩展;并将表达式映射作为服务调用动作节点的一部分与流程执行结合起来。
对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
参考图5,示出了本发明的一种流程引擎实施例的结构框图,可以包括以下单元:
流程定制单元501,用于生成定义流程执行规则的流程配置文件,所述流程由行为节点组成;
解析单元502,用于解析所述流程配置文件,将所述流程配置文件装载成流程配置对象;
转换单元503,用于将所述流程配置对象转换成行为节点对象;
执行单元504,用于解释执行所述行为节点对象。
优选的是,所述行为节点可以包括顺序流程节点,所述转换单元可以包括:
顺序流程转换子单元,用于将所述流程配置对象中的步骤转换为行为节点。
优选的是,所述行为节点还可以包括分支流程节点,在这种情况下,所述转换单元还可以包括:
分支流程转换子单元,用于将所述流程配置对象中的条件表达式转换为分支条件,分别设置所述条件成立的行为节点和条件不成立的行为节点。
优选的是,所述行为节点还可以包括服务执行动作节点,在这种情况下,所述转换单元还可以包括:
动作节点创建子单元,用于创建服务执行动作节点。
优选的是,所述分支流程节点包括条件分支流程节点和循环流程节点。
优选的是,所述执行单元可以包括:
命名空间创建子单元,用于创建所述服务执行动作节点的命名空间;
映射子单元,用于获取流程执行数据,将所述流程执行数据映射至相应的命名空间;
上下文处理子单元,用于将所述流程执行数据存储至流程上下文中。
参考图6,示出了应用图5所示的实施例进行流程控制的流程图,可以包括以下步骤:
步骤601、流程定制单元生成定义流程执行规则的流程配置文件,所述流程由行为节点组成;
步骤602、解析单元解析所述流程配置文件,将所述流程配置文件装载成流程配置对象;
步骤603、转换单元将所述流程配置对象转换成行为节点对象;
步骤604、执行单元解释执行所述行为节点对象。
对于图5所示的流程引擎实施例而言,由于其基本相应于前述方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
可以看出,本发明的流程引擎可以进行流程的动态识别和动态计算,从而可以有效节约成本;并且,本发明可以按命名空间存取数据,在流程中可配置表达式映射来控制动作节点输入输出数据,从而可以实现分支的任意嵌套,动作节点的实现任意扩展,有效提高了流程引擎的可扩展性。
以上对本发明所提供的一种流程控制的方法及一种流程引擎进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (12)
1.一种流程控制方法,其特征在于,包括:
生成定义流程执行规则的流程配置文件,所述流程由行为节点组成;
解析所述流程配置文件,将所述流程配置文件装载成流程配置对象;
将所述流程配置对象转换成行为节点对象;
解释执行所述行为节点对象。
2.如权利要求1所述的方法,其特征在于,所述行为节点包括顺序流程节点,所述行为节点对象转换步骤包括:
将所述流程配置对象中的步骤转换为行为节点。
3.如权利要求1或2所述的方法,其特征在于,所述行为节点还包括分支流程节点,所述行为节点对象转换步骤还包括:
将所述流程配置对象中的条件表达式转换为分支条件,分别设置所述条件成立的行为节点和条件不成立的行为节点。
4.如权利要求3所述的方法,其特征在于,所述行为节点还包括服务执行动作节点,所述行为节点对象转换步骤包括:
创建服务执行动作节点。
5.如权利要求2所述的方法,其特征在于,所述分支流程节点包括条件分支流程节点和循环流程节点。
6.如权利要求3所述的方法,其特征在于,所述解释执行步骤包括:
创建所述服务执行动作节点的命名空间;
获取流程执行数据,将所述流程执行数据映射至相应的命名空间;
将所述流程执行数据存储至流程上下文中。
7.一种流程引擎,其特征在于,包括:
流程定制单元,用于生成定义流程执行规则的流程配置文件,所述流程由行为节点组成;
解析单元,用于解析所述流程配置文件,将所述流程配置文件装载成流程配置对象;
转换单元,用于将所述流程配置对象转换成行为节点对象;
执行单元,用于解释执行所述行为节点对象。
8.如权利要求7所述的流程引擎,其特征在于,所述行为节点包括顺序流程节点,所述转换单元包括:
顺序流程转换子单元,用于将所述流程配置对象中的步骤转换为行为节点。
9.如权利要求7或8所述的流程引擎,其特征在于,所述行为节点还包括分支流程节点,所述转换单元还包括:
分支流程转换子单元,用于将所述流程配置对象中的条件表达式转换为分支条件,分别设置所述条件成立的行为节点和条件不成立的行为节点。
10.如权利要求9所述的流程引擎,其特征在于,所述行为节点还包括服务执行动作节点,所述转换单元包括:
动作节点创建子单元,用于创建服务执行动作节点。
11.如权利要求8所述的流程引擎,其特征在于,所述分支流程节点包括条件分支流程节点和循环流程节点。
12.如权利要求9所述的流程引擎,其特征在于,所述执行单元包括:
命名空间创建子单元,用于创建所述服务执行动作节点的命名空间;
映射子单元,用于获取流程执行数据,将所述流程执行数据映射至相应的命名空间;
上下文处理子单元,用于将所述流程执行数据存储至流程上下文中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2007103083951A CN101216906A (zh) | 2007-12-29 | 2007-12-29 | 一种流程控制方法及一种流程引擎 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2007103083951A CN101216906A (zh) | 2007-12-29 | 2007-12-29 | 一种流程控制方法及一种流程引擎 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101216906A true CN101216906A (zh) | 2008-07-09 |
Family
ID=39623335
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2007103083951A Pending CN101216906A (zh) | 2007-12-29 | 2007-12-29 | 一种流程控制方法及一种流程引擎 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101216906A (zh) |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102222110A (zh) * | 2011-06-28 | 2011-10-19 | 用友软件股份有限公司 | 数据处理装置和数据处理方法 |
CN101610265B (zh) * | 2009-07-24 | 2012-05-09 | 深圳市永达电子股份有限公司 | 一种业务工作流的流程识别方法 |
CN102508672A (zh) * | 2011-12-02 | 2012-06-20 | 方正国际软件有限公司 | 图形化配置执行java的方法 |
CN102880472A (zh) * | 2012-09-28 | 2013-01-16 | 方正国际软件有限公司 | 流程引擎中进行数据存取的系统 |
CN104536431A (zh) * | 2014-11-27 | 2015-04-22 | 北京电子工程总体研究所 | 飞行器发射流程可配置的显控方法及装置 |
CN105630430A (zh) * | 2014-11-03 | 2016-06-01 | 北大方正集团有限公司 | 一种印刷流程软件中用于进行智能工作的方法及装置 |
CN106155718A (zh) * | 2015-04-02 | 2016-11-23 | 阿里巴巴集团控股有限公司 | 流程引擎实现方法及流程引擎系统 |
CN108256716A (zh) * | 2016-12-29 | 2018-07-06 | 同方威视技术股份有限公司 | 基于表来配置/执行流程和/或原子流程的方法和设备 |
CN108470273A (zh) * | 2018-03-28 | 2018-08-31 | 凌云光技术集团有限责任公司 | 项目开发方法及装置 |
CN109544113A (zh) * | 2018-11-23 | 2019-03-29 | 四川长虹电器股份有限公司 | 一种基于有限状态机的工作流引擎建模方法及流程管理系统 |
CN109753314A (zh) * | 2017-11-01 | 2019-05-14 | 南京南瑞继保电气有限公司 | 一种可配置的流程自动执行方法及系统 |
CN110956025A (zh) * | 2018-09-27 | 2020-04-03 | 长沙博为软件技术股份有限公司 | 一种基于流程模板复用的方法 |
CN111104181A (zh) * | 2019-12-13 | 2020-05-05 | 中关村科技软件股份有限公司 | 一种可视化编辑任务流程的网页数据填报系统 |
CN111104102A (zh) * | 2019-11-20 | 2020-05-05 | 杭州端点网络科技有限公司 | 一种用于构建多业务场景自动化流水线的方法 |
CN113656116A (zh) * | 2021-08-18 | 2021-11-16 | 中国邮政储蓄银行股份有限公司 | 业务流程的处理方法和装置 |
-
2007
- 2007-12-29 CN CNA2007103083951A patent/CN101216906A/zh active Pending
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101610265B (zh) * | 2009-07-24 | 2012-05-09 | 深圳市永达电子股份有限公司 | 一种业务工作流的流程识别方法 |
CN102222110A (zh) * | 2011-06-28 | 2011-10-19 | 用友软件股份有限公司 | 数据处理装置和数据处理方法 |
CN102508672A (zh) * | 2011-12-02 | 2012-06-20 | 方正国际软件有限公司 | 图形化配置执行java的方法 |
CN102880472A (zh) * | 2012-09-28 | 2013-01-16 | 方正国际软件有限公司 | 流程引擎中进行数据存取的系统 |
CN102880472B (zh) * | 2012-09-28 | 2016-01-27 | 方正国际软件有限公司 | 流程引擎中进行数据存取的系统 |
CN105630430B (zh) * | 2014-11-03 | 2019-03-29 | 北大方正集团有限公司 | 一种印刷流程软件中用于进行智能工作的方法及装置 |
CN105630430A (zh) * | 2014-11-03 | 2016-06-01 | 北大方正集团有限公司 | 一种印刷流程软件中用于进行智能工作的方法及装置 |
CN104536431B (zh) * | 2014-11-27 | 2017-02-22 | 北京电子工程总体研究所 | 飞行器发射流程可配置的显控方法及装置 |
CN104536431A (zh) * | 2014-11-27 | 2015-04-22 | 北京电子工程总体研究所 | 飞行器发射流程可配置的显控方法及装置 |
CN106155718A (zh) * | 2015-04-02 | 2016-11-23 | 阿里巴巴集团控股有限公司 | 流程引擎实现方法及流程引擎系统 |
CN106155718B (zh) * | 2015-04-02 | 2019-09-06 | 阿里巴巴集团控股有限公司 | 流程引擎实现方法及流程引擎系统 |
CN108256716A (zh) * | 2016-12-29 | 2018-07-06 | 同方威视技术股份有限公司 | 基于表来配置/执行流程和/或原子流程的方法和设备 |
CN109753314A (zh) * | 2017-11-01 | 2019-05-14 | 南京南瑞继保电气有限公司 | 一种可配置的流程自动执行方法及系统 |
CN108470273A (zh) * | 2018-03-28 | 2018-08-31 | 凌云光技术集团有限责任公司 | 项目开发方法及装置 |
CN110956025A (zh) * | 2018-09-27 | 2020-04-03 | 长沙博为软件技术股份有限公司 | 一种基于流程模板复用的方法 |
CN109544113A (zh) * | 2018-11-23 | 2019-03-29 | 四川长虹电器股份有限公司 | 一种基于有限状态机的工作流引擎建模方法及流程管理系统 |
CN111104102A (zh) * | 2019-11-20 | 2020-05-05 | 杭州端点网络科技有限公司 | 一种用于构建多业务场景自动化流水线的方法 |
CN111104181A (zh) * | 2019-12-13 | 2020-05-05 | 中关村科技软件股份有限公司 | 一种可视化编辑任务流程的网页数据填报系统 |
CN113656116A (zh) * | 2021-08-18 | 2021-11-16 | 中国邮政储蓄银行股份有限公司 | 业务流程的处理方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101216906A (zh) | 一种流程控制方法及一种流程引擎 | |
Ziadi et al. | Software product line engineering with the UML: Deriving products | |
CN106919434B (zh) | 一种代码生成方法及装置 | |
Ouyang et al. | Translating standard process models to BPEL | |
CN103164249B (zh) | 用于脚本语言编译器的扩展机制 | |
CN101221556B (zh) | 一种xml文件解析的方法及装置 | |
Abouzahra et al. | A practical approach to bridging domain specific languages with UML profiles | |
Gill et al. | The worker/wrapper transformation | |
Fuchs et al. | Formal description of a generic multi-model | |
CN101739258A (zh) | Aadl模型的自动代码生成方法 | |
CN100401266C (zh) | 一种数据编解码方法及其编解码器 | |
Moreno et al. | An overview of model-driven web engineering and the MDA | |
CN107391153A (zh) | 一种基于Spring与MyBatis框架整合的代码生成方法及装置 | |
Ferenc et al. | Data exchange with the Columbus schema for C++ | |
Drath | AutomationML: the industrial cookbook | |
Swierstra et al. | Fast, error correcting parser combinators: A short tutorial | |
Nascimento et al. | A model-driven infrastructure for developing product line architectures using cvl | |
CN110737431A (zh) | 软件开发方法、开发平台、终端设备及存储介质 | |
CN102214103A (zh) | 以功能单元为基础的任务程序的创建和执行方法及系统 | |
CN105556504A (zh) | 从物理流生成逻辑表示 | |
CN102486731A (zh) | 增强软件的软件调用栈的可视化的方法、设备和系统 | |
CN113626644B (zh) | 业务流程数据的格式转换方法和装置 | |
CN115906261A (zh) | 一种基于数字孪生的智慧城市组件化构建方法及系统 | |
John | Leveraging traditional software engineering tools to ontology engineering under a new methodology | |
Ruiz-Lopez et al. | Applying model-driven engineering to a method for systematic treatment of NFRs in AmI systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20080709 |