<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh">
	<id>https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=BPEL</id>
	<title>BPEL - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=BPEL"/>
	<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=BPEL&amp;action=history"/>
	<updated>2026-07-17T13:11:39Z</updated>
	<subtitle>在这个wiki上该页的修订历史</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://arolstar52-zhtest.hf.space/index.php?title=BPEL&amp;diff=128432&amp;oldid=prev</id>
		<title>imported&gt;Gdlittlefish：​/* growthexperiments-addlink-summary-summary:2|0|0 */</title>
		<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=BPEL&amp;diff=128432&amp;oldid=prev"/>
		<updated>2026-05-09T13:47:27Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;growthexperiments-addlink-summary-summary:2|0|0&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;BPEL&amp;#039;&amp;#039;&amp;#039;（發音為&amp;#039;bipple&amp;#039;或&amp;#039;bee-pell&amp;#039;）是{{lang|en|Business Process Execution Language}}的縮寫，意为&amp;#039;&amp;#039;&amp;#039;业务过程执行语言&amp;#039;&amp;#039;&amp;#039;，是一种基于[[XML]]的，用来描写业务过程的[[编程语言]]，被描写的业务过程的每个单一步骤则由[[Web服务]]来实现。&lt;br /&gt;
&lt;br /&gt;
2002年[[IBM]]、[[BEA Systems|BEA]]和[[微软]]一起开发和引入了{{lang|en|BPEL}}作为描写协调Web服务的语言。这个描写的本身也由Web服务提供，并可以当作[[Web服务]]来使用。&lt;br /&gt;
&lt;br /&gt;
通过BPEL可以描写一个参加一个Web服务过程的Web服务的[[介面 (資訊科技)|接口]]，比如信息需要按照怎样的顺序被输入，但是BPEL无法用来描写一个业务过程的调谐。&lt;br /&gt;
&lt;br /&gt;
== 综述 ==&lt;br /&gt;
WS-BPEL原名[[BPEL4WS]]，是基于[[WSDL]]建立的，除WSDL外它还使用[[XML模式定义]]、[[XPath]]和[[WS-Addressing]]等标准。&lt;br /&gt;
&lt;br /&gt;
BPEL将微软的[[Xlang]]与IBM的[[WSFL]]连接到一起。&lt;br /&gt;
&lt;br /&gt;
BPEL的目的在于[[大规模编程]]，值得注意的是BPEL不直接支持人机对话，BPEL所描写的过程仅与Web服务通信，而这些Web服务却可以提供与用户的信息交换，但它们不是用户本身。&lt;br /&gt;
&lt;br /&gt;
BPEL本身提供一个基础，在这个基础上可以发展支撑新的应用的“支柱”。比如在BPEL本身的设置中就已经包括了“抽象业务过程”和“可执行业务过程”。其它的支柱包括[[BPELJ]]（[http://www-128.ibm.com/developerworks/library/specification/ws-bpelj/]{{Wayback|url=http://www-128.ibm.com/developerworks/library/specification/ws-bpelj/ |date=20060511202558 }}）和[[BPEL4People]]（[http://www-128.ibm.com/developerworks/webservices/library/specification/ws-bpel4people/]{{Wayback|url=http://www-128.ibm.com/developerworks/webservices/library/specification/ws-bpel4people/ |date=20060430192705 }}）。&lt;br /&gt;
&lt;br /&gt;
BPELJ的目标在于将[[Java]]语言结合到BPEL中来加速其操作过程，缺点是它与Java息息相关，不能没有Java运行。IBM和[[SAP公司]]一起发表了一份名为BPEL4people的白皮书，其目的是将BPEL扩展为能够直接与人交换信息。&lt;br /&gt;
&lt;br /&gt;
BPEL使用块状结构，在定义局部环境时可以定义适用于这个环境范围内的[[变数(變數)]]。此外故障处理、补偿处理和事故处理也可以与局部环境相连。&lt;br /&gt;
&lt;br /&gt;
BPEL本身没有定义描写过程模型的图像表达，但是[[BPMN]]标准可以用来描写BPEL的模型。&lt;br /&gt;
&lt;br /&gt;
== 抽象的和可执行的过程 ==&lt;br /&gt;
可执行的过程是一个可以在一个计算机上执行的过程。抽象过程是用来描述一个过程的反应的。它被用在一个可执行过程的表面来将这个过程的内部行为掩饰起来不让业务对象看到。&lt;br /&gt;
&lt;br /&gt;
== 下级过程 ==&lt;br /&gt;
BPEL本身没有对下级过程的定义，因此假如一个主过程结束了的话，要结束其下级过程不总是可行。通过专门使用一个起这个作用的Web服务可以达到这个目的，但这个解决方法在BPEL的标准中并没有提到。&lt;br /&gt;
&lt;br /&gt;
IBM和SAP公司发表了一个名为《WS-BPEL 2.0，下级过程延展》的白皮书（[http://www-128.ibm.com/developerworks/library/specification/ws-bpelsubproc/]{{Wayback|url=http://www-128.ibm.com/developerworks/library/specification/ws-bpelsubproc/ |date=20060916114515 }}）来讨论将BPEL延展为可以控制下级过程的问题。&lt;br /&gt;
&lt;br /&gt;
== 发展状况 ==&lt;br /&gt;
目前的版本是2.0，这个版本是OASIS于2007年4月11日推出的。&lt;br /&gt;
&lt;br /&gt;
== 语言组成部分 ==&lt;br /&gt;
基本活动，这些是最基础的，也就是说不基于其它活动的活动：&lt;br /&gt;
*{{lang|en|assign}}——赋值&lt;br /&gt;
*{{lang|en|invoke}}——同步或非同步地呼叫一个Web服务&lt;br /&gt;
*{{lang|en|receive/reply}}——提供一个同步或者非同步呼叫一个Web服务的接口&lt;br /&gt;
*{{lang|en|throw}}——提示一个错误，一个故障处理可以处理这样的错误。假如一个错误不被处理的话它最终到达最高层后导致过程的终止&lt;br /&gt;
*{{lang|en|wait}}——等候一个时机或者一段时间&lt;br /&gt;
*{{lang|en|empty}}——无所事事，比如在一个错误发生后可以不做反应来消除这个错误&lt;br /&gt;
&lt;br /&gt;
结构性活动，这些活动包括其它活动，可以以此建立复杂的过程：&lt;br /&gt;
*{{lang|en|sequence}}——按照一个序列处理一系列活动&lt;br /&gt;
*{{lang|en|while}}——在一个条件满足的情况下处理一个活动&lt;br /&gt;
*{{lang|en|switch}}——按照不同条件处理不同活动&lt;br /&gt;
*{{lang|en|flow}}——平行或者按照随意顺序处理活动&lt;br /&gt;
*{{lang|en|pick}}——按照外部事件从过程的角度不定值地选择&lt;br /&gt;
&lt;br /&gt;
{{lang|en|scopes}}——使用这个结构可以将一组活动组织在一起作为一个处理单位。通过这个组织方法多个活动可以使用同一个故障处理、事故处理和补偿处理。通过补偿处理BPEL可以处理长时间的处理。&lt;br /&gt;
&lt;br /&gt;
== BPEL引擎 ==&lt;br /&gt;
使用BPEL引擎可以执行BPEL程序。&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;[https://web.archive.org/web/20060616101148/http://www.oracle.com/technology/products/ias/bpel/index.html Oracle BPEL Process Manager]&amp;#039;&amp;#039;&amp;#039;——甲骨文公司的BPEL标准的执行，带有[[JDeveloper]]和[[Eclipse]]的图像式模型和调配工具&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[https://web.archive.org/web/20060501171242/http://www.smartcomps.org/twister/ Twister]&amp;#039;&amp;#039;&amp;#039;——一个[[开放源代码]]的BPEL标准的执行，支持[[面向服务架构]]和人机界面，现名{{lang|en|Agila}}&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[https://web.archive.org/web/20040715010826/http://www.activebpel.org/ ActiveBPEL]&amp;#039;&amp;#039;&amp;#039;——一个开放源代码的BPEL4WS 1.1的执行&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[http://www.alphaworks.ibm.com/tech/bpws4j BPWS4J]{{Wayback|url=http://www.alphaworks.ibm.com/tech/bpws4j |date=20060614171704 }}&amp;#039;&amp;#039;&amp;#039;——IBM的BPEL执行&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[http://ode.apache.org/index.html Apache ODE]{{Wayback|url=http://ode.apache.org/index.html |date=20140614172004 }}&amp;#039;&amp;#039;&amp;#039;——Apache ODE引擎（还支持versioning）&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;[http://riftsaw.jboss.org/ RiftSaw]{{Wayback|url=http://riftsaw.jboss.org/ |date=20140527082640 }}&amp;#039;&amp;#039;&amp;#039;——基于ODE，并针对JBOSS Server优化的BPEL引擎&lt;br /&gt;
&lt;br /&gt;
==参见==&lt;br /&gt;
* [[BPEL4People]]&lt;br /&gt;
[[Category:基于XML的标准]]&lt;br /&gt;
[[分类:Web服务规范]]&lt;br /&gt;
[[Category:程序设计语言]]&lt;br /&gt;
[[Category:电子商务]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Gdlittlefish</name></author>
	</entry>
</feed>