wso2 esb 教程可以用于商业用途吗

10940人阅读
wso2esb(1)
&&&&&&&&& WSO2 ESB是一个轻量级的易于使用的企业服务资源总线,基于. WSO2 ESB 允许系统管理员和SOA架构师轻松的配置消息路由, 虚拟化, 中介, 转换, 日志记录, 任务调度, 负载均衡, 失败路由, 事件中介等等. 运行时被设计为完全异步, 非阻塞 、连续的。基于
&&&&&&&&& WSO2 ESB 4.0.3 在革命性的
(Middleware a' la carte)上进行开发, 并基于 OSGi 以便能对面向服务的架构(SOA)提供更好的模块化和组件化 . 这个版本也包含了一些新的特性和可选的组件,可以使用他们来自定义服务。. 更近一步说,如果你不想使用任何内置的特性,你可以毫无顾虑的卸载他们. 换句话说, WSO2 ESB 可以被自定义和调整以适用与你自己的SOA需求
wso2体系结构
&&&&&&&& WSO2 ESB 支持许多应用层协议和消息协议 (统称为传输), 包括 HTTP/S, E-mail, Java 消息服务 (JMS) and 虚拟文件系统 (VFS). 他还支持域特定协议 如:金融信息交换 (FIX), 高级消息队列协议 (AMQP) and Health Layer 7 (HL7). 新的传输可以被很容易的插入到服务中,这点还得感谢Axis2 传输框架提供的无缝可扩展性.
&&&&&&&& ESB 使用消息构建器组件来解析不通渠道的传输是如何到达的。. 一个消息构建器通常和内容类型联系在一起. 依靠到达消息的实际内容类型,ESB将会选择一个合适的消息构建器,然后解析这个消息的内容,根据XML信息集把它转化成Apache AXIOM. WSO2 ESB ships with 消息构建器处理文本消息 (纯文本, SOAP, POX 等) 还有二进制消息.
消息转换器是和构建器拥是功能相反的伙伴. 一个消息转换器会把消息根据原来的内容类型转换成原来的格式,在这个消息进入下次传输路由之前。.和传输一样,用户可以实现新的消息构建器和转换器通过使用Axis2 API.
&&&&&&&&& 高级端点在传输中保持作为一个逻辑的单元,有三种类型的断点,即地址端点、WSDL端点和默认端点。除了这些之外还有第二种端点类型:负载均衡断点和失败端点,他们有一个或多个高级端点组成. 一种端点可以使用任何有效的传输去分派消息,他们甚至可以在传出消息上实施各种QoS 约束(安全, RM 等) .
代理服务是 WSO2 ESB代理的虚拟服务. 他是用 Axis2 消息接收器实现的 所以能轻松的接受到来的消息.一个代理服务可以用URL访问也可以用规范的Web服务地址. 代理服务也发布一个WSDL 所以客户端连接代理服务就像连接一个真是的Web服务. 任何可用的传输都可以用来接受和请求消息通过这个代理服务. 代理服务是一个NB的方式用来发布已经存在的服务通过不通的传输工具、模式和 QoS配置.
&&&&&&&& WSO2的强大就在于他全方位的中介库,提供了各种消息处理和中介的功能. 使用这些中介库我们可以实现所有广泛应用的消息转化模式 (MEP)和企业集成模式(EIP). 存在简单的中介提供基本的消息处理功能如:日志记录和内容传输.也存在高级的中介用来访问数据库、对信息流添加安全等. 在这种情况下,内置的中介仍不足以满足一个方案,那么你可以依赖WSO2提供的简单但强大的API写一个自定义的中介.中介可以用多种技术来实现,包括java、脚本和spring。所有的这些都被认为是WSO2的扩展。
&&&&&&&& 序列是特殊的中介充当中介的配置组件。序列允许组织中介实现命令管道和过滤器模式来实现实际的消息处理和中介 .
&&&&&&&& 任务为WSO2 ESB 提供了配置计划任务的能力,他们为中介执行内部和外部的命令. QoS 组件 实现可靠消息、安全代理服务和中介,他和Apache的两个模块的实现都是为了 Axis2, 这两个模块是 Rampart 和 Sandesha.
WSO2 ESB 拥有内置的注册/存储库来存储配置和配置元数据 并且也提供了设备用来远程存储. 组件像集群、负载均衡和高可用性是WSO2成为了一个生产准备服务器。. 最后 GUI 组件提供了综合管理、配置和监视能力. GUI 建立在一个通过分离前端和后端的分层的架构上,. 这样就使得用户可以连接多个服务端通过一个 GUI控制台.这个基于WSO2的架构的组件提高了和OSGI之间的松耦合. 所有的这些组件都建立为 OSGi 包.
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:757203次
积分:7981
积分:7981
排名:第2056名
原创:142篇
译文:52篇
评论:179条
文章:18篇
阅读:32812
文章:12篇
阅读:8181
阅读:19494
阅读:73016
文章:46篇
阅读:110562
(3)(5)(7)(6)(5)(21)(28)(13)(6)(11)(6)(23)(1)(3)(3)(2)(6)(1)(2)(4)(2)(9)(15)(3)(5)(1)(1)(1)(4)整理的OSChina 第 38 期高手问答 —— ESB 企业服务总线,嘉宾为@肖俊_David&。@肖俊_David&恒拓开源架构师,热衷于,有多年的企业级经验。曾参和设计和开发基于FuseESB 企业级服务总线系统,对FuseESB企业级服务总线以及内嵌的Camel/ActiveMQ 有深刻的理解。ESB 全称为Enterprise Service Bus,即企业服务总线。它是传统中间件与XML、Web服务等技术结合的产物。ESB提供了中最基本的连接中枢,是构筑企业神经系统的必要。ESB的出现改变了传统的架构,可以提供比传统中间件更为廉价的,同时它还可以消除不同应用之间的技术差异,让不同的应用协调运作,实现了不同服务之间的通信与整合。从功能上看,ESB提供了事件驱动和文档导向的处理模式,以及分布式的运行管理机制,它支持基于内容的和过滤,具备了复杂数据的传输能力,并可以提供一系列的标准。[来自 百科]ESB 相关的开源软件:http://www.oschina.net/project/tag/333/esb主要有价值的问题整理如下:1.先简单介绍下 ESB 的应用场景吧,相信很多人还是不太了解 。肖:一般用在 企业内部业务系统比较多,相互之间调用比较复杂,接口的维护花费比较大,并且不同的系统采用了不同的开发平台、传输协议、数据格式等,这种情况下就需要考虑使用ESB了&。2.这么庞大的一个系统,设计时候遇到的难题及解决方法是什么?在系统性能上从那些方面优化?肖:主要体现在各业务系统数据的整合/ESB路由的/流量控制等方面。 性能方面是这些方面的优化:负载均衡/应用服务器集群/缓存/的读写分离/Restful WS/WS接口数据的压缩/消息的异步传输/。具体可以参考此文档http://www.oschina.net/doc/593。3.对于大并发的实时交易的系统,选用ESB作为数据总线,其性能如何在线人数100万,并发1000 左右的交易,基于WS与ESB进行对接 ,中间不介入MQ 。肖:根据我们对Fuse ESB的性能测试情况,直接访问WS 与 通过ESB 来访 问WS,性能影响不大,当然具体的性能损耗,还与你采用的ESB产品有关!我们目前做的,部署了两台ESB,前面通过LVS做负载均衡,调用 WS 的 TPS 可以达到 600-800左右。4.ESB的具体应用及其担任的角色是什么呢?肖:中介、路由转发、格式转换、协议转换、安全控制。追问:您好,针对于您说的路由转发,可否再阐述下,肖:就是说路由转发的机制,可以是业务人员定义的,由业务人员来定制转发的流程5:ActiveMQ 比较适合哪些企业应用场景?能否举个例子简单说明下,体现使用了ActiveMQ的价值。肖:ActiveMQ主要优势体现在 消息的异步/推送 上, 提供了多种语言的。它可以用于异构系统的整合,如我需要向其它系统 推送一个消息,只需要把消息发送到MQ服务器,便可以去做其它事情,MQ服务器来保证其它系统数据的接收;另外,系统包含大量的业务日志数据,也可以考虑使用MQ来异步处理。追问:MQ服务器一般采取哪些部署方案呢?对于处理大量业务日志,单台MQ服务器是否足够?肖:看机器性能, 我这边性能测试 4核/4G内存/,MQ的收发大概可以到5000条/秒。如果有高可用的需求,需要做MQ集群。追问:你是说先把日志内容发给MQ,再由MQ发送给日志系统?&肖:是的。6.请问实际的安全问题是怎么处理的,给点思路,谢谢。肖:在ESB的路由中,加入安全认证机制。如用户名/密码认证,访问控制认证等。MQ的安全认证,可以通过安全插件来实现。追问:谢谢哈,那我还想了解下路由程序的大概作用,是不是就是处理请求,使其匹配业务逻辑的那种?&肖:具体可以参考此文档,第二个案例 http://www.oschina.net/doc/593&。7.能不能介绍下现在主流的esb产品. 包括商业和开源的?能不能重点介绍下fuse产品,要是直接部署使用的话,有什么要注意的.&fuse好像是基于osgi的.话说osgi好像比较难搞呀.个人能不能提供咨询服务?肖:商业主要有 IBM/ ESB,高达6/700W 的单机许可费。开源的有ServiceMix/Fuse/JBOSS/Mule 等ESB产品。 ServiceMix/Fuse ESB 4.X以后是基于OSGI架构的,提供了很好的扩展性,上手是有点难度。目前很多产品都在往OSGI靠拢,如JBOSS AS 7。 谈不上咨询,大家互相交流学习。8.如果所有的服务接口都接入ESB,ESB怎么保证安全服务,如果ESB挂掉那所有的应用系统也无法服务了,加一些缓存集群是否能彻底解决这样的问题,可否做到我调用一台机器时那台机器挂了,直接将服务切到另一台机?肖:可以部署多台ESB集群,在ESB前面可以通过F5/LVS等来做负载均衡,若是LVS,可以通过心跳来检测当前ESB的服务状态,若是一台出现宕机情况,可以把请求转发到其它ESB&。9.问个具体点的问题,我做了个实验项目,架构是这样的:webapp+serviceMix,需要在webapp端控制路由的部署和启停。部署就是将bundle放到相应的下了,命令通信还没实现,找了资料(http://..org/repos/asf/karaf/trunk/client/src/main//org//karaf/client/Main.)是用ssh实现的,不知道除了这个还有没有其他更好的方法。另外,部署不知道还有没有其他方法。肖:这种是通过远程SSH ,来管理ESB控制台,控制bundle的启动和运行。你可以参考下 Karaf的 webconsole是如何做的bundle管理。追问:谢谢,借此机会多问一下,想请问下除了用ssh远程管理esb外,还有没有其他方案可以让web与esb结合,比如在webapp中集成karaf和camel可行不?另外apache ode已经与新版本jboss esb不兼容了,你们是如何做webservice编排的?多谢了~肖:ESB 部署bundle,bundle集成Camel,服务编排用Camel 的 EIP&。追问:谢谢,个人认为Camel EIP不太适合做服务编排,虽然有java DSL,还是没有BPEL合适。现在在用bpel-g&。肖::bpel是基于SOAP协议的,会占用大量带宽。10、想问一下开源的esb选择哪个比较好,现在在openESB和WSO2 esb中犹豫,希望得到您的指导。肖:这两种ESB我还未使用过:),建议你用主流ESB。11、企业内部现在项目是不是已经整合到JBoss ESB中了呢?相关的文档都需要从JBoss上下载吗?业务系统比较多,相互之间调用比较复杂,接口的维护花是Restful风格的WS费比较大,并且不同的系统采用了不同的开发平台、传输协议、数据格式等、ESB能够提供什么服务,能够帮助解决这些问题?为什么要使用ESB?如果不使用,其实没什么问题,对不对?它最大吸引力在哪里?肖:1、多系统之间的互相调用会造成网状结构 错综复杂 。& & & 2、接入ESB后,服务都集中在一处调用,原系统如果是以ws公开的服务,经过esb之后,可以公开称多种协议适配各种客户系统调用 。& & & 3、ESB可以统一的进行日志、安全和权限以及SLA治理 很方便进行控制。& & & 4、ESB作为众多系统的入口,还可以很方便的在一处实现跨系统的流程整合和编排&。12、除了 Redhat 和 JBoss 的文档,还有什么好的 Fuse ESB 学习资料吗?肖:很多,Fuse ESB集成了很多开源项目,如Karaf/CXF/ActiveMQ/OSGI等,这些你都需要有所了解,去他们的官方有文档,书籍方面 你可以参考 Open Source ESBs In Action不过版本有点老了。13、在医院的药品、挂号系统、医生/护士工作站、财务等各种his系统当中esb可以扮演什么角色?或者说他适用这种环境吗?有木有类似的项目?哈哈,我是业余前端,问得不好还请见谅。肖:可以适用,接口都可以接入ESB。14、actiq用topic还是queue?。对于客户端向ESB发送数据需要返回值的情况。 对于actiq 有什么好的解决方法没?肖:目前好像还没好的办法,可以创建一个返回队列来实现 JMSReplyTo 。other:既然对于请求需要有返回值,这属于RPC的范畴了。可以基于 Camel 做 RPC。15、esb对性能是不是有很大影响,刚用,发现速度会差一半.肖:看不同的ESB产品 ,Fuse ESB我们做性能测试,性能损耗是很小的。16、另外想咨询:& & & &1、在设计数据变更推送的机制,我们目前是在数据表上加触发器有字段更新写到中间表记录,然后一个定时任务去扫描这个中间表,然后形成特定的发送记录。& & & &2、ActiveMQ 在大量消息下性能是否可靠?& & & &3、ESB接入多个系统后,是直接访问源系统的数据库,还是在中间库做一份镜像?如果是直接访问数据库,事务控制等应该怎么做?如果是中间库,如何保证数据的实时性呢?肖:大量消息下,消息的可靠性是没问题的,MQ做了大量的工作保证消息的可靠性如消息在文件/客户端的确认机制等,性能上要根据实际的场景调优MQ的性能。 我们是把其它业务系统的核心数据抽取到本地库中,通过的Kettle ETL+quartz定时抽取。如果实时性比较高,可以考虑数据库复制,触发器等。17、现在项目是不是已经整合到JBoss ESB中了呢?相关的文档都需要从JBoss上下载吗?肖:http://www.jboss.org/products/fuse /products/enterprise-servicemix/18、想问下在ESB 中 &在多个系统交互时,控制数据的一致性呢?遇到异常如何回滚呢?肖:事务的补偿机制。追问:ESB中有实现事物补偿的么?那些资料可以参考呢?19、现在的 ServiceMix 支持部署 WAR 应用了吗?肖:支持。追问:这个回复过于简单了。OSGI-4.3引入了WAR支持。WAR首先被转换成一个bundle(WAB),然后启动。在这个过程中,很容易出现类库冲突,导致启动失败。详情请参考osgi.cmpn-4.3.0.pdf(&OSGi Service Platm Service Compendium&)中的&Web Applications Specification&章节 。另外,OSGI也有自己的适用场景,如果没有模块化需求,不应该引入OSGI。单纯的WAR项目就没有必要改造成OSGI项目。肖:除了 OSGi,模块化还有什么别的选择?SOA?&话说 Spring 不支持 OSGi 的原因是什么呢?Hibernate 也是用 Gradle 构建,照样在努力地向 OSGi 靠拢。追问:应该是吧。我认为,OSGI 也可以认为是广义上的 SOA .&Spring 支持 OSGI 的啊,你是不是看错了?肖:InfoQ 上等过 SpringSource 打算放弃支持 OSGi 的新闻。在最新的版本里面已经移除了 OSGi 的 manifest 文件,我是从 Maven 官方库里面下的 。追问:&你这么一说我也记起来了。之前 Spring 是支持 OSGI 的,模块还是 spring 搞出来的。放弃支持是他们的决定吧,我觉得OSGI的复杂性应该是其中的重要因素。20、消息能支持多大呢?能否支持10M以上文件推送?肖:你指的MQ?追问:对, ESB 一般不包括MQ这样的消息中间件吗?&肖:可以试试 MQ 的 B或者把文件拆分然后分组发送。对于太大的文件不建议使用MQ来传输。21、关于分布式日志采集,一般说可以采用ActiveMQ/MetaQ等实现。我的疑问是:网络写速度比不上本地文件系统写,实践中怎么解决这个问题?肖:分布式日志采集,这里没看懂。是对分布式系统的日志采集?22、为什么不把部分接口服务以RESTful方式暴露,看你里面全是webservice。肖:是Restful风格的WS。23、ESB和RPC(比如Dubbo/Corba/ICE)等适用场景,能介绍一下吗?谢谢。肖:ESB和RPC是完全不同的两个概念,PRC是点对点的消息传递,ESB是所有的服务接口都接入到ESB,通过它来转发 。24、正好我也是在做ESB,我想请教您,对于Mule ESB 有所了解吗? 或者您是否能提供一点你选用Fuse ESB方案的考虑吗?肖:这个是我们ESB技术选型的一部分资料:Mule ESB拥有了不错的用户量,且比较容易上手,但其由于其企业版是商业产品,相需要收费,且架构本身并没有成为规范,因此,若在没有的情况下大规模使用,一旦出问题,可能需要专业技术团队的支持。另外,Mule之前是没有自己的消息中间件的,且不支持热部署,收购Mule MQ之后才真正成为一个正式成熟的ESB。&Fuse ESB很好的支持了JBI规范,其下产品均是由下的著名开源项目组合而成。其中若干框架均已为开源世界广泛应用,比如 Camel和Apache ServiceMix,尤其是其中的Apache ActiveMQ和Apache CXF,且ServiceMix 4之后基于OSGi架构,更能迎合企业动态化、模块化的需求。此外,Fuse有丰富的文档支持,加上其主要框架为大多开源人士所熟知,技术上可控性强,风险较小。25、问题如下:& & & &1、同步接口调用,怎么处理?有一些需求要同步返回调用结果。& & & &2、想涉及一些支付业务的服务,事务怎么处理?&& & & &如:下订单业务,首先要调用“商品模块服务”查询库存,然后才能决定下单业务是否可以继续,如果库存充足,则要: & && & & &1)调用“商品模块服务”锁库 。& & & &2)调用“订单模块服务”保存订单。& & & & & &他们之间的事务怎么保证?能否给些思路。肖:ESB 只是做了路由转发功能,除了MQ,大部分都是同步的。Camel内部也做了一些事务的保障机制, 若是中间牵扯到了 多系统流程服务的编排,最好定义好发生异常后事务的补偿机制。26、:能不能多讲一下ESB的应用场景和不适合的应用场景。肖:涉及到多系统整合或者服务流程整合,就要考虑是否需要上ESB。27、FuseESB 稳定版本是哪个版本?下载时候是 6.0 版本包,怎么官方文档是 &7.1 ,还没搞明白。肖:7.1是没被收购之前的,现在被redhat收购,改名叫 Jboss Fuse。&28、将各种异构的子系统整合,由一个统一的中间件调度服务的架构就可以称作ESB吗?肖:这个是ESB的核心功能,还包括服务编排/消息增强/协议转换/格式转换/安全控制/服务质量等。29、ESB怎么保证消息的可靠传递?肖:如果是JMS消息,ESB中的MQ会持久化该消息到文件或者数据库。若是其它协议的消息,发生异常或者其它自定义状况,ESB会捕获到该状况然后经过处理告诉客户端。30、您好,能否比较几种常见的ESB产品(集),mule esb/cordys/Jboss esb/open esb ? 它们分别的适用场合是什么?特别是您对Cordys的看法?肖:ESB的功能都差不多,你要更详细的比较:可以去看看 Forrester研究公司(),在2011年第二季度对“企业级服务总线”做了一个详尽的,比较了IBM、、Progress 、Software AG、Tibco、FuseSource、MuleSoft、Red Hat和WSO2等诸多商业和开源厂商的ESB产品。31、ESB 对企业部门之间的信息孤岛的破解,是否有帮助,如果有的话,处理策略是什么?肖:造成信息孤岛的原因主要是系统之间通讯不畅,把各系统对外的接口都统一连到ESB即可,避免各系统的相互调用造成复杂的网状结构。other:n*n 和 1*n ,这种在系统庞大的企业中,是非常有价值的。jack:谈到ESB两大主流是Mule和Camel。Mule用户多一点。不过Camel接口更多,而且迭代速度更快。试过Camel+karaf发现对数据库支持这块osgi略差一些。于是采用Camel+spring。使用下来各方面都很出色,推荐此方案。32、请问ActiveMQ用的什么版本?怎么整合的?如何保证数据消费的可靠性,有没有出现丢消息或者假死的问题?肖:Fuse ESB默认就集成ActiveMQ,未出现你说的现象,不过如果发的太快,收的太慢会出现你说的情况,可以在接收端增加负载来解决 。33、esb如何解决多系统的数据一致性问题?例如在转账这种需要跨数据库事务的场合下怎么搞定?肖:可以定义流程发生状况的补偿机制,一旦服务流程流转中出现问题,所有执行过的活动都按特定的逻辑进行补偿 。1507人阅读
wso2(10)
1&BPS官方文档《》()
本章将介绍如何设置和启动WSO2&BPS,在管理控制台创建、部署和测试一个流程发布包,该流程实现两个数的相加。
实现加法运算,不调用外部服务。
1.2.1&启动BPS
1、JDK&1.6.*&以上
2、从&下载wso2&BPS,解压
3、&PRODUCT_HOME&\bin&目录运行启动
1.2.2&创建工程
1、下载安装
3、点击Composite&Application&Project,输入,点击。
4、选中工程,点击中的。
点击出现如下界面
5、在“”&,选择,点击。
6、为流程输入相应的信息,例如输入以下信息,点击,将自动产生AdderProcess1Artifacts.wsdl&and&AdderProcess1.bpel,工程结构如下图。
l&Project&name&:BPELNumberAdder
l&Process&Name&:AdderProcess
l&Namespace&:
l&Template&:&Synchronous&BPEL&Process
1.2.3&流程设计
现在可以设计BPEL流程了,在本例中我们设计两个数据相加。
1、打开AdderProcessArtifacts.wsdl,点击“”旁边的箭头。
点击后出现“”选项卡,如下界面。默认有一个类型的变量。
重命名为,类型为。
添加另一个元素。右击,点击&“”,&命名为,类型为&&,如下所示。
2、现在开始设计一个简单的业务流程,打开“”,删除“”元素。右击元素,删除后如下图所示。
3、现在需要在“”&和“”&活动间添加“”活动,添加方法:从“”中拖动“”到“”&和“”&之间;另一种方法是右击“”活动,在“”选择“”,结果如下。
4、配置“”活动,点击流程中的“”,点击“”窗口的“”,点击,出现如下窗口。
我们使用表达式计算两个变量,并将结果分配给变量。从“”下拉列表选择“”,从“”下拉列表选择“”。
“”输入“&$input.payload/tns:x&+&$input.payload/tns:y&”,“”选择“”作为分配的变量。
当配置变量时,编辑器将发送一条消息请求初始化,点击yes。它将自动生成一个字符串完成变量初始化。
完成后如下图所示:
5、定义和接口,打开文件,从给定列表中选择“”为地址端口,其他参数选择后将自动填充,接口不需要提供端口因为在我们的业务流程中没有任何外部调用,填充完后如下图所示。
1.2.4&流程部署
现在完成BPEL流程的编排,需要部署到上。
1、将“BPELNumberAdder”工程的选定文件导出为“”,起名为“bpelContent”并打包成“”文件准备部署到系统中。文件需要的文件至少包括),2).bpel文件,)文件。
2、上传。点击,选择上传文件,点击。
上传成功,点击processes/List,出现下图所示界面。注意:上传的流程的状态都是“active”,点击“manage”的“retire”按钮,状态变为“retired”,此时流程不能创建实例,active状态下,一个流程可以创建多个实例。
流程上传成功后,会作为一个BPEL服务发布到中,点击可以查看,如下图所示。
1.2.5&流程测试
进入的端控制台,将bpelContent.zip上传至服务器后;进入“bpelContent”,点击相应流程的Process&ID,如点击的,结果如下。
点击WSDL&Details部分的,即可测试刚刚创建好的“bpelContent”流程。出现如下,输入的值为,的值为,得到结果。
2&Developer&Studio开发步骤(、)
开发流程调用单个服务。该流程返回两个数字相加的和。调用一个服务并从服务获得结果。服务实现两个数相加。服务部署在服务器。
2.2.1&准备
l&WSO2&BPS3.2.0
l&Apache-Axis2&1.6
l&WSO2&Developer&Studio3.6.0&
1、部署AdderService.aar文件到服务器。复制AdderService.aar文件到目录。
2、运行。目录下运行。可以从http://localhost:8080/axis2/services/AdderService_0?wsdl查看,保存AdderService_0.wsdl。
2.2.3&建工程和流程
4、点击Composite&Application&Project,输入,点击。
4、选中工程,点击中的。
点击出现如下界面
5、在“”&,选择,点击。
6、为流程输入相应的信息,例如输入以下信息,点击,将自动产生AdderProcess1Artifacts.wsdl&and&AdderProcess1.bpel,工程结构如下图。
l&Project&name&:BPELNumberAdder<span style="color:#
l&Process&Name&:AdderProcess<span style="color:#
l&Namespace&:
l&Template&:&Synchronous&BPEL&Process
注意:AdderProcess1Artifacts.wsdl&是用来暴露流程作为一个服务,它只定义端口类型、消息,为部署流程到,我们需要定义一个绑定()和一个服务(),下一部分介绍如何创建流程的一个绑定和一个服务。
2.2.4&的绑定和服务
l&先添加一个绑定到AdderProcess1Artifacts.wsdl。
1、默认已经为我们创建,点击可以看到选项卡提示的相关信息。
2、点击,出现如下所示界面,protocal&选择“SOAP”&然后点击Finish。
注意有三种SOAP绑定选项:Document&Literal&,&rpc&literal&and&rpc&encoded,WSO2&BPS使用集成层,不支持的绑定。所以不要选择的绑定。
l&添加一个服务。
1、默认已经为我们创建服务,也可以删除原有服务,新建服务。右击编辑空白处,选择“”,服务重命名为“”。选择,在property&窗口重命名名字为“&NumberAdderServicePort”,从下拉菜单选择刚才创建的绑定,完成后AdderProcessArtifacts.wsdl&如下所示。
现在我们完成了为我们的BPEL流程定义绑定和和服务。
变量在流程中表示流程的中间状态,也用作服务调用时的输入参数以及接收服务返回的结果。中的变量既可以是消息类型变量也可以是所定义的复杂类型或元素。在我们的例子中,变量需要存储发送到伙伴服务或者从伙伴服务接收的消息,所以我们需要初始化变量来调用外部服务,这里使用的是WSDL消息类型变量。消息类型变量对应于文件中定义的服务消息类型。下面看一下如何定义流程的输入输出变量,首先我们需要修改流程的服务描述文件。
现在我们开始定义输入输出参数,在本例中我们设计两个数的相加,编辑器自动帮我们创建好了输入输出参数,但是我们需要修改参数符合我们的服务。
1、打开AdderProcessArtifacts.wsdl,首先设置输入参数。点击“”旁边的箭头。
2、点击后出现“”选项卡,如下界面。默认有一个类型的变量。
重命名为,类型为。
3、添加另一个元素。右击,点击&“”,&命名为,类型为&&,如下所示。
4、现在完成了输入参数的配置,同样的流程配置输出参数,命名为,类型为&&。
提示:我们也可以通过窗口添加元素,→&→&,可以看到我们创建的元素。
现在完成了的配置,开始设计流程。
2.2.6&程设计
1、打开“”,可以看到业务流程的模板,编辑器自动生成了“”“”活动,而且也产生了在这两个变量中使用的和,删除“”元素。右击元素,删除后如下图所示。
注意:我们的流程需要调用外部服务(),为调用服务我们需要分配变量到外部服务的,分配外部服务的响应到我们的流程的,所以我们的场景需要两个活动和一个活动。
2、在“”&和“”&活动间添加“”活动,添加方法:从“”中拖动“”到“”&和“”&之间;另一种方法是右击“”活动,在“”选择“”,结果如下。
3、添加“”活动。添加活动前需要添加一个。添加方法:从“”中拖动“”到“”和“”之间。
4、在,添加“”活动,从窗口拖动到。
5、添加另一个“”匹配外部服务响应与我们流程响应的变量。
1、导入“”到我们的工程文件夹。右击BPEL工程选择Import,选择General&-&“File&System”&.
完成后,点击finish。
2、点击“”活动,点击“”窗口的“”。在“Partner&Link”&下拉框选择“Create&Global&Partner&Link”&起名为AdderServricePL.
3、然后弹出Partner-link类型对话框,类型来自于AdderService.wsdl。为添加伙伴链接类型,点击“Add&WSDL”从Import&Source部分选择Resources&,从项目文件夹选择AdderService.wsdl&,点击Ok。
4、然后点击“choose&partner&link&type”的“ok”,提示输入伙伴类型名称,输入“”,点击“”,输入角色名称“”,点击“”。
从quick&pick选择操作。
现在已经为invoke活动创建了一个伙伴链接,下一步为活动分配变量。
2.2.8&配变量
1、点击“AssignInputVaraiabes”,点击properties选显卡的的Details。初始化Input变量,点击New,从“from”列表选择“Input”“payload:adderPorcessRequest”&,“”列表选择“”“parameters:&add”
当配置变量时,编辑器将发送一条消息请求初始化,点击yes。它将自动生成一个字符串代码完成变量初始化。
完成后如下图所示:
现在我们的设计中有两个assign活动,一个““”一个“variable&to&variable&”,现在配置它们。
2、点击&“Variable&to&Variable”,“From&”列表的“payload&of&the&input”&设置为“x:&int”,“To”列表的&“parameters:&add&of&the&AdderServicePLRequest”设置为“args0:&int”&。
3、再添加一个“Variable&to&Variable”,From&”列表的“payload&of&the&input”&设置为“y:&int”,“To”列表的&“parameters:&add&of&the&AdderServicePLRequest”设置为“args1:&int”&。
4、然后点击“Fixed&Value&to&Variable”,检查Input变量
args0和&args1是否初始化,未初始化进行初始化。
5、相同的步骤设置“AssignOutputVaraiabes”。“from”列表的“parameter&of&AdderServicePLResponse”中的“return:int”&到“to”列表的“payload&of&the&output”中的“result&:&int&”&。
注意:这里只使用了一种方式定义变量,实际上可以用不同方式初始化变量。从from和列表可以选择。
1、打开文件,在这里可以设置流程的选项,如)可以指定流程部署后的状态(,,),)可以设置流程只在内存中运行,)Inbound&Interfaces&(Service)&and&Outbound&Interfaces&(Invokes)&。Inbound&Interfaces&(Service)&代表流程提供的服务,对每一个伙伴链接必须指定你想使用的服务、端口和绑定。Outbound&Interfaces&(Invokes)代表流程调用的接口。
2、定义接口。伙伴链接对应于我们的流程,点击“”,选择“”,其他参数选择后将自动填充。
3、定义接口。在我们的例子中只有一个外部调用,所以需要指定伙伴链接的服务、端口和绑定。填充完后如下图所示。
现在我们完成了流程的实现,下一步需要部署到上运行。
首先将工程打包为文件。打包方法:右击工程名,如下图所示。
然后将工程打包成zip文件,至少包含文件、文件、文件。
启动WSO2&BPS,,选择文件,点击,即可将工程上传到。
通过Processes-&List列表可以查看部署的流程。
点击相应流程Process&ID,出现流程详细信息相关界面,点击部分的,可测试流程,如下图所示。
结果如下:
3&Eclipse平台开发(加法运算)
开发流程调用单个服务。该流程返回两个数字相加的和。调用一个服务并从服务获得结果。服务实现两个数相加。服务部署在服务器。
3.2.1&准备
l&WSO2&BPS3.2.0
l&Tomcat7.0
l&WSO2&Developer&Studio3.6.0&
1、启动,建立一个动态。,查找。起名为。
工程下面建立两个包和,建完后如下图所示。
部署。选择&,右键选项,选择&。如图所示。
点击就会生成类对应的和配置文件,并发布到中,同时会生成调用服务的客户端。这里的是为调用实现流程做准备。
要想把生成的服务放到目录下,把这个工程成一个包即可。选择保存位置,则会生成包,把生成的包复制到目录下,重启,则完成服务的发布。
6、测试服务是否发布成功。在浏览器里输入则能打开加法服务对应的这也意味着服务发布成功了。
3.2.3&建工程和流程
2、点击中的。
点击出现如下界面
3、在“”&,选择,点击。
4、为流程输入相应的信息,例如输入以下信息,点击,工程结构如下图。
l&Project&name&:CaculatorProj
l&Process&Name&:CaculatorProcess
l&Namespace&:http://www./bpel/sample
l&Template&:&Synchronous&BPEL&Process
3.2.4&Step&3:导入服务的文件
很简单,就是把复制到工程目录里。如下图所示,导入
Bpel把涉及其中的所有服务都称之为伙伴链接。对应的本身也是一个伙伴链接。系统已经自动生成了。对于流程中要用到的加法服务,减法服务,应该生成对应的伙伴链接。
在最右边的中,增加两个链接:,,分别对应加法服务和减法服务。下面具体讲下的配置。
1)点选上,在属性视图中页面中点按钮,打开一个对话框。
2)点把用到的两个即加进来,这样会在文件中生成两条对应的语句。加完后这个对话框也会把这两个文件中的接口都显示出来。
一定要记住,所谓的伙伴链接一定是针对某个文件的某个接口而言的。选上接口,点弹出伙伴链接类型定义,把名字取为,点。要求输入,这里输入“”点完成。同时在属性视图中把选为
主要是改输入输出,使之符合我们的要求。
1、打开AdderProcessArtifacts.wsdl,可以看到,默认生成的很简单,只有一个操作,该操作有输入,输出如下图所示。首先设置输入参数。点击“”旁边的箭头。
2、点击后出现如下界面。默认有一个类型的变量。
重命名为,类型为。
3、现在完成了输入参数的配置,同样的流程配置输出参数,命名为,类型为&&。
3.2.7&Step&6:创建调用服务时需要的变量
每次一个服务时都要有对应的变量,同时要进行赋&#20540;。我们这里要调用加法服务。因此需要额外加入。加完后的效果如下:
Input,output变量都自动配置好了,对应定义的消息。下面以为例讲解配置过程。
1)点上变量,属性视图中切换到页,点右上角的按钮,打开类型选择对话框。是加法服务的输入,因此把它的类型设为加法服务里的输入定义就可以了。一个变量的类型可以是简单类型,也可以是复杂类型,还可以是中的定义。简单起见,我们这里就把的类型设为服务中的。
点即完成变量的定义,同样的方式定义其它变量。至此,准备工作就算是做好了。下一步开始真正的流程设计。
3.2.8&程设计
l&Assign语句的设置
两个语句的配置过程都一样,这里讲解下第一个的配置。
第一个的作用是把输入变量中的前两个参数传给变量。需要注意的是,中的变量赋&#20540;只能是一个一个的赋,不能直接把赋给(当然这里也不匹配,即使匹配也不行),而只能把下的参数挨个赋给
意思应该很明了,把下的x赋给下的x.&然后会弹出一个对话框,问是否需要初始化你点就是了。再次点,把下的y赋给下的y。
l&Assign1语句的设置
对于,它的作用是把的&#20540;传给流程的输出变量如图:
l&Invoke语句的设置
Invoke的作用是调用伙伴链接对应接口下的对应操作,还需要指定输入输出变量。选上同样在属性视图的页面中进行如下配置:
3.2.9&程发布
BPEL流程最终的目的也是发布成一个,只不过这个服务自己基本上不实现功能,主要是通过调用别人的功能来完成任务。因此,最后也要把流程对应的发布出去。默认生成的只有类型定义,消息定义,和操作定义,缺少绑定信息和服务定义。
CaculatorProcessArtifacts.wsdl文件如下:
从图中可以看到,进来的也会显示在图形视图中。
现在我们完成了流程的实现,下一步需要部署到上运行。
3.2.10&BPEL运行与测试
首先将工程打包为文件。打包方法:右击工程名,如下图所示。
然后将工程打包成zip文件,至少包含文件、文件、文件。
启动WSO2&BPS,,选择文件,点击,即可将工程上传到。
通过Processes-&List列表可以查看部署的流程。
点击相应流程Process&ID,出现流程详细信息相关界面,点击部分的,可测试流程,如下图所示。
结果如下:
4&Eclipse平台开发(加减法)
开发流程调用两个服务,分别实现两个数字相加相减。调用一个服务并从服务获得结果。服务部署在服务器。
4.2.1&准备
l&WSO2&BPS3.2.0
l&Tomcat7.0
l&WSO2&Developer&Studio3.6.0&
1、启动,建立一个动态。,查找。起名为。
工程下面建立两个包和,建完后如下图所示。
部署。选择&,右键选项,选择&。如图所示。
点击就会生成类对应的和配置文件,并发布到中,同时会生成调用服务的客户端。这里的是为调用实现流程做准备。
要想把生成的服务放到目录下,把这个工程成一个包即可。选择保存位置,则会生成包,把生成的包复制到目录下,重启,则完成服务的发布。
6、测试服务是否发布成功。在浏览器里输入则能打开加法服务对应的这也意味着服务发布成功了。
4.2.3&建工程和流程
2、点击中的。
点击出现如下界面
3、在“”&,选择,点击。
4、为流程输入相应的信息,例如输入以下信息,点击,工程结构如下图。
l&Project&name&:CaculatorProj<span style="color:#
l&Process&Name&:CaculatorProc<span style="color:#
l&Namespace&:http://www./bpel/sample
l&Template&:&Synchronous&BPEL&Process
4.2.4&Step&3:导入服务的文件
很简单,就是把复制到工程目录里。如下图所示,导入
Bpel把涉及其中的所有服务都称之为伙伴链接。对应的本身也是一个伙伴链接。系统已经自动生成了。对于流程中要用到的加法服务,减法服务,应该生成对应的伙伴链接。
在最右边的中,增加两个链接:,,分别对应加法服务和减法服务。下面具体讲下的配置。
1)点选上,在属性视图中页面中点按钮,打开一个对话框。
2)点把用到的两个即加进来,这样会在文件中生成两条对应的语句。加完后这个对话框也会把这两个文件中的接口都显示出来。
一定要记住,所谓的伙伴链接一定是针对某个文件的某个接口而言的。选上接口,点弹出伙伴链接类型定义,把名字取为,点。要求输入,这里输入“”点完成。同时在属性视图中把选为
主要是改输入输出,使之符合我们的要求。
1、打开AdderProcessArtifacts.wsdl,可以看到,默认生成的很简单,只有一个操作,该操作有输入,输出如下图所示。首先设置输入参数。点击“”旁边的箭头。
2、点击后出现如下界面。默认有一个类型的变量。
可以看到该输入消息只有一个元素,和我们的要求是不符合的,点击右下角的打开一个新的对输入消息进行配置。进去后选中类型,右键,就可以增加元素,并设置元素的类型,结果如下。
咱们要做的流程是接受三个参数,前两个是int型数据,第三个表示是调用加法服务还是减法服务,当’’,时,调用加法服务,当’’时调用减法服务。同样的方法,改一下输出,把类型改为。
3、现在完成了输入参数的配置,同样的流程配置输出参数,命名为,类型为&&。
4.2.7&Step&6:创建调用服务时需要的变量
每次一个服务时都要有对应的变量,同时要进行赋&#20540;。我们这里要调用加法服务。因此需要额外加入。加完后的效果如下:
Input,output变量都自动配置好了,对应定义的消息。下面以为例讲解配置过程。
1)点上变量,属性视图中切换到页,点右上角的按钮,打开类型选择对话框。是加法服务的输入,因此把它的类型设为加法服务里的输入定义就可以了。一个变量的类型可以是简单类型,也可以是复杂类型,还可以是中的定义。简单起见,我们这里就把的类型设为服务中的。
2)点即完成变量的定义,同样的方式定义其它变量。至此,准备工作就算是做好了。下一步开始真正的流程设计。
4.2.8&程设计
思路应该比较清晰,如果’’,则调用加法服务,如果’’则调用减法服务。进一步完善后,如下。
l&if语句的设置
选择在属性视图中点开页,做如下配置:&输入条件语句:
$input.payload/tns:type='add'
同样,选择
l&Assign语句的设置
两个语句的配置过程都一样,这里讲解下第一个的配置。
第一个的作用是把输入变量中的前两个参数传给变量。需要注意的是,中的变量赋&#20540;只能是一个一个的赋,不能直接把赋给(当然这里也不匹配,即使匹配也不行),而只能把下的参数挨个赋给
意思应该很明了,把下的x赋给下的x.&然后会弹出一个对话框,问是否需要初始化你点就是了。再次点,把下的y赋给下的y。
l&Assign1语句的设置
对于,它的作用是把的&#20540;传给流程的输出变量如图:
l&Invoke语句的设置
Invoke的作用是调用伙伴链接对应接口下的对应操作,还需要指定输入输出变量。选上同样在属性视图的页面中进行如下配置:
4.2.9&程发布
BPEL流程最终的目的也是发布成一个,只不过这个服务自己基本上不实现功能,主要是通过调用别人的功能来完成任务。因此,最后也要把流程对应的发布出去。默认生成的只有类型定义,消息定义,和操作定义,缺少绑定信息和服务定义。
CaculatorProcessArtifacts.wsdl文件如下:
从图中可以看到,进来的也会显示在图形视图中。
现在我们完成了流程的实现,下一步需要部署到上运行。
4.2.10&BPEL运行与测试
首先将工程打包为文件。打包方法:右击工程名,如下图所示。
然后将工程打包成zip文件,至少包含文件、文件、文件。
启动WSO2&BPS,,选择文件,点击,即可将工程上传到。
通过Processes-&List列表可以查看部署的流程。
点击相应流程Process&ID,出现流程详细信息相关界面,点击部分的,可测试流程,如下图所示。
结果如下:
5&[(x&#43;y)*(x*y)]2()
开发流程调用个服务,实现汽车许可证的更新。服务部署在服务器。
5.1.1&Services
<span style="color:#.1.1.1&AddService
l&输入:x、y
l&输出:相加结果addResponse
<span style="color:#.1.1.2&MultipleService
l&输入:x、y
l&输出:相乘结果mulResponse
<span style="color:#.1.1.3&SquareService
l&输入:相乘结果mulResponse1
l&输出:平方结果
5.1.2&BPEL流程
5.2.1&准备
l&WSO2&BPS3.2.0
l&Tomcat7.0
l&WSO2&Developer&Studio3.6.0&
1、启动,建立一个动态。,查找。起名为。
2、工程下面建立个包,建完后如下图所示。
3、部署。选择&,右键选项,选择&。如图所示。
4、点击就会生成类对应的和配置文件,并发布到中,同时会生成调用服务的客户端。这里的是为调用实现流程做准备。
5、要想把生成的服务放到目录下,把这个工程成一个包即可。选择保存位置,则会生成包,把生成的包复制到目录下,重启,则完成服务的发布。
6、测试服务是否发布成功。在浏览器里输入能打开也意味着服务发布成功了。
5.2.3&建工程和流程
2、点击中的。
点击出现如下界面
3、在“”&,选择,点击。
4、为流程输入相应的信息,例如输入以下信息,点击。
l&Project&name&:FunctionProcess3
l&Process&Name&:FunctionProcess3
l&Namespace&:http://wso2.org/bps/FunctionProcess3
l&Template&:&Synchronous&BPEL&Process
5.2.4&Step&3:导入服务的文件
很简单,就是把个文件复制到工程目录里。如下图所示:
Bpel把涉及其中的所有服务都称之为伙伴链接。对应的本身也是一个伙伴链接。系统已经自动生成了。对于流程中要用到的3个服务,应该生成对应的伙伴链接。
在最右边的中,增加3个链接,分别对应3个服务。
主要是改输入输出,使之符合我们的要求。打开Artifacts.wsdl,可以看到,默认生成的很简单,只有一个操作,该操作有输入,输出如下图所示。
1、首先设置输入参数。点击“BPELCar1Request”旁边的箭头。
2、点击后出现如下界面。默认有一个类型的变量。
3、点击FunctionProcess3Response旁边的箭头。
5.2.7&Step&6:创建调用服务时需要的变量
每次一个服务时都要有对应的变量,同时要进行赋&#20540;。
Input,output变量都自动配置好了,对应定义的消息。
5.2.8&程设计
l&Assign语句的设置
l&addInvoke1语句的设置
l&mulInvoke&语句的设置
l&Assign1语句的设置
l&Mul1Invoke2语句的设置
l&Assign2语句的设置
l&squInvoke3语句的设置
l&Assign3语句的设置
5.2.9&程发布
5.2.10&BPEL运行与测试
1、首先将工程打包为文件。打包方法:右击工程名,将工程打包成zip文件,至少包含文件、文件、文件。
2、启动WSO2&BPS,,选择文件,点击,即可将工程上传到。
3、通过Processes-&List列表可以查看部署的流程。
点击相应流程Process&ID,出现流程详细信息相关界面,点击部分的,可测试流程,结果如下:[(1&#43;2)*(1*2)]2=36
6&汽车许可证更新()
开发流程调用四个服务,实现汽车许可证的更新。服务部署在服务器。
6.1.1&Services
<span style="color:#.1.1.1&InsuranceService
l&输入:carID汽车牌号
l&输出:policyID保单号
Request&format
&soapenv:envelope&xmlns:soapenv=&&&xmlns:sam=&&&
&&&&&soapenv:body&
&&&&&&&&&sam:getpolicyid&
&&&&&&&&&&&&&sam:vehiclenumber&SPKP-6531&/sam:vehiclenumber&
&&&&&&&&&/sam:getpolicyid&
&&&&&/soapenv:body&
&/soapenv:envelope&
Response&format
&soapenv:envelope&xmlns:soapenv=&&&
&&&&&soapenv:body&
&&&&&&&&&ns:getpolicyidresponse&xmlns:ns=&&&
&&&&&&&&&&&&&ns:return&&/ns:return&
&&&&&&&&&/ns:getpolicyidresponse&
&&&&&/soapenv:body&
&/soapenv:envelope&
<span style="color:#.1.1.2&EmissionTestService
l&输入:carID汽车牌号
l&输出:emiID汽车废气排放证书号
Request&format
&soapenv:envelope&xmlns:soapenv=&&&xmlns:sam=&&&
&&&&&soapenv:body&
&&&&&&&&&sam:getcertificateid&
&&&&&&&&&&&&&sam:vehiclenumber&SPKP-6531&/sam:vehiclenumber&
&&&&&&&&&/sam:getcertificateid&
&&&&&/soapenv:body&
&/soapenv:envelope&
Response&format
&soapenv:envelope&xmlns:soapenv=&&&
&&&&&soapenv:body&
&&&&&&&&&ns:getcertificateidresponse&xmlns:ns=&&&
&&&&&&&&&&&&&ns:return&&/ns:return&
&&&&&&&&&/ns:getcertificateidresponse&
&&&&&/soapenv:body&
&/soapenv:envelope&
<span style="color:#.1.1.3&LicenseService
l&输入:carID汽车牌号、policyID保单号、emiID汽车废气排放证书号
l&输出:fee付款金额、flowID流水号、时间戳
Request&format
&soapenv:envelope&xmlns:soapenv=&&&xmlns:sam=&&&
&&&&&soapenv:body&
&&&&&&&&&sam:renewlicense&
&&&&&&&&&&&&&sam:vehiclenumber&SPKP-6531&/sam:vehiclenumber&
&&&&&&&&&&&&&sam:insurancepolicy&&/sam:insurancepolicy&
&&&&&&&&&&&&&sam:ecocert&&/sam:ecocert&
&&&&&&&&&/sam:renewlicense&
&&&&&/soapenv:body&
&/soapenv:envelope&
Response&format
&soapenv:envelope&xmlns:soapenv=&&&
&&&&&soapenv:body&
&&&&&&&&&ns:renewlicenseresponse&xmlns:ns=&&&
&&&&&&&&&&&&&ns:return&xsi:type=&ax2461:LicenseServiceResponse&&xmlns:ax2461=&&&xmlns:xsi=&&&
&&&&&&&&&&&&&&&&&ax2461:fee&30&/ax2461:fee&
&&&&&&&&&&&&&&&&&ax2461:referenceno&f0a6c76d-87dc-4d8e-a9ee50&/ax2461:referenceno&
&&&&&&&&&&&&&&&&&ax2461:timestamp&Sun&Feb&09&23:38:58&IST&2014&/ax2461:timestamp&
&&&&&&&&&&&&&/ns:return&
&&&&&&&&&/ns:renewlicenseresponse&
&&&&&/soapenv:body&
&/soapenv:envelope&
<span style="color:#.1.1.4&PaymentService
l&输入:creditID信用卡号、fee付款金额、flowID流水号
l&输出:完成与否
Request&format
&soap:envelope&xmlns:soap=&&&xmlns:sam=&&&
&&&&&soap:body&
&&&&&&&&&sam:dopayment&
&&&&&&&&&&&&&sam:cardno&xxxx-xxxx-xxxx-xxxx&/sam:cardno&
&&&&&&&&&&&&&sam:referenceno&f0a6c76d-87dc-4d8e-a9ee50&/sam:referenceno&
&&&&&&&&&&&&&sam:amount&30&/sam:amount&
&&&&&&&&&/sam:dopayment&
&&&&&/soap:body&
&/soap:envelope&
Response&format
&soapenv:envelope&xmlns:soapenv=&&&
&&&&&soapenv:body&
&&&&&&&&&ns:dopaymentresponse&xmlns:ns=&&&
&&&&&&&&&&&&&ns:return&Transaction&Completed&/ns:return&
&&&&&&&&&/ns:dopaymentresponse&
&&&&&/soapenv:body&
&/soapenv:envelope&
6.1.2&BPEL流程
6.2.1&准备
l&WSO2&BPS3.2.0
l&Tomcat7.0
l&WSO2&Developer&Studio3.6.0&
1、启动,建立一个动态。,查找。起名为。
2、工程下面建立四个包,建完后如下图所示。
3、部署。选择&,右键选项,选择&。如图所示。
4、点击就会生成类对应的和配置文件,并发布到中,同时会生成调用服务的客户端。这里的是为调用实现流程做准备。
5、要想把生成的服务放到目录下,把这个工程成一个包即可。选择保存位置,则会生成包,把生成的包复制到目录下,重启,则完成服务的发布。
6、测试服务是否发布成功。在浏览器里输入能打开也意味着服务发布成功了。
6.2.3&建工程和流程
2、点击中的。
点击出现如下界面
3、在“”&,选择,点击。
4、为流程输入相应的信息,例如输入以下信息,点击。
l&Project&name&:BPELCar1
l&Process&Name&:BPELCar1
l&Namespace&:http://wso2.org/bps/BPELCar1
l&Template&:&Synchronous&BPEL&Process
6.2.4&Step&3:导入服务的文件
很简单,就是把个文件复制到工程目录里。如下图所示:
Bpel把涉及其中的所有服务都称之为伙伴链接。对应的本身也是一个伙伴链接。系统已经自动生成了。对于流程中要用到的4个服务,应该生成对应的伙伴链接。
在最右边的中,增加4个链接,分别对应4个服务。
主要是改输入输出,使之符合我们的要求。打开Artifacts.wsdl,可以看到,默认生成的很简单,只有一个操作,该操作有输入,输出如下图所示。
1、首先设置输入参数。点击“BPELCar1Request”旁边的箭头。
2、点击后出现如下界面。默认有一个类型的变量。
4、点击BPELCar1Response旁边的箭头。
6.2.7&Step&6:创建调用服务时需要的变量
每次一个服务时都要有对应的变量,同时要进行赋&#20540;。
Input,output变量都自动配置好了,对应定义的消息。
6.2.8&程设计
l&Assign语句的设置
l&insInvoke语句的设置
l&emiInvoke1语句的设置
l&Assign1语句的设置
l&licInvoke2语句的设置
l&licInvoke3语句的设置
l&Assign2语句的设置
l&payInvoke4语句的设置
l&Assign3语句的设置
6.2.9&程发布
6.2.10&BPEL运行与测试
1、首先将工程打包为文件。打包方法:右击工程名,将工程打包成zip文件,至少包含文件、文件、文件。
2、启动WSO2&BPS,,选择文件,点击,即可将工程上传到。
3、通过Processes-&List列表可以查看部署的流程。
点击相应流程Process&ID,出现流程详细信息相关界面,点击部分的,可测试流程,结果如下:
7&根据经纬度找医院信息()
开发流程调用个服务,根据经纬度找到医院信息。服务部署在服务器。这里只调用了前两个服务,后两个服务的相同,无法在中同时加载。
7.1.1&Services
<span style="color:#.1.1.1&GeoService
l&输入:longitude经度、latitude维度
l&输出:zipcode邮政编码
Request&format
&soapenv:Envelope&xmlns:soapenv=&http://schemas.xmlsoap.org/soap/envelope/&&&&&&&&&&&&&&&&&&&&&&&&&&&xmlns:geo=&http://geo.wso2&&&&&&&&&&&&&&&soapenv:Header/&&&&&&&&&&&&&&soapenv:Body&&&&&&&&&&&&&&&&&&geo:getZipCode&&&&&&&&&&&&&&&&&&&&&&geo:longitude&1.0&/geo:longitude&&&&&&&&&&&&&&&&&&&&&&geo:latitude&2.0&/geo:latitude&&&&&&&&&&&&&&&&&&/geo:getZipCode&&&&&&&&&&&&&&/soapenv:Body&&&&&&&&&&/soapenv:Envelope&
Response&format
&soapenv:Envelope&xmlns:soapenv=&http://schemas.xmlsoap.org/soap/envelope/&&&&&&&&&&&&&&&soapenv:Body&&&&&&&&&&&&&&&&&&ns:getZipCodeResponse&xmlns:ns=&http://geo.wso2&&&&&&&&&&&&&&&&&&&&&&&ns:return&32746&/ns:return&&&&&&&&&&&&&&&&&&/ns:getZipCodeResponse&&&&&&&&&&&&&&/soapenv:Body&&&&&&&&&&/soapenv:Envelope&
<span style="color:#.1.1.2&HCFacilityLocatorService
l&输入:zipcode邮政编码
l&输出:health&care&center&code医院代号
Request&format
&soapenv:Envelope&xmlns:soapenv=&http://schemas.xmlsoap.org/soap/envelope/&&&&&&&&&&&&&&&&&&&&&&&&&&&xmlns:heal=&http://healthcare.wso2&&&&&&&&&&&&&&&soapenv:Header/&&&&&&&&&&&&&&soapenv:Body&&&&&&&&&&&&&&&&&&heal:getHCCenters&&&&&&&&&&&&&&&&&&&&&&heal:postalCode&32746&/heal:postalCode&&&&&&&&&&&&&&&&&&/heal:getHCCenters&&&&&&&&&&&&&&/soapenv:Body&&&&&&&&&&/soapenv:Envelope&
Response&format
&soapenv:Envelope&xmlns:soapenv=&http://schemas.xmlsoap.org/soap/envelope/&&&&&&&&&&&&&&&soapenv:Body&&&&&&&&&&&&&&&&&&ns:getHCCentersResponse&xmlns:ns=&http://healthcare.wso2&&&&&&&&&&&&&&&&&&&&&&&ns:return&2583&/ns:return&&&&&&&&&&&&&&&&&&&&&&ns:return&5201&/ns:return&&&&&&&&&&&&&&&&&&&&&&ns:return&5575&/ns:return&&&&&&&&&&&&&&&&&&&&&&ns:return&805&/ns:return&&&&&&&&&&&&&&&&&&&&&&ns:return&2285&/ns:return&&&&&&&&&&&&&&&&&&/ns:getHCCentersResponse&&&&&&&&&&&&&&/soapenv:Body&&&&&&&&&&/soapenv:Envelope&
<span style="color:#.1.1.3&Healthcare&Center&Information&Service
l&输入:health&care&center&code医院代号
l&输出:info医院详细信息
Request&format
&soapenv:Envelope&xmlns:soapenv=&http://schemas.xmlsoap.org/soap/envelope/&&&&&&&&&&&&&&&&&&&&&&&&&&&xmlns:heal=&http://healthcare.wso2&&&&&&&&&&&&&&&soapenv:Header/&&&&&&&&&&&&&&soapenv:Body&&&&&&&&&&&&&&&&&&heal:getHCCenterInfo&&&&&&&&&&&&&&&&&&&&&&heal:hcCenterCode&2583&/heal:hcCenterCode&&&&&&&&&&&&&&&&&&/heal:getHCCenterInfo&&&&&&&&&&&&&&/soapenv:Body&&&&&&&&&&/soapenv:Envelope&
Response&format
&soapenv:Envelope&xmlns:soapenv=&http://schemas.xmlsoap.org/soap/envelope/&&&&&&&&&&&&&&&soapenv:Body&&&&&&&&&&&&&&&&&&ns:getHCCenterInfoResponse&xmlns:ns=&http://healthcare.wso2&&&&&&&&&&&&&&&&&&&&&&&ns:return&xsi:type=&ax2494:HCInfo&&xmlns:ax2494=&http://healthcare.wso2/xsd&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&xmlns:xsi=&http://www.w3.org/2001/XMLSchema-instance&&&&&&&&&&&&&&&&&&&&&&&&&&&ax2494:address&2583&South&Volusia&Ave&(17-92),&Suite&300&/ax2494:address&&&&&&&&&&&&&&&&&&&&&&&&&&ax2494:approxDistance&13.1&/ax2494:approxDistance&&&&&&&&&&&&&&&&&&&&&&&&&&ax2494:city&Orange&City,&&FL&/ax2494:city&&&&&&&&&&&&&&&&&&&&&&&&&&ax2494:hcCenterName&Orange&City&CBOC&/ax2494:hcCenterName&&&&&&&&&&&&&&&&&&&&&&&&&&ax2494:phone&386-456-2080&Or&386-456-2082&/ax2494:phone&&&&&&&&&&&&&&&&&&&&&&/ns:return&&&&&&&&&&&&&&&&&&/ns:getHCCenterInfoResponse&&&&&&&&&&&&&&/soapenv:Body&&&&&&&&&&/soapenv:Envelope&
7.1.2&BPEL流程
7.2.1&准备
l&WSO2&BPS3.2.0
l&Axis21.6.0
l&WSO2&Developer&Studio3.6.0&
/library/articles/2012/11/enterprise-service-integration-wso2-esb/下载,解压后将等三个文件放到目录下,启动服务器。
在浏览器里输入能打开也意味着服务发布成功了。
7.2.3&建工程和流程
2、点击中的。
点击出现如下界面
3、在“”&,选择,点击。
4、为流程输入相应的信息,例如输入以下信息,点击。
l&Project&name&:BPELHospital1
l&Process&Name&:BPELHospital1
l&Namespace&:http://wso2.org/bps/BPELHospital1
l&Template&:&Synchronous&BPEL&Process
7.2.4&Step&3:导入服务的文件
很简单,就是把个文件复制到工程目录里。如下图所示:
Bpel把涉及其中的所有服务都称之为伙伴链接。对应的本身也是一个伙伴链接。系统已经自动生成了。对于流程中要用到的3个服务,应该生成对应的伙伴链接。
在最右边的中,增加3个链接,分别对应3个服务,这里只添加了两个服务,三个服务也是一样的。
主要是改输入输出,使之符合我们的要求。打开Artifacts.wsdl,可以看到,默认生成的很简单,只有一个操作,该操作有输入,输出如下图所示。
1、首先设置输入参数。点击“BPELHospital1Request”旁边的箭头。
2、点击后出现如下界面。默认有一个类型的变量。
5、点击BPELHospital1Response旁边的箭头。
7.2.7&Step&6:创建调用服务时需要的变量
每次一个服务时都要有对应的变量,同时要进行赋&#20540;。
Input,output变量都自动配置好了,对应定义的消息。
7.2.8&程设计
l&Assign语句的设置
l&geoInvoke语句的设置
l&Assign1语句的设置
l&locatorInvoke1语句的设置
l&Assign2语句的设置
7.2.9&程发布
7.2.10&BPEL运行与测试
1、首先将工程打包为文件。打包方法:右击工程名,将工程打包成zip文件,至少包含文件、文件、文件。
2、启动WSO2&BPS,,选择文件,点击,即可将工程上传到。
3、通过Processes-&List列表可以查看部署的流程。
点击相应流程Process&ID,出现流程详细信息相关界面,点击部分的,可测试流程,结果如下:
具体信息参考文档&http://download.csdn.net/detail/szh
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:35778次
排名:千里之外
原创:52篇
转载:11篇
评论:23条
(1)(7)(1)(2)(2)(1)(1)(1)(4)(4)(2)(3)(2)(4)(4)(10)(17)

我要回帖

更多关于 wso2 esb 开发手册 的文章

 

随机推荐