CN1955992B - 基于堆栈模式运行Web服务工作流的方法 - Google Patents
基于堆栈模式运行Web服务工作流的方法 Download PDFInfo
- Publication number
- CN1955992B CN1955992B CN2005101145634A CN200510114563A CN1955992B CN 1955992 B CN1955992 B CN 1955992B CN 2005101145634 A CN2005101145634 A CN 2005101145634A CN 200510114563 A CN200510114563 A CN 200510114563A CN 1955992 B CN1955992 B CN 1955992B
- Authority
- CN
- China
- Prior art keywords
- activity
- storehouse
- web service
- hit
- pressed
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种基于堆栈模式运行Web服务工作流的方法,它包括以下步骤:A、工作流管理系统中的工作流引擎为每一个流程实例分配一个堆栈;B、在开始运行流程实例时,将该流程实例对应的工作流模型压入堆栈中;C、判断堆栈里的活动数目是否为0;如果为0,标志着该流程实例结束,结束处理过程;如果不为0,表明流程实例还在执行过程中,则执行下一步;D、执行弹栈操作;E、活动解释执行模块根据弹出的Web服务工作流语言中活动的类型,调用相应的活动解释方法,解释执行该活动;F、解释执行完一个活动后,重复执行第C~F步,直到该Web服务工作流流程实例结束。本发明简化了工作流引擎运行Web服务工作流的方法,提高了效率和可靠性。
Description
技术领域
本发明涉及一种基于堆栈模式的运行Web服务工作流的方法。
背景技术
Web服务技术
随着互联网技术的迅速发展,基于互联网的应用模式也在不断演变。越来越多的企业和政府部门依赖互联网来发布信息与提供服务,并构建跨企业的虚拟组织或虚拟企业以实现大规模资源共享。但由于互联网环境是一个异构、动态、松耦合的分布式计算环境,因此如何有效、简便地实现基于互联网的资源共享、业务协作便成为互联网发展道路中必须要解决的问题。
在传统的互联网应用中,人们习惯使用HTML来描述信息资源和服务,但由于HTML不具有良好的可扩展性,不能准确地刻画数据内容,不利于大规模商业活动的自动化操作,也不利于有效地利用互联网中的资源,从而导致基于互联网的应用在进一步深入发展时受到很大的限制。随着JAVA和XML技术的出现,解决了跨平台和信息互操作的问题,但由于传统的分布式对象、中间件技术都维护着相互独立的体系结构和协议以及其中客户端和服务器端的紧耦合性,使得它们不能适应动态发布服务的需求,也不能很好地实现在动态、松耦合环境下的业务协作。因此,为了满足日益增长的业务需求,人们提出Web服务来解决新一代互联网软件所面临的问题。
根据W3C的定义:“Web服务是一种通过URI标识的软件应用,其接口及绑定形式可以通过XML标准定义、描述和检索,并能通过XML消息及互联网协议完成与其他应用的直接交互”。从该定义可以得出,Web服务并不是全新的技术体系,它是建立在原有的技术之上,是传统的组件技术在互联网应用环境下的延展,其目的和作用是提供一种统一的规范和技术,为Internet软件应用提供统一的功能描述和功能共享机制。它提供了一种在不同平台/系统之间进行应用层功能自动整合集成和自动化处理所需要的技术架构,为功能整合集成和信息交换处理提供实现基础。
Web服务需要组合
然而,尽管Web服务技术解决了不同的平台/系统之间应用的整合问题,为跨企业边界的业务流程的自动化提供了技术基础,但单个的Web服务所提供的功能单一,无法构成完整的业务应用。一方面考虑到组件的重用性和可维护性等原则,不应该将复杂的业务逻辑封装到单个的Web服务中:另一方面从服务提供者的角度来看,各种服务的提供者分工越来越明确,单个服务提供者不太可能提供完整功能的Web服务;因此为了实现完整的业务功能,满足用户多样性的需求,需要把分散的各个单一的Web服务组合起来,形成具有增值价值的Web服务。
但由于Web服务技术本身是无状态的,不能支持服务之间复杂的交互,而跨企业流程往往是由一个确定的过程模型驱动的长期的多方的交互过程,因此需要其他的技术来把Web服务组合起来创建新的功能。基于web服务的工作流技术是实现Web服务组合的一种技术。
基于Web服务的工作流技术
基于Web服务的工作流技术是指:把已经存在的多个单一的Web服务按正确的顺序组合起来,即通过使用Web服务工作流语言定义使用这些Web服务的业务流程。
使用Web服务工作流语言描述业务流程的方式如下:指定一组Web服务操作可能的执行顺序、这些Web服务间共享的数据、业务流程涉及哪些伙伴以及这些伙伴在业务流程中扮演什么角色、以及关于多个服务和组织是怎样参与等问题。
业务流程指通过组合能实现一个特定业务目标的各项活动的一个集合。活动指业务流程中实现特定业务目标的步骤。在Web服务工作流中,活动可以暴露为一个Web服务的操作,从而可以被请求者调用。伙伴指这个业务流程的参与者。因此,我们根据Web服务工作流语言可以定义出Web服务工作流模型,该工作流模型可以被工作流管理系统所执行。
Web服务工作流语言
目前,存在着不同版本的Web服务工作流语言如Microsoft的XLANG、IBM的WSFL、IBM、Microsoft和Bea等一起提出的BPEL等,这些语言大都定义了两种类型的活动:基本活动,结构活动。
基本活动包括六种活动,分别是:
1、接收活动:等待客户端通过发送一个消息调用业务的过程;
2、响应活动:根据请求创建响应;
3、调用活动:调用某个Web服务上的操作;
4、等待活动:等待一段时间;
5、赋值活动:为一个数据变量赋值;
6、终止活动:终止整个流程;
结构活动包括四种活动,分别是:
1、顺序活动:定义按次序执行的一系列活动;
2、选择活动:允许从一组分支中只选择一个分支来执行的活动;
3、循环活动:定义一个循环的活动;
4、并行活动:指明一组活动应该并行地执行。
执行工作流
有了工作流语言,一个业务流程就可以表现为一个工作流文档。反过来说,这个工作流文档是对这个业务流程的抽象,是作为这个业务流程的过程规则存在的,再深一步讲,这个工作流文档其实就是一个工作流模型。如图1所示的工作流管理系统中的工作流引擎根据在计算机中预先定义好的上述工作流模型推进工作流实例的执行。这里有一个前提,就是工作流管理系统中的工作流引擎要“读懂”工作流模型,知道其中所蕴含的深义。
在工作流引擎中有一套翻译机制,根据工作流语言中的不同活动,工作流引擎中的活动解释执行模块会调用与之相对应的方法来解释执行该活动,这个过程就是工作流引擎运行工作流的过程。
发明内容
本发明的目的是提供一种基于堆栈模式的运行Web服务工作流的方法。该方法规定了工作流管理系统中的工作流引擎如何运行Web服务工作流语言中定义的各种活动。
为实现上述目的,本发明采取以下技术方案:一种基于堆栈模式运行Web服务工作流的方法,其特征在于:它包括以下步骤:
A、工作流管理系统中的工作流引擎为每一个流程实例分配一个堆栈;
B、在开始运行流程实例时,将该流程实例对应的工作流模型压入堆栈中;
C、判断堆栈里的活动数目是否为0?如果为0,标志着该流程实例结束,结束处理过程;如果不为0,表明流程实例还在执行过程中,则执行下一步;
D、执行弹栈操作;
E、活动解释执行模块判断弹出的Web服务工作流语言中的活动类型,根据弹出的活动类型,调用与之相对应的活动解释方法,解释执行该活动;
F、解释执行完一个活动后,重复执行第C~F步,直到该Web服务工作流流程实例结束。
附图说明
图1为工作流管理联盟公布的工作流管理系统参考模型;
图2为本发明公开的基于堆栈模式处理Web服务工作流的方法实现总体示意图;
图3为本发明处理Web服务工作流语言中顺序活动的处理方法;
图4A、图4B为本发明处理Web服务工作流语言中选择活动的处理方法;
图5A、图5B为本发明处理Web服务工作流语言中循环活动的处理方法;
图6A~图6C为本发明处理Web服务工作流语言中并行活动的处理方法;
图7A、图7B为本发明处理Web服务工作流语言中接收活动的处理方法;
图8为本发明处理Web服务工作流语言中终止活动的处理方法。
具体实施方式
本发明公开的基于堆栈模式的运行Web服务工作流的方法,规定了图1所示的工作流管理系统中的工作流引擎如何运行Web服务工作流语言中定义的各种活动,即工作流引擎如何执行Web服务工作流的过程。
活动解释执行模块是工作流引擎中的核心模块,它会根据活动的种类采取相应的处理方法来处理活动。
如图2所示,本发明公开的基于堆栈模式运行Web服务工作流的方法,具体包括以下步骤:
1、工作流管理系统中的工作流引擎为每一个流程实例分配一个堆栈;
2、在开始运行流程实例时,将该流程实例对应的工作流模型压入堆栈中;
3、判断堆栈里的活动数目是否为0?如果为0,标志着该流程实例结束,结束处理过程;如果不为0,表明流程实例还在执行过程中,则执行下一步;
4、执行弹栈操作;
5、活动解释执行模块判断弹出的Web服务工作流语言中的活动类型,根据弹出的活动类型,调用与之相对应的活动解释方法,来解释执行该活动;
6、解释执行完一个活动后,重复执行第3~6步,直到该Web服务工作流流程实例结束。
在上述第5步中,当活动解释执行模块判断弹出的Web服务工作流语言中的活动类型为结构活动时,活动解释执行模块调用的与之相对应的活动解释执行方法具体如下:
1、顺序活动的处理方法
如图3所示,活动解释执行模块将顺序活动中的所有子活动取出,在图中以活动X、Y、Z代表;然后,按照排列顺序的逆序压入堆栈中;则,再次弹栈的时候,活动X就会先执行,然后是活动Y,最后是活动Z。
2、选择活动的处理方法
如图4A,图4B所示,首先,活动解释执行模块会取出选择活动中的各个分支活动的判断条件;逐个进行判断;看哪个分支的判断条件满足,如果有的话,就将该分支活动压入堆栈(图4A);如果没有,就将选择活动中当所有的分支条件都不满足的时候所要执行的分支活动压入堆栈(图4B)。
3、循环活动的处理方法
首先,活动解释执行模块判断循环活动中的条件,看是否满足;如果执行循环的条件满足,那么先将这个循环活动压入堆栈,再压入循环活动中应该执行的循环体;那么当堆栈再次弹栈的时候,循环体就会被弹出,得到执行,执行完循环体后,堆栈弹栈,此时又会是循环活动,再按所述方法进行处理(如图5A),这样就保证了每次执行循环体前都会先判断循环条件,只有满足循环条件时,才执行循环体;如果不满足循环条件,则不会进行任何操作(如图5B)。
4、并行活动的处理方法
如果从堆栈中弹出来的活动是并行活动,那么处理步骤如下
a)构造一个辅助堆栈;
b)将某一个分支取出;
c)向辅助堆栈中压入该分支的第一个活动,如图6A所示;
d)辅助堆栈弹栈,活动解释执行模块处理该活动;
e)如果辅助堆栈不为空,那么就将里面的活动全部取出,将其放置在分支中的最前面,如图6B所示;
f)辅助堆栈如果为空,不进行操作,如图6C所示;
g)再将另外一个分支取出,重复进行c)、d)、e)或f)操作,直到所有分支中的第一个活动都被执行了;
h)查看是否还有分支存在,如果有,将并行活动再次压入堆栈;如果没有分支了,则结束。
该方法的思想是每次都执行一遍所有分支中的第一个操作,然后将并行活动再次压入堆栈,这样分支中的活动会越来越少,有的分支会被执行完;当所有分支都被执行完的时候,并行活动也宣告结束。
在上述第5步中,当活动解释执行模块判断弹出的Web服务工作流语言中的活动类型为基本活动时,活动解释执行模块调用的与之相对应的活动解释执行方法具体如下:
1、接收活动的处理方法
去消息区中查找符合接收条件的消息,如果有,取得消息后接收活动结束(如图7A);如果没有,则把接收活动再次压入堆栈(如图7B)。
2、响应活动的处理方法:发送消息后活动结束。
3、调用活动的处理方法:执行调用活动,活动结束。
4、等待活动的处理方法:工作流引擎根据活动中定义的等待时间,暂停弹栈;满足等待时间后,活动结束,此时继续弹栈。
5、赋值活动的处理方法:根据赋值活动的规定,将某个变量的值赋给另外一个变量,赋值完成后,活动结束。
6、终止活动的处理方法:清空堆栈,终止活动随之结束,如图8所示。
纵上所述,本发明通过将Web服务工作流的处理转化为对堆栈的操作,用堆栈的弹栈、压栈操作实现了Web服务工作流的运行,简化了工作流引擎运行工作流的方法。另外,由于对堆栈的操作具有很高的效率,所以,本发明提高了工作流引擎运行工作流的效率;又由于对堆栈的操作具有很高的可靠性,因而,本发明也提高了工作流引擎运行工作流的可靠性。本发明还使工作流引擎具有了调试工作流运行的功能。
Claims (1)
1.一种基于堆栈模式运行Web服务工作流的方法,其特征在于:它包括以下步骤:
A、工作流管理系统中的工作流引擎为每一个流程实例分配一个堆栈;
B、在开始运行流程实例时,将该流程实例对应的工作流模型压入堆栈中;
C、判断堆栈里的活动数目是否为0,如果为0,标志着该流程实例结束,结束处理过程;如果不为0,表明流程实例还在执行过程中,则执行下一步;
D、执行弹栈操作;
E、活动解释执行模块判断弹出的Web服务工作流语言中的活动类型,根据弹出的活动类型,调用与之相对应的活动解释方法,解释执行该活动;
F、解释执行完一个活动后,重复执行第C~F步,直到该Web服务工作流流程实例结束;
在上述第E步中,当活动解释执行模块判断弹出的Web服务工作流语言中的活动类型为结构活动时,活动解释执行模块调用的与之相对应的活动解释执行方法具体如下:
1)如果从堆栈中弹出来的活动是顺序活动,那么就将顺序活动中的所有子活动取出,然后按照排列顺序的逆序压入堆栈中;
2)如果从堆栈中弹出来的活动是选择活动,那么首先取出选择活动中的各个分支活动的判断条件,逐个分析,看有哪个条件满足,如果有的话,就将该分支活动压入堆栈;如果没有,就将选择活动中当所有的分支条件都不满足的时候所要执行的分支活动压入堆栈;
3)如果从堆栈中弹出来的活动是循环活动,那么首先判断循环活动中的条件,看是否满足:如果满足,那么再将这个循环活动整个压入堆栈,然后压入循环活动中应该执行的循环体,那么堆栈再次弹出栈头的时候,循环体就会被弹出,得到执行,执行后,又会出现循环活动,再执行循环活动,这样就保证了每次执行循环体前都会先判断循环条件,只有满足循环条件时,才执行循环体;如果不满足循环条件,则不会进行任何操作;
4)如果从堆栈中弹出来的活动是并行活动,那么处理步骤如下:
a)构造一个辅助堆栈;
b)将某一个分支取出;
c)向辅助堆栈中压入该分支的第一个活动;
d)辅助堆栈弹栈,活动解释执行模块运行该活动;
e)如果辅助堆栈不为空,那么就将里面的活动全部取出,将其放置在分支中的最前面;辅助堆栈如果为空,不进行操作;
f)再将另外一个分支取出,重复进行c)、d)、e)操作,直到所有分支的第一个活动都被执行过;
g)查看是否还有分支存在,如果有,将并行活动再次压入堆栈;
如果没有,则结束;
在上述第E步中,当活动解释执行模块判断弹出的Web服务工作流语言中的活动类型为基本活动时,活动解释执行模块调用的与之相对应的活动解释执行方法具体如下:
1)如果从堆栈中弹出来的活动是接收活动,那么就去消息区中查找符合接收条件的消息,如果有,那么取得消息后,接收活动结束;如果没有,则把接收活动再次压入堆栈;
2)如果从堆栈中弹出来的活动是响应活动,那么把要发送的消息发出后,活动结束;
3)如果从堆栈中弹出来的活动是调用活动,那么执行调用活动,活动结束;
4)如果从堆栈中弹出来的活动是等待活动,那么工作流管理系统就会根据活动中定义的等待时间,暂停该流程实例的运行,满足等待时间后,活动结束,此时系统会继续运行该流程实例;
5)如果从堆栈中弹出来的活动是赋值活动,那么就根据赋值活动的规定,将某个变量的值赋给另外一个变量,赋值完成后,活动结束;
6)如果从堆栈中弹出来的活动是终止活动,那么就会清空该流程实例的堆栈,终止活动也随之结束。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2005101145634A CN1955992B (zh) | 2005-10-26 | 2005-10-26 | 基于堆栈模式运行Web服务工作流的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2005101145634A CN1955992B (zh) | 2005-10-26 | 2005-10-26 | 基于堆栈模式运行Web服务工作流的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1955992A CN1955992A (zh) | 2007-05-02 |
CN1955992B true CN1955992B (zh) | 2012-03-14 |
Family
ID=38063302
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2005101145634A Expired - Fee Related CN1955992B (zh) | 2005-10-26 | 2005-10-26 | 基于堆栈模式运行Web服务工作流的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1955992B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102156735B (zh) * | 2011-04-11 | 2012-12-26 | 中国有色矿业集团有限公司 | 一种基于数据库事务处理的业务方法执行方法及装置 |
CN102314349B (zh) * | 2011-09-16 | 2014-07-09 | 武汉中地数码科技有限公司 | 空间信息功能插件工作流搭建方法 |
CN109366495A (zh) * | 2018-10-30 | 2019-02-22 | 希格斯动力科技(珠海)有限公司 | 弹奏机器人的手指舵机控制方法及装置 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1487435A (zh) * | 2002-10-03 | 2004-04-07 | 鸿富锦精密工业(深圳)有限公司 | 工作流程分配系统及方法 |
-
2005
- 2005-10-26 CN CN2005101145634A patent/CN1955992B/zh not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1487435A (zh) * | 2002-10-03 | 2004-04-07 | 鸿富锦精密工业(深圳)有限公司 | 工作流程分配系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN1955992A (zh) | 2007-05-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102591726B (zh) | 一种多进程通信方法 | |
US8572236B2 (en) | Distributing services in graph-based computations | |
CN1791861A (zh) | 基于消息的交换基础设施的商业流程管理 | |
CN1791037A (zh) | 一种实现Web服务自动化测试的方法 | |
zur Muehlen et al. | BPAF: A standard for the interchange of process analytics data | |
CN101789012B (zh) | 基于j2ee的web动态页面静态化解决方法 | |
CN101464810A (zh) | 服务程序处理方法及服务器 | |
CN1689008A (zh) | 企业间对话的系统和方法 | |
CN108280150A (zh) | 一种分布式异步业务分发方法及系统 | |
CN101056429A (zh) | 通用业务系统及其实现方法 | |
CN103810272A (zh) | 一种数据处理方法和系统 | |
CN106230889B (zh) | 移动应用业务组件资源管理方法及系统 | |
CN110764752A (zh) | 基于微服务架构实现Restful服务图形化服务编排的系统及其方法 | |
CN102420709A (zh) | 一种基于任务框架的调度任务管理方法和设备 | |
CN1955992B (zh) | 基于堆栈模式运行Web服务工作流的方法 | |
CN108920274B (zh) | 用于图像处理服务器端的性能优化及装置 | |
CN106161520A (zh) | 大数据应用平台及基于其的交互方法 | |
Abreu et al. | Specifying and composing interaction protocols for service-oriented system modelling | |
CN1207662C (zh) | 基于多代理的交互式Web服务调度方法 | |
CN1799059A (zh) | 用于将提供商产品包自动转换成资源管理系统可执行的客户特定的服务环境定义的方法和系统 | |
Curbera et al. | Toward a programming model for service-oriented computing | |
CN109783141A (zh) | 异构调度方法 | |
CN112416414A (zh) | 一种基于状态机的微服务架构容器化轻量级工作流系统 | |
CN113065848B (zh) | 一种支持多类集群后端的深度学习调度系统及调度方法 | |
CN107885460A (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 | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20120314 Termination date: 20121026 |