1/13第6章WEB服务(BI与SOA结合实战篇)SOA[1]概念并不是一个新名词,它的核心意义是组件化,2009年元旦AnneThomasManes一篇“SOA已死”引起了轩然大波,她认为SOA曾被认为是IT的大救星,现在却证明是一项极其失败的试验。为什么SOA概念起了这么大的争议?BI与SOA结合带拿什么价值与意议?BI+SOA结合有否参考真正实例?本文的目的是讨论BI与SOA结合,阐述了服务建模的概念和方法,作为SOA架构设计和DBA数据库管理员的指导;然后结合场景的业务目标以及IT环境设计试点项目的架构,并重点突出关键点的架构决策。我们将特别讨论BQ(以下简称BQ)商业智能产品(以下简称BI)的一个新WebService[2]示例。业务智能(BI)为希望更好地了解其运营和财务绩效的机构提供众多的好处。互动式信息板和图形化报表可快速提供关于企业绩效的信息,侦测和提醒程序可让您快速关注到出现的问题和商机。BI应用程序由来以久的缺点:缺点一:一般基于数据源拿数据,BI在直接连接业务数据库中存有安全引患;缺点二:BI难于直接从ERP复杂数据库中拿取正确的业务数据,例如SAPWebService[3]也是早年SOA的倡导之一,国内用友基于SOA架构的世界级企业管理软件U9、金碟下一代Mashup等等厂家也向WebService接口技术开发;缺点三:不能将各分散应用程序提供的松散耦合的独立服务构建为业务应用程序和业务流程如下图:2/13图片来源:IBMSOA快速指南第3部分:服务实现及架构设计如果能结合使用BI+SOA+ESB重要组成部分,您可以开发基于标准、松散耦合的业务应用程序和流程,它们可以轻松地与企业内外的应用程序进行集成。利用SOA,可以通过采用WebServices这一主要集成方式轻松地集成不同的业务流程。下图显示了对EAI问题应用核心BQESB引擎的一个简单示例。步骤1:此请求将发送到一个BQESB业务流程基于Windows建立;步骤2:该业务流程随后向此组织的ERP应用程序发出请求,以请求采购订单;步骤3:该ERP应用程序(假设其运行在UnixSAP系统上)将发送回所请求的采购订单;步骤4:然后BQESB业务流程将通知实现应用程序(假设其使用WebSphereServer)应订购该项。3/13从应用程序开发人员的角度来看,绝佳之处在于BQ商业智能产品支持WebServices并提供有SOAPAPI,这使它可以连接至BI元数据层、运行报表、使用业务术语检索数据、执行分析查询以及执行工作流任务。由于典型的BI元数据层可覆盖机构的多个主题区,采用集成、经清理的数据;包含计算和关键绩效指标(KPI);BQ和分析工具,它提供了互动式信息板、报表和图形、警报。最终BQ展示效果4/13BI+SOA案例一:文档提供可运行示例(见如下灰色附件),入服务可使用次附件,这是C#写的一个Web服务提供者,模拟第三方系统提供Web服务,示例提供写了QueryProducts(根据类别查询产品)和QueryOrders(根据地区、年度查询订单)两个服务接口,可参照修改或写新的(直接用文本编辑器修改即可,无需VS开发环境)。在BQ中可以直接检索所有服务及其参数,然后通过查询拖放调用,获取WebService通过的数据。C#中通过ADO.net访问NorthindAccess数据库,Oracle等其它数据库只需修改OLEDB连接串即可,如果不知道连接池格式,可以在InfoServer中配置好,然后拷贝使用即可。示例附件:BQ实施细则如下:附件配置说明:1)修改Service.cs文件中的Northwind.mdb为正确的路径(Northwind.mdb摆放在JServerAnywhere程序所在盘的根目录下的\usr\BIData目录下);例如:我的JServerAnywhere摆放在E盘的任意目录里,那Northwind.mdb数据库就会摆放E盘的根目录下.在E:\usr\BIData目录下即可找到。2)运行此附件程序需要在环境.netframework2.0以上,在IIS中配置虚拟目录指向附件解压目录;如:A:如将附件解压放在C盘的根目录里,如下图:5/13B:IIS中配置虚拟目录指向附件解压目录SYS-A。具体设置如下图系列所示:1:在IIS中选择网站中右键新建---虚拟目录。2:下一步6/133:命名别名为SYS-A.(可随便命名其他别名均可)4:网站路径指向解压在C盘上的SYS-A。(可随个人意愿随意选择解压位置)7/135:设置虚拟目录的访问权限中,请选中:“执行(如ISAPI应用程序或CGI)(E)”选项。6:完成。8/133)直接在IE访问此Web服务测试,可直接访问[端口]/SYS-A/Service.asmx或者[端口]/SYS-A/Service.asmx测试。下图示例的地址本机,端口为82.具体的URL为:如果不能显示以上页面则为.net环境有问题。请配置好.netframework2.0以上环境。4)点击QueryOrders,输入相应参数(如region:华南year:1998),看是否能返回XML的查询结果(不能则为9/13数据库连接串未修改正确,请返回配置说明第一步。):5)在BQ的如服务中新建Web服务,输入Web服务描述的URL(点击配置3)中页面ServiceDesciption即为服务描述,将此URL拷贝输入BQ可发现并自动导入这三个服务接口):A:服务描述见下图,点击红色部分获得:获取的服务描述如下图中的红色框所示::在BQ的如服务中新建Web服务,将此URL拷贝输入BQ可发现并自动导入这三个服务接口),如下图:6)可以给列出的Web服务和参数加显示名称,在系统共享区中,右键新建查询-基于Web服务,拖放入站服务/Web11/13服务/QueryProducts过去即可构建Web查询。输入参数即可查出结果。如下图所示结果:示例演示完毕。总结BI+SOA集成带来的另一机会是,可以解决单独BI应用程序由来以久的缺点。企业中大多数据员工在完成日常工12/13作时需要使用业务线应用程序,如HR、库存管理、销售自动化或库存管理应用程序,他们没有时间或必需的培训来使用不同的报表和分析工具。在使用查询工具来分析业务时,他们面临着在查询工具和业务分析工具之间进行“上下文切换”,这将对他们造成一定的影响,最好的情况是降低工作效率,最差的情况是造成洞察与利用洞察采取相应措施间的脱节。但是,如果您能通过可以访问集成数据和KPI的应用程序,或通过直接与BI警报和工作流集成,或者只是通过将BI工具生成的信息板和图形报表嵌入应用程序的方式,将BI洞察直接构建到业务线应用程序中,就可以将BI直接嵌入应用程序并注入企业中的每个业务流程中。进一步查询:SOAdemandwillincreasefivetimesinnext5years.13/13附述:[1]WebServices技术WebServices是一种基于对象了组件模型的分布式计算技术。在WebServices技术中,整个网络成为一个开放式的组件平台,通过组合不同的Web组件,应用程序很容易就能够得到近乎无限的扩展,从而满足用户的各种功能要求。WebServices中的服务是通过网络进行分布式计算的基本构造单元,一个服务接受使用SOAP(SimpleObjectAccessProtocol)的调用,并由WSDL(WebServicesDescriptionLanguage)描述调用所需的具体信息服务本身则通过UDDI(UniversalDescriptionDiscoveryandIntegration)进行注册和发现。[2]何谓SOA?我们常听到2004年时Service-OrientedArchitecture架构(SOA,服务导向架构)。1.SOA不是新玩意:多年前即有信息部门或公司成功地用SOA方式来建构、运行应用程序,且当时XML、webservice都尚未提出。2.SOA不是种技术:它是种建构、组织的方法,用来建立应用程序的运行环境,以及让学校的业务程序能以「功能化」方式发展、累积。3.就算购买最新的XML、webservices产品(如开发工具、执行平台、软件组件等),也不表示就可以建构出SOA式的应用程序。简单来说,SOA是一种遵循典范,是针对学校或企业内应用程序的设计、开发、布建、管理所提出的遵循典范。