BPEL的基本思想

BPEL研究(2): 目前主流和开源的BPEL引擎         前面简单介绍了一下BPEL的基本特性,年底了终于有些时间可以积淀一下了,针对前段时间对BPEL的研究,现在主要交流一下目前的主流和开源的BPEL引擎。时至今日,几乎没有一个大的软件厂商不力顶SOA的,而Oracle也是其中一家,在SOA方面的投了大量的资金。1、Oracle BPEL工具套件是一套比较好的BPEL工具,包括引擎和定制工具以及管理控制台: Oracle BPE 阅读详情

许多开发人员觉得BPEL很神秘,不知道到底是什么意思。主要是因为它是根据很抽象的基于WSDL的Web Service再定义一些抽象执行的流程。

  其实BPEL一点都不神秘,是一个很简单的东西。

  首先谈一下BPEL和WSDL的区别,WSDL只是定义接口参数,不会定义如何实现接口,而BPEL不仅有自己的接口定义(也是一个WSDL文件,包括输入参数、方法操作名、返回参数),BPEL会定义如何调用其他服务的接口来实现自己的接口。简单地说,BPEL通过流程编程将各种接口组合在一起,其目的在于提供一个“集成了各种接口”的接口。

  首先BPEL会有一个起点和终点。

  1、它的起点就是“receive”,也就是接收它自己接口的输入参数。

  2、它的终点就是“reply”,也就是得到它自己接口的返回参数。

  整个BPEL就是定义如何通过它的接口输入参数,调用其他外部服务的接口,得到其接口的返回参数。

  它最重要的是两个定义:

  1、一个是赋值命令(Assign/Copy),通过赋值命令将某一变量值赋给所要调用的接口的输入参数。

  2、另一个是调用命令(Invoke),通过Invoke命令来调用外部服务。

  另外一个比较重要的就是条件命令(Case Condition),根据变量的不同来定义各种条件,然后根据各种条件来调用不同的服务。这些变量可以来自于输入参数,也可以来自于调用外部服务的结果。作为BPEL运行环境的一个重要功能就是能够保存并查询到这些变量。

  用Java实例模拟BPEL的创建过程

  这里用一个简单的实例来进一步说明BPEL的基本思想和核心本质,并用Java实例来模拟BPEL的创建过程。

  首先假定已经有了两个Web Service,一个为“加法服务”,专门处理两个数相加,名为AddService;另外一个为“减法服务”,专门处理两个数相减,名为SubtractService。

  现在有一个新的需求,需要将上面两个Web Service集成起来,也就是需要创建一个新的服务,称为“运算服务”,名为CaculatorService,它有一个运算类型的参数,当运算类型为“加法”时,调用加法服务,当运算类型为“减法”时,调用减法服务。

  看到这里,读者可能会想,直接写一个Java程序,调用者两个Web Service不就可以了吗?笔者的回答是:直接用Java编程当然可以,事实上现在大家就是这么做的。但是Java本质上是一种具体的程序语言,只能运行于JVM的Java运行环境,不是一种抽象性的通用的标准语言,而BPEL是一种标准化的执行语言,如何能够真正运行BPEL不是它所关心的事情,它还需要各个厂商去开发自己的BPEL运行环境,尽管各个厂商所开发的BPEL的运行环境可能会不一样,但是同一个BPEL所开发的程序,应该可以运行于这些不同的BPEL运行环境,得到的结果应该是一样的。就像Web Service的WSDL文件一样,它只管如何定义服务、服务接口、服务操作、服务参数等,如何具体实现Web Service不是WSDL所要关心的事情。

  下面继续前面的实例,两个Service都会有自己的WSDL定义。下面用实际的Java语言来类似地描述一下,以便于理解。

  下面的AddService .java相当于AddService.wsdl(用Java的Interface可能更贴切一点,用Java的class可以说明得更详细一点)。

Public class AddService{
Public double add(double addParameter1, double addParameter2) {
Double addResposne;
addResposne = addParameter1 +addParameter2;
// WSDL 不会定义具体如何实现,
//此处只是说明如何实现操作
Return addResponse;
}
}


  下面的SubstractService .java相当SubstractService.wsdl。

Public class SubstractService{
 Public double substract(double substractParameter1, double substractParameter2) {
  Double substractResposne = substractParameter1 - substractParameter2;
  Return substractResposne;
 }
}


  下面用Java模拟BPEL的创建过程。

  首先需要创建BPEL的接口,下面用CaculatorBPELInterface.java来说明,它将有3个参数,其中paramter1和paramter2是需要运算的两个数,第3个参数processType表示运算的类型。

Public Interface CaculatorBPELInterface{
 Public double caculatorProcess(double parameter1, double parameter2, String processType) ;
}


  下面将创建一个Java实现类,说明如何对应于BPEL的创建过程(许多语句(如一些变量定义和赋值定义)对Java来说是不必要的;为了模拟BPEL的创建过程,让Java开发人员更好地把握BPEL的创建过程,相应地加入了这些程序语句)。

Public class CaculatorBPELImple implements CaculatorBPELInterface {
 Public double caculatorProcess (double parameter1, double parameter2, String processType) {

 //步骤1:定义所要调用的外部类(相当于定义BPEL里面partnerLink)

 AddService addServer = new AddService();
 SubstractService substractSevice = new SubstractService();

 /*步骤2:定义输入和输出变量(相当于定义BPEL里面变量variable)

 定义的变量如下:

 ● BPEL接口的输入和输出变量
 ● 所要调用的外部类的接口方法的输入和输出变量 */

//定义BPEL接口的输入变量

Double caculatorProcessParameter1Request;
Double caculatorProcessParameter2Request;
Double caculatorProcessTypeRequest;

//定义BPEL接口的输出变量

Double caculatorProcessResponse;

//定义加法服务的输入变量

Double addParameter1Request;
Double addParameter2Request;

//定义加法服务的输出变量

Double addResponse;

//定义减法服务的输入变量

Double substractParameter1Request;
Double substractParameter2Request;
//定义减法服务的输出变量

Double substractParameter1Response;

//***将请求参数赋值给BPEL接口的输入变量 (相当于BPEL的receive)

caculatorProcessParameter1Request = parameter1;
caculatorProcessParameter2Request= parameter2;
Double caculatorProcessTypeRequest= processType;

//步骤3:定义条件,并调用外部接口

If (caculatorProcessTypeRequest.equals.(“add”’)
// (相当于BPEL的switch/condition/case)
{
 //**下面将调用加法服务
 //将接口请求变量传给加法服务的请求变量 (相当于BPEL的assign/copy)

addParameter1Request = caculatorProcessParameter1Request;
addParameter2Request = caculatorProcessParameter2Request;

//调用addService的接口 (相当于BPEL的Invoke)

addResponse = addServer.add(addParameter1Request, addParameter2Request);

//将addResponse赋值给BPEL接口的输出变量 (相当于BPEL的assign/copy)

caculatorProcessResponse = addResponse;

} else //(相当于BPEL的 condition/otherwise)

{

//将接口请求变量传给减法服务的请求变量 (相当于BPEL的assign/copy)

substractParameter1Request = caculatorProcessParameter1Request;

substractParameter2Request = caculatorProcessParameter2Request;

//调用substractService的接口 (相当于BPEL的invoke)

substractResponse =
substractServer.substract(substractParameter1Request, substractParameter2Request);

//将substractResponse赋值给BPEL接口的输出变量(相当于BPEL的assign/copy)

caculatorProcessResponse = substractResponse;

}
Return caculatorProcessResponse; //相当于BPEL的reply
}
}
BPEL实例详解及开发流程 对于BPEL流程的开发,Eclipse提供了一系列插件来简化开发过程。这些插件包括BPEL编辑器、调试工具和BPEL模型转换器等。BPEL编辑器:提供了BPEL文件的可视化编辑功能,允许开发者通过图形用户界面设计流程,而不是仅仅依赖于XML代码编写。BPEL调试工具:开发者可以使用调试工具来逐步执行BPEL流程,并检查变量值,以帮助发现和修正错误。BPEL模型转换器:提供了将BPEL模型转换为其他形式的工具,例如转换成流程图,从而更容易地理解复杂的流程。 阅读详情

相关推荐

802.11 NDP Sounding

NDP Sounding1.NDP原理2.NDP 过程3.帧结构3.1 NDPA结构3.2 CBF帧 1.NDP原理 802.11n标准提供的波束成形技术,可以通过预先补偿发射天线的相位,让两条波束进行叠加以实现最好的效果 显式波束成形需要终端反馈信道信息: AP向STA发送探测数据(NDP: null data packet sounding) STA向AP反馈信道信息(Compressed beamforming) AP根据STA的反馈或自行计算的权重信息进行波束成形 2.NDP 过程 802.

weixin_45799954的博客 8262

BPEL入门教程和应用实例(推荐)

转自:http://book.youkuaiyun.com/bookfiles/601/ SOA思想、技术与系统集成应用详解 书名:SOA思想、技术与系统集成应用详解 作者:梁爱虎编著 来源:电子工

Jeffery Lee的专栏 5159

CUDA详细安装及环境配置——环境配置指南 – CUDA+cuDNN+PyTorch 安装

本文详细介绍了如何确定显卡支持的CUDA版本、选择对应的cuDNN版本,并逐步安装CUDA、cuDNN和PyTorch。首先,通过命令行输入nvidia-smi.exe查看显卡支持的CUDA版本。接着,根据CUDA版本选择对应的cuDNN版本并下载。然后,从NVIDIA官方网站下载CUDA安装包,按照提示进行安装,并检查是否安装成功。同样地,下载cuDNN安装包,解压后将文件拷贝到CUDA安装目录中,并通过命令行验证安装是否成功。最后,根据PyTorch官网的指引,选择合适的安装命令进行PyTorch的安装

2501_90350274的博客 5098

BPEL入门实践理论(实现原理)

随着Web Servcie技术日益成熟和流行,许多企业的很多部门相应地都创建了Web Service服务。如何在不改变这些Web Service正常运行的情况下,将这些Web Service集成起来创造出新的业务模型、业务流程就成为一个比较突出的业务需求。要解决这个问题,一定要有一种新的流程语言能够将Web Service给串起来,这种新的业务流程语言就是BPEL。BPEL需要在BPEL的

如是所来的专栏 1566

自学篇--使用keil5.23创建一个stm32工程并编译(固件包自带版本)

之前在本科学习阶段学习过一点51单片机的知识,可是因为基本没有实践过几次现在已经完全忘记了。。前几天老师突然丢给我几个板子说让我把程序编译、烧写环境装好,当时我就震惊了,不过经过三四天的自我摸索,之后参考他人的学习经验,现在已经基本能处理这个问题了,所以为了方便后面的学者,主要也是为了把自己这几天的学习成果记录一下,我在这里把这个过程写下来。(因为刚刚接触,很多原理性的东西都还不懂,只是一个操作步

yang_csdnForOBTS的博客 8659

matplotlib三维画图之观察博弈论混合策略下纳什均衡点

参考链接: 博弈论入门20讲之第16讲-猜谜游戏-散户如何赢庄家 游戏背景: 我的期望是: 你的期望是: 使用Python的matplotlib画图: import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D fig = plt.figure() ax = Axes3D(fig) X = np.linspace(0, 1, 100) Y = np.linspace(0, 1,

敲代码的小风 1258

SOA思想、技术

SOA思想与技术Gartner Group 于1996 年最早提出了面向服务构架(Service Oriented Architecture ,SOA),而该公司预计2008年至2010年,采用SOA体系构架的企业将分别达到70%和80%。那SOA究竟是什么呢?可以说他是一种信息系统集成思想。理解SOA关键是理解这个“S”,即Service。服务可以说是一种即超越具体技术,又包容具体技术的

飞行鱼的专栏 3432

MaPLe: Multi-modal Prompt Learning

具体而言,我们在语言分支中附加可学习的上下文标记,并通过耦合函数显式地将视觉 Prompt 置于语言 Prompt 上,以建立它们之间的交互。使用 Prompt 来适应CLIP (语言或视觉) 的单个分支中的表示是次优的,因为它不允许在下游任务上动态调整两个表示空间的灵活性。由此,提出了一种分支感知的多模态 Prompt,通过在两种模态之间共享提示来协调 CLIP 的视觉和语言分支。在 Prompt Tuning 中,必须采取多模态方法获得同时适应 CLIP 的视觉和语言分支,以实现上下文优化的完整性。

weixin_48907099的博客 1052

BPEL研究(1):BPEL语言的基本特点

面向 Web 服务的业务流程执行语言(BPEL 或 BPEL4WS)是一种使用 Web 服务定义和执行业务流程的语言。BPEL 使您可以通过组合、编排和协调 Web 服务自上而下地实现面向服务的体系结构 (SOA)。BPEL 提供了一种相对简单易懂的方法,可将多个 Web 服务组合到一个新的复合服务(称作业务流程)中。(1)、BPEL规范Web 服务的业务流程执行语言(Busine

Matt的技术专栏 4689

DeepLearning tutorial(7)深度学习框架Keras的使用-进阶

上一篇文章总结了Keras的基本使用方法,相信用过的同学都会觉得不可思议,太简洁了。十多天前,我在github上发现这个框架的时候,关注Keras的人还比较少,这两天无论是github还是微薄,都看到越来越多的人关注和使用Keras。所以这篇文章就简单地再介绍一下Keras的使用,方便各位入门。主要包括以下三个内容: 训练CNN并保存训练好的模型。 将CNN用于特征提取,用提取出来的特征训练SVM。

wepon的专栏 2万+

WIN10系统下VS2019编译CloudCompare2.12.4

CloudCompare2.12.4

点云侠的博客 3143

BPEL的研究

转贴Mathew的文章,感觉是很好的学习资料原文出处:http://blog.youkuaiyun.com/cissyring/category/278046.aspxBPEL研究(1):BPEL语言的基本特点面向 Web 服务的业务流程执行语言(BPEL 或 BPEL4WS)是一种使用 Web 服务定义和执行业务流程的语言。BPEL 使您可以通过组合、编排和协调 Web 服务自上而下地实现面向服务的

Jeffery Lee的专栏 2653

28、沉浸式体验技术:概念、类型与应用

本文全面介绍了沉浸式体验技术的概念、类型与应用。从双边滤波器的图像处理原理切入,系统阐述了VR、AR、MR、ER及数字孪生等核心技术的特点与区别,并通过丰富案例展示了其在商业、医疗、教育、旅游、房地产、物流等多个领域的实际应用。文章还分析了技术融合趋势、硬件升级方向、应用场景拓展潜力,同时探讨了数据处理、网络延迟、隐私安全等挑战及应对策略,最后以流程图和对比表格总结技术发展脉络,展望沉浸式技术推动社会进步的广阔前景。

wind6的博客 380

深入介绍BPEL语言

BPEL语言是本人用得比较多的辅助语言之一,它在强流程业务方面有着独特的优势。

qq_45732829的博客 1937

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

推荐的SOA BPEL教程

在学习Bpel与SOA初期,一直苦于没有合适的教材,虽然老师和师兄提供了大量资料,但是仍然没有系统全面的学习,自己的知识要是不断的查找资料,翻译学习来完成的。又目前Soa处于起步阶段,国内资料也比较匮乏,初学者往往四面碰壁而不得要领。日前我在一站点找到了著名的《Business Process Execution Language for Web Services 2nd EditionBusin

鬼话连篇 5025

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

BPEL的研究[收藏]

function StorePage(){d=document;t=d.selection?(d.selection.type!=None?d.selection.createRange().text:):(d.getSelection?d.getSelection():);void(keyit=window.open(http://www.365key.com/storeit.

EarthRelic's Life 1532

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

bpel_使用来自BPEL流程的HTTP基本认证来调用安全的Web服务

安全性对于任何分布式计算环境都是重要的。 但是,由于Web服务调用是通过公共Internet进行的,因此安全性对于Web服务变得越来越重要。 同样,服务使用者和服务提供者之间的交互有望继续从专用Intranet扩展到Internet,从而引起更多的安全问题。 本教程向您展示如何调用需要HTTP基本身份验证的Web服务。 HTTP基本认证使用用户名和密码来认证服务客户端到安全端点。 您可以在...

cuxiong8996的博客 242

再看BPEL

昨天和MDA大牛飞哥谈了关于软件架构的问题。让我重新思考关于软件设计中架构设计的问题:即业务架构-大架构,代码设计-小架构的差别。在软件设计中流程是第一位的。传统的基于UML的设计方法是面向领域模型的。而BPEL被成为是UML的替代者。我这里提到UML和BPEL不是指写文档的时侯的哪些图,关于文档是否用uml表示一定好,那是另一个话题了。我这里是是指最终软件基于的架构设计,到底是从模型开始,开

纯月部落 5446

BPEL综述

一.综述   BPEL(业务流程执行语言)使用web service定义和执行业务流程,通过BPEL可以组合、编排和协调web服务自上而下地实现面向服务的体系结构(SOA),BPEL可以将多个Web service组合到一个新的复合服务中,重组后的结果仍然是一个web service。   二.背景 1.   BPEL基于XML和Web service,它使用一种基于web 的语言(xml

JBuilder3的专栏 1653

BPEL基础总结

资料来自1 使用bpel4ws的业务流程http://www-900.ibm.com/developerWorks/cn/webservices/ws-bpelcol/index.shtml  2 Web服务:BPEL4WS专题http://www-900.ibm.com/developerWorks/cn/webservices/ws-theme/ws-bpel.shtml 什么是BPEL4WS

ruluo 2956

BPEL简介 An Introduction to BPEL

原文出自 http://www.developer.com/services/article.php/3609381 An Introduction to BPEL By Kumar Raj Moorthy Business Process Execution Language (BPEL) is a XML-based language used to define ent

Jeffery Lee的专栏 1694
上一篇: SCA,软件开发的3G时代
下一篇: BPEL的基本活动介绍
own_java
博客等级 码龄17年 1粉丝 1原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值