大洋基本概念和原理_第1页
大洋基本概念和原理_第2页
大洋基本概念和原理_第3页
大洋基本概念和原理_第4页
大洋基本概念和原理_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、文档:DYR-DYESB-001大洋 ESB 基本概念和原理最后修改日期:2009-3-31目录大洋 ESB 基本概念和原理11目录110.前言6..目标读者63文档结构64适用的版本74其他相关文档741.大洋 ESB 是什么741.1.产品背景7.1.2.基于工作流的系统互联75基于 WebService 的系统互联851.2.应用场景9...1.2.5.实现系统间互联,特别是异构系统互联96实现系统业务流程97实现不同互联接口规范之间的转换107实现不同互讯方式之间的转换107实现模拟服务1071.

2、3.产品架构和模块1...1.3.5.大洋 ESB 引擎118大洋 ESB 流程配置118大洋 ESB 流程. 118大洋 ESB API118大洋 ESB WFServer1291.4.基本功能12..3.传统工作流引擎功能129基于 WebService 的流程引擎功能1310JMS/目录监测等其它系统交换方式13101.5.如何与应用系统集成14..3.大洋 ESB 与外部应用系统交互方式总结1411应用系统相关开发工作1411大洋 ESB 流程配置工作15112.流程模型配置15

3、122.1.基本概念介绍15122.1.1.流程模型相关概念1512流程模型 Pros15121设置了格式: 字体颜色: 黑色设置了格式: 字体颜色: 黑色活动 Activity1613连接 Transition1613流程变量Data1613变量类型:1613WSDL 消息变量的格式1714全局变量和活动局部变量1815条件表达式ConditionExpres.19152.1.2.流程运行相关概念2016流程实例2017活动实例2017流程实例变量2017工作流任务20172.1.3.服务相关概念21182.2.流程配置原则21...2.2.5.

4、不同流程中相同服务活动的输入输出变量名称保持一致2218每个活动的配置尽量独立,不依赖其他活动2218保留服务调用的输入输出变量的值2219格式转换配置中,适当增加描述和注释2219对于 XPath 和 XSLT,流程运行前,使用XML Spy 单独测试验证22192.3.流程活动配置23192.3.1.起始2319ESB 动态实现服务默认URL 地址的生成规则2319执行起始活动时ESB 处理逻辑23202.3.2.调用服务2420执行调用服务活动时ESB 处理逻辑24212.3.3.实现服务2521关联集和关联属性的概念2521关联集工作原理2622ESB 引擎对实现服务活动的处理逻辑27

5、232.3.4.格式转换2723ESB 引擎对转换条目的处理逻辑2724多个源变量时的处理逻辑2825不同类型/不同模式详细处理逻辑表2925格式转换内置函数的说明32272.3.5.工作条目3328创建编目任务3328创建任务分配到用户组和用户3429创建任务均衡分配到用户组3429创建任务分配到单一用户组(不使用)342..8.调用插件3429路由3530结束36312.4.其他通讯协议36312.4.1.JMS363122.4.2.目录检测36312.5.高级功能373.....7.2.

6、.4.自定义实现服务地址3732动态路由3732终止处理活动3833错误处理和条件处理3833消息通知3833Restful WS 支持3934服务调用支持多路径4035完成条件4035SOAP 消息头处理4035并行流程配置4136WebService 参数 Schema 校验4136使用 XPath 和 XSLT 自定义函数4236静态只读局部变量4338超时设置、流程进度44393.流程部署调试443....1.6.概要介绍4439流程部署逻辑45

7、39流程重新部署4540服务地址同步4540错误定位和调试4540相关工具.4641XML Spy 工具4641TCPMonitor 工具47424.4943概要介绍4944实例运行信息5044错误日志5044引擎状态5044流程运行...5.系统管理504..3.运行环境5045集群支持5145完成实例、错误日志的删除51456.其他参考资料51460.前言33目标读者3文档结构40.3.适用的版本40.4.其他相关文档4大洋 ESB 是什么4产品背景4基于工作流的系统互联5基于 WebService 的系统互联5应用场

8、景6实现系统间互联,特别是异构系统互联61.2.2.实现系统业务流程71.2.3.实现不同互联接口规范之间的转换71.2.4.实现不同互讯方式之间的转换71.2.5.实现模拟服务71.3.产品架构和模块8大洋 ESB 引擎 8大洋 ESB 流程配置81.3.3.大洋 ESB 流程.8大洋 ESB API 8大洋 ESB WFServer 9基本功能9传统工作流引擎功能9基于 WebService 的流程引擎功能10JMS/目录监测等其它系统交换方式 10如何与应用系统集成11大洋 ESB 与外部应用系统交互方式总结11应用系统相关开发工作11大洋 ESB 流程配置工作11流程模型配置12基本概

9、念介绍12流程模型相关概念12流程模型 Pros 12活动 Activity12连接 Transition 13流程变量Data 13变量类型:13WSDL 消息变量的格式14全局变量和活动局部变量15条件表达式ConditionExpres.152.1.2.流程运行相关概念16流程实例16活动实例17流程实例变量17工作流任务1742.1.3.服务相关概念18流程配置原则18不同流程中相同服务活动的输入输出变量名称保持一致18每个活动的配置尽量独立,不依赖其他活动18保留服务调用的输入输出变量的值19格式转换配置中,适当增加描述和注释192.2.5.对于 XPath 和 XSLT,流程运行前

10、,使用XML Spy 单独测试验证19流程活动配置192.3.1.起始19ESB 动态实现服务默认URL 地址的生成规则19执行起始活动时ESB 处理逻辑20调用服务20执行调用服务活动时ESB 处理逻辑21实现服务21关联集和关联属性的概念21关联集工作原理22ESB 引擎对实现服务活动的处理逻辑23格式转换23ESB 引擎对转换条目的处理逻辑24多个源变量时的处理逻辑24不同类型/不同模式详细处理逻辑表25工作条目27创建编目任务27创建任务分配到用户组和用户28创建任务均衡分配到用户组28创建任务分配到单一用户组(不使用) 282.3.6.调用插件292.3.7.路由292.3.8.结束

11、30其他通讯协议30JMS 30目录检测30高级功能31自定义实现服务地址31动态路由31终止处理活动32错误处理和条件处理32消息通知32Restful WS 支持 32服务调用支持多路径32完成条件33SOAP 消息头处理33并行流程配置335带格式的: 正文, 制表位: 不在 8 字符 + 39.5 字符WebService 参数 Schema 校验34使用 XPath 和 XSLT 自定义函数 34静态只读局部变量36超时设置、流程进度363.流程部署调试37概要介绍37流程部署逻辑37流程重新部署37服务地址同步38错误定位和调试383.1.6.相关工具.39XML Spy 工具39

12、TCPMonitor 工具 394.流程运行.41概要介绍41实例运行信息42错误日志42引擎状态425.系统管理42运行环境42集群支持43完成实例、错误日志的删除436.其他参考资料440. 前言0.1. 目标读者该文档目标读者为大洋 ESB 产品直接使用,包括大洋 ESB 流程配置,基于大洋 ESB 的应用开发、大洋ESB 系统管理员等。该文档详细介绍大洋ESB 的基本概念和原理,涉及到ESB 引擎、ESB 配置、ESB等多个模块,目的是让读者能从全局角度对大洋ESB 有比较全面深入的了解。0.2. 文档结构文档结构如下:大洋 ESB 是什么流程模型配置流程部署调试流程运行6系统管理其他

13、参考资料0.3. 适用的版本大洋 ESB20090331。0.4. 其他相关文档1.2.3.大洋 ESB 技术白皮书 大洋 ESB 用户使用手册大洋 ESB 对外接口说明书1. 大洋 ESB 是什么本章介绍大洋 ESB 的产品背景、应用场景、产品架构、基本功能、如何与应用系统集成,使读者对大洋 ESB 能有一个宏观的理解。在深入了解后面章节中大洋ESB 的详细信息之前,读者最好先仔细阅读这部分内容。1.1. 产品背景随着数字化、网络化发展,实现系统互联特别是异构系统之间的互联,成为各电视台的迫切需求。大洋 ESB 是一个系统互联中间件产品,它以工作流引擎为,支持 Web Service、JMS

14、、目录监测、工作流 API 等多种系统互讯方式,可以方便的集成多个应用系统实现互联,在系统互联中位于的位置。大洋 ESB 发源于大洋工作流引擎。大洋工作流引擎和大洋 ESB,都是为了便于实现系统互联,减低互联系统之间的耦合度而设计开发的。系统互联经历了基于工作流互联和基于WebService 互联两个发展阶段。1.1.1.基于工作流的系统互联基于工作流的系统互联,是一种常见的系统互联方式。各系统只与工作流引擎进行交互,系统之间不直接交互,这样可以大大降低系统之间的耦合度,也能够通过修改流程定义的方式实现不同的业务需求。大洋工作流引擎就是为实现基于工作流的系统互联而开发的互联中间件。工作流引擎负

15、责实现流程流转逻辑和各系统之间的数据传递,各业务系统通过通过工作流 API,与大洋工作流引擎进行交互。78除了 WebService,ESB 通常还支持 JMS、目录监测等其他多种通讯方式,便于各业务系统和 ESB 进行集成。大洋 ESB 就是在大洋工作流引擎基础上,为方便实现基于 WebService 的面向服务架构的系统互联开发的。大洋 ESB 系统既具备 ESB 系统的典型特征,又具有工作流系统的典型功能。简单理解,大洋 ESB 是一个支持 WebService、JMS、目录监测、工作流 API 等多种交互协议的工作流引擎系统,在基于 WebService 的系统互联中处于容基于工作流的

16、系统互联方式。位置,同时还完全兼1.2. 应用场景大洋 ESB 有下面几种典型应用场景:实现系统间互联,特别是异构系统互联、实现系统流程、实现互联接口规范转换、实现互讯方式转换、实现模拟服务。1.2.1.实现系统间互联,特别是异构系统互联大洋 ESB 的典型应用是实现系统互联,降低系统之间的耦合度。大洋 ESB 支持 WebService 互联、工作流互联、JMS 消息互联、目录监测方式互联等多种互联模式。其中目前最为常用的是基于WebService 的互联模式。WebService 互联各系统都将自己系统实现的服务 在大洋ESB 系统中,可以在大洋 ESB 中对这些服务进行编排,实现用户需要

17、的业务流程。如果业务流程发生变动,如果不涉及到原先服务功能的,都可以在大洋 ESB 中通过修改流程定义的方式实现。工作流互联各系统通过调用工作流 API,与大洋 ESB 进行交互,实现业务流程。一般采用工作流任务这种具体交互方式,业务系统开发自己的工作流任务处理模块,负责查询、处理属于自己的不同类型的任务。这种模块一般称为工作流桥模块,如媒资桥、非编桥等。JMS 互联各系统通过向大洋ESB 发送 JMS 消息,接收、处理从大洋 ESB 收到消息方式,与大洋ESB 交互,实现系统互联。目录监测互联各系统通过向大洋的监测目录写 xml 文件,接收、处理从大洋 ESB 写到各系统监测目录下的 xml

18、 文件方式,与大洋 ESB 交互,实现系统互联。监测目录一般是 FTP 路径,也支持非 FTP 路径。1.2.2.实现系统业务流程大洋 ESB 作为工作流引擎,也支持用来实现系统的工作流应用。9比如,大洋媒资系统工作流引擎比较多,媒资、编目、发布、归档等功能,都可以配置为大洋 ESB 工作流中的节点,根据项目需求灵活搭配。对于实现简单的流程,可以使用轻量级大洋 ESB 工作流引擎(原始的大洋工作流引擎版本),这种方式不需要配置中心引擎服务器,便于部署和调试。1.2.3.实现不同互联接口规范之间的转换一般每个系统都有自己定义良好的互联接口规范,但在和异构系统互联中,可能会使用其他互联接口规范。大

19、洋 ESB 支持接口规范转换功能,不需要业务系统按照新的规范进行服务的重新开发,只需要在大洋ESB 进行格式转换配置,就可以实现不同接口规范之间的转换功能。大洋ESB 支持通过Xpath 进行简单格式转换,对于复杂格式转换,目前只支持配置XSLT的方式。当然也可以单独开发格式转换服务,让 ESB 调用该服务进行格式转换,但这种方式开发工作会比较多。XSLT 是专门对 XML 进行格式转换的一种新兴技术,类似高级编程语言,本身具备强大的格式转换功能,但需要从头学习、熟悉XSLT 相关知识。下一个版本ESB 中会也支持开发 Java 类方式进行格式转换。1.2.4.实现不同互讯方式之间的转换与上面

20、的互联接口规范转换类似,可能某个系统实现的互联接口是基于 WebService 通讯协议的,但某个互联项目中,要求实现基于 JMS 或者目录监测等方式的互联,一般同时也会伴随互联接口规范转换。大洋 ESB 也支持互讯方式的转换配置,无需修改现有系统的服务实现方式,通过大洋 ESB 的流程配置,就能实现以其他通讯方式与外系统互联。1.2.5.实现模拟服务在系统互联相关调试中,经常涉及到要调用其它系统的 WebService,但其它系不能提供。时由于大洋ESB 支持 WebService 互联,能动态实现任意接口的服务,可以用大洋 ESB 配置模拟服务,进行系统互联的模拟测试。101.3. 产品架

21、构和模块11传统工作流 API 通过制定流程 ID、设置初始流程变量的方式启动工作流,大洋 ESB API通过直接调用工作流启动WebService 的方式启动流程(该WebService 接口是根据应用的需求动态配置的,不是固定不变的)。1.传统工作流 API对外提供流程定义查询、流程实例启动、获取工作流任务、获取/设置流程实例变量、完成工作流任务等传统工作流引擎相关功能,有 WebService、C+、Java 多个版本,其中 C+版本 API 又有数据库和 WebService 两种实现方式。这些 API 的对外接口是类似的,只是实现方式不同,在功能细节上也有一些细微差别。WebServ

22、ice 版本的工作流 API大洋 ESB WebService 版本工作流 API,和大洋 ESB 引擎部署在一起。C+版本数据库方式 API:这是老版本的工作流引擎 API 实现,是单独的 dll。采用这种 API 不需要部署大洋工作流引擎,客户端能直接大洋工作流数据库就行。3) C+版本数WebService 方式 API: 这是新版本的工作流引擎 API 实现方式,通过大洋ESB WebService 实现相应功能。这种方式需要部署大洋 ESB 引擎,只需要客户端能大洋ESB WebService 接口,不需要客户端直接工作流数据库。4) Java 版本工作流 API:是一个单独的 Ja

23、r 包,与 C+版本数据库方式 API 类似,需要客户端能直接数据库。2.大洋 ESB API工作流大洋 ESB API 是为基于服务的互联设计的,在接口上与传统工作流 API 有很大差别。大洋 ESB API 只有获取流程定义、查询流程实例进度两个接口。返回的流程定义中,包含流程启动 WebService 的 URL,流程启动webservice 接口定义不是固定的,是根据应用需求动态配置的。客户端调用该URL 的WebService 启动流程,没有流程实例变量的概念。这里指的是GetProsS usService 和GetProsesService 这两个服务吗?它们的输入参数都是 Mre

24、ml,如何调用?应用场景?1.3.5.大洋 ESB WFServerDYWFServer 是大洋 ESB 系统中的一个辅助模块,专门用来以方式调用流程中配置的 C+工作流插件。支持调用出错时自动重试。现在 DYWFServer 都是打包到CS 图形化的流程配置程序中一起发布。1.4. 基本功能大洋 ESB 的基本功能,可以划分为下面三类:传统工作流引擎功能、基于 WebService的流程引擎功能、JMS/目录监测等其它与外系统交换方式。1.4.1.传统工作流引擎功能传统工作流引擎实现流程流转控制和传递应用系统间共享变量的功能。12设置了格式: 字体颜色: 黑色设置了格式: 字体颜色: 黑色设

25、置了格式: 字体颜色: 黑色设置了格式: 字体颜色: 黑色流程启动后,一般通过工作流任务、工作流插件两种方式与外系统交互。传统工作流引擎的主要功能包括:查询流程创建、启动流程实例查询工作流任务获取/设置流程实例变量完成工作流任务流程运行过程中调用外系统开发的工作流插件1.4.2.基于WebService 的流程引擎功能基于 WebService 的流程引擎功能,主要包括:1) 动态调用任意接口的 WebService这是对 ESB 的基本功能要求。大洋ESB 调用 WebService 时,支持服务地址静态配置,也支持基于消息内容动态设置、查找服务地址,这个功能也称为 WebService 动

26、态路由功能。动态实现任意接口的 WebService基于 WebService 互联中,外系统需要调用大洋 ESB 的 WebService 与大洋 ESB 进行交互,如启动流程,异步服务结果回调等,这要求大洋ESB 能接收外系统任意接口的WebService请求,能实现任意接口的WebService。大洋 ESB 动态实现的服务有两种类型:一种是流程启动类服务,一种是异步回调类服务。外系统调用流程启动类服务启动大洋ESB 的流程、创建 ESB 的流程实例,对应流程启动节点;调用异步回调类服务使流程实例继续向后运行,对应实现服务节点。对于异步回调类服务,需要在大洋ESB 中配置关联集信息,使回

27、调请求和原始流程实例能关联上。大洋 ESB 支持动态实现服务地址的自定义设置。由于流程节点中每个大洋 ESB 动态实现的服务都对应服务的一个操作(Operation),服务地址自定义功能允许 ESB 中不同 Operation 的相同服务使用相同的URL,这是 WebService 规范所要求的。支持不同类型参数之间的格式转换个流程中,一般需要调用或者实现多个接口参数互不相同的服务,大洋 ESB 提供参数格式转换功能,在不同类型的服务参数之间进行转换。1.4.3.JMS/目录监测等其它系统交换方式大洋 ESB 还支持 JMS、目录监测等其它通讯方式。这些通讯方式与 WebService 通讯方

28、式类似,传递的也是 xml 信息,但 WebService 这种通讯方式更规范。1) JMS大洋 ESB 支持发送、接收 JMS 消息的方式与外系统互联。这种通讯方式只支持异步方式,不支持同步方式。JMS 消息服务器是单独配置的,目前大洋ESB 目前只支持和 ActiveMQ 消息13服务器,后续版本会根据项目需求支持的 JMS 消息服务器。发送 JMS 消息时,目标地址信息支持动态设置。2) 目录监测大洋 ESB 支持向目录写 xml 文件,监测接收目录xml 文件的方式与外系统互联。这种通讯协议,只支持异步方式,不支持同步方式。监测目录一般是 FTP 路径,也支持非 FTP 路径。向路径写

29、xml 文件时,目标路径信息支持动态设置。1.5. 如何与应用系统集成1.5.1.大洋 ESB 与外部应用系统交互方式总结大洋 ESB 与外部应用系统交互方式有如下几种:1) 工作流 API根据不同的应用场景,外系般需要调用工作流 API,实现流程启动、设置流程实例变量、查询和完成工作流任务等功能。WebService一般外系统需要调用大洋ESB 的 WebService 启动相关流程,并提供 WebService 供大洋 ESB 调用。对于异步服务,服务执行完成后,还需要回调大洋 ESB,通知服务执行结果,使流程继续向后运行。这些 WebService 的接口参数都不是固定的,是由实际业务需

30、求决定的,通过流程配置,大洋 ESB 支持任意接口的WebService。工作流插件外系统可以开发固定接口的工作流插件,供大洋 ESB 调用。目前只支持 C+版本的工作流插件。大洋ESB 提供了一个辅助工具DYWFServer,专门负责工作流插件的调用。在工作流插件中,能够调用工作流 API,从工作流中获取相关信息,进行业务逻辑的处理。JMS 消息外系统可以通过向大洋 ESB 发送 JMS 消息方式,启动大洋 ESB 流程,通知大洋 ESB服务执行结果。大洋 ESB 也支持向应用系统发送 JMS 消息方式与外系统交互。目录监测外系统可以通过向大洋ESB 监测的目录下xml 文件方式,启动大洋E

31、SB 流程,通知大洋 ESB 服务执行结果。大洋 ESB 也支持向应用系统监测目录写xml 文件方式与外系统交互。1.5.2.应用系统相关开发工作应用系统要和大洋 ESB 进行集成,可以从上面列举的交互方式中,任意选择一种或多种方式,定义业务系统互联交互协议,进行相应的开发工作。141.5.3.大洋 ESB 流程配置工作除了各应用系统要按照业务系统定义的互联交互协议进行开发,还需要在大洋 ESB 中进行流程配置和调试工作,通过大洋ESB 流程来实现具体的业务流程。流程配置和调试是ESB 应用集成开发的工作。大洋 ESB 流程配置中,涉及到很多概念和细节问题,详细信息在下面章节中描述。2. 流程

32、模型配置本章先介绍大洋ESB 流程配置的一些基本概念,然后详细介绍大洋ESB 中不同类型活动的典型配置方式,是使读者能理解大洋 ESB 活动的典型配置。在其他通讯协助中,介绍了不常用的 JMS 和目录检测通讯协议。最后对于一些高级流程配置功能单独介绍。2.1. 基本概念介绍2.1.1.流程模型相关概念流程模型 Pros代表实际业务的一个成。实现,流程模型由活动、连接、工作流变量这几个主要元素组流程模型的关键属性有流程 ID、流程名称、流程版本、流程状态、流程相关系统等。流程 ID 和流程版本号:这两个属性和在一起唯一确定一个流程模型。同一个工作流 ID 可以有多个不同的版本号,但只能有一个版本

33、的流程状态是活动的。引入版本是为了支持修改流程定义时,能够兼容旧版本流程定义下还有没有完成的流程实例。旧版本的实例还按照旧的流程定义运行,新创建的实例按照新版本的流程定义运行。流程版本的概念对外部系统是透明的,外部系统不知道有不同的流程版本存在。流程状态:有未验证、验证无效、验证有效、活动流程几种。如果流程没有经过验证,流程状态不能改为验证有效或者活动状态。只有活动状态的流程才可以被启动。非活动状态的流程不能启动。但如果流程模型先前是活动的,已经有流程实例在运行,把流程改为非活动状态后,如果该流程定义没有删除,并且配置正确,未运行完成的流程实例还可以按照当前流程模型定义继续运行,不受影响。流程

34、相关系统:在应用系统列表里面,可以勾选和这个流程启动相关的应用系统,描述有哪些系统可以启动这个流程。这里列出的系统,在流程配置程序的系统配置节点进行配置。大洋 ESB 的查询业务服务getProses,输入参数支持输入一个系统 ID,返回只和该系统 ID 相关联的流程列表。如果输入的系统 ID 为空,返回所有流程列表。15外部系统调用工作流 API 获取流程列表时,返回的信息中流程描述信息,对应的是这里配置的应用系统信息。多个应用系统 ID 之间“;”分隔。应用系统可以根据返回的流程相关系统 ID 对流程进行过滤。活动 Activity通俗的叫法是节点、环节,是流程中的具体处理环节。活动有起始

35、、结束、调用服务、实现服务、格式转换、工作条目、调用插件、路由等多种类型,每种类型的活动有通用配置信息,也有特殊配置信息。大洋 ESB 要求每个活动的 ID 不能重复,在导入流程定义时,如果已有流程中的其他活动具有相同 ID,会提示活动 Id 重复,不允许导入。这种情况一般是由于手动修改流程定义的 xml 文件造成的。连接 Transition也称为转移、连线,定义了流程中多个活动之间的流转关系和流程分支,由头活动、尾活动、转移条件组成。如果转移条件为空,表示无条件转移,头活动执行完成后不做判断直接执行尾活动。 转移条件不为空时,头活动执行完成后,进行条件判断,符合转移条件的才执行尾活动。转移

36、条件格式详细说明参考下面对条件表达式的说明。创建连接时,除了某个头活动到某个尾活动之间只能建立接外,没有其他任何限制。头活动和尾活动也可以是同一个活动,这样可以实现一些特殊流程需求。流程变量 Data也称为数据,是流程模型范围内根据应用定义的变量。变量是为了实现不同节点(或不同系统)之间的信息传递,以及流程流转控制。流程的连接条件定义中需要指定相关工作流变量。工作流变量从使用类型上分为静态常量和变量两种:静态常量表示在流程模型中静态配置,流程运行期间不会改变的常量,变量也可以在流程模型中配置默认值,但流程运行期间值可能会改变。流程变量设置为哪种使用类型,对 ESB 的处理逻辑没有任何影响,这种

37、区分只是为了便于查看。变量类型:大洋 ESB 中的变量类型有整型、字符串、枚举类型、二进制类型、XML 元素、WSDL消息这几种。对于二进制类型外的其他变量类型,在数据库里面实际都是以字符串方式库中对应的字段都是大文本类型,对于字符串长度基本上没有限制。的。数据变量类型在连接条件表达式判断时会用到,不同变量类型对应不同的关系运算符,因此16要注意连接条件中关系运算符和变量类型的匹配。整形和字符串类型很好理解。枚举类型变量:也是字符串类型,不过值是从枚举值信息里面的,多个枚举值;分隔。枚举变量还需要设置选择模式、控件类型、枚举值信息等信息,这些信息是为上层应用提供的,目前实际项目很少用到。二进制

38、类型:实际项目中也很少用到。XML 元素:也是一种字符串类型,只是特别表明变量值是 xml 格式的,这样的变量支持进行 XPath运算和 XSLT 格式转换。WSDL 消息类型:是一种特殊的XML 元素类型,对应 WebService 的输入或者输出参数,有特殊的格式要求。WSDL 消息类型变量的xml 格式非常重要,下面会有详细说明。WSDL 消息变量的格式:大洋 ESB 中 WebService 输入或者输出参数对应的变量,必须是 WSDL 消息类型的。WebService 方法的输入、输出参数对应的就是WSDL 里面定义的消息。大洋 ESB 中WSDL 消息变量的格式非常重要,要进行流程

39、配置、格式转换,都需要先了解这个消息格式。前提条件是需要对WSDL 有基本了解。WSDL 消息变量是一个xml,由 variable、part、data 三部分组成。格式如下: data大洋 ESB 中流程配置中,在选择 WebService 输入输出变量时,如果设置了自动生成默认值,会根据服务的 WSDL 定义自动生成消息变量的基本结构,但自动生成的结构中,只是 variable、part 元素是不需要修改的,part 里面的 data 部分要根据具体消息格式进行修改,大洋 ESB 中只是生成了data 部分的简单框架,标识了 data 是 rpc 简单类型、rpc 复杂类型或者元素类型的。

40、variable 元素variable 元素是最顶层元素,其中name 属性,填写对应的工作流变量 ID。part 元素part 元素,对应 WSDL 规范中 message 的 part。其中,name 属性的值和 WSDL 中 part的 name 相同。part 相当于函数的参数。对于 rpc 风格的WebService,可能有多个 part;对于风格的 WebService,每个消息只能有一个 part。data 部分data 代表每个part 的具体值。对于简单类型和复杂类型格式不同。简单类型:17对于、string、date 等 xsd 里面的简单数据类型,data 直接是具体的值

41、,如下面例子里面的 echoPart1,是 string 类型的,它的值“testString”直接作为 part 元素的值。复杂类型:对于复杂类型的自定义数据结构,data 代表一个xml 元素。对于WSDL 中rpc 和不同风格,data 元素有不同的格式。对于 rpc 风格的,data 部分的顶层元素名称是WSDL 里面 part 的 name,也就是这里 part元素的 name 属性。这个顶层元素没有命名空间,但下面的素会有命名空间。注意:对于RPC 风格的 WebService,不管是 use 属性是literal 还是 encoded,wsdl 消息变量的值都是一样的。引擎会自动

42、进行两种格式之间的转换。对于风格的: data 部分就是WSDL 里面定义的消息对应xml element,这个element 一般有命名空间的。按照 WS-I 规范,的 element 元素,不能是一个type 类型。风格的消息类型必须是 xsd 中定义下面是 RPC 风格的 WSDL 消息的例子。一个消息有两个 part,第一个是 string 简单类型,第二个是复杂类型:testStringdaestdata风格的 WSDL 消息例子,只会有一个 part,part 下面只能有一个下面是素,和 WSDL 中消息对应的元素定义一致: testString daestdata全局变量和活动局

43、部变量本质是大洋ESB 流程中的变量都是全局变量,每个变量都有唯一的 ID,流程运行时,每个变量的值只在数据库中一份,流程运行期间,通过调用工作流 API,指定变量 ID,和流程实例 ID,可以获取到变量的值。为了解决特殊需求,引入了局部变量的概念,细节参考静态只读局部变量部分。18设置了格式: 字体颜色: 黑色设置了格式: 字体颜色: 黑色, 葡萄牙语(巴西)设置了格式: 字体颜色: 黑色设置了格式: 字体颜色: 黑色, 葡萄牙语(巴西)设置了格式: 字体颜色: 黑色设置了格式: 字体颜色: 黑色, 葡萄牙语(巴西)设置了格式: 字体颜色: 黑色设置了格式: 字体颜色: 黑色, 葡萄牙语(巴

44、西)设置了格式: 字体颜色: 黑色设置了格式: 字体颜色: 黑色, 葡萄牙语(巴西)设置了格式: 字体颜色: 黑色设置了格式: 字体颜色: 黑色, 葡萄牙语(巴西)设置了格式: 字体颜色: 黑色设置了格式: 字体颜色: 黑色, 葡萄牙语(巴西)设置了格式: 字体颜色: 黑色设置了格式: 字体颜色: 黑色, 葡萄牙语(巴西)设置了格式: 字体颜色: 黑色条件表达式 ConditionExpres大洋 ESB 中多个地方都用到条件表达式的概念,如转移条件、活动完成条件、错误处理条件等。条件表达式分为简单变量条件和 XPath 表达式条件两种:(1)简单变量条件格式为: 工作流变量 ID 关系运算符

45、 变量值上面三个部分之间通过空格分开。对于字符串类型,变量值一般需要加上。其中变量值只能是整数或者字符串,不能是工作流变量 ID。对于字符串类型变量,关系运算符有: =(等于)、!=(不等于) 、contains(包含)、! contains(不包含)几种。对于整数类型变量,关系运算符有: =(等于)、!=(不等于) 、(大于)、=(大于等于)、 0AuditResult = 不通过 AuditResult != 不通过 AuditResult contains 不通过(2)XPath 表达式条件XPath 表达式针对 xml 类型的变量,支持复杂的XPath 语法。格式为: 工作流变量 ID

46、:XPath例如:表达式1UpdateBCListRequest:/m:ChannelCode=SD01 or /m:ChannelCode=SD02判断 UpdateBCListRequest 变量中,栏目代码ChannelCode 是否等于SD01或者SD02 2UpdateBCListResponse: /mreml:ResponseEntity/mreml:S us/text() = 0 or(/mreml:ResponseEntity/mreml:S us/text() 1 and/mreml:ResponseEntity/mreml:Description/text() = 成功)

47、判断 UpdateBCListResponse 中 s us=0 或者(S us1 并且 Description=成功).从这个例子中,可以看出XPath 表达式功能强大,支持多重条件嵌套。Xpath 表达式中可以 XPath 支持的任何函数,如 count(/m:FileInfo) 1,可以使用 count 函数来判断是否 FileInfo 元素的个数大于 1。常见问题:(1)如何在表达式中同时使用多个工作流变量?目前大洋 ESB 的条件表达式只能对一个变量进行判断,如果要对多个变量进行判断,可以在格式转换中,先把多个变量合并为一个变量,再对合并后的变量进行判断。详细信息参考格式转换部分的说

48、明。对于连接条件,还有一种实现方式是,在流程中增加路由节点,增加流程中的连接,从而简化连接条件表达式。以后版本的 ESB 需要考虑如何支持表达式的逻辑运算组合(支持 not、and、or、括号等逻辑表达式),这样就可以支持多个工作流变量。192.1.2.流程运行相关概念流程模型是一个静态定义。定义好流程模型后,应用系统就可以启动、运行这些流程模型,来完成具体的业务逻辑。流程运行相关概念主要包括流程实例、活动实例、流程实例变量、工作流任务等。流程实例流程模型启动、运行后,称为流程实例,流程实例是流程模型的实例化体现。一个流程模型可以启动无数个流程实例。比如,制作系统提交一个素材到媒资时,就会启动

49、制作入库媒资流程的一个流程实例。这个实例的运行,代表这个具体素材从制作入库媒资的业务流程。活动实例流程实例是通过执行流程模型中定义的活动来运行的,流程模型中每个活动在执行时,会生成一个活动实例,代表这个活动的一次具体运行。由于流程模型中,可以定义类似打回的连接,后面的活动执行后,可能还会打回到前面的活动重现重新执行,这样,同一个流程实例中,一个活动可能会对应多个活动实例,代表这个活动的多次执行。比如,简单的编目审核流程中,有启动、编目、审核、完成这几个节点。审核活动后面有个分支,根据流程变量,可以到完成,也可以打回到编目。在具体编目过程中,审核节点每打回一次,编目活动就会多生成一个新的活动实例

50、。同样,每次编目活动实例完成后,也都会重新生成一个审核活动实例。流程实例变量流程模型中定义了很多流程变量,这些变量在流程中有一个默认值。在应用系统启动流程时,会为流程变量赋一些新的值。在后续的流程处理中,应用系统还会修改流程变量的值。因此,流程运行后,流程变量的值就是可变的,是和具体的流程实例相关的,流程运行后的流程变量称为流程实例变量。工作流任务工作流任务是工作流引擎中的一个重要概念,是工作流引擎和外系统交互的重要方式。流程模型中工作条目类型的活动,在执行时会生成对应的活动实例,同时会根据活动配置生成一个工作流任务,分配给设置的一个或多个用户。生成工作流任务后,流停在这个活动实例上,直到应用

51、系统调用工作流 API实例才继续向后面运行。一般需要人工干预的活动,都采用工作流任务方式。比如编目节点,流程运行到该节点到工作流任务,并完成工作流任务后,流程20会生成编目任务,并停在这个节点。编目用户登录程序后,点击刷新按钮,获取属于自己的编目任务。编目完成后,点击签章按钮,实例继续向后运行。调用工作流 API 完成这个编目任务,使流程对于一些服务程序和工作流的交互,也可以采用工作流任务方式。比如工作流互联模式下制作到媒资流程,启动后,有一个节点是设置媒资目标格式,这个节点配置的是工作流任务类型,执行时,工作流引擎会生成一个工作流任务,分配给用户ID 为_MAM_BRIDGE_这个用户。媒资

52、桥程序会轮询调用工作流获取任务 API,传入_MAM_BRIDGE_这个用户 ID,当取到工作流任务后,根据任务所属的不同活动名称,进行不同处理。处理完成后,调用完成任务 API,使流程实例向后运行。由于这种方式效率有一些低。大洋 ESB 支持 WebService 调用后,程序要轮询调用工作流 API 获取工作流任务,程序可以不用工作流任务方式和互联交换了。业务系统可以实现一个WebService,由互联调用。比如,WebService 互联模式下,制作到媒资流程中,启动后,在设置媒资目标格式节点,配置的是调用 WebService 类型。互联引擎执行这个节点时,会根据配置,直接调用媒资系统

53、的WebServie,得到目标格式信息。这样不再需要媒资桥程序去轮询调用工作流 API,提高了流程流转的效率。2.1.3.服务相关概念大洋 ESB 中的服务是一个抽象的概念,可以理解为规定了接口参数、通讯方式的功能。服务包括三种类型:WebService 服务、JMS 服务、路径文件服务,其中 WebService服务是最典型的服务。每个服务都对应一个地址信息,可以在大洋 ESB 中服务配置,也可以在流程定义中根据消息内容动态设置服务地址。中静态服务是属于某个应用系统的。有些具有相同接口方式、通讯方式和功能的服务,可能在多个系统中都存在,但服务的地址不同。大洋 ESB 支持根据系统 ID 和服

54、务名称来查找服务地址,这就要求系统 ID 和服务名称不能重复。大洋 ESB 中实现服务类型的活动对应一个服务,流程启动节点可能也对应服务,这些服务属于大洋ESB 系统,对于 WebService 类型的服务,有默认的服务地址,也可以在流程中自定义服务地址。大洋 ESB 实现的 JMS 和路径文件类型服务,地址是在大洋 ESB 服务注册信息中配置的。2.2. 流程配置原则在大洋 ESB 流程配置中,注意下面一些原则,可以使配置的流程易于调试和程活动具有通用性,可以直接用到其他流程模型中。,流212.2.1.不同流程中相同服务活动的输入输出变量名称保持一致2.2.2.每个活动的配置尽量独立,不依赖

55、其他活动流程活动配置主要是对该活动相关的变量进行格式转换处理,流程中最常见活动类型是调用服务类型服务类型活动。对于调用服务类型的活动,要设置服务输入参数,对于服务输出参数要进行判断,决定后面流程的分钟后。对于实现服务类型的活动,要设置关联集信息,使 ESB 根据服务的输入参数找到之前已启动的相关流程实例,还要设置服务的输出参数。对本活动用到的变量设置,尽量放在该活动的前后格式转换中进行配置,不要分散面其他活动中,这样便于把这个活动设置为常用活动,以后直接放到其他流程中就可以使用。2.2.3.保留服务调用的输入输出变量的值后面活动中尽量不要修改其它活动的输入输出变量值,便于调试。2.2.4.格式

56、转换配置中,适当增加描述和注释便于以后修改。2.2.5.对于XPath 和XSLT,流程运行前,使用 XML Spy单独测试验证可以提前找出错误。222.3. 流程活动配置下面流程配置中,涉及到的服务都以WebService 服务为例进行说明。对于 JMS 和路径文件服务的相关配置与 WebService 服务配置类似,特殊之处在其他通讯协议部分进行单独说明。公共配置信息命名空间2.3.1.起始起始活动是一个流程最开始执行的地方,是流程的入点,一个流程只能有一个起始活动。凡是存在活动的流程必然存在起始活动。某些特殊的流程,只定义一些跨流程的全局变量,可以没有任何类型的活动。起始活动可以配置为对

57、应一个 WebService,ESB 在部署时会根据配置的 Web 服务信息自动实现一个Web 服务,供外系统调用。外系统传入相应的启动参数,启动流程。ESB 动态实现服务默认 URL 地址的生成规则 端口/DYESBWEB/servi/当前流程 ID/当前活动 ID/WebService 的服务名称其中,ES 和 ESB 端口是配置在系统参数设置框的工作流服务器参数里面设置的。/DYESBWEB/servi这一部分是固定的,即应用服务器中配置上下文路径(ContextPath)必须为/DYESBWEB。流程 ID 和活动 ID 根据流程动态获取。WebService 的服务名称,是在WebS

58、ervice 属性框中配置的,默认是对应 wsdl:service 元素的 name 属性值,如果为空,默认取 Web 服务 WSDL 定义中的/wsdl:definitions 元素的 name 属性值。WebService 的服务名称可以在 ESB 配置程序的WebService 属性就行。起始活动配置了 WebService 的流程,也可以通过调用工作流 API 启动该流程(注意:目前不执行格式转换,下个版本要加上),启动时需要按照 WSDL 消息格式设置WebService对应的输入变量。设置 WSDL 输入变量比较麻烦,因此一般对于WebService 类型的启动节点,不会通过调用工

59、作流 API 方式启动流程。如果起始活动没有配置 WebService,外系统只能通过调用工作流 API 启动调用该流程。起始活动中可以配置后格式转换,不能配置前格式转换。格式转换配置细节参考格式转框任意修改,只要保证相同系统内不重名换类型活动的描述。执行起始活动时 ESB 处理逻辑通过 WebService 方式启动流程:先根据服务URL 得到对应的流程 ID、活动流程版本;创建对应流程实例、创建起始活动的活动实例,设置流程实例变量默认值将输入参数更新到对应的流程实例变量中23执行后格式转换根据流程配置向后运行,直到遇到调用服务,实现服务、工作条目、调用插件等需要执行的活动,或者遇到结束活动

60、后,才停止运行。如果 WebService 有输出变量,ESB 引擎会取出输出变量的值,返回给服务调用方。前面执行过程如果出错,给服务调用方返回异常信息。通过工作流 API 方式启动流程:根据传入的流程 ID,得到活动流程版本创建对应流程实例、创建起始活动的活动实例,设置流程实例变量默认值将传入的参数更新到对应的流程实例变量中执行后格式转换5) 根据流程配置向后运行,直到遇到调用服务,实现服务、工作条目、调用插件等需要执行的活动,或者遇到结束活动后,才停止运行。6) 如果 WebService 有输出变量,ESB 引擎会取出输出变量的值,返回给服务调用方。7)6) 前面执行过程如果出错,给 A

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论