开发&部署2OSB控件简介为什么要用OSB?传统的点对点调用方式(Point-to-Point)简介服务支持允许多个协议的信息来参与一个面向服务架构ServiceBus银保通系统银行客户端TransFormTransFormTransForm三代核心服务数据字典单证系统SOAPJMSJMSSOAPFTP(S)SOAP(非WSDL)JMSHTTP(S)XML(非WSDL)JMSHTTP(S)电子邮件文件FTP消息传输类型(二进制、文本、MFL、XML)JMSHTTP(S)电子邮件文件FTP简介外部服务的调用通过其他服务的返回来更新消息银保通系统CallService转换消息权限数据校验三代承保ServiceBus简介代理服务服务使用者服务提供者ServiceBus代理服务消息流消息流业务服务业务服务业务服务服务提供者服务提供者OEPEWorkSapce控制台InboundOutBound企业服务总线消息流(OracleServiceBusMessageFlow)OSB控件图中所示为总线消息流的处理中所用到的节点,在Nodes(节点)文件夹下所常用的为图中绿框所标记的节点。从上到下分别为:管道对(PipelinePair)路由(Route)阶段处理(Stage)错误处理程序(ErrorHandler)管道对(PipelinePair)管道对将一个请求管道和一个响应管道组合到一个顶级元素中。在消息流中,一个管道对节点只能有一个直接子项。在请求处理过程中,当OracleServiceBus处理管道对节点时,只会执行请求管道。在OracleServiceBus处理响应管道时,执行路径正相反。路由(Route)路由节点用于执行与另一个服务之间的请求/响应通信。它表示代理服务的请求处理和响应处理之间的界限。当路由节点调度请求消息后,即认为请求处理已完成。当路由节点接收响应消息后,即开始响应处理。路由节点支持条件路由以及请求和响应转换。因为路由节点表示请求处理和响应处理之间的界限,所以它在消息流中不能有任何子节点。OSB控件阶段处理(Stage)可以把Stage当做是一个容器,用来存放Action。在一个消息流中,使用一个阶段处理的节点作为处理消息流的一个容器。可以将消息流划分为多个阶段,处理逻辑。错误处理程序(ErrorHandler)错误处理程序提供逻辑重新发送错误消息流。使用错误处理程序指定如果在一个特定位置发生了错误应该返回怎么样的消息流。OSB控件路由动作(RouteActions)如右图所示路由动作主要有:动态路由(DynamicRouting)静态路由(Routing)路由表(RoutingTable)条件语句(IfThen)OSB控件动态路由(Dynamicrouting)动态路由基于可用的Xquery数据源提供的路由信息为消息分配路由。这是一个终端action,也就是说不能在这个action之后添加其他的action。但是这个action可用包含请求和响应action。静态路由(Routing)在路由动作中,使用静态路由可用直接指定消息流路由到哪一个业务服务,而不用对条件进行判断。同样的,静态路由也是一个终端action,在静态路由后面不可以添加其他的action。路由表(RoutingTable)路由表会指定一组路由并用switch-style条件表将这一组路由包裹起来,然后根据条件的不同确定不同的路由线路。同动态路由和静态路由一样,这也是一个终端action。OSB控件阶段处理动作(StageAction)OSB控件动态发布(DynamicPublish)静态发布(Publish)发布表(PublishTable)路由选择(RoutingOptions)服务标注(ServiceCallout)传输报文头(TransportHeaders)ForEach语句IfThen条件语句错误收集(RaiseError)回应(Reply)跳过(Skip)再开始(Resume)阶段处理动作(StageAction)OSB控件分配(Assign)删除(Delete)插入(Insert)Java标注(JavaCallout)MFL转换(MFLTransform)重命名(Rename)替换(Replace)验证(Validate)警告(Alert)日志(Log)报告(Report)动态发布(DynamicPublish)动态发布是根据Xquery表达式来确定将消息发布到那一个业务服务的。静态发布(Publish)将消息流发布到一个指定的静态服务。发布表(PublishTable)在一个信息流,使用发布表的作用是发表消息到零个或多个静态指定的服务。switch-style条件逻辑是用来确定在运行时哪些服务将用于发布。路由选择(RoutingOptions)主要作用是修改的任何或所有下列性质的出站请求:URI,优质的服务,模式,重试参数,消息优先级。OSB控件服务标注(ServiceCallout)直接调用指定的业务服务,此控件会阻塞进程,即没有返回值程序不会继续执行传输报文头(TransportHeaders)主要作用是设置传输报文头的信息。ForEach语句功能是遍历一个值序列,并执行一个代码块的行动。IfThen条件语句根据Xquery表达式的Boolean值,执行一个操作或一组操作条件错误收集(Raiseerror)组要作用是引发一个异常与指定的错误代码(一个字符串)和描述。OSB控件回应(Reply)在消息流中使用此控件指定立即回复返回给调用者。可用于请求,响应,或错误的管道。跳过(Skip)使用此控件时,会跳过当前执行的阶段并进行下一阶段的消息流处理。这一action没有参数,可用于请求,响应或错误的管道。再开始(Resume)在一个信息流,将进行错误处理的消息流恢复至正常进行下一步操作。这一action没有参数,只能用在错误的管道。分配(Assign)在消息流中使用此控件分配或指定Xquery表达式的上下文变量。OSB控件删除(Delete)在消息流中删除一个上下文变量或一组节点的指定一个表达式。插入(Insert)在消息流中根据Xpath表达式所描述的节点处插入Xquery表达式的结果。Java标注(JavaCallout)作用是在消息流管道直接调用java方法。此控件调用的java方法必须是静态的。MFLTransform(MFL转换)作用是在消息流管道中实现非XML和XML消息流的互转。重命名(Rename)将消息流中根据Xpath查询出来的没有修改过内容的节点重命名。OSB控件替换(Replace)使用此控件由指定的Xpath表达式取代一个节点或节点内容。这些节点或节点内容取而代之的是Xquery表达式的返回值。验证(Validate)此控件根据Xpath表达式针对XML架构元素或WSDL资源文件进行验证。警告(Alert)在消息流中,警告操作会在管道中的消息上下文的基础上生成警报。所产生的警报操作的通知与SLA警报,主要用于商业目的,或报告错误,不监控系统运行状况。警报目标应该考虑到这一点的配置和选择。生成的警报在控制台可查看。日志(Log)打印日志文件。日志文件会存放在服务器上。报告(Report)使用此控件时会将代理服务所生成的报告存入数据库。OSB控件OSB的开发方式OEPE开发方式(常用)控制台开发方式OSB开发&部署OEPE开发方式(常用)新建一代理服务,在如图所示界面可以选择所需要的服务类型OSB开发&部署OEPE开发方式(常用)新建一代理服务,在如图所示界面可以选择所需要的通信协议OSB开发&部署OEPE开发方式(常用)新建一代理服务,在如图所示界面可以定义请求和返回的报文编码格式OSB开发&部署OEPE开发方式(常用)新建一代理服务,在如图所示界面可以进行消息流的处理OSB开发&部署控制台开发方式首先登陆控制台,在项目浏览器目录下点击创建按钮。如图所示:OSB开发&部署控制台开发方式在图中标注的位置输入项目名称,点击添加项目,新建一个OSB项目。OSB开发&部署控制台开发方式为区分配置文件、代理服务、业务服务等信息,一般分文件夹建立服务,图中所示为建立代理服务文件夹。OSB开发&部署控制台开发方式在建立的代理服务文件夹下,点击创建资源下拉框,选择代理服务。如图所示:OSB开发&部署控制台开发方式在创建代理服务页面可以自定义服务名称,服务类型。定义完成之后点击“下一步”。如图所示:OSB开发&部署控制台开发方式在传输配置页面,可以定义协议类型、端点的URI信息。完成之后点击“下一步”。如图所示:OSB开发&部署控制台开发方式在本页面可以设置请求和响应编码。完成之后点击“下一步”。如图所示OSB开发&部署控制台开发方式其他页面可以直接使用默认配置,完成之后点击“保存”。如图所示:OSB开发&部署控制台开发方式在新建完成的代理服务,选择“编辑消息流”按钮,开始编辑消息流的处理流程。如图所示:OSB开发&部署控制台开发方式在“消息流编辑页面”,鼠标单击根节点选择要添加的节点(以添加管道对为例)。如图所示:OSB开发&部署控制台开发方式添加管道对之后会进入下图所示界面,鼠标单击请求管道选择要添加的节点,如添加阶段。如图所示:OSB开发&部署OSB项目部署登陆OSB控制台,点击“系统管理”菜单,然后点击“编辑”按钮。如图所示:OSB开发&部署OSB项目部署点击“浏览”按钮,选择开发好的项目(导出为jar包)。点击“下一步”按钮。如图所示:OSB开发&部署OSB项目部署勾选要导入的项目,然后点击“导入”按钮。如图所示:OSB开发&部署简单示例OSB控件