12 Websphere Process Server 流程开发管理指南.docx
《12 Websphere Process Server 流程开发管理指南.docx》由会员分享,可在线阅读,更多相关《12 Websphere Process Server 流程开发管理指南.docx(10页珍藏版)》请在冰豆网上搜索。
12WebsphereProcessServer流程开发管理指南
WebsphereProcessServer流程开发管理指南
1.WPS和WID简介
1.1WPS(WebsphereProcessServer)简介
WebsphereProcessServer(以下简称WPS)是由具体的业务整合概念、应用服务器技术以及最新的公开标准而发展而来的下一代业务流程整合服务器。
它是遵循SOA(ServiceOrientedArchitecture)理念的新型整合平台。
首先,基于现有的公开标准,它实现了简单的编程模型服务组件模型SCA(ServiceComponentArchitecture),调用模型(SCA调用),以及部署模型。
其次,它定义了统一的数据传输格式:
业务对象(BusinessObject),使用户在开发和使用过程中始终只需要面对BusinessObject,因此只需要一套通用的方法和接口来对处理数据。
(当然业务对象可以根据需求和设计的不同,有不同的内容和结构)
最后,标准的业务过程执行语言(BusinessProcessExecutionLanguage,简称BPEL)和流程引擎(ProcessContainer),能够使用户更加方便的把现有的业务流程转化为可执行的代码。
1.2WID(WebsphereIntegrationDeveloper)简介
为了更好的开发和利用WPS里面的组件和功能,WebsphereIntegrationDeveloper(WID)作为一个独立的开发工具提供给终端用户。
WID是基于RAD(RationalApplicationDeveloper)的开发环境,不仅提供了一个使可视的组件与后端实现相分离的层次结构,而且对本地和远程EIS(企业信息系统)上作为组件的业务流程的开发、调试、装配、部署等各种功能提供了可视编辑器,这使得各个组件和它们的实现相分离。
开发人员无需深入了解各个组件的实现,便能使用WID开发各种集成应用程序。
它同时支持自顶向下和自底向上两种开发方法,并且有一个集成测试环境可以使开发人员在程序正式投入生产环境前对程序进行全方位的测试和调试。
最重要的一点就是WID是基于面向服务的架构。
组件是业内领先的标准Web服务(WebServices),并且一个包含很多个组件的集成应用程序本身也是一个Web服务。
这使得作为组件的业务流程可以用易用的可视化工具生成为业内标准的业务过程执行语言(BPEL,BusinessProcessExecutionLanguage)。
同时WID还支持多种操作系统包括Windows和Linux,使得它能够得到更广泛的应用。
2.WPS流程开发指南
2.1流程(BusinessProcess)开发概述
在流程(BusinessProcess)开发之前,需要根据用户需求对业务的流程进行建模(WebsphereBusinessModeler),然后从业务流程出发按照面向服务的思想用WID进行模块和服务的设计,最后将开发好的流程部署到WPS上运行。
下面的部分我们将侧重于用WID进行设计和开发的介绍。
WID提供了一套完整的工具和过程来支持自上而下或由下至上的开发模型。
自上而下的开发特指已经有了整个业务系统的逻辑框架,然后把该框架映射到实际的实现系统中。
在WID中提供了模块的概念,一个模块代表了一个逻辑的子系统,模块之间的交互也就代表了各个子系统之间的交互。
然后对每一个具体的模块,WID提供了组装图编辑器来刻画子系统内的组件之间的关系。
通过使用该编辑器上所提供的各种组件,可以快速的定义出系统内业务流程的关系,然后把这些组件连接起来就形成了整个子系统的运行时拓扑图。
在得到整个系统的拓扑结构和各个分系统内的拓扑结构后,就可以具体实现各个组件,最终实现整个系统。
由下至上的开发指先开发各个组件,然后提取出其接口,通过组装编辑器映射为整个业务系统的逻辑框架,这种开发流程相对来说更为简单。
首先从单个的子系统入手,通过分析该业务流程的数据结构,接口类型,以及需要使用到的组件类型,逐个对这些对象进行设计和实现。
最终把他们拖拽到组装图编辑器中连接起来,形成一个完成的子业务流程。
然后把其他的子系统的Import文件导入到组装图编辑器中,通过该Import来体现了该子系统和其他的系统之间的交互。
通过这种方式得到的每一个子系统就是一个独立的可部署运行的实体。
然而,不管采用何种开发模型,下面的一些步骤都是必然所要经历的:
(1)定义业务对象(BO):
业务对象决定在流程(BusinessProcess)和其它组件中传输的数据结构。
(2)定义组件接口(Interface):
接口是组件交互的唯一手段,它决定了组件之间可以用来交互的操作(Operation)。
在调用组件时,用户只需关心被调用接口的定义,而不需要关心接口的真正实现。
(3)定义数据、接口之间的映射(InterfaceMediation,DataMap)和关系(Relationship):
通常接口与接口之间并不完全相同,接口所保护的数据对象也不完全相同,在这种情况下当需要实现了不同的接口的组件需要交互时,则要先定义出接口之间、数据之间的映射。
通过这种映射和关系来把数据和接口匹配到需要交互的接口上。
(4)定义业务逻辑(BusinessProcess):
在WID中提供了可视化的BPEL编辑器,通过该编辑器可以直观的定义出复杂的业务逻辑。
(5)测试各个组件:
通过这种单元测试,可以很快的发现系统中的问题。
(6)组装所有组件:
当定义完所有的组件后,就可以把他们拖拽到组装图编辑器(AssemblyEditor)中,然后把他们连接起来。
这样就完成了整个子系统的设计和实现。
部署应用程序:
当完成了单个模块的测试后,就可以直接到该模块导出为一个可以在WPS上部署运行的实体(EAR)。
2.2业务对象(BO)的开发
业务对象(BO)是一切组件(Component)的基础。
在准确的分析系统需求后,就可以在WID中开发业务对象,从而构造其他组件。
在WID中开发一个业务对象的流程如下:
(1)打开WID,并确保你在业务整合(BusinessIntegration)视图下。
(2)新建一个WID工程(WIDProject),通常为一个模块(Module)或库(Library)。
在各个模块(Module)需要进行交换时,我们建议把所有的业务对象(BO)和接口(interface)定义在库中,这样每个模块只需要简单的reference到这个共享库就能在定义组件时引用到库里面定义的接口(interface)和业务对象(BO)。
在本次开发中,我们把所有的接口和业务对象的定义都放在一个库中(eProcureProcessLib)。
(3)选中要存放业务对象(BO)的WID工程(eProcureProcessLib),右键单击该工程,选择新建->业务对象(BO),输入业务对象存放的文件夹及业务对象的名字,单击完成。
(4)在eProcureProcessLib目录下,你将会看到新建的业务对象。
双击该业务对象,用户可在右边的业务对象编辑器(BusinessObjectEditor)中查看及编辑业务对象。
点击编辑器中的
按钮,可以为业务对象添加属性。
用户可在右下角的属性(Properties)视图中编辑该属性的名字,类型等属性。
按钮用于删除业务对象属性。
按钮用于将业务对象显示在表格视图中。
在下图中,我们定义了一个名为JPCRapidApprovalInput的业务对象(BO),它包含三个属性:
id,type,description。
BO对象可以复制。
图1:
业务对象(BO)定义
2.3接口(interface)的开发
接口(interface)是一切组件交互的规范,定义了各个组件清晰的接口就相当于搭好了整个解决方案的框架,然后就可以从自上而下的方法进行开发了。
在WID中,开发一个接口的过程如下:
1。
选中要存放关系的WID工程(eProcureProcessLib),右键单击该工程,选择新建->接口(interface),输入接口存放的文件夹及接口的名字,单击结束。
2。
在接口编辑器中,可以点击
来增加一个请求/响应(Request/Response)的双向操作(Two-wayOperation),点击
来增加一个单向操作,点击
来向一个操作增加输入项,点击
来向双向操作增加输出项,同时还可以点击
来为一个操作定义错误项。
下图中定义了一个名为approve的接口,并且为这个接口定义了一个名为approve的接口,并且为这个接口添加了一个请求/响应的双向操作。
这个操作的输入项是一个类型为ApproveRequest的业务对象(BO),而输出项是一个类型为ApproveResponse的业务对象(BO)。
当然如果某个操作不需要返回结果,我们可以定义一个单项操作(One-wayOperation),这种情况下用户就不需要定义输出项。
图2:
接口(interface)定义
2.4流程(BusinessProcess)的开发
在上面的准备工作做好以后,我们可以开始进行流程的开发了。
WID提供了对BPEL4WS标准1.2的全面的支持。
通过使用WID中的BPEL可视化编辑器,可以创建出符合标准的BPEL流程定义;由于WPS是建立在J2EE应用服务器之上,因此这儿也可以创建出带有扩展的BPEL流程,在这种扩展的流程中可以方便的使用Java来操作各种BPEL数据元素,也可以与其他的J2EE相关的组件进行交互。
下图展示了一个名为JPCApprovalProcess的流程的部分视图。
该编辑器主要由如下一些主要的元素构成:
InterfacePartner:
代表自己向外提供的服务。
当外面的服务需要调用流程时,需要调用该interface,传入正确的输入项。
ReferencePartner:
代表了与该流程交互的其他服务。
流程如果需要调用其它组件提供的服务,需要在这里reference到组件的接口
Variables:
该流程中使用到的各种数据定义。
CorrelationSets:
相关集的定义。
图3:
业务流程(BusinessProcess)定义
除了这些元素,BPEL提供了一系列activity(活动),让用户把自己的业务流程中的活动轻松的映射为BPEL。
Receive:
流程用来接受外来请求并且启动的activity。
Invoke:
流程用来调用外面组件的activity,它将调用ReferencePartner里面定义
的组件。
Staff:
人工节点,流程用来和人工交互的结点。
它可以定义输入项和输出项,用户可以定制自己的客户化代码来处理人工任务的输入项数据,并且将返回值通过输出项返回给流程。
在这个节点,用户还可以定义把该任务分配给特定的人或者组。
Assign:
用来做变量间的赋值。
用户可以使用图形化工具能轻松的进行变量间的值传递。
JavaSnippet:
对于那些不能用上述结点完成的工作,JavaSnippet可以被用来进行Java编程。
同时BPEL还提供了一系列用来控制流程流转逻辑的节点:
Sequence:
用来控制该节点下的Activity顺序执行
While:
用来控制循环逻辑
Choice:
相当于程序编码中的IF-ELSE-ELSEIF,用来控制流程的分支节点。
ParallelActivity:
提供并行的逻辑,当所有的分支结束时,才流转到下一节点,和Choice结点对应。
Scope:
可以用来将流程模块化,一个功能块可以定义为一个Scope,让整个流程更加清晰。
Wait:
可以让流程等待一定时间,才流转到下一节点。
最后BPEL还提供了一些节点作为异常处理,这包括:
ExceptionHandler:
用来catch流程执行中的Exception,在这个handler里面用户可以定义自己的异常处理逻辑。
CompensationHandler:
用于作某些操作的补偿。
在流程处理过程中,如果异常发生,而某些数据已经处理完毕并且完成更新到数据库中。
在此时用户如果想通过流程恢复原有的数据,靠事务处理是不可能的,因为数据已经更新。
所以需要Compensation来完成数据的自动恢复。
在BPEL的属性中有一个重要的属性:
Processislong-running,该属性表示该流程是否是一个长流程;所谓长流程指的是流程可能会运行很长时间,比如一天或者一月。
因此流程的最终结果无法在一次调用中返回。
在这种情况下流程的所有状态信息都必须保存到数据库中,一旦WPS服务器重启,该流程实例还能恢复,继续运行。
如果不选择该属性,则表示该流程是短流程,流程的最终结果可以在一次调用中返回。
这种流程只在当前的一个线程中运行,状态信息也不会写入数据库,而且整个流程只有一个事务。
在很多实际的业务中都会包含此类长流程,对这类流程的支持也是WPS的一个重要特性。
2.5解决方案的装配
WID提供了一个装配编辑器(AssemblyEditor),它使得组件或模块之间的整合变得异常简单。
用户只需将各个组件拖到装配编辑器中,并根据各组件相关关系将它们连接在一起,WID就会为用户生成组件之间相互调用所需的代码。
在属性视图中,用户可查看或编辑调用相关的属性,例如同步或异步调用,是否为全局事务,调用权限及角色的设置,静态CEI的设置等。
在WID中,任何Java类、接口、中介等等都可以看成是一个组件来进行装配,这就是服务组件架构SCA所带来的便利。
如下图所示的装配图,它包括3个组件,其中SORProcessComponent组件用BPEL实现,另外两个组件为Java实现,并且被它所调用。
图4:
解决方案的装配
2.6解决方案的测试
WID提供了对组件或模块进行单元测试的功能。
对于组件测试,只需将组件拖到装配图中,右键点击组件,选择测试组件,一个单元测试编辑器就会呈现在用户面前,如下图所示。
在该编辑器中输入初始请求参数的值,点击"继续",WID就会弹出一个对话框,让用户选择运行单元测试的WPS服务器,然后将被测试的组件部署到服务器上,完成单元测试。
WID还提供了模拟器的功能,当被测组件需要调用其他组件时,可配置模拟器仿真被调用组件,完成单元测试。
模块单元测试与组件单元测试类似,在商业整合视图中选中被测模块,右键点击,选择测试->测试模块,被测模块的相关信息就会在单元测试编辑器中打开。
同上,输入初始请求参数,点击"继续",就可容易地完成模块的单元测试。
图5:
解决方案的测试
2.7解决方案的部署
完成了单元测试后,用户就可以将模块部署到服务器上,调试/运行整个解决方案。
WPS支持两种部署方法,一是在WID中进行部署,二是在Web管理控制台中进行部署。
对于第一种方法,用户需要在WID的服务器视图中配置目标服务器,并确保服务器已启动。
接着右键点击该服务器,选择添加或删除工程,将需要部署的模块添加到服务器上,如下图所示。
图6:
解决方案的部署
对于第二种方法,用户需要先将模块从WID中导出为可在WPS上部署运行的实体-ear文件,然后在浏览器中打开Web管理控制台(例如http:
//localhost:
9060/admin,这和WPS的安装配制相关),选择应用程序->安装新应用程序,按照安装向导的提示完成整个安装过程,如下图所示。
部署成功以后,选择应用程序->企业应用程序,用户将会看到所有成功部署在该服务器上的应用程序列表,选中应用程序,点击启动,服务器将会运行后台程序启动该应用程序。
应用程序成功启动后,就可以开始调试或运行整个解决方案了。