BPEL_Oracle BPEL新一代工作流介绍(概念)
2014-11-02 Created By BaoXinjian
随着EAI向着SOA方向发展,如何利用Web Service完成系统整合日益成为企业IT系统集成的焦点。而BPEL作为工业标准,能够快速、可视化的将各个离散的WS整合成一个个端到端的Flows!
这样企业完成系统集成需要两个标准化的步骤:
1. 将各系统的Inbound和Outbound要求发布为Webservice
2. 根据业务需求,用BPEL将这些WS串成一个个可监控的Flow
业务流程执行语言(Business Process Execution Language, BPEL, 发音为'bipple'或'bee-pell'),也叫业务过程执行语言,是一种基于XML的,用来描写业务流程的编程语言,被描写的业务流程的每个单一步骤则由Web服务来实现。BPEL的目标是要实现业务流程定义格式的标准化,使得公司之间可以通过Web服务无缝的进行交互。
BPEL是基于Web服务的,并且依赖于WSDL。一个BPEL流程可以发布为一个WSDL定义的服务,并像其它Web服务一样被调用。而且,BPEL希望一个Web服务合成所包含的全部外部Web服务,都是用WSDL服务契约定义的,这令BPEL流程可以调用其它BPEL流程,甚至可以递归的调用自己。值得注意的是BPEL不直接支持人机对话,BPEL所描写的过程仅与Web服务通信,而这些Web服务却可以提供与用户的信息交换,但它们不是用户本身。用BPEL编写的流程可以在任何支持BEPL规范的平台或产品上运行。
BPEL支持两类不同类型的业务流程
1. 可执行流程:定义了要执行的各项具体任务,以及完成业务流程所需要调用的各个服务,它们遵循编排规范,可以被一个编排引擎所执行。
2. 抽象流程:详细说明了双方或多方的公共消息交换,但没有定义流程流的内部行为细节,不可执行。
Oracle BPEL Process Manager 通过将一系列同步和异步的服务组合到一个端到端 BPEL 流程流中,简化了基于面向服务的体系结构 (SOA) 开发应用程序的流程。
Oracle BPEL Process Manager 为设计、部署和管理 BPEL 业务流程提供了一个开发人员易于使用的可靠的解决方案。
1. Oracle BPEL Process Manager 包括三个主要组件:
(1). JDeveloper BPEL Designer:
JDeveloper BPEL Designer 扩展了 Oracle JDeveloper 10g 的功能,并支持使用 BPEL 进行业务流程的建模、编辑和设计。
它提供了一个图形化和用户友好的方式构建 BPEL 流程。JDeveloper 使用 BPEL 作为其原生格式,因此构建的流程是可移植的。
(2). Oracle BPEL Process Manager Server:
Oracle BPEL Process Manager 提供了 BPEL 服务器的一个可伸缩的强健实现。
Oracle BPEL Process Manager 执行标准的 BPEL 流程并提供“脱水”功能,因此长期运行流的状态在数据库中能够得以自动维护,从而实现了用于故障切换和可伸缩性的集群。
BPEL Server 利用的是基础 J2EE 应用服务器。
(3). Oracle BPEL Console:
Oracle BPEL Console 为管理和调试部署到 BPEL 服务器上的流程提供了一个基于 Web 的成熟界面。
审计跟踪和流程历史/报告信息可通过 BPEL Console 和 Java API 自动维护和提供。
2. 主要特性:
(1).Web Services/WSDL 作为组件模型
(2).XML 做为数据模型 (数据松散的耦合)
(3).同步和异步的消息交换模式
(4).确定的和不确定的流程调和
(5).分等级的异常管理
(6).长期变动的工作单元和补偿单元
3. 应用:
对一个企业内部单个系统,企业内部多个系统,企业间的多个系统进行业务流程管理,可以自适应业务流程根据特定企业不断变化的需要进行快速的定制,更快实现自动化、降低开发成本并缩短投放市场的时间。
4. 基本概念:
域:隔开一个单独的oracle bpel 业务流程实例为多个开发环境,可以通过ID识别,通过口令访问。默认的域为default。
WSDL:web服务定义语言。
可以绑定为 JMS, email, JCA, HTTP GET and POST
5. 构建实时流程分为几个步骤:分析人员使用自定义设计器以图形方式建立业务流程模型。
(1).自定义设计器将流程定义存储到数据库中。
(2).BPEL Generator 读取并验证流程定义。然后,它利用数据库表示以及用于部署的相关文件生成 BPEL XML 文件。
(3).BPEL 流程动态部署到 Oracle BPEL 流程管理器服务器上
1. BPEL流程模型是在WSDL定义的服务模型之上的一层。一个业务流程定义了一个流程实例和它的伙伴之间的交互。
为了定义一个业务流程,BPEL引入了一些新的XML元素,例如
Partners: 业务事务中的参与者(actors);
Containers: 组成业务流程中的某一状态的一组消息;
Operations: 所需Web服务的类型;
Port types: operations所要求的相关Web服务的关系;
2. BPEL包含的范围
处理活动的顺序,特别是网络服务互操作。
消息和处理实例之间的关系。
在发生错误和例外情况下的恢复行为。
处理角色之间的基于网络服务关系的双面性。
3. BPEL语言支持的两类任务
BPEL支持两类任务或者说是行为:基本任务(basic tasks)和结构化任务(structured tasks)。
基本任务是指由业务流程的一个基本的步骤,任务内不会嵌套其它任务;而结构化任务从外部看是一个步骤而从内部看却有若干个步骤。
3.1 基本化任务包括:
- Invoke任务——允许业务流程在某一个Web服务提供的portType上调用单向的(one-way)或请求/响应(request/respose)操作。
- Receive任务——允许业务流程停下来等待消息到来。
- Reply任务——允许业务流程对收到的消息发送一个回复消息。
- Wait任务——通知流程等待一段时间。
- Assign任务——把数据从一处复制到另一处。
- Throw任务——表明发生了某个错误。
- Terminate任务——终止整个编排实例。
3.2 结构化任务包括:
- Sequence任务——定义一个有序的任务序列
- Switch任务——根据条件选择某一分支
- Pick任务——停下并等待某一适当消息的到来,或者等到超时继续前进。只要多个触发器中的一个发生,就执行相应的活动,任务便结束了。
- While任务——定义循环执行,直至满足某一个条件的一组任务。
- Flow任务——表明一组应并行执行的步骤(可以通过建立连接来定义一个特定流程的执行序列) 以上是是BPEL4WS1.1中常见的任务,在最新发布的WS-BPEL2.0有较大的改变。支持更多新的任务或行为
4. BPEL中表达式 BPEL支持四种表达式
- 布尔表达式。
- 持续时间表达式。
- 截止时间表达式。
- 普通表达式,可以归结为XML Schema中所定义的string, number和boolean格式。
- BPEL同时支持一些操作符,如简单的算术运算(加、减、乘)、简单的比较运算(等于、不等于、小于、大于、小于等于、大于等于)、布尔运算(and和 or运算)以及对xml格式的操作符。现有的BPEL可以通过外部的表达式语言来描述、计算表达式,这通过process的 expressionLanguage属性进行表达式语言指定,现在只能指定为XPath1.0相应的活动,任务便结束了。
5. BPEL中的变量
WS-BPEL变量标识流程中交换的特定数据。BPEL流程在收到一个消息后,会为相应的变量赋值,以便后续请求能够访问。
BPEL支持的变量类型包括三种:
- 由WSDL文件所定义的消息类型(message type);
- 由XML Schema所定义的简单类型(simple type);
- 由XML Schema所定义的元素(element). 每一个变量都从属于所在的作用域(scope)之内;
6. BPEL中的作用域
作用域 (scope)是用来表示流程中的一个区域。如前所述,某个作用域内的变量只在该作用域内有效,但BPEL还扩展了作用域的功能,具体体现在如下几个方面:
6.1 错误处理(Fault Handler)
当一个行为出错的时候,会抛出一个错误消息。该消息首先会被自身的错误处理器(如果有的话)所处理。错误处理器会尝试三种解决方案:
- 分析该错误信息,并根据指定规则找到对应的合适的行为进行处理;
- 使用一个rethrow行为,向外再次抛出一个错误;
- 强制终止该流程的执行。
6.2 事件处理(Event Handler)
BPEL中定义了两类事件:
- 一类是“消息事件”,即从外部传来的消息;
- 另一类是由于达到了用户定义的时间点而发出的警告。
- 事件处理机制从作用域的一开始就激活,一直等待事件的到来而执行内部行为,也会随着作用域的结束而结束。
6.3 补偿服务(Compensation Handler)
补偿处理是为了将流程的状态回滚,回到跟进入作用域前一样。
所需要做的就是将该作用域内已执行部分采用其它行为进行撤销,通常是调用一个效果相反的服务。
错误及补偿处理程序与OOP语言(如Java)中的catch子句类似。如果执行了某个抛出任务,就会触发错误及补偿处理程序。
7. BPEL组件架构
- BPEL核心组件有三部分组成
- BPEL设计工具(BPEL Designer)
- 业务流模板(Process flow template)
- BPEL引擎(BPEL Engine)
BPEL设计工具 大多基于Eclipse实现。 业务流模板 业务流模板遵守BPEL规范。它在设计阶段有BPEL设计工具生成,运行阶段由BPEL引擎执行。
8. BPEL引擎
(1). 执行任何与BPEL标准相符的业务流模板,主要功能包括调用Web服务,数据内容映射,错误处理,事务支持,安全等等。通常BPEL引擎与应用服务器集成在一起。
(2). 在一个典型的BPEL应用场景中,一家公司的业务分析将使用BPEL设计工具(GUI)来定义一个业务流程。一旦流程定义完毕,设计工具将在后台生成包含业务流程逻辑的业务逻辑模板。运行时,该流程模板将被BPEL引擎所执行。
Thanks and Regards
BPEL_Oracle BPEL新一代工作流介绍(概念)的更多相关文章
- 【Slickflow学习】.NET开源工作流介绍、下载(一)
第一次自己写博客文章,大家多多指教.写博客主要记录一下学习的过程,给初学者提供下参考,也留给自己做备忘. Slickflow .NET开源工作流-介绍 这里摘录Slickflow官网的介绍: Slic ...
- 通达OA 小飞鱼开发培训第四讲 工作流介绍(图文)
本次课程主要解说了OA工作流相关内容,有些涉及到工作流的程序开发假设对工作流不熟悉也是有非常大难度,因此在这里进行了内容补充. 1.工作流介绍
- Git协同工作流介绍
git相关的文章和教程非常多,但是系统介绍和了解工作流的人并不多,在使用过程中用错或用偏的也不少,这里分享的是,假设你已经入门的情况下,我们如何去选择适合团队需要的工作流. git优势 这里先唠叨gi ...
- 暑期 2021 参与社区:新一代工作流调度——Apache DolphinScheduler
在众多企业都在进行数字化转型的大背景下,大数据.人工智能等行业有着十分广阔的前景,其发展也可谓如火如荼.发展过程中这其中当然离不开数据采集.数据流通和数据价值挖掘等各种环节,而各环节的打通需要一个坚实 ...
- 新一代工作流调度-Apache DolphinScheduler 1.3.5 Docker镜像发布
新一代大数据工作流调度 - Apache DolphinScheduler(incubator) 今天发布了 1.3.5 官方 Docker 镜像.在社区伙伴 chengshiwen 的努力下, 1 ...
- Workflow笔记1——工作流介绍
什么是工作流? 工作流(Workflow),是对工作流程及其各操作步骤之间业务规则的抽象.概括.描述.BPM:是Business Process Management的英文字母缩写.即业务流程管理,是 ...
- ERP_Oracle Fusion Application新一代ERP介绍
2014-12-31 Created By BaoXinjian
- WebService的介绍概念 收藏
WebService学习总结(二)——WebService相关概念介绍 一.WebService是什么? 1. 基于Web的服务:服务器端整出一些资源让客户端应用访问(获取数据) 2. 一个跨语言.跨 ...
- git 工作流介绍
GIT Git工作流你可以理解为工作中团队成员遵守的一种代码管理方案,在Git中有以下几种工作流方案作为方案指导: 集中式工作流 功能开发工作流 Gitflow工作流 Forking工作流 下面针对性 ...
随机推荐
- hive学习笔记_hive的介绍与安装
一.什么是Hive Hive是建立在 Hadoop 上的数据仓库基础构架.它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储.查询和分析存储在 Hadoop 中的大规模数据 ...
- hihoCoder #1078 : 线段树的区间修改
题目大意及分析: 线段树成段更新裸题. 代码如下: # include<iostream> # include<cstdio> # include<cstring> ...
- 如何更新Android SDK和Build Tool
1. 运行命令 android 2. 勾选并安装需要的版本 3. 完成!
- UMDH
1. 什么是UMDH UMDH=User Mode dump heap.把进程的堆dump下来.包括堆栈信息.UMDH是WinDbg附带的一个工具. 2. 下载安装 WinDbg.完事后在WinDbg ...
- 谷歌浏览器chrome与firefox的冲突(未解之谜)
那年,公司开发了一套在线制作电子书的系统 e-textbook. 我负责小学电脑科教材在线题目的制作. 利用 ps制作剪裁好图片,导入系统,制作题目,并通知同事添加代码. 检测时,却发现有一道图片拖放 ...
- Understanding virtualxid && transactionid
对pg_locks视图中的virtualxid和transactionid字段感到困惑,经查阅资料,特此在此整理一下学习内容: pg_locks Columns Name Type Reference ...
- webbrowser在不同的.netframework版本差异
这几在做一个浏览器的自动化下载的工具,发现自己做的demo和做的项目代码运行不一致,代码就那么几行,拷贝过去为什么有些行为就不一样呢?经过分析发现原来有.net4.0和.net2.0中的webbrow ...
- python2.7处理https稍微好点的办法(坑得一笔)
from warnings import filterwarnings filterwarnings('ignore') r = requests.get(url, headers=headers, ...
- python数据类型之int用法
1.查看整型的用法 CODE:print(dir(int))['__abs__', '__add__', '__and__', '__bool__', '__ceil__', '__class__', ...
- Oracle内存参数配置及版本问题
Oracle的内存配置与Oracle性能息息相关.从总体上讲,可以分为两大块:共享部分(主要是SGA)和进程独享部分(主要是PGA).在 32 位操作系统下 的Oracle版本,不时有项目反馈关于内存 ...