【毕业学位论文】(Word原稿)BPEL引擎设计与实现-计算机软件与理论_第1页
【毕业学位论文】(Word原稿)BPEL引擎设计与实现-计算机软件与理论_第2页
【毕业学位论文】(Word原稿)BPEL引擎设计与实现-计算机软件与理论_第3页
【毕业学位论文】(Word原稿)BPEL引擎设计与实现-计算机软件与理论_第4页
【毕业学位论文】(Word原稿)BPEL引擎设计与实现-计算机软件与理论_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

中国科学院软件研究所 第一章 绪论 1 y 国科学院软件研究所 擎设计与实现 2 目录 . 1 第一章 系统原理 . 3 擎系统 . 3 种并发模式 . 4 线程并发模式 . 4 件驱动并发模式 . 5 于多线程模式的 统原理简述 . 6 于事件驱动的 统原理 . 7 本原理 . 7 件 . 9 . 10 度算法 . 37 第二章 系统设计与实现 . 38 体架构 . 38 件结构 . 39 件说明 . 39 . 40 . 41 . 42 . 43 . 44 . 45 . 47 中国科学院软件研究所 第三 章 擎 3 第一章 系统原理 擎是一个 程 运行环境中间件 系统 。 它采用企业组件服务器模型( 程提供了一个执行容器。 在一个典型的 擎系统中, 一个 程执行的 分为 两 个阶 段:编译部署阶段, 和 执行期阶段。这也是 擎最主要的两个功能。在编译部署阶段,引擎解析 建并在引擎中保存 件 模型。 件 模型是 程对象化的语法和数据结构定义描述。而在执行期阶段, 擎响 应用户的调用请求,根据请求定位或者创建 程实例,程实例 ( 程的执行期对象,一个流程实例的运行代表 程的一次执行。 例封装了执行期逻辑和数据结构,在执行期环境中运行。 解析编译 建并加载 程实例 运行可执行实例 文件 程组件 模型 行 期 (译 部署 国科学院软件研究所 擎设计与实现 4 多个 程实例在引擎中是并发执行的。 擎设计的一个关键点是如何高效的处理并发。 擎主要 需 要处理两类 并发 需求 : 程实例 的并发 一个流程 实例 内部的活动 (并发 (种并发模式 在高并发的软件系统设计和实现中, 通常有两种处理并发的模式:多线程模式和事件驱动模式。 线程并发模式 多线程并发模式中 为 每个 并发 请求分发给一个线程来处理。 这种机制的优势:有良好的操作系统、编程语言和编程环境的支持,是最常使用的设计模型。 但是多线程并发模式存在如下 缺陷: 并发量的提高将导致线程需求量的提高,大量并发流程执行时需要大量的线程资源。当线程数超过一定临界值后,系统的吞吐量将开始下降 。 如图: 如此之外,采用多线程模式实现 程实例和活动并发还可能出现如下问题 : - 忙等:一个流程实例的执行期将持续占用至少一个线程资源,甚至当它处于长期等待的状态。 - 不公平现象:当线程资源有限并被全部占有时,新的请求得不到响应,新的并发活动也无法启动。 - 流程控制:流程的运行难以控制,如“暂停”,“继续”等操作必须控制流程所占有的所有线程。 - 实例持久化:由于流程实例带有线程信息,同时难以捕捉流程的持久化点,实例的持久化难以实现 。 中国科学院软件研究所 第三 章 擎 5 件驱动并发模式 事件驱动的并发模式通常有如下特点: - 服务器只包含小数目的线程(一般是一个),处理来自事件队列的不同种类的事件。 - 事件可以是由 者应用程序 内部产生的,表示一些操作的触发器,比如:网络或是 I/O 操作就绪、完成报告,定时器、或是其他的应用程序事件。 - 每个并发请求都由一个有限状态机来表示 , 一个事件驱动系统在小数目的线程上完成(多路复用)多个请求 操作,通过在每个请求处理循环的反复操作后的请求间的上下文切换。 主要原理 如图所示: 此外,采用事件驱动的并发模型还有如下的要求: - 这要求每个 事件 的处理必须很短,和非阻塞的。使用的非阻塞的 I/O 接口,一般分阶段方法: 执行一个 I/O 操作后立即返回,不管 I/O 请求是否完成 若一段时间操作完成后, 生一个 I/O 完成事件, 度程序使用它来继续请求处理 - 请求数继续增长时,工作在服务器中排队,分派事件给 工作与线程调度类似,实现自己的应用程序级别的调度策略,在有限的线程资源下实现自己的调度,必须考虑到请求的优先级,公平性和资源的消耗。 相比多线程模型事件驱动的主要优势: - 处理并发的高效,更好的缩放性 - 示请求比线程上下文花费小,当高并发时能显著提高性能 擎系统采用事件驱动模型设计的适用性: - 擎要大量处理并发,包括流程级和活动级并发。 - 语义适合用 描述, 可以构建基于事件驱动的 中国科学院软件研究所 擎设计与实现 6 于 多线程模式 的 理 简述 擎 系统 采用 多线程 机制来处理并发响应和并发活动执行:即为每个流程实例分配一个线程,并为流程中并发的活动实例各分配一个线程。 程实例是由可以执行的 动节点对象组成的, 这些可执行的活动节点称作 象, 它 们 按照 程的 语法 树结构 组合在一起。同时对于父子节点, 系, 间采用 式建立起监听 关系。如下图 中国科学院软件研究所 第三 章 擎 7 P r o ce o n t e e q e n o n t e e ce i o n t e e p l yC o n t e co p eC o n t e q u e n o n t e n vo o n t e n vo o n t e .l i st e nl i st e nl i st e nl i st e nl i st e nl i st e 顶层的 动 节点 的执行 开始的,在 执行将触发子节点的执行,被监听 节点 的执行将触发监听 节点 的执行。 因此一个 任何一个 节点的执行 可能 会引发 一连串 连锁反应,连锁反应 中 的 可执行的 象 的执行步骤 组成一个执行链。如果有 多个 并发活动将产生多条并发的执行链, 每一条执行链都会占用一个系统线程执行。虽然一个 程有多个活动,即 执行链 会有多个执行步骤,但这些执行步骤的执行是连续的,步骤之间的调用也是同步的。 擎系统被 动的分配线程给 行链,只要流程实例没有结束,它就会持续的占用至少一个线程,即使它处于等待状态。 于事件驱动的 理 本原理 事件驱动的 统的两个基础:事件和有限状态机( 在事件驱动的架构中,把一个 程实例 设计成 一个有限状态机 ( 在编译和部署期,系统根据 构造基于 程组件模型,执行期根据这个模型创建 例。 状态表示一些活动 (执行,边表示状态的转换。一 个流程的执行是 一系列的状态变化,状态的变化是 完全是 由事件 (起的。如图所示: 中国科学院软件研究所 擎设计与实现 8 与 行链不同, 持有任何线程,线程资源由一个 系统线程池维护 。 每个 程实例拥有一个事件队列 ,表示即将输入到 事件 。 系统中多个并发 程实例的事件队列组成事件队列集。 系统中提供一个统一的事件调度 器来调度执行所有 程实例的事件队列。调度器按一定策略从系统 的事件队列 集 中抽出一些事件,并在线程池中分配线程处理这些事件。事件的 处理将引发 状态转换和一些操作的执行 ,并且有可能产生新的事件入队。 在事件驱动模式下,为了保证公平性,要求每个事件的处理必须很短,和非阻塞的,因此,对 程的阻塞和重型操作需要做异步处理。这些重型操作主要有: 动产生的对第三方 务调用, 动产生的拷贝 (作,和 动或 活动产生的定时器任务。在 统 中 , 将这些操作封装成 将它们分离出来由相应的 行。当启动这些重型操作的活动时, 产生相应的 将它们放入对应的 后立刻返回。当 成 操作后,通过消息事件返回给流程实例 的事件队列 ,调度器调度它们 使 程实例继续执行。 同样,对于从外部到来的对 程的调用请求,同样通过产生消息事件的方式输入给 程实例。 如图所示 事件驱动的 擎 基本运行模式 : 中国科学院软件研究所 第三 章 擎 9 r e c e i v e d m e s s a ge l l e v e nt s t o ha nd l em e s s a e v e nt sI nv ok e Ta s k C on t a i ne rC op y Ta s k C on t a i ne m e r Ta s k C on t a i ne rE v e Q ue ue sS c he du l e r e a d P oo s k C on t a i ne r sP r oc e s s I ns t a nc eP r oc e s s I ns t a nc eP r oc e s s I ns t a nc eP r oc e s s I ns t a nc eD i s pa t c he 件 事件 (为两类: 活动事件 ( 由活动的执行产生,如某个活动的激活 (完成 (件。 消息事件 ( 主要又外部消息源产生,如 动接收到的求消息, 收到 应。 事件的两个基本属性: 事件源( 触发事件的活动 例,当事件为外部系统时,此属性为空。 事件目的 (接收事件的活动 节点 例,系统将根据此把事件发送给目的活动 例,从而引发目的活动 例的转移和动作。 事件的发送和处理方式: 活动事件和消息都 将输入给目的活动节点的 而引起目的 转移动作,但是事件的发送过程并不直接进行(即事件源活动运行时不直接把事件输入给目的活动),而是在事件中标示目的活动节点,并将它送入所属 程实中国科学院软件研究所 擎设计与实现 10 例的事件队列。调度器调度事件才根据事件的目的属性将它输入给目的活动节点状态机。 下 表 是 统 中 所使用的事件: 名称 简称 类型 描述 E 活动事件 活动激活事件,由父活动发送给子活动 E 活动事件 活动结束事件,由子活动 发送给父活动 E 活动事件 当 件满足时,由 给 动事件 当 算为 ,活动向 先活动发送此事件。 E 活动事件 活动执行失败时发送,目的是祖先动。 动事件 当 源活动完成时发送此事件至先活动 E 活动事件 动的执行将发送流程终止的消息给顶层 点。 动事件 动执行产生此事件发送给指定的上层 动 息事件 系统中到达 务调用消息,这个消息事件发送至对应的 动或 结构。 息事件 务调用执行失败, 产生失败消息事件至对应的 息事件 务调用执行成功,产生返回消息事件至对应的 息事件 定时器任务完成,返回消息给相应的 者 结构。 息事件 拷贝任务完成,返回消息给相应的 动。 个流程实例的 一个组合 于一个 程,为它的每个活动节点 (点 也当成一个结构化活动看待 )创建一个基本 动节点的基本 个带输出的 的输入和输出都是事件。 最终的 每个活动的基本 一定的父子关系和层次组合而成。 它与 的 点 树的结构基本一致,但节点之间没有监听关系,它们之间的 调用和通信 是通过发送事件来实现的。 中国科学院软件研究所 第三 章 擎 11 每个活动节点的 拥有一个指向父节点的指针,因此每个节点的 有向上 层祖先节点 寻址的能力。同时结构化活动 (如 有子 节点活动的 访问 指针。 对于每个活动节点的基本 它 的 结构 模型 如下: - M = ( V, T, s, F, ), M 表示 活动节点 基本 输入事件的集合 - 输出事件的集合 - V:内部变量集合,在转移过程中,作为转移的 束条件 - T:状态集合 - s :初始状态 - F:结束状态 - :转移动作集合,基于 则,封装转移动作和伴随其的业务操作 由于 言的活动执行时,除了状态的转移还 将执行一定的业务操作,因此采用 型在转移规则中封装了 特定的 业务操作。并 且, 在 型 中定义内部变量作为 则的转移条件,这样不仅能方便的实现 义并且避中国科学院软件研究所 擎设计与实现 12 免了 状态膨胀。 转移规则 的 形式 : - 对于一个转移动作 t,采用一个三元组表示: t = (q, CE/A, q) - q 表示转移前的状态, q表示转移的目的状态 - CE/A 表示 q 到 q转移的 规则,即当事件E 到达并且条件 C 满足,这时候动作 A 将会被执行,并且状态转移到 q。 - E 表示到达此基本状态机的事件。 - C 为基本状态机的内部变量的一些约束条件。 - A 表示伴随状态转移而发生的操作 。 在 则中, 除了状态转移还有 两 类 操作: 1. 输出事件,即 发送事件到目的 活动节点 的 :事件的发送是通过事件队列和调度器间接完成的) 。 目的 能是当前活动节点的父节点、 子 节点或者祖先节点。 2. 业务操作, 主要有下面 2 种业务操作 a) 如 产生业务 务 要有 和 些 发送到相应的 器中执行。 b) 另外, 括 动 的执行会 产生的流程的输入输出操作 。 以下是对 范中所有活动节点 基本 数据结构模型 和 则 描述: 据结构: - - = - T = - V = - s = - F = - :见转移 规则 表 状态转移图: 转移规则表: E E 中国科学院软件研究所 第三 章 擎 13 相关 业务操作: (1) 启动流程输入的监听, 动时在系统中产生对 务 调用消息的监听。 (2) 流程输入操作, 接收到 务 调用 时,接收输入 消息 的值写到接收变量( 。 据结构: - - = - T = - V = - s = - F = - :见转移表 状态转移图: 事件 状态 算 If( If( 启动 务 调用 监听 (1); If( 发 送 /f( 发送 点; ; 接收 输入值 ( 2) ; 发送 上层 点 ; ; 发送 父节点 ; 中国科学院软件研究所 擎设计与实现 14 转移规则表: 相关业务操作: (1) 流程输出操作,向系统中对应此 动的 务调用发送返回结果。 据结构: - - - T = - V = - s = - F = - :见转移 规则 表 状态转移图: 事件 状态 算 If( If( 发送服务调用 的的返回值 ( 1) ; 发送 上层 点 ; ; 发送 父节点 ; If( 发 送 上层 点 ; /f( 发送 上层 点; ; E/国科学院软件研究所 第三 章 擎 15 转移规则表: 事件 状态 算 If( If( 产生 ); If( 发 送 上 层点 ; /f( 发送 上层 ; 发送 父节点; 发送 上层 点; ; 在 ) 发送 补偿活动; 接 收 返 回 值(2); 发送 点; E E E E E 中国科学院软件研究所 擎设计与实现 16 相关业务操作: (1) 动时产生 送至 器执行 务调用 ,同时 系统 监听 返回 。 (2) 接收到 务消息时,接收输入的值写到接收的流程变量( 。 据结构: - - = - T = - V = - s = - F = - :见转移 规则 表 状态转移图: f(在 ) 发送 错误处理活动; 发送 点 ; ; 发送 父节点; 发送 错误处理活动; 发送 补偿活动; 中国科学院软件研究所 第三 章 擎 17 转移规则表: 相关业务操作: (1) 动时产生 送至 器执行 变量的拷贝 操作 ,同时系统监听 返回 。 据结构: - - = 事件 状态 算 If( If( 产生 ); If( 发 送 上层 点 ; /f( 发送 点; ; 发送 上层点; ; 发送 父节点 ; E E 中国科学院软件研究所 擎设计与实现 18 - T = - V = - s = - F = - :见转移表 状态转移图: 转移规则表: 相关业务操作: ( 无 ) 据结构: - - = - T = - V = - s = 事件 状态 算 If( If( 发送 上层 点 ; 发送 上层 点; ; 发送 父节点 ; If( 发 送 上层 点 ; /f( 发送 ; E/国科学院软件研究所 第三 章 擎 19 - F = - :见转移表 状态转移图: 转移规则表: 相关业务操作: (无) 据结构: - - = - T = - V = - s = - F = - :见转移

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论