免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1304 | 回复: 0
打印 上一主题 下一主题

bpel [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-12-21 08:42 |只看该作者 |倒序浏览
0. 数据库!<br>&nbsp; bpel使用哪个数据库是在deploy的时候指定的.<br>&nbsp; 但是实际数据库中表的生成是在jboss启动的过程中创建的.<br>&nbsp; 因此要想在mysql中部署bpel,首先需要在mysql中手工创建riftsaw数据库, 否则就会无法连接,当然表的创建就无法成功!<br><br>1. 首次错误为:<br>Failed to invoke BPEL process: Unable to find operation for element {http://eclipse.org/bpel/bpel}process<br>修改:在soap:binding style="rpc"字段修改style为"rpc"原来为document.<br>然后错误为:<br>&gt;Failed to invoke BPEL process: Expected part wrapper 'process'missing on service:{http://eclipse.org/bpel/bpel}first_bpel/first_bpelPort<br>再次修改了另一个rpc,但是整个程序出错!<br><br>1. soap:binding style="rpc"是必须的.<br><br>2. soap:body中的namespace是必须的.该namespace值必须与message类型所定义的namespace.(而eclipse自动生成的部分没有该内容)<br>有了这两个后好像可以调用了!<br>但是还继续报错! 不知道还少什么!<br><br>现在的错误如下:<br><br>Failed to invoke BPEL process: Expected part wrapper '{http://schemas.xmlsoap.org/wsdl/}process' missing on service:{http://eclipse.org/bpel/bpel}HelloWorld/HelloWorldPort<br><br><br>3. 修改了<br>&nbsp;&nbsp;&nbsp; &lt;message name="HelloWorldRequestMessage"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;part name="payload" element="xsd:string"/&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/message&gt;<br>字段中的element为type<br><br><br>4. 复杂类型的传递:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;element name="SendHello_BPELRequest"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;complexType&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;sequence&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;element name="input" type="string"/&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/sequence&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/complexType&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/element&gt;<br>&nbsp;&nbsp;&nbsp; &lt;message name="SendHello_BPELRequestMessage"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;part name="payload" element="tns:SendHello_BPELRequest"/&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/message&gt;<br>&nbsp;&nbsp;&nbsp; &lt;portType name="SendHello_BPEL"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;operation name="process"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;input&nbsp; message="tns:SendHello_BPELRequestMessage" /&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;output message="tns:SendHello_BPELResponseMessage"/&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/operation&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/portType&gt; <br><br>对于该类型,应该如下写soap:<br>&lt;soapenv:Body&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;wsdl:process&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;payload&gt;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;wsdl:SendHello_BPELRequest&gt; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;wsdl:input&gt;wanjmdddd&lt;/wsdl:input&gt;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;/wsdl:SendHello_BPELRequest&gt;<br>&nbsp;&nbsp;&nbsp; &nbsp;&lt;/payload&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/wsdl:process&gt;<br>&lt;/soapenv:Body&gt;<br>此处的wsdl定义为上面的SendHello_BPELRequest所在的namespace<br><br>变量为了能够成功使用query2.0语言访问,需要先初始化.<br>示例如下:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;bpel:copy&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;bpel:from&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;bpel:literal&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;tns:test_bpelResponse<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xmlns:tns="http://sample.bpel.org/bpel/sample"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;tns:result&gt;fffff&lt;/tns:result&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tns:test_bpelResponse&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/bpel:literal&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/bpel:from&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;bpel:to variable="output" part="payload"&gt;&lt;/bpel:to&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/bpel:copy&gt;<br>其中out是tns:test_bpelResponseMessage类型.test_bpelResponseMessage的定义为:<br>&nbsp;&nbsp;&nbsp; &lt;message name="test_bpelRequestMessage"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;part name="payload" element="tns:test_bpelRequest"/&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/message&gt;<br>test_bpelRequst的定义为:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;element name="test_bpelRequest"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;complexType&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;sequence&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;element name="input" type="string"/&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/sequence&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/complexType&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/element&gt;<br><br><br>bpel中的style="rpc|document"<br>这定义最后发送请求时报文的封装格式.<br>当其等于rpc时:本文需要封装在 操作名 为element的元素中.<br>而当document时. 则只要是消息封装就可以了,详细情况请搜索the difference between rpc 和document.<br>所以在引用另外一个wsdl时,请不要修改其中的style. 这个bpel引擎会自动去调用.而从应用过程中来看,jboss的bpel只支持rpc格式!.<br><br><br>今天重新试了一下, jboss的bpel也是支持document格式的.只是只要对消息进行封装就可以了.此时不需要namespace和style的修改.<br>对于上面的复杂结构, 只需要写为:<br>&lt;soapenv:Body&gt;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;wsdl:SendHello_BPELRequest&gt; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;<font color="#F00000">wsdl:</font>input&gt;wanjmdddd&lt;/<font color="#F00000">wsdl:</font>input&gt; (调用bpel是需要红字,而调用wsdl则不要)<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;/wsdl:SendHello_BPELRequest&gt;<br>&lt;/soapenv:Body&gt;<br><br>也就是说在rpc时, 需要在消息的外面在封装上&lt;process_name&gt;&lt;part_name&gt;.其他的相同.<br><br>此处还有一个奇怪的发现就是.<br>理论上调用bpel和调用wsdl的一个operation, 报文的格式应该是相同的.但是通过测试发现.<br>对于上面的报文如果是调用wsdl的话.input前后的wsdl应该去掉, 否则jboss会报错.奇怪同样的一个程序,怎么会进行不同的处理. <br>经测试发现, bpel主动调用bpel时, 采用&lt;input xmlns=''&gt;的形式出现.<br><br>其实在recv那一步, 引擎只做最外层的解析. 对于里面的元素是否合法(拿上面的报文为例,此时并不检查&lt;wsdl:input&gt;部分是否合法). 并不做检查.只有等到下面在继续访问的时候,才会发现问题.<br>
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP