




已阅读5页,还剩85页未读, 继续免费阅读
【优秀毕业论文】 bpel中基于异步模式的人工任务执行系统的研究与实现.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
bpel 中基于异步模式的人工任务 执行系统的研究与实现 重庆大学硕士学位论文 学生姓名 余 港 指导教师 柳 玲 副教授 专 业 计算机软件与理论 软件工程领域 学科门类 工 学 重庆大学软件学院 二 o 一 o 年十月 research and implementation of human task performing system based on asynchronous pattern in bpel a thesis submitted to chongqing university in partial fulfillment of the requirement for the degree of master of engineering by yu gang supervised by associate prof liu ling major computer software and theory software engineering school of software engineering of chongqing university chongqing china october 2010 摘 要 随着 web 技术和企业信息化的迅猛发展 越来越多的企业正在采用面向服务 架构 service oriented architecture soa 将企业中已有的信息系统整合起来 实现 系统间的信息共享 协同工作 web 服务是面向服务架构 soa 中的核心技术 使 用 web 服务可以实现企业异构系统之间的交互 单个 web 服务能实现的功能有限 现实应用中常需要将多个 web 服务组合在一起提供更强的功能 bpel 是一种以 业务流程的方式描述 web 服务组合的语言 它将多个独立的服务按照一定的逻辑 组合在一起形成一个业务流程 bpel 主要关注业务流程的自动运行 不支持用户 与流程的交互 然而 现实应用中的很多流程都不会完全自动运行 需要用户的 参与 本文针对 bpel 不支持用户交互这一问题 改进了现有研究成果中定义人工任 务的语言和人工任务执行的系统架构 设计和实现了一个人工任务转换程序 可 自动地将人工任务转换成对一个独立于引擎之外的人工任务管理器的异步调用 转换后的流程定义文件可部署到任何支持标准 bpel 的引擎之上 不需要修改或 扩展引擎 设计和实现了人工任务管理器维护人工任务 充当用户与流程交互的 桥梁 本文完成的主要工作有 分析了目前国内外关于 bpel 人工交互的研究现状和 bpel 的相关技术 分析了相关研究的优点与不足 分析了人工交互的过程 改进了现有研究成果中定义人工任务的语言 增 加了对流程等待期限 任务认领期限和任务调升期限的定义 研究了 bpel 对 web 服务的同步与异步调用模式 改进了现有研究成果中 人工任务的执行系统架构 系统采用一个独立于引擎之外的人工任务管理器维护 人工任务 流程与人工任务管理器之间采用异步消息模式进行交互 更能适应人 工任务长时间地执行 设计和实现了一个转换程序 将含有人工任务定义的活动自动转 换成对人工任务管理器的异步调用 设计和实现了人工任务管理器的原型系统 使用 jax ws 将系统的功能封装成 web 服务供流程和客户端调用 使用一个需要人工协作的汽车贷款审批流程对系统进行检验 应用结果验 证了系统的合理性与可行性 能够实现用户干预流程的执行 关键词 bpel 人工任务 异步 业务流程 web 服务组合 abstract as the development of the web technology and enterprise informationization more and more enterprises are using service oriented architecture soa to intergrate their existing information systems achieving the sharing of information and the collaboration of working among different systems web service is the core technology of soa interaction between heterogeneous systems in the enterprise can be achieved by web service the function of a single web service is limited it is necessary to compose several web services to provide stronger functions in many real world applications bpel is a kind of language which describes web service composition as a business process it composes several independent services together and constructs a business process bpel focuses on the automatical running of business process but do not support the interaction between processes and users however many processes in real world applications are not fully automatical operation which require user involvement to solve the problem that bpel doesn t support user interaction this paper improved the language used to define human tasks and the human task performing system architecture in the existing research a human task transformation program was designed and implemented to automatically transform human task into an asynchronous invocation to a human task manager outside of the bpel engine the process definition file can be deployed into any engine that support the standard bpel and it is needless to modify or extend the engine the human task manager was also designed and implemented to maintain human tasks and act as a bridge between the process and user this paper has accomplished the following tasks it analyzed the current domestic and international researches about the user interaction and related technologies of bpel it analyzed the advantages and disadvantages of related researches it analyzed the process of user interaction and improved the human task definition language in bpel of the existing research adding the definition of the deadline of the waiting of bpel process task claiming and task escalation it researched the synchronous and asynchronous pattern of the invocation to web services in bpel and improved the human task performing system architecture in the existing research in this system there was a human task manager outside of the bpel engine to maintain human tasks processes interacted with human task manager with aysnchronous message pattern which can support the long term running of human tasks better a transformation program was designed and implemented which could be used to transform the invoke activity including human task definitions into into an asynchronous invocation to the human task manager the system prototype of the human task manager was designed and implemented too jax ws was used to encapsulate functions of the human task manager as a web service which could be called by processes and clients a car loan approval process which need user interactions was used to verify the system the result proved that the system is reasonable and feasible and user can affect the running of processes keywords bpel human task asynchronization business process web service composition 目 录 中文摘要 英文摘要 中文摘要 英文摘要 1 绪绪 论论 1 1 1 课题研究背景与研究意义课题研究背景与研究意义 1 1 2 国内外研究现状国内外研究现状 2 1 3 本文的主要工作本文的主要工作 3 1 4 本章小结本章小结 4 2 相关技术分析相关技术分析 5 2 1 web服务技术分析服务技术分析 5 2 2 web服务组合分析服务组合分析 8 2 3 bpel 技术分析技术分析 10 2 3 1 bpel 特性分析 10 2 3 2 bpel 核心概念分析 11 2 3 3 bpel 与 wsdl 16 2 4 本章小结本章小结 17 3 bpel 中人工任务的支持机制研究中人工任务的支持机制研究 19 3 1 当前问题当前问题 19 3 2 支持人工任务的系统架构研究支持人工任务的系统架构研究 20 3 3 人工任务研究人工任务研究 22 3 4 人工任务定义语言研究人工任务定义语言研究 23 3 4 1 语法格式 23 3 4 2 任务变量 24 3 4 3 任务分配规则与约束条件 25 3 4 4 任务时间约束 27 3 5 人工任务异步调用方案研究人工任务异步调用方案研究 28 3 5 1 同步调用与异步调用 28 3 5 2 定义流程等待时间 29 3 5 3 消息关联机制研究 30 3 6 任务调度模式研究任务调度模式研究 32 3 7 本章小结本章小结 34 4 基于异步模式的人工任务执行系统的设计与实现基于异步模式的人工任务执行系统的设计与实现 35 4 1 人工任务转换程序设计与实现人工任务转换程序设计与实现 35 4 1 1 转换的基本思想 35 4 1 2 实现异步回调 36 4 1 3 建立消息相关机制 37 4 1 4 封装输入参数 39 4 1 5 任务分配约束的转换 40 4 1 6 任务数据回写到流程 41 4 2 人工任务管理器设计与实现人工任务管理器设计与实现 42 4 2 1 需求分析 42 4 2 2 系统架构 43 4 2 3 任务生命周期 47 4 2 4 任务创建操作 48 4 2 5 任务列表操作 53 4 2 6 任务认领操作 54 4 2 7 任务查看操作 55 4 2 8 任务执行操作 57 4 2 9 任务时间监控 61 4 3 本章小结本章小结 63 5 基于异步模式的人工任务执行系统的应用基于异步模式的人工任务执行系统的应用 65 5 1 应用场景应用场景 65 5 2 人工任务定义与转换人工任务定义与转换 66 5 3 运行效果分析运行效果分析 71 5 4 本章小结本章小结 74 6 结论与展望结论与展望 75 6 1 结论结论 75 6 2 工作展望工作展望 76 致致 谢谢 77 参考文献参考文献 79 附附 录录 83 1 1 绪 论 1 1 课题研究背景与研究意义 随着信息化的不断发展 信息系统正越来越成为当今各个企业的重要资产 为了快速适应市场需求 缩短信息系统的开发周期 降低成本 越来越多的企业 正采用集成现有系统功能的办法形成新的系统 提供新的功能 企业内部信息系 统种类日益繁多 规模不断扩大 异构性越来越高 为解决这些问题 面向服务 架构 service oriented architecture soa 应运而生 在 soa 中 it 系统提供的功能 被封装为更粗粒度的 web 服务 服务之间采用 xml extesible markup language 进行数据交互 这使得采用不同技术 运行于不同平台的信息系统能够整合到一 起 soa 强调服务间的松耦合 服务请求者仅需要根据 wsdl web service description language 所描述的服务契约就可以请求一个服务 而不需要知道服务 内部的实现细节 服务请求者与提供者之间通过 xml 格式的 soap simple object access protocal 消息进行交互 减少了两者之间的依赖性 soa 体现了软件重用 的思想 通过将已有 it 系统中的功能封装为服务以及对这些服务的组合使用 既 能够缩短新的应用系统的开发周期 也最大限度地重用了企业已有的系统资产 同时 一个服务也可以应用于多个业务流程 当业务流程发生改变时 只需要对 现有服务重新编排 而不需要修改服务本身 提高了业务流程的灵活性 业务流程执行语言 business process execution language bpel 为企业实现 soa 提供了最佳途径 bpel 是一种用于描述服务组合 编排与协作的编程语言 1 it 系统的功能被封装为 web 服务 而 bpel 使得企业可以将这些 web 服务组合起 来形成新的 web 服务 bpel 也是一种基于工作流的 web 服务组合描述语言 它 将 web 服务编排到一起形成业务流程 bpel 提供了丰富的元素描述企业应用中 复杂的场景 使得企业间的复杂业务协作得以实现 同时也使企业能够灵活快速 地响应不断改变的业务需求 bpel 已经成为 web 服务组合在工业界事实上的标 准 bpel 主要关注业务流程的自动运行 并不支持用户参与流程的执行过程 然 而在现实应用中 人工交互或干预通常是业务过程中不可或缺的一部分 例如在 一个采购流程中订单金额超过了一定的数额需要经过经理的审批才能发送 这种 人工交互或干预可以是简单的批准某项任务 或是流程执行到某一步需要指定的 用户提供数据 或是更复杂的一些场景 比如任务的委托执行 因此 有必要使 bpel 流程支持用户的参与 用户与流程的交互可通过人工活动完成 人工活动是流程中一种特殊的活动 2 它不是由计算机自动实现 而是由相关人员来完成的 通常在一个工作流系统中 流程运行到人工活动的步骤时 系统会创建一项工作任务 由用户去完成这项任 务 这样就完成了用户与流程的一次交互 因此 人工活动也可以称为人工任务 1 2 国内外研究现状 国外研究现状 国外的一些大型软件厂商对bpel中的人工协作问题进行过许多研究 并开发 出了相应的产品 oracle把人工交互设计为一个用于人工任务管理的web服务 所 有的交互接口都通过wsdl 不用对bpel进行扩展 ibm和sap于2005年7月联合 提出了bpel4people白皮书 对人工任务的应用场景和功能实现进行了宏观上的描 述 2007年6月 ibm bea oracle active endpoints sap adobe等六家厂商 共同发布了bpel4people1 0规范和ws humantask1 0规范 bpel4people规范中定 义了一种新的基本活动类型来表示人工交互 新的活动使用人工任务作为实现 ws humantask规范负责定义人工任务 包括人工任务的生成 状态管理 与流程 的交互等 由于上述两个规范是后来提出的对bpel的补充规范 很多现有的bpel 引擎并不支持 国外一些大学也在bpel人工协作领域进行了许多研究 文献 2 提出了一种名 为viebop vienna bpel for people 的支持bpel4people规范的系统 将人工活动转 换成一对invoke receive活动 也就是将人工活动转换成对一个独立于引擎之外的 viebop系统的调用 由viebop系统对人工活动进行管理 由于将bpel4people中 所引入的新元素转换成了符合标准bpel的元素 流程在现有的任何支持标准bpel 的引擎上部署和执行 但是 由于bpel4people和ws humantask规范对bpel进行 了比较复杂的扩展 仅仅通过将人工活动转换成标准的bpel元素很难完全实现这 两个规范 文献 2 也指出需要流程中定义的人工活动比较简单 文献 3 也提出了 一种支持人工活动运行的系统架构 设计一个人工活动管理器来管理用户的交互 并提出了一种人工活动描述语言 通过对bpel进行简单的扩展来描述人工活动 定义人工活动与流程的数据交互 执行活动的授权 将这些扩展的元素嵌入到对 人工活动管理器调用的活动之下 引擎可以忽略这些扩展元素 使得流程 可以运行于已有的引擎之上 并通过一个xslt extensible stylesheet language transformations 样式表对bpel流程定义文件进行转换 在活动之前加入 构造调用人工活动管理器的输入消息的代码 在活动之后加入从调用人工 活动管理器的返回消息中提取数据的代码 使得流程可以与人工活动管理器正常 地交互 但是 文献 3 中流程对人工活动采用的是同步调用模式 这种模式适合 调用执行时间较短的web服务 而人工活动执行时间往往很长 采用异步调用的模 3 式更为合理 国内研究现状 近年来 在国内也出现了许多关于bpel人工协作的研究 也是采用类似的方 式 在引擎之外扩展一个额外的系统来支持人工协作 文献 4 和文献 5 中设计了 一个人工工作流服务 将人工活动透明地描述为对这个服务的异步调用 但有时 需要将活动显式地表示出来 而不是定义成透明的对web服务的调用 比如常见的 职责分离原则 要求两个活动不能由同一个用户执行 这时就要在流程中明确地 定义人工活动 文献 6 中将人工活动定义为一个特殊的活动 在这个 活动中不引用partnerlink 而是嵌入关于活动人员分配的定义 但该文献 只是提出了一种简单的支持人工活动的方法 并没有说明这种方法应如何实现 文献 7 采用了一种成熟的支持人工交互的工作流引擎 jbpm作为任务管理容器 在需要人工交互时 bpel流程通过一个web服务与jbpm进行交互 进而完成与用 户的交互 1 3 本文的主要工作 本文针对bpel不支持人工交互这一问题 在分析现有的关于bpel人工协作的 研究成果的基础上 改进了在bpel中定义人工任务的语言 通过分析bpel对web 服务的同步和异步调用 提出了一种采用异步调用模式的bpel人工任务执行系统 的架构 设计与实现了一个人工任务转换程序和人工任务管理器 并用一个需要 人工交互的流程案例验证了系统的合理性与可行性 本文完成的主要工作如下 分析了目前国内外关于 bpel 人工交互的研究现状和 bpel 的相关技术 分析了相关研究的优点与不足 分析了人工交互的过程 改进了现有研究成果中定义人工任务的语言 增 加了对流程等待期限 任务认领期限和任务调升期限的定义 研究了 bpel 对 web 服务的同步与异步调用模式 改进了现有研究成果中 人工任务的执行系统架构 系统采用一个独立于引擎之外的人工任务管理器维护 人工任务 流程与人工任务管理器之间采用异步消息模式进行交互 更能适应人 工任务长时间地执行 设计和实现了一个转换程序 将含有人工任务定义的活动自动转 换成对人工任务管理器的异步调用 设计和实现了人工任务管理器的原型系统 使用 jax ws 将系统的功能封装成 web 服务供流程和客户端调用 使用一个需要人工协作的汽车贷款审批流程对系统进行检验 应用结果验 证了系统的合理性与可行性 能够实现用户干预流程的执行 4 1 4 本章小结 本章分析了课题的研究背景 讨论了 soa 与 bpel 的应用价值 论述了关于 bpel 人工协作的国内外研究现状 指出了课题的研究意义 最后提出了本文的研 究内容 5 2 相关技术分析 2 1 web 服务技术分析 web 服务作为一种新兴的 web 应用模式 是一个崭新的分布式计算模型 是 web 上数据和信息集成的有效机制 8 web 服务提供了一种将运行于不同环境 采 用不同技术的应用程序集成起来的方法 它利用 soap wsdl xml schema 和 其他一些基于 xml 的技术 克服了不同平台和不同编程语言的障碍 web 服务是 soa 中的核心技术 已被广泛应用于信息系统间的集成和互操作中 实现 web 服务的关键技术如下 可扩展性标记语言 xml xml 是一种类似于 html 的基于文本的标记 语言 它是一种简单的数据描述语言 使用一系列用户自定义的标签描述数据 xml 的简单性使得它易于在任何应用程序中读写数据 从而逐步成为网络数据交 换的标准 xml 数据以纯文本格式进行存储 提供了一种独立于软硬件的数据存 储方法 通过 xml 可以在不同平台的系统之间轻松实现交换数据 xml 目前 已被广泛应用于系统交换 文档类型定义 信息说明等方面 简单对象访问协议 soap soap 是一种基于 xml 的 在松散分布式环 境中交换结构化信息的轻量级通信协议 它使不同平台的应用程序可以交换信息 使用 soap 实现跨平台的信息交换如图 2 1 所示 图 2 1 使用 soap 交换数据 fig 2 1 exchange data using soap 一个 soap 消息的基本结构如下 6 soap 具有三个基本元素 和 元素 定义了一个整体的表示框架 用来表示消息的内容 应当如何处理消息等 元素表示消息头 是可选的 通过它可扩展 soap 消息的描述能力 里 面可包含有关 soap 消息的应用程序专用信息 比如认证信息 如果有 元素 它必须是元素的第一个元素 表示消息体 是必须的 它 包含需要传输到消息最终端点的具体消息内容 类型 服 务 接 口 抽 象 定 义 消息具体内容 接口操作 服 务 实 现 具 体 定 义 绑定 服务 端口 操作 包含一个或多个 引用 包含一个或多个 映射 包含一个或多个 引用 包含一个或多个 类 型 定 义 图 2 2 wsdl 文档的结构 fig 2 2 structure of wsdl document 7 web 服务描述语言 wsdl wsdl 是一种使用 xml 编写的描述 web 服 务的文档 通过 wsdl 可描述 web 服务所能提供的操作 和服务交互的数据格 式与协议以及 web 服务的位置 通过 wsdl 描述 客户端可以使用 web 服务的 功能而无需了解 web 服务的实现细节 wsdl 分离了服务接口 抽象定义 和服务 实现 具体定义 使得服务接口易于重用 wsdl 的结构如图 2 2 所示 它在描述 web 服务时所使用的主要元素如下 a 元素是一个数据类型定义的容器 它定义了所有在 wsdl 消息中所 用到的数据类型 为了最大程度的平台中立性 wsdl 使用 xml schema 语法来 定义数据类型 这些数据类型可以被定义在元素内部 也可以被定义在一 个外部的 schema 文件中 然后在 wsdl 的文件中进行导入 被导入的 schema 元素可以使用命名空间引用 b 元素定义与 web 服务交换的消息的基本格式 通常会为 web 服 务的请求和响应各自定义一个消息 每一个元素都包含一个或多个 元素 指定消息中的具体内容 类似于传统编程语言里在方法中定义多个参 数 part 元素可以使用 type 属性引用一个 xml schema 中内置的基础类型 也可 以使用属性引用元素中用户自定义的数据类型 c 元素包含一组由元素组成的操作 类似于 java 语言中 的接口 元素又可以通过表 2 1 所列举的子元素的 message 属性引用消 息 表 2 1 元素的子元素 tab 2 1 child elements of element 元素 作用 定义发送到服务的消息 定义从服务接收的消息 定义发生错误时操作调用者接收到的消息 根据元素中的子元素的构成和顺序 操作的类型可以分为四种 如 表 2 2 所示 d 元素定义与 web 服务进行交互的消息传输协议 默认的传输协议 是 soap 其他可选的传输协议还有 http jms smtp 和 tcp 等 元素通过 type 属性引用元素 元素对其所引用的 元素中定义的操作进行绑定 e 元素用于定义服务 它包含多个子元素 元素通过 8 binding 属性引用元素 每个元素包含一个子元素指定端口的端点 地址 地址的格式由将使用端口的协议决定 表 2 2 操作的类型 tab 2 2 types of operation 类 型 描 述 子元素构成 单向操作 服务接收消息 一个子元素 请求 响应式操作 服务接收消息并发出响应 一个子元素在前 一个 子元素在后 恳求 响应式操作 服务发出消息并接收响应 一个子元素在前 一个 子元素在后 通知式操作 服务发出消息 一个子元素 统一描述 发现和集成 universal description discovery and integration uddi uddi 是一套基于 web 的 分布式的 为 web 服务提供信息注册中心的 标准规范 它集描述 检索和集成为一体 核心是注册机制 它是一种目录服务 企业能够使用 uddi 对 web 服务进行注册和搜索 2 2 web 服务组合分析 现实应用中的业务逻辑往往都比较复杂 依靠单个的 web 服务已经很难达到 要求 越来越多的业务逻辑需要多个 web 服务组合起来协作才能完成 web 服务 组合的基本思想就是使用系统中已有的 web 服务 通过它们一定顺序的组合或组 合顺序的改变 创建出新的或更高质量的服务满足用户需求 9 web 服务的组合方法大致可以分为两类 一类是语义驱动的 web 服务组合 另一类是过程驱动的 web 服务组合 语义驱动的 web 服务组合将语义网的概念与 web 服务相结合 支持 web 服务的动态发现 自动化地进行组合 调用和互操作 owl s ontology web language for services 是语义网中一种用来描述 web 服务的 属性和功能的本体规范 它使用一系列基本的类和属性来描述 web 服务 提供了 一种可共享的框架 10 owl s 用 serviceprofile servicemodel 和 servicegrounding 这三类本体来描述 web 服务的基本信息 serviceprofile 描述服务做什么 包括服 务提供的功能 服务的输入输出 服务执行的前提条件和产生的结果 servicemodel 定义服务的过程模型 描述服务是怎么做的 servicegrounding 描述应该怎么访问 服务 owl s 在目前的 web 服务组合的研究中应用广泛 过程驱动的 web 服务 组合从流程建模的角度出发 重视服务组合中的数据流和控制流 强调对动态环 9 境的处理 9 根据建模工具和实现技术的不同 过程驱动的 web 服务组合又可分 为基于工作流 基于状态演算和基于进程代数的 web 服务组合 bpel 即是一种 基于工作流的 web 服务组合语言 可将一组现有的 web 服务以业务流程的方式组 合起来定义一个新的 web 服务 web 服务组合的形式可分为两种 编制 orchestration 和编排 choreography 编制是一种中心化的 web 服务组合方式 在服务编制中 有一个中心控制器 可以 是一个流程或服务 来控制参与组合的 web 服务 这个中心控制器了解编制的总体 目标 涉及的操作以及操作的调用顺序 而参与的 web 服务并不知道也不需要知 道它们已经参与到了组合当中 这种中心化的管理使 web 服务能够在不了解彼此 影响的情况下进行添加和删除 也能够在发生错误的时候对服务进行替换 编制 方式如图 2 3 所示 中心协调器 web服务1web服务3 web服务2 调用 调用 调用 web服务4 调用 图 2 3 服务编制 fig 2 3 service orchestration 与编制方式不同 编排方式并不依赖于一个中心控制器 每个参与到编排的 web 服务都明确地了解业务流程 知道要什么时候执行什么操作 知道什么时候 交互什么消息 编排方式如图 2 4 所示 bpel 分别通过以下两种流程支持服务编制和编排 可执行的业务流程 支持服务编制的流程 定义了业务流程的详细过程和 步骤 可被引擎直接执行 不可执行的业务流程 支持服务编排的流程 只定义业务流程中交互双方 所交换的消息 而不包括流程的详细过程和步骤 不能直接被引擎执行 10 图 2 4 服务编排 fig 2 4 service choreography 2 3 bpel 技术分析 2 3 1 bpel 特性分析 bpel business process execution language 业务流程执行语言 是一种基于 xml 的 以业务流程的方式描述 web 服务组合 编制和协作的语言 目前已经被 广泛应用于 web 服务相关的项目中 成为了 web 服务组合事实上的标准 作为一 种可以调用 web 服务的工作流语言 bpel 具有如下几大特性 丰富的表现能力 bpel 既提供了类似于传统编程语言的语法功能 支持 各种结构 循环 分支等 也支持变量定义 赋值 使得人们可以像传统编程方式 那样定义业务流程 同时也提供了大量的表现业务流程的元素 能够描述复杂的 业务场景 提供了丰富的与 web 服务交互的功能 在 bpel 中既可以使用同步模式调 用 web 服务 也可以采用异步模式调用 web 服务 既可以顺序调用 web 服务 也 可以并行调用 web 服务 这使得 bpel 对短时间或长时间运行的流程都能提供很 好的支持 同时 bpel 也提供了完整的消息管理机制 能将到达流程的消息路由 到合适的流程或活动 这种机制在异步环境下相当重要 有较完整的流程容错机制 bpel 提供了丰富的错误处理元素 用于增强 业务流程的健壮性 同时 bpel 也提供了内置的流程恢复与补偿机制 这对于业 务流程 尤其是长时间运行的流程 非常重要 关注点分离 且可扩展性强 bpel 只关注于服务组合的业务逻辑 其他 的关注点 比如服务质量 qos 事务处理 人工任务等 可作为附加模块进行扩 11 展 2 3 2 bpel 核心概念分析 图 2 5 描述了 bpel 的元模型 一个 bpel 流程 process 由各种活动 activity 组成 流程通过伙伴链接 partner link 与外部应用进行交互 变量 variable 记录了 流程的状态 关联集合 correlation set 将消息关联到特定的流程实例 下面对 bpel 的核心概念进行简要的分析 图 2 5 bpel 元模型 fig 2 5 meta model of bpel 伙伴链接 partner link bpel 流程通过两种方式与外部的 web 服务交互 一种是流程调用其他服务 一种是响应来自客户端的请求 也就是说 bpel 流程实例既可以作为服务的请求 者 也可以作为服务的提供者 bpel 把所有与流程进行交互的其他服务称为伙伴 partners 把与伙伴的交互称为伙伴链接 partner links bpel 流程与外部伙伴进 行交互的机制如图2 6所示 partner link通过引用partner link type 伙伴链接类型 来定义流程与伙伴服务之间的通信接口 伙伴链接类型通过定义一到两个角色声 明两个服务之间的关系 其中每个角色指明一组 port type 即明确了该角色所提 供的服务接口 伙伴链接可以通过 myrole 属性和 partnerrole 属性指定 bpel 流程 12 和伙伴各自的角色 伙伴链接类型通常被定义在 wsdl 文档中 被 bpel 流程所 引用 partner link partner link partner link 图 2 6 bpel 流程与外部伙伴交互机制 fig 2 6 interaction between bpel process and external partners 变量 variable 在 bpel 流程运行过程中 经常需要将一些数据保存下来 比如调用 web 服 务返回的结果 接收客户端输入的数据等 bpel 提供了变量来记录和维护这些数 据 在 bpel 中 用元素可以定义一个变量 元素定义一组 变量 变量的内容包含两部分 一部分是变量名 用属性 name 表示 另一部分是 变量的数据类型 由 wsdl 定义 可以是一个 wsdl 消息 用属性 messagetype 表示 也可以是 xml schema 内置的简单类型 用属性 type 表示 或者自定义的复 杂数据类型 用属性 element 表示 例如 13 bpel 也提供了一些内置函数处理变量的内容 getvariableproperty variablename propertyname 函数用于从变量中提取属性 值 getvariabledata variablename partname locationpath 函数用于从变量的某个部 分中提取数据 partname 指定了变量所对应的 wsdl 消息类型的 part 元素指定的 部分 locationpath 是一个 xpath 表达式 指定了具体的路径 活动 activity bpel 流程是由一系列活动组成的 活动分为两种 基本活动和结构化活动 基本活动描述了 bpel 流程中最基本的执行步骤 是不可再分的执行单元 结构 化活动是对流程控制逻辑的描述 目的是在流程的执行过程中 控制基本活动的 执行顺序和执行逻辑 下面是对这两种活动的简要介绍 1 基本活动主要有 等 赋值活动 活动在变量之间进行数据的传递 一个活动可以包含任意多 个元素 每一个元素定义了一次复制操作 中的元素 定义复制的源 元素定义复制的目标 活动可以使用表达式进行简单 的计算构造和插入新数据 也可以是简单地将数据从一个变量复制到另一个变量 还可以使用活动把端点引用复制到伙伴链接 或把伙伴链接复制到端点引 用 以实现服务的动态绑定 服务调用活动 调用 web 服务是 bpel 最重要的功能之一 活动用于调用由伙伴链接 提供的 web 服务 服务实现可以是单向或请求 响应操作 活动通过属性 partnerlink 指明要调用哪一个伙伴链接对应的服务 porttype 属性指定所调用服务 的 wsdl 接口 operation 属性指定所要调用的操作 使用 inputvariable 属性指定 调用web服务时所需要传递的输入参数 对于调用的服务时请求 响应操作的情况 还需要通过 outputvariable 属性指定接收服务返回的结果 消息接收活动 活动用于等待到达流程的消息 既可等待启动流程的初始消息 也 可等待回调流程的消息 它的 partnerlink 属性指定要等待哪个伙伴链接的消息 porttype 属性指定要等待消息的 wsdl 接口 operation 属性指定要等待消息的操 作 variable 属性指定到达流程的消息存储在哪个变量中 createinstance 属性指定 消息到达后是否新建一个流程实例 一般在等待启动流程的初始消息的 活动中将 createinstance 属性的值设为 yes 14 服务应答活动 活动用于对客户端的回复 一般与初始化流程的活动相对应 它的 partnerlink porttype operation 属性一般分别与活动的相关属性一 一对应 和活动组合生成输入和输出操作的响应 构成了 wsdl porttype 中的请求和响应操作 它的 variable 属性指明要回复的内容存储在哪一个 变量中 即指明回复内容的来源 此外 活动也可以返回一个错误消息 等待活动 活动允许流程等待一段给定的时间 或者等到某一时 刻 才继续执行 比如 可以使用活动定义流程在延迟一 段时间以后再调用某个服务 2 结构化活动主要有 等 顺序活动 活动是最简单的一种结构化活动 嵌套在它里面的一组活动按先后 次序顺序执行 当中的最后一个活动完成后 该活动也就完 成了 分支活动 bpel 也提供了根据条件的不同而执行不同的路径的分支执行功能 使用 活动可以定义条件分支 每一个分支用元素定义 最后一个分支可 用元素定义 活动类似于许多传统编程语言中所提供的 switch 语句 bpel 也提供了活动用于条件判断 与传统编程语言中的 if 语句作用相 同 可根据不同的条件执行不同的活动 循环活动 bpel 通过活动支持循环功能 它指定反复执行其内部的活动 直到 条件不再为真 这也类似于传统编程语言中提供的语句 活动提供 了类似于传统编程语言中的 do while 语句的功能 可使其内部的活动至少执行一 次 事件选择处理活动 活动等待一组相互排斥事件中的一个发生 然后执行与发生的事件相关 联的活动 这些相互排斥的事件可以是使用活动处理的消息事件 或 是由活动处理的警报事件 活动会阻塞流程执行 直到其中任意 一个事件被触发 流程才继续执行 每个活动必须至少包含一个 事件 本文在 3 5 2 节详细分析如何使用活动灵活定制流程等 待人工任务执行的时间 15 并发活动 bpel 提供活动描述一组活动并发执行的场景 活动开始执行时 其中的每个活动也开始执行 当其中所有的活动结束以后 活动执行结束 为了适应更为复杂的应用场景 bpel 还通过 链接 提供描述中的活 动之间的依赖关系的功能 在活动中可以定义一个链接 如 link1 然后指 定活动 a 为 link1 的源活动 source 活动 b 为 link1 的目标活动 target 那么活动 b 就会在活动 a 完成之后再进行 还可以在的源上定义变迁条件 transition condition 当源活动完成以后 引擎检查变迁条件是否满足 如果满足才激活链 接 目标活动才执行 通过可以任意灵活地定义活动的执行顺序 作用域 作用域提供了一种将流程中的活动划分成不同的组织单元的方法 作用域提供 了活动的执行上下文 在其中可以定义域内部的错误处理器 补偿处理器 事件 处理器和消息相关集 也可以定义只在域内部可见的变量 关联集合 correlation set 关联集合是一组属性的集合 它利用某种形式化的会话标识将消息关联起来 确定到达的消息应该分发给哪个流程实例 本文在 3 5 3 节中详细分析如何利用任 务 id 在异步调用过程中建立消息相关机制 错误处理 在流程执行的过程中可能会出现一些错误的情况 如网络通信错误 服务调用 失败等 或者流程执行的过程中会通过活动抛出一些业务逻辑方面的错 误 这些错误情况的出现回造成流程无法成功执行 bpel 提供了错误处理机制 可 以 在 流 程 中 添 加 元 素 来 定 义 对 错 误 的 捕 获 和 处 理 在 中可以定义一些处理错误的或活动 活动 捕获并处理指定名称的错误 捕获并处理所有的错误 其功能类似于 java 语言中的 try catch 结构 在流程运行的过程当中 有些活动已经完成 有些活动还未进行 如果某个事 件或错误的发生导致流程取消 那么已经完成的活动就需要复原 保证参与流程 的各方数据的一致性 在传统的分布式系统中通常采用锁定 回滚等方式保证事 务的 acid atomicity consistency isolation durability 属性 这种方式适用于企业 内部的可信任域之内并且事务时间很短的情况 bpel 所定义大多数业务流程都会 执行很长时间 可能几天 几个月甚至几年 且流程通常需要与跨部门 跨企业 的伙伴服务进行交互 流程也不可能锁定参与流程各方的资源 因此传统的分布 式事务处理方法并不能适应 bpel 的需要 bpel 提供了补偿的机制 补偿不同于 回滚 回滚是一种向前恢复的策略 是指在发生错误时将数据或数据的状态恢复 到执行之前的状态 而补偿是一种向后恢复的策略 是执行原操作的逆操作 在 语义上逆转另一个已提交事务的结果 11 在 bpel 中 可以为整个流程 某个域 16 某个活动定义 补偿处理器 在补偿处理器中定义 补偿操作逻辑 一旦进行补偿 流程中已经运行完成的所有活动都会按照补偿处 理器中定义的活动进行补偿 2 3 3 bpel 与 wsdl bpelwsdl
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度电影主题旅游产品拍摄制作合同
- 2025二手集体土地上房屋买卖合同
- 红色遗址保护知识培训内容课件
- 新年心愿600字初三作文12篇
- 合同管理流程及审批标准化工具
- 企业级专利许可协议
- 诗经拾贝课件
- 红楼梦第91回课件
- 红楼梦介绍课件
- 红楼梦五六回课件
- 主题阅读1:大自然的文字
- 电梯周期日常维护保养项目表
- 工程项目进度管理-课件
- (中职中专)二维动画设计软件应用完整版课件汇总全书电子教案(最新)
- 国际贸易理论与实务ppt课件(完整版)
- GB∕T 6546-2021 瓦楞纸板边压强度的测定
- 历史选择性必修1 国家制度与社会治理(思考点学思之窗问题探究)参考答案
- 学前儿童发展心理学(第3版-张永红)教学课件1754
- 医学资料冠心病英文版
- 部编人教版九年级语文上册教学计划及教学进度表
- 干法——稻盛和夫
评论
0/150
提交评论