WebSphere Portal, Lotus Forms, WebSphere Process Server 集成最佳实践

2009 年 2 月 16 日

作为一种生动灵活的 SOA MVC 解决方案,将 Lotus Forms 的 Form. 文件嵌入到前端 Portal 的 Portlet 中,而后通过 Form. 来调用业务层流程服务器上的流程或者服务已经越来越多的被 SOA 项目使用。本文总结了笔者在项目中集成以上三个产品时,遇到的设计、安装以及部署应用时需要考虑的问题,并给出了笔者的一些经验与教训,为同样需要集成以上三个产品的开发和设计人员提供了有价值的设计思路参考以及实际部署经验。

鸟瞰解决方案

在日常生活中,您可能经常遇到这样的情形:您想要申请银行的开户业务或者申请一项电信的新业务,到柜台后,前台小姐给了您一份详尽的表单,您把所有的相关信息逐字填写好后的表单交给前台小姐,她审核过您的信息后,告诉您在多久之内就可以开通这项服务,你微笑着转身离去,前台小姐将这张表格放在她面前的某个格子里(一个格子里放一种业务的申请表单)。一段时间后,后台的服务人员走到前台小姐这里,取走了您的表单,至此,您的申请开始被业务人员处理了。

那么在网络化的社会,一切又是如何运行的呢?您手拿着西湖龙井,坐在电脑前浏览新闻,这时您收到了某公司的一封新增服务的通知,您决定马上申请这项服务。于是,您登陆该公司为您定制的 Portal 页面,并在登陆后看到自己所关心的所有相关信息(最新的打折促销活动,您的股票行情,公司的业绩新闻,您订阅的各种服务的状态,等等)。点击了申请服务按钮后,这时,与传统的申请流程一样,您还是需要提供您的详细的个人信息,只不过这一次您面对的是一个电子表单 (Form),当您填写好电子表单,并点击提交按钮,您离开了该页面继续浏览其他新闻。与此同时后台一场“战役”才刚刚打响。Lotus Forms 服务器从该电子表单中提取到了业务相关的信息,然后重新组合成系统能够识别的应用请求并把这个请求传递给已有系统(“已有系统”这个词很宽泛,它泛指了所有需要被SOA解决方案整合的现有的传统计算机系统,这些系统提供了传统的支持商业运营的应用程序,包括像 WebSphere® Business Integration 提供的工作流应用,DB2® Universal Database/DB2 Content Manager 提供的数据库应用,以及一些其他类型的流程应用,等等)。

这时作为一个公司的 CIO,他/她可能会提出的问题就是,您说的很眩,但是这到底是一个什么样的解决方案呢,它的体系架构是什么样子的?它和其他的解决方案有什么不同呢?给用户提供这样的解决方案意义何在?提供这些解决方案对于整个公司的IT架构影响有多少?而做为一个技术人员,您最关心的问题就又有所不同:这么好的用户体验是如何实现的呢?什么样的产品,以怎样的方式集成才能达到这样的效果呢?在实现这样的解决方案是我需要注意一些什么问题?本文将就这一系列疑问展开解答并根据笔者在以往的应用和实践中的经验提出一些对您有帮助的意见和建议。





回页首


这到底是一个什么样的解决方案呢?它的体系结构是什么样子的?给用户提供这样的解决方案意义何在?

如下图 1 所示,这个解决方案使用了 MVC 结构。它是集 WebSphere Portal 提供的单点登录、安全可靠、对于不同角色可定制的灵活页面。Lotus Form. 提供的基于标准的电子表单,以及 WebSphere Process Server 对于面向服务的体系结构支持的功能于一身。通过这一套整体解决方案,用户可以利用到这三个产品的所有优势。他们可以在 Portal 的页面里找到他们需要的清晰标准的电子表单,填写并提交他们需要的业务需求,而不再需要考虑遗留系统复杂的业务流程,因为 WebSphere Process Server 的流程服务在后台完成了所有的动作,而这个流程服务就在他们点击电子表单的那一刻被自动触发了,这就是客户需要的,简单清晰且高效的业务。

基于这样的解决方案企业真正的实现了:

  • 为用户提供一个公用的统一的前端来屏蔽掉所有的差异化的后端实现(利用 Portal 来实现,把“人”作为 SOA 的入口点)
    • 单点登录, 标准化的用户信息
    • 一致的浏览导航模式,主题风格
  • 在正确的时间向正确的人展示相应的内容(与该角色相关的任务,信息等等)
    • 对于不同用户的不同级别的访问支持(企业员工,客户,合作伙伴)
  • 节省了应用的开发和维护的开支
    • 由于共享同一个统一的用户界面,您将有可能共享同一套 SOA Stack,实现软硬件以及平台的共享
    • 由于 Portal 基于标准,您将有机会节省开发新应用程序的开支
  • 建立了模块化的,分层的系统结构 (遵从软件开发的最佳实践)
    • 对于不同的软件层遵从设计模式采用一致的设计思想定义
  • 提供了基于标准的电子表单服务
  • 提供了基于流程的服务处理后台系统

图 1. 解决方案体系结构图
 




回页首


提供这些解决方案对于整个公司的IT架构影响有多少?与其他解决方案相比,这种解决方案有什么优势呢?

SOA 解决方案通常采用叠加渐进的方式来解决系统所面临的问题,这里所说的叠加渐进的方式简单的说就是首先对遗留系统的应用程序经过从底向上的分析、将应用程序包装以及重组成 Service (服务组件)后被部署到 WebSphere Process Sever 上。利用叠加、渐进的方式来提供 SOA 解决方案并不会给 IT 架构带来任何负担,原来系统的应用程序不需要修改便能够重用,而新生成的服务组件能够满足更多的协议平台的要求。IBM Lotus Forms 系列产品提供的技术能够使业务的处理更加流线化,减少一些流程中的低效活动。而作为最前端的门面 Portal 更是在不改变原有系统的情况下,为整个 IT 组织提供了基于角色的管理组织方式。总之,这样的解决方案使 IT 人员、企业组织内部乃至用户都有收益。它简化了管理流程,加快了应用程序的开发速度,加强了数据的整合,并提高了可用性。

要满足客户对于申请服务的需求可以有很多种实现方式,例如利用传统的 JSP 编写 HTML 样式的表单,把业务逻辑编写在 Web 代码中,等等。也可以象上述我们说的解决方案那样利用 Lotus Forms 表单的 Portlet 组件在 Portal 上为用户提供统一界面的服务。下表 1 列出了几种不同的实现客户申请服务的方式以及他们的优缺点,很显然文章开头描述的解决方案(对应于表中的 Forms Zero Footprint 解决方案)占尽风头


表 1. 电子表单实现方式对比表
没有 Lotus Forms,利用传统的 HTML 编写电子表格使用 Lotus Forms 提供的电子表单
  • 只针对特定环境、特定设备;
  • 无法满足机器的使用和自动化、国际化和本地化;
  • 可访问性差;
  • 需要编写复杂程序来支持输入验证;
  • 数据存在往返传递等问题;
多种环境、多种设备支持、机器的使用和自动化、国际化和本地化、可访问性、输入验证、避免数据的往返传递
IBM Lotus Forms ViewerIBM Lotus Forms Server
Forms 富客户端解决方案Forms Zero Footprint 解决方案
  • 可以提供很多 Zero Footprint Solution 不能提供的功能;
  • 可以脱机工作;

如果用户群不是很广泛且表单十分复杂或者需要脱机工作时应采用这种方式。
  • 无需安装,但必须一直保持与服务器之间的连接;
  • 不支持富客户端解决方案支持的电子签名技术。

当用户群可能分布在广泛的范围时应该采用这种方式。支持 Servlet 和 Portlet 两种方式的 Form. 解决方案。

在后面的章节中我们会逐步介绍这么好的用户体验是如何实现的,并且列举出在实现这样的解决方案时我们需要注意一些问题。





回页首


环境安装需要注意的一些事项

集成这几个产品,首先要考虑好整个解决方案的部署结构以及版本兼容问题,然后各自安装相应的产品,最后再配置一下集成需要设置的属性、参数以及变量等。集成 Lotus Forms 和 WebSphere Portal 以及 WebSphere Process Server 的详细步骤请参考 Forms 以及 Portal 的信息中心,本文不再赘述相关内容,下面列出在安装环境前需要思考的两个重要的问题的一些参考点,请读者在动手安装前参阅。

部署问题

推荐的典型安装是分布式的安装(图 2),也就是 Lotus Forms Server, WebSphere Portal Server 以及 WebSphere Process Server 分别分布在各自的服务器 WebSphere Application Server 上(注:Lotus Forms Server, WebSphere Portal Server 以及 WebSphere Process Server 都需要安装在 WebSphere Application Server 之上),且将您的 Form. 应用程序(Servlet/Portlet) 安装在一个单独的 WebSphere Application Server 上。这是因为 Lotus Form. Server, WebSphere Portal Server 以及 WebSphere Process Server 都是资源消耗型的,如果 3 个集成在一起的服务器都安装在一台机器上会引起资源分配以及性能等问题。


图 2. 集成部署图
 

版本问题

安装需要集成的各个产品还应该注意产品的兼容问题,下表列出了集成版本的最低版本要求以及推荐版本要求,仅供读者参考:


表 2. 版本兼容表
WebSphere PortalWebSphere Process ServerLotus Form. Server总结
WebSphere Portal Version 6.0WPS 6.0.1 (Business Process Choreographer 6.0.1)Lotus Form. 2.5 or Later最低配置
WebSphere Portal Version 6.0.1WebSphere Process Server 6.0.2 (Business Process Choreographer 6.0.2)IBM Lotus Form. 3.0.1推荐配置

注:如要在 Portlet 里面应用 XFDL Forms 必须使用 2.5 版本以上的 IBM Lotus Forms 产品。





回页首


配置部署需要注意的一些事项

电子表单文件的部署

想要将电子表单文件镶嵌到 Portlet 里面展示给用户,很容易想到的一个问题就是,我该把电子表单文件放在那里?怎么加载、解析以及提交一个添好的电子表单呢?

要想使 Portlet 完成电子表单文件的加载解析,您需要实现有 Lotus Form. Server 提供的IBMWorkplaceFormsServerPortlet 类,电子表单的加载解析是由该类中的 doViewEx 方法完成的(您需要在方法中指定加载文件的方式以及位置),电子表单中的 Action 的执行是由该类中另一个方法 processActionEx 完成的(该方法将在后面的章节中讨论)。如何实现 doViewEx 以及 doViewEx 的工作原理并不是本文的讨论重点,您可以参考 Lotus Forms 信息中心了解更多相关内容。

下面我们就电子表单文件的存放位置小作讨论,实际上您的电子表单文件可以存放在任何位置,只要您在 doViewEx 中可以找到这个位置并找到指定的文件。但是,通常情况下我们在实现 Portlet 时会考虑如下两种选择,读者可以根据自身项目的情况权衡利弊,任选其一:


表 3. 电子表单部署对照表
部署位置优点缺点适应的场景
部署到 Lotus Forms Server 中的某个绝对位置Translator 与电子表单文件在同一台机器上,加载速度快;每次对于电子表单文件的修改都要将新文件重新上传到电子表单服务器端;电子表单文件固定,不会作很多修改,但是 Portlet 可能会根据业务需求进行修改(如修改对于 Action 的处理等);
打包到 Portlet 实现的 WAR 中电子表单文件与 Portlet 应用程序绑定在一起,业务逻辑和实现更加模块化;每次对于 Portlet 的代码进行修改时都不得不把电子表单文件一起同时重新部署;Portlet 的逻辑代码固定,不会作很多修改,不希望经常对电子表单服务器进行改动;

调用Web Service的注意事项

完成了 WebSphere Portal Server 与 Lotus Forms Server 的集成后,一个新的问题又摆在了您面前,如何从利用这个电子表单来调用后台的流程呢?

Lotus Forms 产品组支持以 Web 服务的方式来调用流程,但是对于您要暴露的 Web 服务有一些要求,您在将流程暴露成 Web 服务的时候一定要注意这些问题,下面列出最常见的事项:

  1. Web Service 的服务和端口名字中都不能含有 “_”;这个是最长碰到的一个问题,因为 RSA, RAD 以及 WID 自动生成的多数的服务名和端口名中都含有 “_”,程序员在使用这些 Web Service 之前一定要对这些名字进行重构或者对于之前的 Web Service 进行进一步的 Mapping 转化成不含有 “_” 的服务;
  2. Web Service 不可以含有强制 Headers,如 soap:mustUnderstand 等;
  3. Web Service 只能利用 46 种简单数据类型,不可含有第三方定义的简单类型的扩展数据类型;

更多的关于 Web Service 的限制条件请参考 Guide to Building and Integrating a Sample Workplace Forms Application

XForms Submissions

如电子表单文件部署一节中所述,解决了定位解析电子表单的任务之后,下一个摆在面前的问题就是如何去提交 Web 服务请求。Lotus Form. Viewer 有一个内置的 Web Service Consumer 支持对于 Web 服务的调用,但是 Lotus Form. Server 并不支持这种机制。不过,Lotus Form. Viewer 和 Lotus Form. Server 都支持利用 XForms Submission 来实现的对于 Web 服务的调用机制。该机制可以通过 HTTP 消息(GET, POST 或者 PUT)将 XML 兼容的数据流转行成 Web 服务的应答和请求。关于如何定义 Submission 中的各个属性以及与 Submission 属性直接相关的数据模型实例 (data model instance) 的定义方法请直接参考 Guide to Building and Integrating a Sample Workplace Forms Application 以及 Lotus Forms Information Center

下面关于 Submission 的这个章节是笔者在调试电子表单调用 Web 服务程序时亲身经历的一个问题。

在调试一个嵌有 XForms Submission 的电子表单文件时 (其中的 Submission 的定义如下图3),笔者遇到了一个奇怪的问题:在 Lotus Form. Designer 中用自带的 Viewer 可以调到 Web Service,但是切换到 Lotus Form. Server 的时候 Web Service 却没有不能成功。由于项目要求在客户提交了表单后,要更新整个 Portlet 页面,提示用户表单的提交状态(成功或者失败),笔者将 Submission 的 replace 属性设置为了 all, 从而实现这个需求。然而与 Lotus Forms Viewer 直接将 submit 的 data 传递给 URL(无论 replace 的值赋成何值)不同,Lotus Forms Server 会自动的忽略掉 replace = all 的所有 submission 的 URL 请求。当 replace 设成 all 时,提交的 URL 会自动的被转到您写的 Portlet,所以当你需要用 replace = all 这个属性,且您的应用场景是 Zero-Print Form(不用 Viewer)的话,您就必须在 Portlet 中写一段解析传过来的数据实例的代码或者利用 DOMActivate 来定义提交的事件。


图 3. Submission 代码图
 

在 Portlet 中取消一些不必要的功能按钮

本节的内容是一个关于优化实现的问题。当将电子表单集成于 Portal 的环境里时,您可能不再需要电子表单可随时存取其自身 (Save, Open)的功能,因为对于特定的商业流程,有着固定的表单需要用户填写,工作人员可不想给用户太大的权限,然后收集到一堆不知所云的垃圾表单。这时候您就需要关闭 Form. 的一些功能按钮,如下面的清单 1 所示,您可以在 Form. 表单中的 Global Page 设置部分,像示例中一样设置 ufv_settings 属性关闭 Save 和 Open 按钮。这个方法同样也适用于关闭 Print 等按钮。更多关于 ufv_settings 的优化方式请参阅 XFDL 规范


清单 1. 屏蔽表单功能代码
<globalpage sid="global">
      <global sid="global">
         <ufv_settings>
            <menu>
               <save>off</save>
               <open>off</open>
            </menu>
         <ufv_settings>
      </global>
   </globalpage>





回页首


总结

本文向您总结了集成 WebSphere Portal, Lotus Forms 以及 WebSphere Process Server 的一些经验及建议,希望能对读者有一定的启迪。



参考资料



关于作者

李东兵是 IBM 中国技术中心 SOA Design Center 的一名技术人员,对 SOA 的 Solution 设计以及实施有着浓厚的兴趣,在加入IBM 3年多的时间内参加过多个 SOA 项目。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/707621/viewspace-578348/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/707621/viewspace-578348/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值