<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>赵翔鹏的Blog &#187; BPEL和CDL</title>
	<atom:link href="http://www.zhaoxiangpeng.com/category/bpel%e5%92%8ccdl/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.zhaoxiangpeng.com</link>
	<description>Xiangpeng&#039;s Thinkpad</description>
	<lastBuildDate>Sat, 21 Jan 2012 17:45:51 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.1</generator>
		<item>
		<title>用Java调用.net的Web service</title>
		<link>http://www.zhaoxiangpeng.com/2008/11/use-java-to-call-dotnet-web-service/</link>
		<comments>http://www.zhaoxiangpeng.com/2008/11/use-java-to-call-dotnet-web-service/#comments</comments>
		<pubDate>Thu, 20 Nov 2008 15:30:20 +0000</pubDate>
		<dc:creator>Xiangpeng</dc:creator>
				<category><![CDATA[BPEL和CDL]]></category>
		<category><![CDATA[计算机技术]]></category>

		<guid isPermaLink="false">http://www.zhaoxiangpeng.com/articles/use-java-to-call-dotnet-web-service.html</guid>
		<description><![CDATA[Web service可以提高interoperability，可以实现跨平台的应用……听起来不错。但真的做一下，还是有很多小陷阱。 下面是最近做的小例子，用Java Axis2作为客户端调用.net写的web服务。支持自定义的数据结构（这个不是那么简单……）。 准备： 1、下载axis2 ，注意，不要google “axis”，那个是旧版的，一定要google“axis2”，目前的最新版本是1.41。 2、Visual studio 2008，C#。 这个不用说什么了。  服务端： 在visual studio里写个hello world服务很简单，函数前加个[WebMethod]就可以。但是， 如果用到自定义的类，比如下面定义的person类作为GetUserInfoByPerson服务的参数： namespace WebService1 { public class Person { public string IdentityNumber { get { return m_IdentityNumber; } set { m_IdentityNumber = value; } } private string m_IdentityNumber; } } 这时要注意，直接按Ctrl+F5后生成的wsdl不包括Person的定义。 正确的做法是加一行 [SoapRpcMethod(Action = "http://tempurl.org/GetUserInfoByPerson", RequestNamespace = "http://tempurl.org", Use=SoapBindingUse.Literal)] 代码如下： [...]]]></description>
			<content:encoded><![CDATA[<p>Web service可以提高interoperability，可以实现跨平台的应用……听起来不错。但真的做一下，还是有很多小陷阱。</p>
<p>下面是最近做的小例子，用Java Axis2作为客户端调用.net写的web服务。支持<strong>自定义的数据结构</strong>（这个不是那么简单……）。</p>
<p><strong>准备：</strong></p>
<p>1、下载axis2 ，注意，不要google “axis”，那个是旧版的，一定要google“axis2”，目前的最新版本是1.41。</p>
<p>2、Visual studio 2008，C#。 这个不用说什么了。</p>
<p><strong> 服务端：</strong></p>
<p>在visual studio里写个hello world服务很简单，函数前加个[WebMethod]就可以。但是， 如果用到自定义的类，比如下面定义的person类作为GetUserInfoByPerson服务的参数：</p>
<pre name="code" class="c-sharp:nogutter">
namespace WebService1
{
    public class Person
    {
        public string IdentityNumber
        {
            get { return m_IdentityNumber; }
            set { m_IdentityNumber = value; }
        }
        private string m_IdentityNumber;
    }
}</pre>
<p>这时要注意，直接按Ctrl+F5后生成的wsdl不包括Person的定义。</p>
<p>正确的做法是加一行<br />
[SoapRpcMethod(Action = "http://tempurl.org/GetUserInfoByPerson", RequestNamespace = "http://tempurl.org", Use=SoapBindingUse.Literal)]</p>
<p>代码如下：</p>
<pre name="code" class="c-sharp:nogutter">
[WebService(Namespace = "http://tempurl.org/")]
public class Service1 : System.Web.Services.WebService
{
[WebMethod]
[SoapRpcMethod(Action = "http://tempurl.org/GetUserInfoByPerson", RequestNamespace = "http://tempurl.org", Use=SoapBindingUse.Literal)]
// 不加这一句，wsdl中就不生成Person类型
public Person GetUserInfoByPerson(Person q)
{
Person p = new Person();
p.IdentityNumber = q.IdentityNumber+"123";
}
}</pre>
<p>现在Ctrl+F5运行这个服务，假设地址是http://localhost:56765/Service1.asmx，那就可以在http://localhost:56765/Service1.asmx?WSDL里看到，Person的定义已经出现了。</p>
<p><strong>客户端：</strong></p>
<p>axis2有一个不错的<a href="http://ws.apache.org/axis2/1_4_1/quickstartguide.html">quickstart教程</a>。axis2目录下面samples\faulthandling这个例子值得参考，里面有详细的readme.txt和build.xml。</p>
<p>1、用axis2自带的wsdl2java工具生成代码框架：</p>
<p>%AXIS2_HOME%\bin\wsdl2java.bat -uri http://localhost:56765/Service1.asmx?WSDL -u -o &lt;target  dir&gt;</p>
<p>这样会在target dir下生成一个目录，里面有现成的Person.java等代码。</p>
<p>2、写调用代码</p>
<p>在Eclipse里建好项目，加入axis2\lib目录下所有的jar包，把刚才生成的目录也拷进去。</p>
<p>然后可以写代码了：</p>
<pre name="code" class="java:nogutter">
package example;
import org.tempurl.*;
public final class MyClient {
  public static void main(String[] args) {
  try {
    Service1Stub service1Stub = new Service1Stub("http://localhost:8080/Service1.asmx");
    service1Stub._getServiceClient().getOptions().setProperty(org.apache.axis2.transport.http.HTTPConstants.CHUNKED, Boolean.FALSE);
    Service1 service1 = service1Stub;
    GetUserInfoByPerson req = new GetUserInfoByPerson();
    Person personReq = new Person();
    personReq.setIdentityNumber("123");
    req.setQ(personReq);
    GetUserInfoByPersonResponse response = service1.GetUserInfoByPerson(req);
    PersonE personResponse = response.getGetUserInfoByPersonResult();
    System.out.println("ID = " + personResponse.getIdentityNumber());
  } catch (Exception e) {
  e.printStackTrace();
}
}
}</pre>
<p>注意这一句！service1Stub._getServiceClient().getOptions().setProperty(org.apache.axis2.transport.http.HTTPConstants.CHUNKED, Boolean.FALSE);</p>
<p>不做这个设置，一开始我怎么都调用失败，Axis2报告说HTTP send recv出错（记不清楚错误信息了）。用<a href="http://www.google.com/search?q=tcpmon">tcpmon</a>查看调用服务时的tcp传输，发现.net的web server根本不接受axis2的soap包。（btw，tcpmon是个不错的工具啊。）</p>
<p>google了很久发现原因是，<a href="http://johnwang71.spaces.live.com/Blog/cns!98FCE6D97A525653!281.entry">axis2在做http传输时采用了“chunked”模式，而.net的web server不支持。</a></p>
<p><span id="ctl00_MainContentPlaceholder_ctl01_ctl00_lblEntry">“axis中使用的是HTTP/1.0协议，而.NET和axis2使用的是HTTP/1.1协议，后两者的区别在于.NET未使用ns1的命名空间前缀打包SOAP请求，且axis2使用了Content-Encoding: chunked头。  </span>所以必须在axis2中设置一下。”</p>
<p><strong>总结：</strong></p>
<p>web服务调用还是很麻烦的。除了上面列举的问题，还可能有soap协议版本1.1和1.2不兼容之类的细节问题。在调试这类问题时，tcpmon是必备工具。</p>
<p>刚才讨论了如何用java调.net服务。如果反过来，不知是否会简单一点。</p>
<p>最后，其实我一年前就写过axis2 1.3的代码……可是昨天，除了知道这件事可以用axis2做，所有的细节都忘光了。还是花半个小时记下来比较安全。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zhaoxiangpeng.com/2008/11/use-java-to-call-dotnet-web-service/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>WS-CDL跟BPEL相比有什么价值？</title>
		<link>http://www.zhaoxiangpeng.com/2007/11/ws-cdl%e8%b7%9fbpel%e7%9b%b8%e6%af%94%e6%9c%89%e4%bb%80%e4%b9%88%e4%bb%b7%e5%80%bc%ef%bc%9f/</link>
		<comments>http://www.zhaoxiangpeng.com/2007/11/ws-cdl%e8%b7%9fbpel%e7%9b%b8%e6%af%94%e6%9c%89%e4%bb%80%e4%b9%88%e4%bb%b7%e5%80%bc%ef%bc%9f/#comments</comments>
		<pubDate>Mon, 05 Nov 2007 19:10:00 +0000</pubDate>
		<dc:creator>Xiangpeng</dc:creator>
				<category><![CDATA[BPEL和CDL]]></category>

		<guid isPermaLink="false">http://www.zhaoxiangpeng.com/articles/ws-cdl%e8%b7%9fbpel%e7%9b%b8%e6%af%94%e6%9c%89%e4%bb%80%e4%b9%88%e4%bb%b7%e5%80%bc%ef%bc%9f.html</guid>
		<description><![CDATA[问题：既然有BPEL标准,为什么又出了个WS-CDL? BPEL不够用的么?WS-CDL自身有什么优势?WS-CDL解决了bpel解决不了的问题么? CDL描述问题的角度跟BPEL不同。与BPEL相比，BPEL强调的是以“我”为中心，描述我跟别人的交互；而CDL是从一个“导演”的层次来描述“他跟她交互，她再跟他交互”，导演要考虑各方如何协调演戏，但BPEL只考虑自己。总之，CDL从需求层面上描述不同 participant之间的交互过程，描述的是business protocol，或者说商业合同。 注意这里的一个前提是要存在多个不同的participant，这意味着我们描述的对象是跨组织的business process，此时CDL才能派得上用场。想象一个含有buyer、seller、bank、shipper等多方的场景，你可以写四个bpel流程，并把它们的并行作为这整个场景的描述，也可以写一个CDL流程作为这整个场景的描述。 既然用4个流程或1个流程都可以描述，那么CDL的好处是什么呢？在引入CDL之前，标准的开发流程是各方先定义自己的BPEL程序，然后把它们放在一起并行执行；这种bottom-up的方法可能会产生死锁等并行程序开发中固有的一些难题。 引入CDL后的开发模型是top-down的，先定义全局的CDL交互模型，然后用一个“编译器”从CDL自动或半自动地生成各方的BPEL描述；这样自动产生的BPEL代码一定不会死锁，一定跟全局模型一致（如果你的CDL到BPEL的“编译器”够强的话）。 必须客观承认的是，CDL还远远达不到工业应用的程度，目前的支持者只有Oracle，Adobe等“非主流”公司，上面所说的“编译器”还没有一个完美的实现。它还是比较新的一个东西，有很多地方人们还不清楚（但是正因为它不清楚，所以学术研究对它反而比较感兴趣）。而且，CDL是对需求的描述——在实际开发中，“需求”未必有人花太多功夫描述——这就是说，就算不引入CDL，还是照样可以开发；它不像BPEL是实现语言，必须采用。但这不代表CDL就没有用；打个比方，尽管严格进行需求分析的人不多，我们能说需求分析没有用么？]]></description>
			<content:encoded><![CDATA[<p>问题：既然有BPEL标准,为什么又出了个WS-CDL? BPEL不够用的么?WS-CDL自身有什么优势?WS-CDL解决了bpel解决不了的问题么?</p>
<p>CDL描述问题的角度跟BPEL不同。与BPEL相比，BPEL强调的是以“我”为中心，描述我跟别人的交互；而CDL是从一个“导演”的层次来描述“他跟她交互，她再跟他交互”，导演要考虑各方如何协调演戏，但BPEL只考虑自己。总之，CDL从需求层面上描述不同 participant之间的交互过程，描述的是business protocol，或者说商业合同。</p>
<p>注意这里的一个前提是要存在多个不同的participant，这意味着我们描述的对象是跨组织的business process，此时CDL才能派得上用场。想象一个含有buyer、seller、bank、shipper等多方的场景，你可以写四个bpel流程，并把它们的并行作为这整个场景的描述，也可以写一个CDL流程作为这整个场景的描述。</p>
<p>既然用4个流程或1个流程都可以描述，那么CDL的好处是什么呢？在引入CDL之前，标准的开发流程是各方先定义自己的BPEL程序，然后把它们放在一起并行执行；这种bottom-up的方法可能会产生死锁等并行程序开发中固有的一些难题。</p>
<p>引入CDL后的开发模型是top-down的，先定义全局的CDL交互模型，然后用一个“编译器”从CDL自动或半自动地生成各方的BPEL描述；这样自动产生的BPEL代码一定不会死锁，一定跟全局模型一致（如果你的CDL到BPEL的“编译器”够强的话）。</p>
<p>必须客观承认的是，CDL还远远达不到工业应用的程度，目前的支持者只有Oracle，Adobe等“非主流”公司，上面所说的“编译器”还没有一个完美的实现。它还是比较新的一个东西，有很多地方人们还不清楚（但是正因为它不清楚，所以学术研究对它反而比较感兴趣）。而且，CDL是对需求的描述——在实际开发中，“需求”未必有人花太多功夫描述——这就是说，就算不引入CDL，还是照样可以开发；它不像BPEL是实现语言，必须采用。但这不代表CDL就没有用；打个比方，尽管严格进行需求分析的人不多，我们能说需求分析没有用么？</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zhaoxiangpeng.com/2007/11/ws-cdl%e8%b7%9fbpel%e7%9b%b8%e6%af%94%e6%9c%89%e4%bb%80%e4%b9%88%e4%bb%b7%e5%80%bc%ef%bc%9f/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WS-CDL规范中文版</title>
		<link>http://www.zhaoxiangpeng.com/2007/09/ws-cdl%e8%a7%84%e8%8c%83%e4%b8%ad%e6%96%87%e7%89%88/</link>
		<comments>http://www.zhaoxiangpeng.com/2007/09/ws-cdl%e8%a7%84%e8%8c%83%e4%b8%ad%e6%96%87%e7%89%88/#comments</comments>
		<pubDate>Sun, 30 Sep 2007 05:19:00 +0000</pubDate>
		<dc:creator>Xiangpeng</dc:creator>
				<category><![CDATA[BPEL和CDL]]></category>

		<guid isPermaLink="false">http://www.zhaoxiangpeng.com/articles/ws-cdl%e8%a7%84%e8%8c%83%e4%b8%ad%e6%96%87%e7%89%88.html</guid>
		<description><![CDATA[我们研究组最近把WS-CDL规范翻译成了中文。这里是中文版CDL规范的链接，希望对大家有所帮助。 update：上面的链接若不能用，就到这一页。]]></description>
			<content:encoded><![CDATA[<p>我们研究组最近把WS-CDL规范翻译成了中文。<a href="http://www.is.pku.edu.cn/%7Efmows/cdl_cn">这里是中文版CDL规范的链接</a>，希望对大家有所帮助。</p>
<p>update：<br />上面的链接若不能用，就到<a href="http://www.zhaoxiangpeng.com/about/papers/cdlspec_cn">这一页</a>。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zhaoxiangpeng.com/2007/09/ws-cdl%e8%a7%84%e8%8c%83%e4%b8%ad%e6%96%87%e7%89%88/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>BPEL4People, HumanTask和BPEL2.0之间的关系</title>
		<link>http://www.zhaoxiangpeng.com/2007/08/bpel4people-humantask%e5%92%8cbpel20%e4%b9%8b%e9%97%b4%e7%9a%84%e5%85%b3%e7%b3%bb/</link>
		<comments>http://www.zhaoxiangpeng.com/2007/08/bpel4people-humantask%e5%92%8cbpel20%e4%b9%8b%e9%97%b4%e7%9a%84%e5%85%b3%e7%b3%bb/#comments</comments>
		<pubDate>Fri, 24 Aug 2007 06:24:00 +0000</pubDate>
		<dc:creator>Xiangpeng</dc:creator>
				<category><![CDATA[BPEL和CDL]]></category>

		<guid isPermaLink="false">http://www.zhaoxiangpeng.com/articles/bpel4people-humantask%e5%92%8cbpel20%e4%b9%8b%e9%97%b4%e7%9a%84%e5%85%b3%e7%b3%bb.html</guid>
		<description><![CDATA[作为对BPEL的扩展，BPEL4People本来打算做一份规范，但是做到后面做成了两份，即BPEL4People和HumanTask，这两个规范要一起使用。下面我们用一个简单的例子说明它们之间的关系。 WS-BPEL2里定义了"extensionActivity"，支持对标准BPEL进行扩展。BPEL4People则定义了一种特殊的extensionActivity，叫做peopleActivity，如下所示： &#60;sequence&#62; &#60;extensionActivity&#62; &#60;b4p:peopleActivity name="electEmployeeOfTheMonth" inputVariable="candidates" outputVariable="vote" isSkipable="yes"&#62; &#60;htd:task name="votingTask"&#62; ... &#60;/htd:task&#62; &#60;b4p:scheduledActions&#62;...&#60;/b4p:scheduledActions&#62; &#60;/b4p:peopleActivity&#62; &#60;/extensionActivity&#62; &#60;assign&#62; &#60;copy&#62; &#60;from&#62;$vote&#60;/from&#62; &#60;to&#62;$electionResult/votes[i]&#60;/to&#62; &#60;/copy&#62; &#60;/assign&#62; &#60;/sequence&#62; 这个sequence先执行了一个peopleActivity，然后做了个赋值。注意peopleActivity是放在extensionActivity里面的，好让BPEL2.0引擎知道它是一个扩充活动。 BPEL4People仅仅定义了peopleActivity的接口，比如输入/输出变量，跟&#60;invoke&#62;的功能差不多，当然还定义了一些API函数用于取得一个peopleActivity的参数，比如可以通过getActualOwner得知，已经执行完毕的某个peopleActivity究竟是由哪个人做的。 而一个peopleActivity的主要细节，是通过WS-HumanTask来定义的，见上面例子中的&#60;htd:task&#62;部分。换句话说，BPEL4People规范的作用仅仅是连接WS-BPEL2.0和WS-HumanTask。下面是该HumanTask的具体内容： &#60;htd:task name="votingTask"&#62; &#60;htd:interface operation="vote"    portType="el:votingPT"/&#62; &#60;htd:peopleAssignments&#62; &#60;htd:potentialOwners&#62; &#60;htd:from&#62;$voters/users/user[i]&#60;/htd:from&#62; &#60;/htd:potentialOwners&#62; &#60;/htd:peopleAssignments&#62; &#60;htd:presentationElements/&#62; &#60;/htd:task&#62; 这里只定义了该任务的potentialOwner，即哪些人有权限执行该任务；在&#60;htd:task&#62;里还可以定义很多细节，比如过多久之后会超时，超时后要执行什么动作（Escalation），等等。 可以说凡是跟“人”有关的东西，都定义在WS-HumanTask中。每个business process中可能需要定义一些角色，和一些人；这些"角色"和"人"也是由WS-HumanTask定义的，此外还预定义了几种角色，比如Administrator, Task initiator等。 总结一下，WS-HumanTask专注于“人”，与BPEL规范没有一点关系，甚至连名字都不一样——在BPEL中叫做Activity的东西到了这儿就变成了Task；而BPEL4People就是BPEL 2.0和HumanTask之间的桥梁。 要学习这两个规范，我建议先看WS-BPEL4People规范中的Appendix - D，这里给了个完整的例子。看过例子再读规范，就清楚得多了。 相关链接：BPEL4People规范阅读笔记]]></description>
			<content:encoded><![CDATA[<p>作为对BPEL的扩展，BPEL4People本来打算做一份规范，但是做到后面做成了两份，即BPEL4People和HumanTask，这两个规范要一起使用。下面我们用一个简单的例子说明它们之间的关系。</p>
<p>WS-BPEL2里定义了"extensionActivity"，支持对标准BPEL进行扩展。BPEL4People则定义了一种特殊的extensionActivity，叫做peopleActivity，如下所示：<br />
&lt;sequence&gt;<br />
&lt;extensionActivity&gt;<br />
&lt;b4p:peopleActivity name="electEmployeeOfTheMonth"<br />
inputVariable="candidates"<br />
outputVariable="vote"<br />
isSkipable="yes"&gt;<br />
&lt;htd:task name="votingTask"&gt;<br />
...<br />
&lt;/htd:task&gt;<br />
&lt;b4p:scheduledActions&gt;...&lt;/b4p:scheduledActions&gt;<br />
&lt;/b4p:peopleActivity&gt;<br />
&lt;/extensionActivity&gt;<br />
&lt;assign&gt;<br />
&lt;copy&gt;<br />
&lt;from&gt;$vote&lt;/from&gt;<br />
&lt;to&gt;$electionResult/votes[i]&lt;/to&gt;<br />
&lt;/copy&gt;<br />
&lt;/assign&gt;<br />
&lt;/sequence&gt;<br />
这个sequence先执行了一个peopleActivity，然后做了个赋值。注意peopleActivity是放在extensionActivity里面的，好让BPEL2.0引擎知道它是一个扩充活动。</p>
<p>BPEL4People仅仅定义了peopleActivity的接口，比如输入/输出变量，跟&lt;invoke&gt;的功能差不多，当然还定义了一些API函数用于取得一个peopleActivity的参数，比如可以通过getActualOwner得知，已经执行完毕的某个peopleActivity究竟是由哪个人做的。</p>
<p>而一个peopleActivity的主要细节，是通过WS-HumanTask来定义的，见上面例子中的&lt;htd:task&gt;部分。换句话说，BPEL4People规范的作用仅仅是连接WS-BPEL2.0和WS-HumanTask。下面是该HumanTask的具体内容：<br />
&lt;htd:task name="votingTask"&gt;<br />
&lt;htd:interface operation="vote"    portType="el:votingPT"/&gt;<br />
&lt;htd:peopleAssignments&gt;<br />
&lt;htd:potentialOwners&gt;<br />
&lt;htd:from&gt;$voters/users/user[i]&lt;/htd:from&gt;<br />
&lt;/htd:potentialOwners&gt;<br />
&lt;/htd:peopleAssignments&gt;<br />
&lt;htd:presentationElements/&gt;<br />
&lt;/htd:task&gt;<br />
这里只定义了该任务的potentialOwner，即哪些人有权限执行该任务；在&lt;htd:task&gt;里还可以定义很多细节，比如过多久之后会超时，超时后要执行什么动作（Escalation），等等。</p>
<p>可以说凡是跟“人”有关的东西，都定义在WS-HumanTask中。每个business process中可能需要定义一些角色，和一些人；这些"角色"和"人"也是由WS-HumanTask定义的，此外还预定义了几种角色，比如Administrator, Task initiator等。</p>
<p>总结一下，WS-HumanTask专注于“人”，与BPEL规范没有一点关系，甚至连名字都不一样——在BPEL中叫做Activity的东西到了这儿就变成了Task；而BPEL4People就是BPEL 2.0和HumanTask之间的桥梁。</p>
<p>要学习这两个规范，我建议先看WS-BPEL4People规范中的Appendix - D，这里给了个完整的例子。看过例子再读规范，就清楚得多了。</p>
<p>相关链接：<a href="http://www.zhaoxiangpeng.com/articles/bpel4people%E8%A7%84%E8%8C%83%E9%98%85%E8%AF%BB%E7%AC%94%E8%AE%B0.html">BPEL4People规范阅读笔记</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.zhaoxiangpeng.com/2007/08/bpel4people-humantask%e5%92%8cbpel20%e4%b9%8b%e9%97%b4%e7%9a%84%e5%85%b3%e7%b3%bb/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>BPEL4People规范阅读笔记</title>
		<link>http://www.zhaoxiangpeng.com/2007/07/bpel4people%e8%a7%84%e8%8c%83%e9%98%85%e8%af%bb%e7%ac%94%e8%ae%b0/</link>
		<comments>http://www.zhaoxiangpeng.com/2007/07/bpel4people%e8%a7%84%e8%8c%83%e9%98%85%e8%af%bb%e7%ac%94%e8%ae%b0/#comments</comments>
		<pubDate>Sun, 08 Jul 2007 09:44:00 +0000</pubDate>
		<dc:creator>Xiangpeng</dc:creator>
				<category><![CDATA[BPEL和CDL]]></category>

		<guid isPermaLink="false">http://www.zhaoxiangpeng.com/articles/bpel4people%e8%a7%84%e8%8c%83%e9%98%85%e8%af%bb%e7%ac%94%e8%ae%b0.html</guid>
		<description><![CDATA[下面是我前几天读WS-HumanTask和WS-BPEL4People规范时作的笔记，因为有太多术语，所以就直接用英文写了。不保证笔记的完全正确性，只是用于日后参考。 关于bpel4people的更多资料，请参考http://del.icio.us/tags/bpel4people上搜集的各个页面。 RBAC related basic concepts (Sec. 3, WS-HumanTask): organization entity (a person or a group of persons. Must be linked to outer RBAC/LDAP user database) logical group (roles of the process, i.e. "voters", "approvers". Must be linked to outer RBAC/LDAP user database) generic roles (task initiator, stakeholder, potential owner, excluded owner, admin, notification receipient) [...]]]></description>
			<content:encoded><![CDATA[<p>下面是我前几天读WS-HumanTask和WS-BPEL4People规范时作的笔记，因为有太多术语，所以就直接用英文写了。不保证笔记的完全正确性，只是用于日后参考。<br />
关于bpel4people的更多资料，请参考<a href="http://del.icio.us/tags/bpel4people">http://del.icio.us/tags/bpel4people</a>上搜集的各个页面。<br />
<span><br />
RBAC related basic concepts (Sec. 3, WS-HumanTask):</span></p>
<ul>
<li>organization<br />
entity (a person or a group of persons. Must be linked to outer RBAC/LDAP user<br />
database)</li>
</ul>
<ul>
<li>logical group (roles of the process, i.e. "voters", "approvers".<br />
Must be linked to outer RBAC/LDAP user database)</li>
</ul>
<ul>
<li>generic roles (task<br />
initiator, stakeholder, potential owner, excluded owner, admin, notification<br />
receipient)</li>
</ul>
<ul>
<li>
<ul>
<li>process initiator/stakeholder/admin are defined in BPEL4People<br />
spec.</li>
<li>person assignments (use an expression (literal, logical group, etc.)<br />
to assign some people to some generic role)</li>
<li>e.g. we can assign logical<br />
group "voters" as the potential owner of task "vote", or assign the "previous<br />
approver" as the excluded owner of task "approve_2")</li>
<li>In other words, we<br />
can define the potential owners of a task dynamically; thus we can do SoD and<br />
BoD.)</li>
</ul>
</li>
</ul>
<hr style="width: 100%; height: 2px" /><span style="font-weight: bold">From a task's view: (Sec. 4, WS-HumanTask)</span></p>
<p>* A<br />
task includes (page 23-36):</p>
<ul>
<li>service signature (input/output parameter,<br />
operation name, etc)</li>
<li>people assignments, indicating who can do the task,<br />
and who cannot, etc.</p>
<ul>
<li>When a task is executed, it will have an "actual<br />
owner".</li>
</ul>
</li>
</ul>
<ul>
<li>deadline requirements
<ul>
<li> two kinds of deadline:<br />
start/complete</li>
<li>can define multiple deadlines on different times with<br />
different behaviors</li>
<li>If timeout, then calculate each escalation's condition,<br />
and execute the corresponding behavior (behavior can only be either notification or reassign)</li>
<li>e.g. 1<br />
hours after start -&gt; notify manager, 2 days after start -&gt; notify<br />
director, 1 day after complete -&gt; reassign task owner</li>
</ul>
</li>
<li>delegation requirement<br />
(to whom can we delegate the task? nobody/anybody/...)</li>
<li>attachment requirement, priority,<br />
comment, represetation info., etc.</li>
</ul>
<p>* A task's lifeline (page<br />
37-38):</p>
<ul>
<li>created (by business process)</li>
<li>ready (created, but no one<br />
claims it yet)</li>
<li>researved (some potential owner claims it) [Note: delegate,<br />
revoke(release) can be done in this state]</li>
<li>inprogress (some one starts it)<br />
[Note: revoke, stop, delegate can be done in this state]</li>
<li>completed</li>
<li>failed<br />
(divide by zero, or the performer thinks it is a bad task)</li>
<li>obsolete (owner<br />
skips it, e.g. the receiver discards a notification, or gives up the right to vote)</li>
<li>terminated (outer<br />
scope terminates, or timeout)</li>
<li>a task can also be suspended and resumed<br />
(I'm not clear about this yet)</li>
</ul>
<p>* Notification (Sec. 5, WS-HumanTask)</p>
<ul>
<li>is a one-way, asynchronous human task</li>
<li>can only assign "receipients" to a<br />
notification, rather than "potential owners"</li>
</ul>
<hr style="width: 100%; height: 2px" /><span style="font-weight: bold">From a user's<br />
view (page 42-54):</span></p>
<p>* Normal User</p>
<ul>
<li>claim, start, release, complete,<br />
fail, delegate ... a task</p>
<ul>
<li>use "remove" for notifications</li>
</ul>
</li>
<li>query<br />
tasks (similar to a SQL select. can specify many parameters, e.g.<br />
"Task.Priority=1 AND maxTasks=10")</li>
</ul>
<p>* Administrator</p>
<ul>
<li>activate (set<br />
status to Ready)</li>
<li>nominate (set potential owner to a specific person, and<br />
set task status to</li>
<li>set role (change people assignment<br />
dynamically)</li>
</ul>
<hr style="width: 100%; height: 2px" /><span style="font-weight: bold">From business process's view:<br />
(WS-BPEL4People)</span></p>
<p>* A process includes:</p>
<ul>
<li>some logical group definition<br />
(roles in the process, i.e. "voters", "approvers". Must be linked to outer<br />
RBAC/LDAP user database)</li>
<li>person assignments of process generic roles<br />
(process initiator, process admin, etc.)</li>
<li>human task definitions</li>
<li>process definition, where each "human task" is wrapped in a "people activity",<br />
whose syntax follows the spec of BPEL.</p>
<ul>
<li>task definitions can be given<br />
inside a people activity, at the beginning of the process, or elsewhere. (see<br />
"constellations" on page 16)</li>
<li>a globally defined task's people assignment<br />
or priority can be overidden in local people activity.</li>
<li>people activity's<br />
state diagram is at page 27. (running, completed, obsolete, failed, terminated,<br />
closed)</li>
</ul>
</li>
</ul>
<hr style="width: 100%; height: 2px" /><span style="font-weight: bold">First Impressions</span></p>
<p>* The idea</p>
<ul>
<li>Task owners can be<br />
specified in a fine-grained way in the task definition, and can change<br />
dynamically.</li>
<li>Many states for a task, many possible operations for a user<br />
(which states/operations are important, which are not?)</li>
<li>Fine-grained<br />
deadline support</p>
<ul>
<li>to read: what if several escalation conditions have<br />
overlap?</li>
</ul>
</li>
<li>Two spec instead of one
<ul>
<li>aims at the separation of<br />
TaskEngine, TaskList, BPEngine, so that we can combine different products<br />
together (see the official podcast)</li>
</ul>
</li>
<li>Question: how to link logical group to actual<br />
users? Can this link be changed dynamically by process admin?</li>
</ul>
<p>* The spec<br />
text</p>
<ul>
<li>Quite long, but quite easy to read (compared with the BPEL spec)</li>
<li>Read the examples for a quick start!!! (The final sections of the specifications)</li>
<li>Still some small errors in the spec
<ul>
<li>e.g. page 54 has a typo<br />
"assigment".</li>
<li>In the task state transition figure, the word "revoke" is used.<br />
However it is called "release" in the text.</li>
</ul>
</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.zhaoxiangpeng.com/2007/07/bpel4people%e8%a7%84%e8%8c%83%e9%98%85%e8%af%bb%e7%ac%94%e8%ae%b0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>BPEL4People v1.0规范发布了</title>
		<link>http://www.zhaoxiangpeng.com/2007/06/bpel4people-v10%e8%a7%84%e8%8c%83%e5%8f%91%e5%b8%83%e4%ba%86/</link>
		<comments>http://www.zhaoxiangpeng.com/2007/06/bpel4people-v10%e8%a7%84%e8%8c%83%e5%8f%91%e5%b8%83%e4%ba%86/#comments</comments>
		<pubDate>Wed, 27 Jun 2007 07:22:00 +0000</pubDate>
		<dc:creator>Xiangpeng</dc:creator>
				<category><![CDATA[BPEL和CDL]]></category>

		<guid isPermaLink="false">http://www.zhaoxiangpeng.com/articles/bpel4people-v10%e8%a7%84%e8%8c%83%e5%8f%91%e5%b8%83%e4%ba%86.html</guid>
		<description><![CDATA[前两天我在我看BPEL4People这篇blog里，提到一些对BPEL4People的批评，包括它的规范拖了又拖不知道什么时候推出。经过了white paper发布后漫长的等待，BPEL4People终于发布了1.0版的正式规范，可以从IBM developer works下载：WS-BPEL Extension for People 制定者包括Active Endpoints, Adobe, BEA, IBM, Oracle, SAP AG。显然，微软是自己玩他的Windows workflow foundation去了。 开始读这份52页的规范吧～估计过几天就会看到一些评论了。]]></description>
			<content:encoded><![CDATA[<p>前两天我在<a title="日志我看BPEL4People" target="_blank" href="http://blog.edu.cn/user1/2746/archives/2007/1747880.shtml">我看BPEL4People</a>这篇blog里，提到一些对BPEL4People的批评，包括它的规范拖了又拖不知道什么时候推出。经过了white paper发布后漫长的等待，BPEL4People终于发布了1.0版的正式规范，可以从IBM developer works下载：<a href="http://www.ibm.com/developerworks/webservices/library/specification/ws-bpel4people/">WS-BPEL Extension for People</a></p>
<p>制定者包括Active Endpoints, Adobe, BEA, IBM, Oracle, SAP AG。显然，微软是自己玩他的Windows workflow foundation去了。</p>
<p>开始读这份<a href="http://download.boulder.ibm.com/ibmdl/pub/software/dw/specs/ws-bpel4people/BPEL4People_v1.pdf">52页的规范</a>吧～估计过几天就会看到一些评论了。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zhaoxiangpeng.com/2007/06/bpel4people-v10%e8%a7%84%e8%8c%83%e5%8f%91%e5%b8%83%e4%ba%86/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>我看BPEL4People</title>
		<link>http://www.zhaoxiangpeng.com/2007/05/%e6%88%91%e7%9c%8bbpel4people/</link>
		<comments>http://www.zhaoxiangpeng.com/2007/05/%e6%88%91%e7%9c%8bbpel4people/#comments</comments>
		<pubDate>Tue, 29 May 2007 01:53:00 +0000</pubDate>
		<dc:creator>Xiangpeng</dc:creator>
				<category><![CDATA[BPEL和CDL]]></category>

		<guid isPermaLink="false">http://www.zhaoxiangpeng.com/articles/%e6%88%91%e7%9c%8bbpel4people.html</guid>
		<description><![CDATA[近来比较关注BPEL4People。这是IBM和SAP提出的一个white paper，目标是给BPEL加上human workflow的功能。一共不到20页，很短很好读。 我觉得BPEL human workflow还是很必要的。在工作流的角度来看，BPEL太像一个编程语言，只是做了service composition，却没有考虑task list等问题；毕竟，多数工作流是要牵涉到人的，比如任何一个公文流转的流程。事实上大多数BPEL厂商都自行扩展了human workflow的支持。引述Bruce Silver的一段话： The world of BPMS is divided into BPEL-lovers and BPEL-haters, and the thing that BPEL-haters seem to hate most is that even the not-yet-final 2.0 version of the OASIS standard "excludes" human tasks. How can you have a "business process" execution language that cannot accommodate [...]]]></description>
			<content:encoded><![CDATA[<p>近来比较关注<a href="http://www.ibm.com/developerworks/cn/webservices/specification/ws-bpel4people/">BPEL4People</a>。这是IBM和SAP提出的一个white paper，目标是给BPEL加上human workflow的功能。一共不到20页，很短很好读。</p>
<p>我觉得BPEL human workflow还是很必要的。在工作流的角度来看，BPEL太像一个编程语言，只是做了service composition，却没有考虑task list等问题；毕竟，多数工作流是要牵涉到人的，比如任何一个公文流转的流程。事实上大多数BPEL厂商都自行扩展了human workflow的支持。引述<a href="http://www.bpminstitute.org/articles/article/article/bpel4people-revisited.html">Bruce Silver</a>的一段话：</p>
<p>The world of BPMS is divided into BPEL-lovers and BPEL-haters, and the thing that BPEL-haters seem to hate most is that even the not-yet-final 2.0 version of the OASIS standard "excludes" human tasks. How can you have a "business process" execution language that cannot accommodate human-performed activities? "Out of scope"?! Are you kidding?</p>
<p>不过，这份white paper迄今还没有变成一份规范；而且有些人批评说它多余，比如这篇<a href="http://www.webservices.org/weblog/joe_mckendrick/do_we_need_this_animal_called_bpel4people">Do We Need This Animal Called 'BPEL4People'?</a>，这标题起的几乎有点刻薄了。Bruce Silver在他的文章中也表示BPEL4People有点“overly ambitious”，因为其中提出的5个interaction patterns的构想不太容易实现。</p>
<p>不管怎样，扩展BPEL使之支持human workflow的基本想法还是很好的，这一点Bruce Silver也同意。只是从具体的技术细节来看，BPEL4People可能还有一些不尽人意之处。上个月OASIS的<a href="http://www.blog.edu.cn/user1/2746/archives/2007/1671132.shtml">BPEL Webinar</a>上有人提问“BPEL4People什么时候出规范？“回答是”快了“。</p>
<p>6月1日的更新：</p>
<p>仿佛是回应我这篇blog一样<img src="http://www.blog.edu.cn/editor/images/emot/face24.gif">，ActiveBPEL昨天推出了<a href="http://www.prnewswire.com/cgi-bin/stories.pl?ACCT=104&#038;STORY=/www/story/05-31-2007/0004599226&#038;EDATE="http://blog.edu.cn/>ActiveBPEL for People</a>，支持BPEL4People的大部分功能：<br />Key capabilities of ActiveBPEL for People include:</p>
<p>-- Extensions to ActiveBPEL Designer, the SOA community's leading BPELauthoring environment, that support the design, testing and deploymentof human-centric BPEL processes</p>
<p>-- New human interaction operations that are wrapped in Web services andinvoked as BPEL activities</p>
<p>-- Task Editor and Task Inbox controls that can be directly embedded intoSOA applications or used as templates for creating custom userinterfaces</p>
<p>-- An ActiveBPEL Task Services subsystem that creates and manages thecomplete lifecycle of human tasks</p>
<p>-- Alarm, escalation and notification services that allow human-centric<br />applications to be easily integrated with enterprise monitoring and<br />management infrastructures</p>
<p>-- An identity services infrastructure that integrates with popular enterprise directories to support roles and rights configurations - such as owners, users and administrators - of human tasks</p>
<p>-- Supports common workflow patterns:<br />-- Four eyes<br />-- Nomination</p>
<p>6月28日更新：<br /><a href="http://blog.edu.cn/user1/2746/archives/2007/1781075.shtml" target="_blank" title="日志BPEL4People</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zhaoxiangpeng.com/2007/05/%e6%88%91%e7%9c%8bbpel4people/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>关于BPEL形式化的重要文章</title>
		<link>http://www.zhaoxiangpeng.com/2007/03/%e5%85%b3%e4%ba%8ebpel%e5%bd%a2%e5%bc%8f%e5%8c%96%e7%9a%84%e9%87%8d%e8%a6%81%e6%96%87%e7%ab%a0/</link>
		<comments>http://www.zhaoxiangpeng.com/2007/03/%e5%85%b3%e4%ba%8ebpel%e5%bd%a2%e5%bc%8f%e5%8c%96%e7%9a%84%e9%87%8d%e8%a6%81%e6%96%87%e7%ab%a0/#comments</comments>
		<pubDate>Fri, 30 Mar 2007 13:44:00 +0000</pubDate>
		<dc:creator>Xiangpeng</dc:creator>
				<category><![CDATA[BPEL和CDL]]></category>

		<guid isPermaLink="false">http://www.zhaoxiangpeng.com/articles/%e5%85%b3%e4%ba%8ebpel%e5%bd%a2%e5%bc%8f%e5%8c%96%e7%9a%84%e9%87%8d%e8%a6%81%e6%96%87%e7%ab%a0.html</guid>
		<description><![CDATA[最近经常有些朋友问我有关BPEL形式化、Web服务形式化等等的问题。推荐两篇文章如下： Models and Verification of BPEL很好的survey，如题目所说，做BPEL模型和验证的人必看。(也提到了我们组的工作^_^) Formal frameworks for workflow modelling也是一个survey，但其出发点是workflow，视角似乎更广一点。重点比较了petri网、进程代数和逻辑演算三种方法。 此外，在学术界研究BPEL常遇到的问题是找不到例子。ActiveBPEL提供了不少例子，可以参考。 客观的说，国际上做BPEL形式化的人还是很多的……所以现在再做的话就要有一定的创新才行了。 最后闲扯一下~昨天看到一句话：”一流的科学家挖坑，二流的科学家灌水“。说的好。]]></description>
			<content:encoded><![CDATA[<p>最近经常有些朋友问我有关BPEL形式化、Web服务形式化等等的问题。推荐两篇文章如下：
<ul>
<li><a href="http://www.cse.yorku.ca/%7Efranck/research/drafts/tutorial.pdf">Models and Verification of BPEL</a><br />很好的survey，如题目所说，做BPEL模型和验证的人必看。(也提到了我们组的工作^_^)</li>
<li><a href="http://www.m3pe.org/deliverables/theory-survey.pdf">Formal frameworks for workflow modelling</a><br />也是一个survey，但其出发点是workflow，视角似乎更广一点。重点比较了petri网、进程代数和逻辑演算三种方法。</li>
<li>此外，在学术界研究BPEL常遇到的问题是找不到例子。ActiveBPEL提供了<a href="http://www.activebpel.org/samples/samples-3/samples.php">不少例子</a>，可以参考。</li>
</ul>
<p>客观的说，国际上做BPEL形式化的人还是很多的……所以现在再做的话就要有一定的创新才行了。</p>
<p>最后闲扯一下~昨天看到一句话：”一流的科学家挖坑，二流的科学家灌水“。说的好。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zhaoxiangpeng.com/2007/03/%e5%85%b3%e4%ba%8ebpel%e5%bd%a2%e5%bc%8f%e5%8c%96%e7%9a%84%e9%87%8d%e8%a6%81%e6%96%87%e7%ab%a0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WS-BPEL 2.0 Webinar总结</title>
		<link>http://www.zhaoxiangpeng.com/2007/03/ws-bpel-20-webinar%e6%80%bb%e7%bb%93/</link>
		<comments>http://www.zhaoxiangpeng.com/2007/03/ws-bpel-20-webinar%e6%80%bb%e7%bb%93/#comments</comments>
		<pubDate>Fri, 23 Mar 2007 14:39:00 +0000</pubDate>
		<dc:creator>Xiangpeng</dc:creator>
				<category><![CDATA[BPEL和CDL]]></category>

		<guid isPermaLink="false">http://www.zhaoxiangpeng.com/articles/ws-bpel-20-webinar%e6%80%bb%e7%bb%93.html</guid>
		<description><![CDATA[OASIS最近给出了两个关于WS-BPEL 2.0的视频讲座，可免费下载http://www.oasis-open.org/events/webinars/，很值得一看。最有趣的是最后有一段Q&#38;A时间，提到了好几个人们对BPEL特别关注的问题。几点笔记如下，边听边记的，所以写的比较随意。 event handling可以用于实现基于async的并行。想像有几个event同时发生，同时得到处理。 correlation set用于实现LRT。区分多个instance，多个receive。 assign用于做transform，可以用xsl来做，bpel不关心其变换细节。 foreach可以通过设置一个参数使其所有的子scope并行的执行 variable property作为一个alias，可用于分离process logic和数据的实际格式信息，主要用于correlation id isolated scope：用于对共享变量加锁(不是很懂) bpel2.0增加了rethrow, validate, terminationHandler,"join" correlation 等东西 compensateAll v.s. compensateScope 提问中提到的问题： bpel4people: vague answer... near future会有新的update，目前还是只有那个white paper bpel vs. cdl: they are othogonal!!! different aspect（很高兴听到做bpel的人也承认cdl的价值了） bpel and bpmn: vague answer... omg and oasis are two different organizations。目前omg还是只有bpmn到bpel1.1的转换，不支持2.0 据说q&#38;a部分的文本也会放在oasis网站上？迄今还未发现。 以下是对bpel基本知识的复习：（最近不怎么看bpel，有些细节还真的都忘了，这个视频是个很好的复习串讲） wsdl message和xml schema的关系：一个message分为多个part，每个part的类型是一个xml schema. [...]]]></description>
			<content:encoded><![CDATA[<p>OASIS最近给出了两个关于WS-BPEL 2.0的视频讲座，可免费下载<a href="http://www.oasis-open.org/events/webinars/">http://www.oasis-open.org/events/webinars/</a>，很值得一看。最有趣的是最后有一段Q&amp;A时间，提到了好几个人们对BPEL特别关注的问题。几点笔记如下，边听边记的，所以写的比较随意。</p>
<ul>
<li>event handling可以用于实现基于async的并行。想像有几个event同时发生，同时得到处理。</li>
<li>correlation set用于实现LRT。区分多个instance，多个receive。</li>
<li>assign用于做transform，可以用xsl来做，bpel不关心其变换细节。</li>
<li>foreach可以通过设置一个参数使其所有的子scope并行的执行</li>
<li>variable property作为一个alias，可用于分离process logic和数据的实际格式信息，主要用于correlation id</li>
<li>isolated scope：用于对共享变量加锁(不是很懂)</li>
<li>bpel2.0增加了rethrow, validate, terminationHandler,"join" correlation 等东西</li>
<li>compensateAll v.s. compensateScope</li>
</ul>
<p>提问中提到的问题：</p>
<ul>
<li>bpel4people: vague answer... near future会有新的update，目前还是只有那个white paper</li>
<li>bpel vs. cdl: they are othogonal!!! different aspect（很高兴听到做bpel的人也承认cdl的价值了）</li>
<li>bpel and bpmn: vague answer... omg and oasis are two different organizations。目前omg还是只有bpmn到bpel1.1的转换，不支持2.0</li>
</ul>
<p>据说q&amp;a部分的文本也会放在oasis网站上？迄今还未发现。</p>
<p>以下是对bpel基本知识的复习：（最近不怎么看bpel，有些细节还真的都忘了，这个视频是个很好的复习串讲）</p>
<ul>
<li>wsdl message和xml schema的关系：一个message分为多个part，每个part的类型是一个xml schema.</li>
<li>portType里说明本process用到的各个wsdl operation，没有给出任何的role信息，也没说明哪些是本process提供的operation。</li>
<li>partnerLinkType包含两个portType，并给这两个portType增加了各自相应的role信息，说明“谁”来提供这些operation。</li>
<li>partnerLink里标明了partnerLinkType中的role是“my”还是“partner”，说明本process站在哪一边。</li>
<li>receive说明了本process提供的operation是什么。（其实这么理解也不太合适，因为一个process未必就是rpc形式的，比如auctionService可能需要分别从buyer和seller处receive消息，然后再进行处理，最后分别通知buyer和seller）</li>
<li>reply里写的operation必需与某个receive对应。（因为可能有多个receive）此时可以理解为RPC响应。</li>
</ul>
<p>如果你对BPEL感兴趣，请参考我的<a href="http://www.zhaoxiangpeng.com/articles/category/bpel%e5%92%8ccdl" target="_blank">BPEL和CDL专栏</a>里的更多文章。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zhaoxiangpeng.com/2007/03/ws-bpel-20-webinar%e6%80%bb%e7%bb%93/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>到底该怎么对business process建模?</title>
		<link>http://www.zhaoxiangpeng.com/2007/02/%e5%88%b0%e5%ba%95%e8%af%a5%e6%80%8e%e4%b9%88%e5%af%b9business-process%e5%bb%ba%e6%a8%a1/</link>
		<comments>http://www.zhaoxiangpeng.com/2007/02/%e5%88%b0%e5%ba%95%e8%af%a5%e6%80%8e%e4%b9%88%e5%af%b9business-process%e5%bb%ba%e6%a8%a1/#comments</comments>
		<pubDate>Sun, 18 Feb 2007 13:34:00 +0000</pubDate>
		<dc:creator>Xiangpeng</dc:creator>
				<category><![CDATA[BPEL和CDL]]></category>

		<guid isPermaLink="false">http://www.zhaoxiangpeng.com/articles/%e5%88%b0%e5%ba%95%e8%af%a5%e6%80%8e%e4%b9%88%e5%af%b9business-process%e5%bb%ba%e6%a8%a1.html</guid>
		<description><![CDATA[不管是叫workflow还是叫business process，工作流/商业流程的建模一直是个重要问题。不幸的是，这一问题一直也没有个统一的答案——在学术界，“Petri网派”和“进程代数派”（主要是Pi演算）之间的口水战似乎从未停止过。 最早是有人写了一篇文章workflow is just a pi-calculus。然后，van der Aalst先生对此作了有力的批驳，除了Why workflow is not just a pi calculus，还有一篇文章Pi calculus versus Petri nets: Let us eat “humble pie” rather than further inflate the “Pi hype”包括了对Pi Calculus局限的分析，提出了不少“challenges”，其中的关键就是pi calculus不能支持所有的patterns。 最近又看到一篇文章：Why do we actually need the Pi-Calculus for Business Process Management，其中还引用了"eat humble pie"一文，可以看作“进程代数派”对“petri网派”的反击。文章指出petri网的缺点在于1)static structure，不支持动态变化的结构（应该是指mobility）2)不支持高级composition construct，比如递归。虽然存在一些对petri网的扩展以解决这些问题，但这些扩展都会导致复杂度过高。 而pi演算就没有这些问题，而且支持mobility。作者认为mobility非常有价值，并举了一个例子来说明之。 此外，作者还提出了web service时代导致workflow模型的几点新变化：1)从基于状态的系统转为基于message的系统2)从central engine到分布式服务3)从closed到open的环境（指的是mobility） 我个人是倾向于process algebra的。]]></description>
			<content:encoded><![CDATA[<p>不管是叫workflow还是叫business process，工作流/商业流程的建模一直是个重要问题。不幸的是，这一问题一直也没有个统一的答案——在学术界，“Petri网派”和“进程代数派”（主要是Pi演算）之间的口水战似乎从未停止过。</p>
<p>最早是有人写了一篇文章<a href="http://www.fairdene.com/picalculus/workflow-is-just-a-pi-process.pdf">workflow is just a pi-calculus</a>。然后，van der Aalst先生对此作了有力的批驳，除了<a href="http://bptrends.com/publicationfiles/02%2D04%20ART%20WhyworkflowisNOTjustaPi%20%2D%20Aalst1%2Epdf">Why workflow is not just a pi calculus</a>，还有一篇文章<a style="http://blog.edu.cn/" href="http://is.tm.tue.nl/research/patterns/download/pi-hype.pdf">Pi calculus versus Petri nets: Let us eat “humble pie” rather than further inflate the “Pi hype”</a>包括了对Pi Calculus局限的分析，提出了不少“challenges”，其中的关键就是pi calculus不能支持所有的patterns。</p>
<p>最近又看到一篇文章：<a href="http://blog.edu.cn/bpt.hpi.uni-potsdam.de/twiki/pub/Public/FrankPuhlmann/BIS2006-PIC.pdf">Why do we actually need the Pi-Calculus for Business Process Management</a>，其中还引用了"eat humble pie"一文，可以看作“进程代数派”对“petri网派”的反击。文章指出petri网的缺点在于<br />1)static structure，不支持动态变化的结构（应该是指mobility）<br />2)不支持高级composition construct，比如递归。<br />虽然存在一些对petri网的扩展以解决这些问题，但这些扩展都会导致复杂度过高。</p>
<p>而pi演算就没有这些问题，而且支持mobility。作者认为mobility非常有价值，并举了一个例子来说明之。</p>
<p>此外，作者还提出了web service时代导致workflow模型的几点新变化：<br />1)从基于状态的系统转为基于message的系统<br />2)从central engine到分布式服务<br />3)从closed到open的环境（指的是mobility）</p>
<p>我个人是倾向于process algebra的。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zhaoxiangpeng.com/2007/02/%e5%88%b0%e5%ba%95%e8%af%a5%e6%80%8e%e4%b9%88%e5%af%b9business-process%e5%bb%ba%e6%a8%a1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

